ROS is the essential middleware in robotics software development. Constantly improving, a new version named ROS2 Humble, has recently been released by the OSRF foundation. What can the robotics developer community expect? Awabot reviews the latest features.
What is ROS?
If you’re interested in robotics, and more specifically, robotic development, then you’ve already heard of ROS. This acronym, which stands for Robot Operating System, is nothing more than a meta robotic operating system, created by the American company Willow Garage in 2007 during the development of its PR2 robot. It is now used by all types of robots, whether they are industrial, agricultural or service robots.
ROS is a collection of open source software tools and resources that can be used to develop robotic applications. It thus provides a link between all the processes that a robotics software ecosystem can aggregate. In addition, ROS federates a large community of robotics researchers and developers, and has many contributors around the world.
ROS: which communication architecture?
Originally, the ROS middleware has a communication architecture based on a number of nodes (called “nodes”), which can communicate with each other via channels (called “topics”). A node can both subscribe to data as a “subscriber”, or publish data as a “publisher”. In addition, there are often several subscribers and publishers per node.
It is this particular mechanism that allows for efficient modular development: as each node specialises in a task, the data produced and consumed by each node is highly mobile. It is then very easy to add or remove a node in the architecture in order to consume and produce new data and thus rapidly prototype complex software architectures.
ROS in practice
”"At Awabot, we have been working with ROS for several years now. We chose this middleware during the first stages of development of our companion robot prototype, EmoxOne, which was an opportunity for the Intelligence team to get to know this vast tool and to discover the plethora of modules made available by the open-source community.
explains Florian Cantori, Lead Robotics Software Engineer at Awabot
With a first complete experience (control, navigation, perception, human-robot interaction), the team has been accompanying many manufacturers in the development and prototyping of their robotic platform for a few years now.”
From ROS to ROS2: the change is now!
In 2014, Thomas Dirk, software engineer at the Open Source Robotics Foundation (recently acquired by Intrinsic), announced the arrival of a new version of ROS. At the time, this middleware was praised for its ease of use, its flexibility and adaptability to robotic scenarios, and its prototyping capacity. However, some robotic use cases still need to be addressed as described in this article written by the ROS2 Design community.
ROS1 vs ROS2
According to Florian Cantori, Lead Robotics Software Engineer at Awabot, “the ambition of ROS2 is simply to maintain everything that ROS1 did well, improving the reliability of the system and preparing it for a broader and more robust industrial application.“
ROS2 is therefore not a simple upgrade of the existing version: it is a whole new system and as such requires a migration of the ROS source code to ROS2.
Indeed, the end of life and support of the ROS1 Noetic version has been announced for May 2025. This version is still usable until then and ensures a few more good years for ROS1, but at this horizon a transition to ROS2 is strongly recommended by the OSRF. In order to facilitate this transition, a cohabitation is possible by the interconnection of the ROS1 and ROS2 tools via bridges. The changes between ROS1 and ROS2 are described in an article published by Thomas Dirk.
The ROS2 platform uses many of the same core components, tools and libraries as its predecessor and includes a number of new features, including the Real-Time Data Distribution Service (DDS) protocol. DDS acts as middleware for communication between nodes and uses the Quality of Service (QoS) profile to provide benefits in terms of real-time communication, scalability, performance improvement and security.
ROS 1 Melodic goes end of life in 2023 and ROS 1 Noetic goes end of life in 2025.
— Robot Operating System (ROS) (@rosorg) June 1, 2022
If you don't have a ROS 2 transition plan for your ROS packages now is the time to make one. Don't get left behind! https://t.co/kTmr9T2hCY
ROS2: list of major features
- Discovery, transport and serialisation on DDS
- Support for multiple DDS implementations
- DDS security support
- Quality of service parameters for unstable networks
- Node requirement composition (compile, link, load, run)
- Support for nodes with managed life cycles
- Launch system for coordination of multiple nodes
- Namespace support for nodes and subjects
- Static remapping for ROS names
- Preliminary support for real-time code
- Preliminary support for bare-metal microcontrollers
ROS2, concretely
”"In the second half of 2021, we assisted IC Green in the design of its mobile robot, an outdoor AGV for mechanical weeding of all types of land. At the beginning of the project, the question arose as to which version of ROS to implement. ROS1 still had a few years ahead of it with the assurance of a functional and robust control and navigation stack and the addition of appreciable functionalities in its latest version Noetic (finally Python 3!). ROS2 showed excellent signs of development, particularly in the nav2 community, and the assurance of a long-term strategic choice. The choice seemed clear to both the team and our client, so the project was initiated and the team was able to test ROS2. After several months of development and integration, we made the following observation: the core application of ROS2 is operational and rather stable, the transition from ROS1 is very well documented and rather easy. A slight downside, however, is that some essential modules did not all make the transition, so additional efforts were required to achieve our goal."
Florian Cantori, Lead Robotics Software Engineer at Awabot
RESSOURCES available
- for the justification of ROS2 design choices:
https://design.ros2.org/ - for all ROS2 documentation:
https://docs.ros.org/en/foxy/index.html# - for specific technical concepts:
https://docs.ros.org/en/foxy/Concepts.html - all talks about ROS2 at different ROSCon since 2014 (first concepts and developments of ROS2)
https://docs.ros.org/en/foxy/The-ROS2-Project/ROSCon-Content.html
Would you like to discuss a project related to the topic covered in this article? The Awabot Intelligence team has the know-how and complementary skills to cover all the issues related to robotics. Contact us now.