What Every Roboticist Must Know About ROS - Part 01
The Robot Operating System, or ROS, is not an actual operating system but rather a flexible framework for writing robot software. It provides a collection of tools, libraries, and conventions that simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms. First introduced in 2007 by the Stanford Artificial Intelligence Laboratory and later developed under the stewardship of Willow Garage and the Open Source Robotics Foundation (OSRF), ROS has since become the de facto standard for robotic software development.
ROS is critical in modern robotics because it abstracts many of the complexities involved in robotic control, communication, and integration. It enables modular development using nodes, facilitates real-time inter-process communication, supports hardware abstraction, and allows for reusability of algorithms and components. By providing a well-structured ecosystem and a large community of contributors, ROS accelerates development and fosters collaboration, making it easier to build, test, and deploy sophisticated robotic systems in academic, industrial, and hobbyist contexts.
As the robotics field matured, new demands such as real-time safety, multi-robot coordination, security, and deployment on embedded systems began to exceed the capabilities of the original ROS 1 framework. These limitations led to the development of ROS 2, which was built from the ground up with these new requirements in mind. Leveraging Data Distribution Service (DDS) as its communication backbone, ROS 2 provides real-time capabilities, enhanced security, and better scalability. The transition from ROS 1 to ROS 2 marks a significant evolution in robotic software architecture, reflecting the growing complexity and performance expectations of modern robotics applications.
What is ROS?
The Robot Operating System (ROS) is an open-source middleware framework designed specifically for robotics development. Despite its name, ROS is not a traditional operating system like Linux or Windows. Instead, it runs on top of an existing OS and provides the essential tools, libraries, and conventions to enable seamless communication between various components of a robotic system. It abstracts much of the underlying complexity and offers a modular structure that allows developers to focus on designing intelligent robot behavior rather than low-level infrastructure.
At its core, ROS provides a communication architecture built around the following key concepts:
- Nodes: These are independent processes that perform computation. Each node is designed to handle a specific task, such as sensor data processing, path planning, or motor control.
- Topics: Nodes communicate by publishing and subscribing to topics. A topic is a named bus over which nodes exchange messages. This enables loosely-coupled communication, allowing nodes to interact without direct dependencies.
- Services: While topics are used for streaming data, services enable synchronous two-way communication between nodes. One node can send a request, and another node sends a reply.
- Parameters: These are configurable values stored on a central parameter server. Parameters can be used to tune a node’s behavior without changing the source code.
ROS also introduces a powerful ecosystem of reusable software components and tools. Software in ROS is organized into packages, each containing a specific functionality or capability, such as localization, mapping, or motion planning. Packages can be easily shared, extended, or modified, contributing to rapid development and prototyping.
The strength of ROS lies not just in its technical design but in its vibrant and collaborative community. With thousands of contributors worldwide, ROS has become a standard in academia and industry. It supports numerous robotic platforms, simulators like Gazebo and Ignition, and integrates well with languages such as Python and C++. The large ecosystem ensures that developers can leverage existing solutions for common problems, saving time and promoting best practices in robotic software engineering.
ROS 1: The Beginning
ROS 1 was first introduced in 2007 as an open-source initiative by the Stanford Artificial Intelligence Laboratory and gained widespread attention when it was adopted and further developed by Willow Garage. Its core objective was to provide a standardized framework that could unify the fragmented robotics development landscape. By offering tools, libraries, and communication structures, ROS 1 enabled developers to build robust robot applications without having to reinvent the wheel for each project.
Before ROS, most robotic systems were monolithic and bespoke, tailored specifically to individual hardware setups with little code reusability. ROS 1 introduced a modular approach to robotic system design, where developers could write independent nodes that performed specific tasks and communicate with each other using topics and services. This architecture allowed teams to easily integrate third-party packages and collaborate across different institutions and platforms.
Key components of ROS 1 included:
- roscore: The central master process that managed communication between nodes.
- rviz: A powerful 3D visualization tool for real-time sensor data and robot state.
- rosbag: A utility for recording and playing back ROS message data.
- roslaunch: A tool to start multiple nodes and configure parameters.
- catkin: A build system for compiling ROS packages and managing dependencies.
However, despite its innovation, ROS 1 had architectural limitations that surfaced as robotic applications scaled:
- Lack of real-time capabilities: ROS 1 was not designed with deterministic timing in mind.
- Single point of failure: The
roscoremaster process was a bottleneck and failure point. - Poor support for embedded and multi-robot systems
- Limited security features
- Tight coupling between communication and computation layers
As a result, many industrial and safety-critical applications required more robust features that ROS 1 couldn’t provide. This gap catalyzed the creation of ROS 2, which addressed these limitations with a new architecture while retaining the usability and community-focused principles of ROS 1.
| ROS Version | Codename | Release Year | End of Life | Supported Ubuntu Versions |
|---|---|---|---|---|
| ROS 1.0 | Box Turtle | 2010 | 2011 | Ubuntu 10.04 |
| ROS 1.2 | C Turtle | 2010 | 2011 | Ubuntu 10.04 |
| ROS 1.4 | Diamondback | 2011 | 2012 | Ubuntu 10.04 |
| ROS 1.6 | Electric Emys | 2011 | 2012 | Ubuntu 11.04 |
| ROS 1.8 | Fuerte | 2012 | 2013 | Ubuntu 10.04, 12.04 |
| ROS 1.10 | Groovy Galapagos | 2012 | 2013 | Ubuntu 12.04, 12.10 |
| ROS 1.11 | Hydro Medusa | 2013 | 2014 | Ubuntu 12.04, 13.04 |
| ROS 1.12 | Indigo Igloo | 2014 | 2019 | Ubuntu 12.04, 14.04 |
| ROS 1.13 | Jade Turtle | 2015 | 2017 | Ubuntu 14.04, 15.04 |
| ROS 1.14 | Kinetic Kame | 2016 | 2021 | Ubuntu 16.04 |
| ROS 1.15 | Lunar Loggerhead | 2017 | 2019 | Ubuntu 16.04, 17.04 |
| ROS 1.16 | Melodic Morenia | 2018 | 2023 | Ubuntu 18.04 |
| ROS 1.17 | Noetic Ninjemys | 2020 | 2025 (LTS) | Ubuntu 20.04 |
🛑 Note: ROS 1 will reach its official end-of-life on May 31, 2025. After this date, no new updates or security patches will be released. All users are encouraged to migrate to ROS 2.
ROS 1 was a revolutionary step in making robotics development more accessible and scalable. Its lasting impact on the field is evident in the large number of legacy systems still in operation today and the strong community it fostered, which continues to support robotics innovation around the globe.
ROS 2: A New Era
As the robotics industry matured, the limitations of ROS 1 became more apparent—especially in areas like real-time performance, security, scalability, and support for embedded platforms. To address these challenges and future-proof the framework, the Open Source Robotics Foundation (OSRF) initiated the development of ROS 2. Unlike a mere update, ROS 2 is a complete architectural overhaul built from the ground up to meet the needs of modern robotics applications while preserving the modularity and community-driven philosophy of ROS 1.
ROS 2 introduces several foundational improvements:
- DDS-based Communication: At the heart of ROS 2 is the use of the Data Distribution Service (DDS) as its communication middleware. DDS supports Quality of Service (QoS) policies, enabling fine-grained control over message delivery—essential for real-time and safety-critical systems.
- Real-Time Capabilities: ROS 2 is designed to operate within real-time constraints, making it suitable for applications in autonomous vehicles, industrial robots, and medical devices.
- Multi-robot and Distributed Systems: ROS 2 natively supports communication over multiple machines and networks, facilitating multi-robot coordination and distributed computation.
- Improved Security: ROS 2 incorporates security standards like SROS2, enabling encrypted communication, authentication, and access control.
- Cross-platform Support: Unlike ROS 1, which was primarily Linux-based, ROS 2 supports multiple operating systems including Linux, Windows, and macOS.
- Managed Node Lifecycle: ROS 2 introduces lifecycle management for nodes, allowing finer control over their state transitions (e.g., configuring, activating, shutting down).
The first ROS 2 release, Ardent Apalone, was launched in December 2017. Since then, regular distributions have introduced new features and improved stability. Long-Term Support (LTS) versions like Dashing, Foxy, Humble, and Jazzy are widely adopted in production systems.
| ROS Version | Codename | Release Date | EOL Date | Support Duration | Supported Ubuntu Versions |
|---|---|---|---|---|---|
| ROS 2.0 | Ardent Apalone | Dec 2017 | Dec 2018 | 1 year | 16.04, 18.04 |
| ROS 2.1 | Bouncy Bolson | Jul 2018 | Jul 2019 | 1 year | 18.04 |
| ROS 2.2 | Crystal Clemmys | Dec 2018 | Dec 2019 | 1 year | 18.04 |
| ROS 2.3 | Dashing Diademata | May 2019 | May 2021 | 2 years (LTS) | 18.04 |
| ROS 2.4 | Eloquent Elusor | Nov 2019 | Nov 2020 | 1 year | 18.04 |
| ROS 2.5 | Foxy Fitzroy | Jun 2020 | May 2023 | 3 years (LTS) | 20.04 |
| ROS 2.6 | Galactic Geochelone | May 2021 | Dec 2022 | ~1.5 years | 20.04 |
| ROS 2.7 | Humble Hawksbill | May 2022 | May 2027 | 5 years (LTS) | 22.04 |
| ROS 2.8 | Iron Irwini | May 2023 | Nov 2024 | 1.5 years | 22.04 |
| ROS 2.9 | Jazzy Jalisco | May 2024 | May 2029 | 5 years (LTS) | 24.04 |
| ROS 2.10 | Kilted Kaiju | May 2025 | Nov 2026 | 1.5 years | 24.04, 26.04 |
| ROS 2.X | Rolling Ridley | Jun 2020 | N/A (Rolling) | Continuous | Latest Ubuntu |
✅ Tip: If you’re starting a new project, consider using a stable LTS version like Humble (Ubuntu 22.04) or Jazzy (Ubuntu 24.04).
With ROS 2, the robotics community now has a future-ready, flexible, and powerful platform that is already being adopted across domains—from autonomous vehicles to space robotics. It represents not just a technical upgrade but a strategic shift in how we design and deploy robotic systems at scale.
Enjoy Reading This Article?
Here are some more articles you might like to read next: