This article is part of TechXchange: ROS: Robot Operating System
What you'll learn:
- What are the intentions behind the Robot Operating System?
- Key features of ROS 1's Noetic Ninjemys.
- Key features of ROS 2's Galactic Geochelone.
The Robot Operating System (ROS), introduced by Open Robotics in 2007, was designed to provide developers with a set of open-source software frameworks, libraries, and tools to create applications for robots. The platform offers services for a heterogeneous computer cluster such as hardware abstraction, device control, implementation of functionalities, message-passing between processes, and package management. The processes are represented in a graph architecture where processing occurs in nodes that may receive, post, and multiplex sensor data, including control, state, planning, actuator, and more.
While both ROS 1 and ROS 2 contain the same core functions, differences exist between the two. However, it's essential to note ROS releases may be incompatible with other releases and are often referred to by code name rather than the version number.
ROS currently releases a version every year in May, following the release of Ubuntu LTS versions. ROS 2, on the other hand, releases a new version every six months (in December and July). These releases are supported for a single year before another is introduced.
ROS was designed with open source in mind, allowing users to choose the configuration of tools and libraries that interacted with the core of ROS so they could shift their software stacks to fit their robot designs and applications. Considering the amount of customization that can be done with ROS, very little is core to the platform beyond the general structure within which programs must exist and communicate.
In a sense, ROS is the underlying infrastructure behind nodes and message passing. However, in reality, ROS is not only that infrastructure, but also a mature set of tools, a wide-ranging set of robot capabilities provided by packages, and a greater ecosystem of add-ons.
The core functionality of ROS is augmented by a variety of tools, allowing developers to visualize and record data, navigate packages, and create scripts that automate complex configurations and setup processes.
One notable tool is rviz, a 3D visualizer that displays robot builds, the environments they may operate in, and sensor data. There’s also rosbag, a command-line tool that records and plays back message data. Others include the catkin ROS build system, rosbash tool suite to alter the functionality of Unix shell and command language, and roslaunch, a tool used to launch multiple ROS nodes locally and remotely.
ROS 1—Noetic Ninjemys
The latest and last ROS 1 release, known as Noetic Ninjemys, includes several notable features and offers 369 packages to augment its performance (Fig. 1).
This version has an end-of-life (EOL) date of May 2025, after which Open Robotics will discontinue ROS 1 and shift its focus to the continued development of ROS 2. Regardless, ROS 1 is still being supported and includes a number of tools and packages highlighted below:
These are just a few of the changes and upgrades found in ROS 1 Noetic Ninjemys. A complete list can be found on its release page. It also should be noted that more tools and packages will be added over the next several years before EOL.
ROS 2—Galactic Geochelone
Galactic Geochelone, the latest interim release of ROS 2, was designed to simplify hardware acceleration with robots (Fig. 2). While it still retains the core functionalities found in ROS 1, it brings many improvements, most notably Data Distribution Service (DDS) support. DDS acts as middleware for internode communication. It uses the quality-of-service (QoS) profile to provide real-time communication, scalability, performance enhancement, and security benefits not found native in ROS 1.
Galactic Geochelone also includes a series of binary packages for general use, making it easy for users who would like to run ROS 2 as-is without any add-ons or additional tools and packages. Notable ROS 2 features include:
As with ROS 1, ROS 2 can take advantage of the same packages, libraries, and tools for increased functionality, including Gazebo, Navigation, rosbag, and more. The ability to increase communication between nodes via DDS middleware pushes the ROS 2 platform to the top and is a primary feature responsible for ROS 1's retirement.
Adding onto the seasoned Robot Operating System increases its stability problems. So, the team at Open Robotics decided to build a new ROS from scratch, with interim and LTS versions released regularly every few years. It makes sense as the original ROS was designed for academic projects, and ROS 2 was created for commercial projects as hardware became more affordable.
Read more articles in TechXchange: ROS: Robot Operating System