Configuring the Simulator
The configuration of the Simulator's state is done through the use of YAML files. Below is an example of a sample YAML file.
robots:
- id: robot0
pose:
- -6.295703
- 7.076855
- 0.0
vel:
- 0.0
- 0.0
lidar: true
footprint:
- 0.25
drive_type: Differential
add_noise: false
- id: robot1
pose:
- -4.0486326
- 4.9811525
- 0.0
vel:
- 0.0
- 0.0
lidar: true
footprint:
- 0.25
drive_type: Differential
add_noise: false
walls:
- endpoints:
- - -9.1560545
- 8.704004
- - -1.0940428
- 8.6789055
- - -0.99091816
- 3.9499025
- - -9.038574
- 4.1187496
- endpoints:
- - 1.0652351
- 8.664355
- - 1.0892582
- 4.006152
- - 9.079687
- 4.0520506
static_objects:
- center:
- 2.2917004
- 6.981738
width: 0.625
height: 0.625
rotation: 0.0
- center:
- 7.0378914
- 6.6941404
width: 0.625
height: 0.625
rotation: 0.0
- center:
- 0.020019531
- 2.6319332
width: 0.625
height: 0.625
rotation: 0.0
Three categories of objects
There are three main categories of Objects used in the Simulator, Robot, Static Object, Wall. The configuration for each of these is described differently.
In general, the YAML can be split as a combination of these categories as below
robots:
- ...
- ...
- ...
walls:
- ...
- ...
- ...
static_objects:
- ...
- ...
- ...
Configuring a Robot
| Property | Description | Data Type |
|---|---|---|
id |
Describes the id of the Robot. |
string |
pose |
Describes the pose of the Robot. This is a tuple of [x, y, yaw]. |
Tuple of [x, y, yaw] |
vel |
Describes the velocity of the Robot. Varies according to drive type:Differential drive: [vx, vy]Omnidirectional drive: velocity in x and y direction Ackermann drive: linear velocity and steering angle. |
Varies according to drive type: Differential drive: [vx, vy]Omnidirectional drive: velocity in x and y direction Ackermann drive: linear velocity and steering angle. |
lidar |
Describes the presence of a lidar. | bool |
footprint |
Describes the footprint. If float, the shape of the robot is circular with the given number as radius. If a tuple of float, the first number is taken as width and the second number as height. |
float or Tuple of float |
drive_type |
Describes the drive type. Can be Differential, OmniDirectional, or Ackermann. |
string |
add_noise |
Adds noise to the kinematics model. | bool |
An example YAML configuration with Ackermann drive and Rectangular Footprint is given below
- id: robot1
pose:
- -4.825901
- 8.391234
- 0.35
vel:
- 1.5
- 0.0
lidar: true
footprint:
- 0.4
- 1.2
drive_type: Ackermann
add_noise: true
Configuring a Static Object
Here's a table generated from the YAML data:
| Property | Description | Data Type |
|---|---|---|
| static_objects | List of static objects | List of objects |
| center | Center coordinates of the object | Tuple of [x, y] |
| width | Width of the object | float |
| height | Height of the object | float |
| rotation | Rotation of the object | float |
In this table, I've represented the YAML data as a table with property names, descriptions, and data types for each field.
Configuring a Wall
| Property | Description | Data Type |
|---|---|---|
| endpoints | List of endpoint coordinates | List of Tuples of XY coordinates of vertices |
Note
It is highly recommended to create a starting configuration using the GUI and edit the specifics from the YAML file.