Comprehensive Survey on ROS 2

:rocket: ๐— ๐—ถ๐—น๐—ฒ๐˜€๐˜๐—ผ๐—ป๐—ฒ ๐—”๐—ฐ๐—ต๐—ถ๐—ฒ๐˜ƒ๐—ฒ๐—บ๐—ฒ๐—ป๐˜: ๐—ง๐—ต๐—ฒ ๐— ๐—ผ๐˜€๐˜ ๐—–๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐—ต๐—ฒ๐—ป๐˜€๐—ถ๐˜ƒ๐—ฒ ๐—ฆ๐˜‚๐—ฟ๐˜ƒ๐—ฒ๐˜† ๐—ผ๐—ป ๐—ฅ๐—ข๐—ฆ ๐Ÿฎ:rocket:

I am excited to announce that our latest survey paper,

๐—ฅ๐—ข๐—ฆ ๐Ÿฎ ๐—ถ๐—ป ๐—ฎ ๐—ก๐˜‚๐˜๐˜€๐—ต๐—ฒ๐—น๐—น: ๐—” ๐—ฆ๐˜‚๐—ฟ๐˜ƒ๐—ฒ๐˜†

co-authored with Abdulrahman S. Al-Batati and Dr. Mohamed AbdelKader, is now available on Preprints.org! :tada:

Credits go to Abdulrahman S. Al-Batati for the great efforts in gathering this volume of related works and also in building the first repository of ROS/ROS2 publications available at:

:open_book: ๐—ฅ๐—ข๐—ฆ/๐—ฅ๐—ข๐—ฆ๐Ÿฎ ๐—ฅ๐—ฒ๐—ฝ๐—ผ๐˜€๐—ถ๐˜๐—ผ๐—ฟ๐˜†: https://ros.riotu-lab.org/
:open_book: ๐—™๐˜‚๐—น๐—น ๐—ฃ๐—ฎ๐—ฝ๐—ฒ๐—ฟ: LinkedIn

This study stands as the ๐—บ๐—ผ๐˜€๐˜ ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐—ต๐—ฒ๐—ป๐˜€๐—ถ๐˜ƒ๐—ฒ ๐˜€๐˜‚๐—ฟ๐˜ƒ๐—ฒ๐˜† to date on the transition from ๐—ฅ๐—ข๐—ฆ ๐Ÿญ ๐˜๐—ผ ๐—ฅ๐—ข๐—ฆ ๐Ÿฎ, offering a deep dive into the enhancements, challenges, and future directions for ROS 2.

Our analysis covers:
:small_blue_diamond: Real-time capabilities
:small_blue_diamond: Enhanced modularity
:small_blue_diamond: Security improvements
:small_blue_diamond: Middleware and distributed systems
:small_blue_diamond: Multi-robot system applications

We carefully analyzed ๐Ÿณ,๐Ÿฐ๐Ÿต๐Ÿด ๐—ฅ๐—ข๐—ฆ-๐—ฟ๐—ฒ๐—น๐—ฎ๐˜๐—ฒ๐—ฑ ๐—ฎ๐—ฟ๐˜๐—ถ๐—ฐ๐—น๐—ฒ๐˜€, with a focused review of ๐Ÿฐ๐Ÿฏ๐Ÿญ ๐—ฅ๐—ข๐—ฆ ๐Ÿฎ-๐˜€๐—ฝ๐—ฒ๐—ฐ๐—ถ๐—ณ๐—ถ๐—ฐ ๐—ฝ๐˜‚๐—ฏ๐—น๐—ถ๐—ฐ๐—ฎ๐˜๐—ถ๐—ผ๐—ป๐˜€, making this a key resource for researchers, developers, and enthusiasts in the ROS community.

Our goal is to provide a cohesive synthesis that helps deepen the understanding of ROS 2โ€™s contributions and guides future research in robotic systems design.

Join us in exploring the potential of ROS 2 and shaping the future of robotics! :bulb::robot:

hashtag#ROS2 hashtag#Robotics hashtag#ROS hashtag#Research hashtag#AI hashtag#MachineLearning hashtag#RoboticsCommunity hashtag#ROSCommunity hashtag#OpenSource hashtag#Survey

9 Likes

Congrats on the paper.

A point of criticism though, given you specifically mention to analyse the โ€˜realtime capabilitiesโ€™:

For someone new to ROS 2 / DDS / etc., sentences such as the following invoke the expectation that ROS 2 is realtime capable:

With its real-time capabilities, supported by the Data Distribution Service (DDS) middleware, ROS 2 greatly improves communication reliability
and timing for multi-robot systems.

To my knowledge however, current state of ROS 2 is that it simply cannot be considered realtime compliant. There is no bounded-latency guarantee for standard node functionality such as messages and service calls.

Two examples:

  • Wrt. services: unless I am mistaken, a service callback allocates heap memory here, which is not realtime compliant.

  • Wrt. the mutices used throughout the code: there is currently no support for priority inheritance. A tremendous amount of work has been done wrt. avoiding priority inversion and adding thread attribute configuration, but to my knowledge that work has stalledโ€ฆ

So if you need a true realtime loop โ€œinโ€ ROS 2, my conclusion is that you rather need to implement one in ros2_control, or maybe use e.g. cactus-rt or Orocos (seems no longer maintained). Neither of those options is truly โ€œusing ROS 2 for realtime controlโ€, but rather โ€œusing ROS 2 for the non-realtime parts around a realtime control loopโ€.

So I think it is misleading to state that ROS 2 has โ€˜realtime capabilitiesโ€™. Either something is realtime, or it is not.

5 Likes

https://ros.riotu-lab.org/ the site makes my browser edge no response.

Thank you for your detailed technical feedback. I appreciate this perspective, especially I also originate from the real-time systems community.

Having followed ROS2โ€™s development since its inception in 2014, Iโ€™d like to provide some historical and architectural context. A fundamental design distinction between ROS1 and ROS2 was the latterโ€™s focus on real-time support.
While ROS1 operated purely on a best-effort basis using ROSTCP/ROSUDP protocols, ROS2 was architecturally designed to support real-time operations through:

1. The adoption of DDS middleware, which introduced:

You raise valid technical points about current implementation challenges:

  • Heap allocations in service callbacks
  • Mutex priority inheritance limitations
  • The need for frameworks like ros2_control for strict real-time guarantees

Perhaps it would be more precise that we say that ROS2 provides โ€œimproved deterministic behavior and real-time support featuresโ€ compared to ROS1, rather than claiming full real-time capabilities. We will address this change, and thanks for pointing this out.

Also, I think that while the current implementation may partially deviate from the original design goals in terms of strict real-time guarantees, it represents a significant architectural improvement over ROS1โ€™s best-effort approach.

The framework continues to evolve, and while full real-time guarantees might require careful implementation through specialized components like ros2_control or external frameworks, ROS2โ€™s foundational architecture provides better support for real-time requirements than its predecessor.

Thanks again for the feedback

4 Likes

I tried it on different browsers namely Safari, Chrome and FireFox and did not notice any issue. It is a simple code but it may take time to load the whole database and viz it. Can you try other browers?

try to use VPN with different servers, if you are in China. its working

1 Like

Nice survey of the ROS packages available out there.

Just a small comment on Table 9: for some reasons, KISS-ICP was categorized as a cyber security package. Based on your categorization, it could be added to the state estimation category or you could also add a category for SLAM, as there are lots of SLAM research papers that use ROS to process sensor data.

image

Otherwise, if youโ€™re searching for other openly available papers with open-source ROS packages, I think you could find some in the Field Robotics journal.

https://fieldrobotics.net/Field_Robotics/All_Papers.html