Transferring large volumes of data between applications is crucial in modern distributed robotics applications in fields such as autonomous driving. In those areas, LiDAR, camera and radar sensors generate large amounts of data with high frequency. This data needs to be accessed by multiple applications in an efficient way to meet overall system performance goals.
The ROS 2 framework allows developing such applications and handles the data transfer. The underlying middleware responsible for the data transfer is hidden from the user but can be configured in various ways. Since the recent ROS 2 Galactic release its default middleware is based on Eclipse CycloneDDS. The latest CycloneDDS version integrates the Shared Memory based Eclipse iceoryx middleware to facilitate zero-copy data transfer. If this feature is enabled, the computational cost of sending messages to applications on the same system is independent of the message size itself, allowing much larger data rates compared to the regular network interface.
This talk will show how the zero-copy data transmission feature can be used in ROS 2 applications to achieve high data rates. In addition it discusses the current limitations regarding the supported data types and quality of service settings and outlines future work which will address some of the limitations.