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.