1. Introduction
1.1 ROS2 versions
Controller is using ROS2 Humble version. Default DDS implementation (Fast DDS) is used for underlying communication.
ROS2 and underlying DDS are interoperable to some extent between versions.
Tested Combinations:
ROS2 version |
Comments |
---|---|
ROS2 Foxy on Fast RTPS DDS |
|
1.2 Quality of Service settings
Quality of Service(QoS) is feature in ROS 2 that allows users to fine tune the communication between nodes. The policies range from being as *reliable *as TCP to as *best-effort *as UDP and many more options in between. A set of policies make a profile, the right set of profiles need to be set based on the application (https://docs.ros.org/en/foxy/Concepts/About-Quality-of-Service-Settings.html#qos-policies). The default profile for a publisher on the robot is as follows
default History - Keep last[n]
default Depth - Queue size[n]=1
default Reliability - Reliable
default Durability - Volatile
default Deadline - Forever
default Lifespan - Forever
default Liveliness - Liveliness_Automatic
default Lease Duration - Forever
The important point to remember is that the QoS settings have to be compatible (or ideally the same) on the publisher and subscriber side. Incompatible QoS settings will prevent communication entirely. More information about QoS compatibility can be found in https://docs.ros.org/en/rolling/Concepts/About-Quality-of-Service-Settings.html#qos-compatibilities.