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.