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. Note that ROS2 Humble was affected by a bug where node would leak memory if exposed to messages from newer versions of ROS2. While the version linked to the controller has been patched, other nodes such as your own, or the ones used in URCapX may still be vulnerable. Proceed with caution especially when mixing ROS2 versions older and newer than the one used in the controller.
Tested Combinations:
ROS2 version |
Comments |
|---|---|
ROS2 Jazzy RTPS DDS |
Warnings in the controller log, other ROS2 humble nodes may leak memory – Use caution |
ROS2 Rolling RTPS DDS |
Warnings in the controller log, other ROS2 humble nodes may leak memory – Use caution |
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/humble/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.