Skip to content

Commit ab0042e

Browse files
author
John Shepherd
authored
Add tutorial tweaks (#380)
Signed-off-by: John Shepherd <[email protected]>
1 parent 1117e5d commit ab0042e

13 files changed

+64
-88
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Ubuntu Bionic | [![Build Status](https://build.osrfoundation.org/buildStatus/ico
1414
Homebrew | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=ignition_gazebo-ci-master-homebrew-amd64)](https://build.osrfoundation.org/job/ignition_gazebo-ci-master-homebrew-amd64)
1515
Windows | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=ignition_gazebo-ci-master-windows7-amd64)](https://build.osrfoundation.org/job/ignition_gazebo-ci-master-windows7-amd64)
1616

17-
Ignition Gazebo is an open source robotics simulator. Through Ignition Gazebo users have access to high fidelity physics, rendering, and sensor models. Additionally, users and developers have multiple points of entry to simulation including a graphical user interface, plugins, and asynchronous message passing and services.
17+
Ignition Gazebo is an open source robotics simulator. Through Ignition Gazebo, users have access to high fidelity physics, rendering, and sensor models. Additionally, users and developers have multiple points of entry to simulation including a graphical user interface, plugins, and asynchronous message passing and services.
1818

1919
Ignition Gazebo is derived from [Gazebo](http://gazebosim.org) and represents over 16 years of development and experience in robotics and simulation. This library is part of the [Ignition Robotics](https://ignitionrobotics.org) project.
2020

@@ -61,7 +61,7 @@ of environments with high-quality lighting, shadows, and textures.
6161

6262
* **Sensors and noise models**: Generate sensor data, optionally with noise,
6363
from laser range finders, 2D/3D cameras, Kinect style sensors, contact sensors,
64-
force-torque, IMU, GPS, and more, powered by
64+
force-torque, IMU, GPS, and more, all powered by
6565
[Ignition Sensors](https://github.com/ignitionrobotics/ign-sensors)
6666

6767
* **Plugins**: Develop custom plugins for robot, sensor, and

tutorials/battery.md

+23-13
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,17 @@ model:
4343

4444
Next, you can find a description of the SDF parameters used:
4545

46-
`<battery_name>`: The name of the battery.
47-
`<voltage>`: Initial voltage of the battery (V).
48-
`<open_circuit_voltage_constant_coef>`: Voltage at full charge (V).
49-
`<capacity>`: Total charge that the battery can hold (Ah).
50-
`<power_load>`: Power load on battery (W).
51-
`<fix_issue_225>`: As reported [here](https://github.com/ignitionrobotics/ign-gazebo/issues/225),
46+
* `<battery_name>`: The name of the battery.
47+
48+
* `<voltage>`: Initial voltage of the battery (V).
49+
50+
* `<open_circuit_voltage_constant_coef>`: Voltage at full charge (V).
51+
52+
* `<capacity>`: Total charge that the battery can hold (Ah).
53+
54+
* `<power_load>`: Power load on battery (W).
55+
56+
* `<fix_issue_225>`: As reported [here](https://github.com/ignitionrobotics/ign-gazebo/issues/225),
5257
there are some issues affecting batteries in Ignition Blueprint and Citadel.
5358
This parameter fixes the issues. Feel free to omit the parameter if you have
5459
legacy code and want to preserve the old behavior.
@@ -71,10 +76,13 @@ In this case, the battery runtime should be calculated as follows:
7176
If you need to model a more realistic battery, you can use the following
7277
advanced SDF parameters:
7378

74-
`<open_circuit_voltage_linear_coef>`: Amount of voltage decrease when no charge (V).
75-
`<initial_charge>`: Initial charge of the battery (Ah).
76-
`<resistance>`: Internal resistance (Ohm)
77-
`<smooth_current_tau>`: Coefficient for smoothing current.
79+
* `<open_circuit_voltage_linear_coef>`: Amount of voltage decrease when no charge (V).
80+
81+
* `<initial_charge>`: Initial charge of the battery (Ah).
82+
83+
* `<resistance>`: Internal resistance (Ohm)
84+
85+
* `<smooth_current_tau>`: Coefficient for smoothing current.
7886

7987
Please, refer to the battery specification to set the advanced values.
8088

@@ -84,11 +92,13 @@ Please, refer to the battery specification to set the advanced values.
8492
A battery can be charged if the SDF parameter `<enable_recharge>` is set to true.
8593
Here are the relevant SDF parameters related with charging:
8694

87-
`<enable_recharge>`: As mentioned, it should be `true` to enable recharging.
88-
`<charging_time>`: Hours taken to fully charge the battery. Keep in mind that
95+
* `<enable_recharge>`: As mentioned, it should be `true` to enable recharging.
96+
97+
* `<charging_time>`: Hours taken to fully charge the battery. Keep in mind that
8998
this value assumes no battery load while charging. If the battery is under load,
9099
it will take a longer time to recharge.
91-
`<recharge_by_topic>`: If true, the start/stop signals for recharging the
100+
101+
* `<recharge_by_topic>`: If true, the start/stop signals for recharging the
92102
battery will also be available via topics. The regular Ignition services will
93103
still be available.
94104

tutorials/detachable_joints.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
\page detachablejoints Detachable Joints
22

33
The `DetachableJoint` system allows two models to start off rigidly attached
4-
and then get detached during simulation by publishing to a topic. The system
4+
and then detach during simulation by publishing to a topic. The system
55
internally uses a fixed joint between two links, each belonging to two separate
66
models. Because the system uses joints to connect models, the resulting
77
kinematic topology has to be a tree, i.e., kinematic loops are not currently
@@ -39,13 +39,13 @@ or child models be in collision in their initial (attached) state.
3939

4040
The system has the following parameters:
4141

42-
* parent_link: Name of the link in the model containing this system that will be
42+
* `<parent_link>`: Name of the link in the model containing this system that will be
4343
used as the parent link in the detachable joint.
4444

45-
* child_model: The name of the model containing the child link in the detachable
45+
* `<child_model>`: The name of the model containing the child link in the detachable
4646
joint.
4747

48-
* child_model_link: Name of the link in the child_model that will be used
48+
* `<child_model_link>`: Name of the link in the `<child_model>` that will be used
4949
as the child link in the detachable joint.
5050

5151
* topic (optional): Topic name to be used for detaching connections. If empty,

tutorials/distributed_simulation.md

+4-23
Original file line numberDiff line numberDiff line change
@@ -68,25 +68,6 @@ The secondary instances will only read the role command line option
6868
* **--network-role=secondary** - Dictates that the role of this
6969
participant is a Secondary. Capitalization of "secondary" is not important.
7070

71-
#### Environment variables
72-
73-
**WARNING:** Environment variables for distributed simulation configuration
74-
is deprecated in version 2.x.x of Ignition Gazebo. Please use the
75-
command-line options instead.
76-
77-
The primary instance will read several environment variables to dictate its behavior.
78-
79-
* **IGN_GAZEBO_NETWORK_ROLE=PRIMARY** - Dictates that the role of this
80-
participant is a Primary. Capitalization of "primary" is not important.
81-
* **IGN_GAZEBO_NETWORK_SECONDARIES=<N>** - The number of secondaries expected
82-
to join. Simulation will not begin until **N** secondaries have been
83-
discovered.
84-
85-
The secondary instances will only read the role environment variable
86-
87-
* **IGN_GAZEBO_NETWORK_ROLE=SECONDARY** - Dictates that the role of this
88-
participant is a Secondary. Capitalization of "secondary" is not important.
89-
9071
### Discovery
9172

9273
Once the `ign gazebo` instance is started, it will begin a process of
@@ -134,22 +115,22 @@ containing:
134115
* The latest secondary-to-performer affinity changes.
135116
* **Upcoming**: The updated state of all performers which are changing secondaries.
136117

137-
1. Each secondary receives the step message, and:
118+
2. Each secondary receives the step message, and:
138119

139120
* Loads / unloads performers according to the received affinities
140121
* Runs one simulation update iteration
141122
* Then publishes its updated performer states on the `/step_ack` topic.
142123

143-
1. The primary waits until it gets step acks from all secondaries.
124+
3. The primary waits until it gets step acks from all secondaries.
144125

145-
1. The primary runs a step update:
126+
4. The primary runs a step update:
146127

147128
* Update its state with the states received from secondaries.
148129
* The `LevelManager` checks for level changes according to these new states
149130
* The `SceneBroadcaster` plugin publishes an updated scene to the GUI
150131
for any level changes.
151132

152-
1. The primary initiates a new iteration.
133+
5. The primary initiates a new iteration.
153134

154135
### Interaction
155136

tutorials/erb_template.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,22 @@ Below is a step-by-step tutorial to generate 1000 box shapes in a simulation wor
3636
You can copy-and-paste the code block into an editor to try it out.
3737

3838
First is to create a world using SDFormat syntax.
39-
You need to specify both the ``xml`` and ``sdf`` versions you are using.
39+
You need to specify both the `xml` and `sdf` versions you are using.
4040
And don't forget to give your simulation world a name.
4141

4242
```
4343
<?xml version="1.0" ?>
4444
<sdf version="1.6">
4545
<world name="shapes">
46-
<!-- This is where you put ``<plugin>``, ``<model>`` and etc. tags -->
46+
<!-- This is where you put `<plugin>`, `<model>` and etc. tags -->
4747
</world>
4848
</sdf>
4949
```
5050

51-
To create 1000 instances of simple box shapes, you can use a ``for`` loop in Ruby syntax in the ERB template.
52-
This code block can be inserted in between the "``<world>`` ... ``</world>``" tags.
53-
Note that the ``<model>`` tags are wrapped in between the ERB template.
54-
``<% end %>`` is to mark the end of loops or ``if`` statements.
51+
To create 1000 instances of simple box shapes, you can use a `for` loop in Ruby syntax in the ERB template.
52+
This code block can be inserted in between the `<world>` tags.
53+
Note that the `<model>` tags are wrapped in between the ERB template.
54+
`<% end %>` is to mark the end of loops or `if` statements.
5555
Each box model also has a different name and pose to ensure they show up as individuals in simulation.
5656

5757
```
@@ -148,7 +148,7 @@ Instead of simple shapes, you can also use a nested loop to generate 100 actors
148148

149149
## Generate SDF from ERB template
150150

151-
Now that an ERB template file is ready and saved as ``my_first_erb.erb``, you can run the following terminal command to generate SDF file.
151+
Now that an ERB template file is ready and saved as `my_first_erb.erb`, you can run the following terminal command to generate the corresponding SDF file.
152152

153153
```{.sh}
154154
# generate SDF with the ERB template
@@ -157,11 +157,11 @@ erb my_first_erb.erb > my_first_erb.sdf
157157

158158
## Run simulation world
159159

160-
To test if the ERB template works, run the SDF file with igniton command
160+
To test if the ERB template works, run the SDF file with the `ign gazebo` command
161161

162162
```{.sh}
163163
# run with Ignition Gazebo
164164
ign gazebo my_first_erb.sdf
165165
```
166166

167-
If there is any error or warning from running the SDF file, you would need to go back to the ERB file and see if any coding mistakes are made.
167+
If there are any errors or warnings from running the SDF file, you would need to go back to the ERB file and see if any coding mistakes were made.

tutorials/levels.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ as described below, and to launch Gazebo with the `--levels` flag.
2424
All the situations described here refer to simulation running in a single
2525
server.
2626

27-
> Take a look at the [terminology](terminology.html) tutorial to get familiar with
28-
> concepts used in this tutorial.
27+
\note Take a look at the [terminology](terminology.html) tutorial to get familiar with concepts used in this tutorial.
2928

3029
## Try it out
3130

@@ -87,7 +86,7 @@ but the same logic can be extended to multiple performers.
8786
levels (`L1`~`L3`).
8887

8988
* The **light blue area** represents the buffer zone for level `L1`. Zones
90-
for `L2` and `L3` have been ommitted.
89+
for `L2` and `L3` have been omitted.
9190

9291
* Each **orange shape** represents a static model in the world (`M1`~`M6`)
9392

@@ -198,7 +197,7 @@ In addition, the `<performer>` tag contains information about the volume
198197
occupied by the performer. This volume is specified by the `<geometry>` tag.
199198
Only the `<box>` tag is currently supported.
200199

201-
\note The volume for a performer maybe automatically generated in future
200+
\note The volume for a performer may be automatically generated in future
202201
versions of Gazebo.
203202

204203
Example snippet:
@@ -216,7 +215,7 @@ Example snippet:
216215

217216
### Runtime performers
218217

219-
Performers can be specified at runtime using an Igntion Transport service.
218+
Performers can be specified at runtime using an Ignition Transport service.
220219
This functionality can be used when a performer is not known at load time. For
221220
example, you may need to start simulation with an empty world and spawn
222221
models (performers) into simulation at a later time.

tutorials/log.md

-15
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,11 @@ Recording can be specified in the SDF, under `<world>` tag:
6464
<plugin
6565
filename="ignition-gazebo-log-system"
6666
name="ignition::gazebo::systems::LogRecord">
67-
<!--
68-
Deprecated: Specifying the path on SDF is deprecated on Blueprint and
69-
Citadel, and will be removed on Dome. Use one of the other methods to
70-
speficy the path instead.
71-
-->
72-
<!--path>/tmp/log</path-->
7367
</plugin>
7468
...
7569
</world>
7670
```
7771

78-
Use of `<path>` results in the console log and state recording being written
79-
to different locations. Existing paths are overwritten by default. See below.
80-
8172
Currently, it is enforced that only one recording instance is allowed to
8273
start during a Gazebo run.
8374

@@ -95,12 +86,6 @@ The final record path will depend on a few options:
9586
* If no `--log-overwrite`, logs are recorded to a new path with a number
9687
appended, i.e. `/tmp/log(1)`, `/tmp/log(2)`...
9788
* If `--log-overwrite`, the directory is cleared and logs recorded to it.
98-
* If `<path>` in SDF (deprecated, not recommended):
99-
* It will be used unless the path is specified through the command line or API.
100-
* The SDF doesn't affect the console log, so that file will still go to the
101-
timestamped directory.
102-
* If the path exists, it will always be overwritten and there's no way to
103-
disable this behaviour.
10489

10590
## Playback
10691

tutorials/migrating_ardupilot_plugin.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ documentation](https://ardupilot.org/dev/docs/using-gazebo-simulator-with-sitl.h
2424
As context to understand what we're migrating, here's a system diagram for how
2525
the ArduPilot Gazebo plugin works is used:
2626

27-
<img src="https://raw.githubusercontent.com/ignitionrobotics/ign-gazebo/add_ardupilot_migration_tutorial2/tutorials/files/ardupilot_diagram.png"/>
27+
<img src="https://raw.githubusercontent.com/ignitionrobotics/ign-gazebo/master/tutorials/files/ardupilot_diagram.png"/>
2828

2929
*UAV icon credit: By Julian Herzog, CC BY 4.0, https://commons.wikimedia.org/w/index.php?curid=60965475*
3030

tutorials/migration_plugins.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
\page migrationplugins
22

3-
# Migration from Gazebo-classic: Plugins
3+
# Migration from Gazebo Classic: Plugins
44

5-
Classic Gazebo supports
5+
Gazebo Classic supports
66
[6 different C++ plugin types](http://gazebosim.org/tutorials?tut=plugins_hello_world&cat=write_plugin),
77
each providing access to different parts of the API, like physics, rendering,
88
sensors, GUI, etc. Due to Ignition Gazebo's architecture based on an
@@ -15,7 +15,7 @@ while others are specific plugin types from other Ignition libraries.
1515

1616
For example, plugins which get and set properties of simulation entities would be
1717
Ignition Gazebo systems. On the other hand, there are now plugin interfaces which didn't
18-
exist in Gazebo, such as integrating a new physics or rendering engine, and these can
18+
exist in Gazebo Classic, such as integrating a new physics or rendering engine, and these can
1919
be also used in projects outside of Ignition Gazebo.
2020

2121
Take a look at the comparison below:
@@ -39,14 +39,14 @@ System | Access command line arguments | TBD | -
3939
---
4040

4141
Another key difference is that systems will be able to access all entity
42-
properties at once, despite the entity type. So while in Gazebo you may
42+
properties at once, despite the entity type. So while in Gazebo Classic you may
4343
need 3 different plugins to interact with physics, rendering and sensors, on
4444
Ignition you could, for example, set a camera's visual color, its velocity and
4545
frame rate, all from a single plugin.
4646

4747
## Plugin interfaces
4848

49-
Let's take a look at a typical Gazebo plugin which accesses a property from an
49+
Let's take a look at a typical Gazebo Classic plugin which accesses a property from an
5050
entity and does something with it. In this case, it will print the current pose
5151
of a link.
5252

@@ -223,7 +223,7 @@ IGNITION_ADD_PLUGIN(MyPlugin,
223223
IGNITION_ADD_PLUGIN_ALIAS(MyPlugin,"ignition::gazebo::systems::MyPlugin")
224224
```
225225
226-
In summary, the key differences between classic and Igntion Gazebo are:
226+
In summary, the key differences between Gazebo Classic and Ignition Gazebo are:
227227
228228
* Plugins must inherit from the `ISystemConfigure` class to be able to override
229229
the `Configure` callback that gives access to many things, such as the SDF
@@ -234,7 +234,7 @@ In summary, the key differences between classic and Igntion Gazebo are:
234234
235235
* Plugins don't have direct access to physics objects such as `physics::Model`.
236236
Instead, they can either deal directly with entities and their components by
237-
calling functions in the ECM, or use convenient objects such as
237+
calling functions in the ECM, or using convenient objects such as
238238
`ignition::gazebo::Model` which wrap the ECM interface.
239239
240240
All these changes are meant to give plugin developers more flexibility to

tutorials/point_cloud_to_mesh.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ Our tunnel has turned into a blob shape.
9393
This is because the mesh that CloudCompare creates will always be water tight even if it has to add polygons where there are no points.
9494
We just want our tunnels, though, so we need to remove those unnecessary polygons.
9595

96-
![The "blob shape"](https://raw.githubusercontent.com/ignitionrobotics/ign-gazebo/master/tutorials/files/point_cloud_to_mesh/blob2.png)
96+
![The blob shape](https://raw.githubusercontent.com/ignitionrobotics/ign-gazebo/master/tutorials/files/point_cloud_to_mesh/blob2.png)
9797

9898
This is where our scalar field comes in.
9999
In the mesh's `Properties` window go to `SF display params` and take the left handle in the graph and drag it to the right until it hits the area where the bulk of the scalar field starts.

tutorials/resources.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ Ignition will look for URIs (path / URL) in the following, in order:
123123
1. Cache (i.e. `$HOME/.ignition/fuel`)
124124
2. Web server
125125

126-
> \* The `SDF_PATH` environment variable also works in some scenarios, but
127-
it's not recommended when using Ignition Gazebo.
126+
\* The `SDF_PATH` environment variable also works in some scenarios, but
127+
it's not recommended when using Ignition Gazebo.
128128

129129
## Meshes
130130

@@ -141,8 +141,8 @@ Ignition will look for URIs (path / URL) in the following, in order:
141141
2. All paths on the `IGN_GAZEBO_RESOURCE_PATH`\* environment variable (if path
142142
is URI, scheme is stripped)
143143

144-
> \* The `IGN_FILE_PATH` environment variable also works in some scenarios, but
145-
it's not recommended when using Ignition Gazebo.
144+
\* The `IGN_FILE_PATH` environment variable also works in some scenarios, but
145+
it's not recommended when using Ignition Gazebo.
146146

147147
### GUI configuration
148148

0 commit comments

Comments
 (0)