Robot YAML Overview
Our robots provide users with a wide range of customization options: sensors, sensor mounting structures, and custom-made parts. Matching the flexibility of our hardware, Clearpath's ROS 2 system is designed to keep all these customization decisions in a single configuration file.
The Clearpath Robot Configuration YAML, or robot.yaml
for short, contains all pertinent information to the entire robot system, allowing robot builders and users to quickly and easily modify any ROS 2 component.
Outline
The robot.yaml
is composed of five major sections:
- system level information such as the robot's hostname, IP, and ROS middleware implementation.
- platform level configurations such as robot specific mounting structures and parameters.
- links of standard URDF primitives such as boxes, cylinders, and meshes.
- mounts are predefined, generic, sensor mounting structures.
- sensors are selected from an inventory of Clearpath supported sensors.
Additionally, there are two other, required parameters:
- The robot's serial_number; which is used to determine the model and version.
- The configuration version to use, as future updates are released.
Sample
Below is the sample Husky A200 robot YAML of the robot displayed above. In the following sections, we will reference each and every component of this sample file, and show how to robot looks as we build it up.
Find more samples robot.yaml
configuration files in the Clearpath Configuration repository.
You can also skip to each section to get an explanation of each part of the sample configuration:
Sample A200 YAML
serial_number: a200-0000
version: 0
system:
username: administrator
hosts:
- hostname: cpr-a200-0000
ip: 192.168.131.1
ros2:
namespace: a200_0000
domain_id: 0
middleware:
implementation: rmw_fastrtps_cpp
workspaces: []
platform:
controller: ps4
battery:
model: ES20_12C
configuration: S2P1
attachments:
- name: front_bumper
type: a200.bumper
model: default
parent: front_bumper_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
enabled: true
extension: 0.0
- name: rear_bumper
type: a200.bumper
model: default
parent: rear_bumper_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
enabled: true
extension: 0.0
- name: top_plate
type: a200.top_plate
model: pacs
parent: default_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
enabled: true
- name: sensor_arch
type: a200.sensor_arch
model: sensor_arch_300
parent: default_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
enabled: true
extras:
urdf: {}
links:
box:
- name: user_bay_cover
parent: top_plate_link
xyz: [0.0, 0.0, 0.00735]
rpy: [0.0, 0.0, 0.0]
size: [0.4, 0.4, 0.002]
cylinder: []
frame: []
mesh: []
sphere: []
mounts:
bracket:
- parent: top_plate_mount_d1
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
model: horizontal
fath_pivot:
- parent: sensor_arch_mount
xyz: [0.0, 0.0, -0.021]
rpy: [3.1415, 0.0, 0.0]
angle: 0.0
riser: []
sick: []
post: []
disk: []
sensors:
camera:
- model: intel_realsense
urdf_enabled: true
launch_enabled: true
parent: fath_pivot_0_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
intel_realsense:
camera_name: camera_0
device_type: d435
serial_no: '0'
enable_color: true
rgb_camera.profile: 640,480,30
enable_depth: true
depth_module.profile: 640,480,30
pointcloud.enable: true
gps: []
imu: []
lidar2d:
- model: hokuyo_ust
urdf_enabled: true
launch_enabled: true
parent: bracket_0_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
urg_node:
laser_frame_id: lidar2d_0_laser
ip_address: 192.168.131.20
ip_port: 10940
angle_min: -2.356
angle_max: 2.356
lidar3d:
- model: velodyne_lidar
urdf_enabled: true
launch_enabled: true
parent: sensor_arch_mount
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
velodyne_driver_node:
frame_id: lidar3d_0_laser
device_ip: 192.168.131.25
port: 2368
model: VLP16
velodyne_transform_node:
model: VLP16
fixed_frame: lidar3d_0_laser
target_frame: lidar3d_0_laser