The Robot Operating System (ROS) is an open-source robotics middleware suite that provides software libraries, tools, and conventions for developing robot applications. Despite its name, ROS is not a traditional operating system. It instead functions as a meta-operating system layer that sits on top of a host OS (typically Linux) and provides hardware abstraction, low-level device control, message passing between processes, and package management. ROS has become the de facto standard framework for robotics software development worldwide, used by researchers, hobbyists, and commercial companies alike.
Since its origins at Stanford University and Willow Garage in the mid-2000s, ROS has grown into an ecosystem with thousands of packages, an active global community, and adoption across industries ranging from manufacturing and logistics to space exploration and autonomous vehicles.
The earliest components of what would become ROS began taking shape at Stanford University around 2006 and 2007. Morgan Quigley, a PhD student at the Stanford Artificial Intelligence Laboratory, developed a software framework called Switchyard as part of the Stanford AI Robot (STAIR) project. Switchyard was designed to support the STAIR robot, a platform for research in general-purpose robotic manipulation and perception. Quigley's framework addressed a recurring problem in academic robotics: every new research project required significant effort to build basic infrastructure before any actual research could begin.
At the same time, Eric Berger and Keenan Wyrobek were PhD students in Kenneth Salisbury's robotics laboratory at Stanford, leading the Personal Robotics Program. They built the PR1 (Personal Robot 1) hardware prototype and envisioned creating a "Linux for robotics" that would allow researchers to share and reuse code across different robot platforms.
Berger and Wyrobek connected with Scott Hassan, a technology entrepreneur who had founded Willow Garage in late 2006 in Menlo Park, California. Hassan shared their vision for an open, reusable robotics software platform and invited them to join Willow Garage to pursue the idea full-time.
In 2007, Morgan Quigley began collaborating with Willow Garage, and the first commit of ROS code was made to SourceForge on November 7, 2007. Over the next two years, Quigley oversaw the core ROS architecture while Willow Garage's growing engineering team extended and refined the framework. A key advantage during this period was that ROS prototypes were simultaneously driving both the PR2 robot at Willow Garage and multiple Stanford robots, which forced the design to be sufficiently general rather than tailored to a single platform.
Willow Garage also developed the PR2 robot, which became an important testbed and reference platform for the ROS community. The company distributed PR2 units to leading research institutions, seeding a global community of ROS developers.
Early tutorials on ROS were posted in December 2008, and ROS 1.0 was released in January 2010. The first official distribution, ROS Box Turtle, followed on March 2, 2010.
As ROS adoption grew rapidly among researchers and began attracting commercial interest, it became clear that the project needed an independent steward. In May 2012, the Open Source Robotics Foundation (OSRF) was established to shepherd the ongoing development of ROS and the Gazebo simulator. OSRF's initial backers included Willow Garage and DARPA, which awarded OSRF its first contract to support open-source simulation software for the DARPA Robotics Challenge.
Willow Garage itself wound down operations in early 2014, but by then ROS had achieved sufficient momentum and community support to continue thriving under OSRF's stewardship.
In September 2016, a taxable subsidiary named the Open Source Robotics Corporation (OSRC) was created to enable greater collaboration with industry. Together with OSRF, these organizations came to be known collectively as Open Robotics in May 2017.
In December 2022, Alphabet's robotics subsidiary Intrinsic acquired the Open Source Robotics Corporation (OSRC) and its Singapore office (OSRC-SG). The nonprofit OSRF remained independent and unaffected by the acquisition, continuing its oversight of ROS and Gazebo.
In March 2024, OSRF announced the creation of the Open Source Robotics Alliance (OSRA), a new governance initiative modeled after organizations like The Linux Foundation. The OSRA commenced operations on April 15, 2024, and uses a mixed membership and meritocratic model to provide the community with greater involvement in the technical direction of ROS, Gazebo, and Open-RMF.
At its core, ROS organizes software into a distributed computation graph. The fundamental building blocks of this graph are:
| Concept | Description |
|---|---|
| Nodes | Individual processes that perform computation. A robot control system typically consists of many nodes, each responsible for a specific task such as sensor processing, motor control, or path planning. |
| Topics | Named buses over which nodes exchange messages using a publish-subscribe pattern. A node that produces data publishes messages to a topic, and any node interested in that data subscribes to the same topic. |
| Messages | Typed data structures used for communication. ROS defines standard message types for common data such as sensor readings, joint states, and poses, and developers can define custom message types as needed. |
| Services | A synchronous request-reply mechanism for communication that does not fit the publish-subscribe pattern. A service has a defined request and response type, and a node calls the service and waits for the result. |
| Actions | An asynchronous mechanism for long-running tasks. Actions extend the service model with feedback during execution and the ability to cancel goals. |
| Parameters | Configuration values that nodes can get and set at runtime, enabling dynamic reconfiguration without restarting processes. |
The publish-subscribe model is the primary communication pattern in ROS. Nodes are loosely coupled: a publisher does not need to know which nodes are subscribing, and subscribers do not need to know which nodes are publishing. This decoupling makes it straightforward to add, remove, or replace nodes without modifying other parts of the system. For example, switching from a simulated laser scanner to a physical one requires changing only the driver node; all downstream nodes that subscribe to the laser scan topic continue to work without modification.
ROS software is organized into packages, which are the smallest buildable and releasable units. Each package contains source code, build files, configuration, launch files, and documentation. Packages are described by a package.xml manifest file that declares metadata, dependencies, and build type.
Packages are developed within workspaces, which are directory structures containing a src folder with one or more packages. The build tool compiles all packages in the workspace and manages their interdependencies.
ROS has used several build systems over its history:
| Build System | ROS Version | Description |
|---|---|---|
| rosbuild | ROS 1 (Box Turtle through Fuerte) | The original build system. Wrapped CMake commands in custom macros, built packages in-source, and lacked proper install targets. |
| catkin | ROS 1 (Fuerte onward) | Replaced rosbuild starting with the Fuerte distribution. Built on CMake more cleanly, supported out-of-source builds, parallel compilation of interdependent packages, and proper install targets. |
| ament | ROS 2 | The build system for ROS 2, with ament_cmake and ament_python as the recommended build types. |
| colcon | ROS 2 | The meta-build tool for ROS 2 that iterates on catkin_make, catkin_tools, and ament_tools. Supports multiple build types including ament_cmake, ament_python, and pure CMake. |
The original ROS (now referred to as ROS 1) was designed primarily for academic research on single robots operating in controlled environments. Its architecture relies on a central ROS Master node (roscore) that provides name registration and lookup services so that nodes can find each other. While this design simplified development, it introduced a single point of failure and made multi-robot systems more complex to configure.
ROS 1 supports two primary client libraries: roscpp (C++) and rospy (Python). Communication between nodes uses a custom TCP-based protocol (TCPROS) or optionally UDP (UDPROS).
ROS 1 followed an alphabetically named distribution scheme, with each name referencing a turtle species (a nod to the project's educational roots and the Turtlesim simulator). New distributions were initially released roughly every six months, later shifting to an annual cadence. Long-term support (LTS) releases, tied to Ubuntu LTS versions, received five years of support.
| Distribution | Release Date | EOL Date | Target Ubuntu | Notes |
|---|---|---|---|---|
| Box Turtle | March 2010 | First official distribution | ||
| C Turtle | August 2010 | |||
| Diamondback | March 2011 | |||
| Electric Emys | August 2011 | |||
| Fuerte Turtle | April 2012 | Introduced catkin build system | ||
| Groovy Galapagos | December 2012 | July 2014 | 12.04 | |
| Hydro Medusa | September 2013 | May 2015 | 12.04/13.04 | |
| Indigo Igloo | July 2014 | April 2019 | 14.04 | First LTS release |
| Jade Turtle | May 2015 | May 2017 | 14.04/15.04 | |
| Kinetic Kame | May 2016 | April 2021 | 16.04 | LTS |
| Lunar Loggerhead | May 2017 | May 2019 | 17.04 | |
| Melodic Morenia | May 2018 | May 2023 | 18.04 | LTS |
| Noetic Ninjemys | May 2020 | May 2025 | 20.04 | Final ROS 1 release, LTS |
ROS Noetic Ninjemys was the last ROS 1 distribution. Its end-of-life date of May 31, 2025, marked the official end of ROS 1 as an actively maintained project. The final package sync (noetic/2025-05-29) was the 89th and last for ROS Noetic.
ROS 2 is a ground-up redesign of the framework, initiated to address the limitations of ROS 1 for production, safety-critical, and multi-robot deployments. Development of ROS 2 began around 2014, with the first alpha releases in 2015 and the first official distribution (Ardent Apalone) released in December 2017.
DDS Middleware. The most significant architectural change in ROS 2 is its adoption of the Data Distribution Service (DDS) as the underlying communication middleware. DDS is an industry standard (OMG DDS) originally developed for military and industrial systems. It provides:
Real-Time Capabilities. ROS 2 includes improved support for real-time computing. The DDS QoS system enables low-latency, high-throughput data exchange, and the framework supports deterministic execution through careful memory management and threading models. While not a hard real-time system by default, ROS 2 can be configured to meet soft real-time requirements when paired with a real-time operating system kernel.
Security. ROS 2 integrates the DDS Security specification, which provides authentication, encryption, and access control at the topic level. This enables fine-grained security policies where different data flows can have different security levels on the same network.
Multi-Robot Support. The elimination of the central ROS Master and the use of DDS domains make ROS 2 inherently better suited for multi-robot systems. Robots can discover each other on the network without pre-configuration, and DDS domain IDs allow logical separation of communication between different robot groups.
Cross-Platform Support. ROS 2 officially supports Linux (Ubuntu), Windows, and macOS, broadening its accessibility beyond the Linux-only support of ROS 1.
Lifecycle Nodes. ROS 2 introduces managed lifecycle nodes with well-defined states (unconfigured, inactive, active, finalized), giving developers explicit control over node initialization, activation, and shutdown sequences.
Starting with the Kilted Kaiju release in May 2025, ROS 2 added Tier 1 support for Eclipse Zenoh as an alternative middleware, marking the first time a non-DDS middleware was officially supported. Zenoh offers advantages for certain use cases including lower overhead and better performance in wide-area network scenarios.
ROS 2 follows an annual release schedule, with new distributions released on May 23 (World Turtle Day). Even-year releases are LTS versions with five years of support; odd-year releases receive approximately 18 months of support.
| Distribution | Release Date | EOL Date | Type | Target Ubuntu |
|---|---|---|---|---|
| Ardent Apalone | December 2017 | December 2018 | Non-LTS | 16.04 |
| Bouncy Bolson | June 2018 | June 2019 | Non-LTS | 18.04 |
| Crystal Clemmys | December 2018 | December 2019 | Non-LTS | 18.04 |
| Dashing Diademata | May 2019 | May 2021 | LTS | 18.04 |
| Eloquent Elusor | November 2019 | November 2020 | Non-LTS | 18.04 |
| Foxy Fitzroy | May 2020 | May 2023 | LTS | 20.04 |
| Galactic Geochelone | May 2021 | November 2022 | Non-LTS | 20.04 |
| Humble Hawksbill | May 2022 | May 2027 | LTS | 22.04 |
| Iron Irwini | May 2023 | November 2024 | Non-LTS | 22.04 |
| Jazzy Jalisco | May 2024 | May 2029 | LTS | 24.04 |
| Kilted Kaiju | May 2025 | November 2026 | Non-LTS | 24.04 |
| Rolling Ridley | June 2020 | Ongoing | Rolling | Latest |
Rolling Ridley is a continuously updated development distribution that serves as a staging area for future stable releases. Unlike stable distributions, Rolling receives frequent updates that may include breaking changes.
Navigation2 (Nav2) is the second generation of the ROS navigation stack, designed for ROS 2. It provides a complete autonomous navigation solution for mobile robots, including global and local path planning, obstacle avoidance, recovery behaviors, and waypoint following.
Nav2 replaced the original ROS Navigation Stack's finite state machine architecture with behavior trees, offering greater flexibility and modularity. Key components include:
Nav2 supports multiple planning algorithms including NavFn, Smac Planner (2D, Hybrid-A*, and lattice-based), and Theta*. It is widely used on differential-drive robots, Ackermann-steering vehicles, and omnidirectional platforms.
MoveIt is the most widely used open-source framework for robotic manipulation, supporting over 150 different robots. Its first commit was made in October 2011, and it was initially developed at Willow Garage by Sachin Chitta, Ioan Sucan, and other team members.
SRI International supported MoveIt between October 2013 and June 2015. Since 2015, PickNik Robotics has led the maintenance and development of the project.
MoveIt 2 is the ROS 2 port of MoveIt, incorporating the latest advances in motion planning, 3D perception, kinematics, control, and navigation. Its capabilities include:
Simultaneous Localization and Mapping (SLAM) is a critical capability for mobile robots operating in unknown environments. The ROS ecosystem includes several SLAM implementations:
The ROS perception stack provides tools for processing sensor data from cameras, depth sensors, and lidar:
NVIDIA Isaac ROS is a collection of CUDA-accelerated ROS 2 packages that leverage GPU hardware for high-performance perception and planning. Key modules include Isaac ROS Visual SLAM, nvBlox for 3D mapping, and cuMotion for GPU-accelerated motion planning. The NITROS (NVIDIA Isaac Transport for ROS) system enables efficient zero-copy GPU memory sharing between ROS 2 nodes, avoiding unnecessary CPU-GPU data transfers.
Gazebo is a physics-based robot simulator tightly integrated with ROS. Originally developed alongside ROS at Willow Garage, Gazebo allows developers to test robot software in realistic virtual environments before deploying to physical hardware.
Gazebo Classic (versions numbered 1 through 11) was the long-standing simulation platform for the ROS community. Gazebo 11, released in January 2020, was the final Classic release. Gazebo Classic was discontinued in 2025.
A complete rewrite of Gazebo, originally developed under the name "Ignition," was renamed to simply "Gazebo" in 2022 (due to trademark considerations). Modern Gazebo uses lettered release names and features a modular architecture with improved rendering, physics, and sensor simulation. Key releases include:
| Release | Date | Support |
|---|---|---|
| Fortress | September 2021 | 5 years (LTS) |
| Garden | September 2022 | Through November 2024 |
| Harmonic | September 2023 | 5 years (LTS) |
| Ionic | September 2024 | 2 years |
| Jetty | September 2025 | 5 years (LTS) |
Modern Gazebo communicates with ROS through the ros_gz bridge package, which provides bidirectional message transport between Gazebo Transport and ROS topics.
ROS-Industrial (ROS-I) is an open-source project that extends ROS capabilities to manufacturing and industrial automation. Launched in 2012 with the formation of the ROS-Industrial Consortium, the project is led by three regional organizations:
The consortium's members include major industrial companies such as ABB, Siemens, Universal Robots, Yaskawa, BMW, 3M, and Bosch, among others. Members drive development through Focused Technical Projects (FTPs) based on near-term automation needs, and the consortium provides training, technical support, and roadmap planning for ROS-I.
ROS-Industrial provides standardized interfaces for industrial robot arms, grippers, and sensors, along with tools for path planning, calibration, and process automation. It has enabled ROS adoption in applications such as welding, painting, material handling, and quality inspection.
ROS has achieved broad adoption across both academic and commercial robotics. As of the mid-2020s, more than 740 commercial companies use ROS in their products or development workflows.
The scale of ROS usage has grown dramatically over the years. In May 2015, nearly 9 million ROS packages were downloaded from over 70,000 unique IP addresses. By 2022, total Debian package downloads for ROS exceeded 501 million in a single year, with 173.35 terabytes of ROS packages served. In 2022, ROS 2 accounted for 39.82% of all ROS downloads, reflecting growing momentum toward the newer version.
| Organization | Application |
|---|---|
| NASA | Robonaut 2, the first robot to run ROS in space, operated on the International Space Station starting September 2014 |
| Amazon | AWS RoboMaker, a cloud robotics service for simulation and deployment of ROS applications, launched November 2018 |
| Microsoft | Ported core ROS to Windows in September 2018 and provides ROS support through Azure and Visual Studio |
| NVIDIA | Isaac ROS packages for GPU-accelerated perception and planning on Jetson and workstation platforms |
| Toyota | Toyota Research Institute has donated over $1 million annually to OSRF and partnered on robotics and autonomous vehicle research using ROS |
| Bosch | Active contributor and ROSCon gold sponsor, using ROS in research and product development |
| BMW | Uses ROS in manufacturing automation and logistics robotics |
| Clearpath Robotics | Builds ROS-native mobile robot platforms for research and industrial applications |
ROSCon is the annual developer conference for the ROS community, held since 2012. The conference has grown substantially, from its early years to nearly 1,000 attendees at ROSCon 2024 in Odense, Denmark. Gold sponsors in recent years have included NVIDIA, Bosch, Qualcomm, and other major technology companies. ROSCon 2025 was held in Singapore, and the 2026 event is planned for Toronto, Canada.
ROS provides client libraries for multiple programming languages, with C++ and Python being the primary supported options:
| Language | ROS 1 Library | ROS 2 Library |
|---|---|---|
| C++ | roscpp | rclcpp |
| Python | rospy | rclpy |
| Java | rosjava | rcljava |
| Rust | rclrs (community) | |
| C | rclc (for microcontrollers) |
The rclc (ROS Client Library for C) is particularly notable for enabling ROS 2 on microcontrollers through the micro-ROS project, which brings ROS 2 communication to resource-constrained embedded devices.
Both the language-independent tools and the main client libraries (C++, Python, and Lisp) are released under the terms of the BSD license, making ROS open-source software that is free for both commercial and research use. Individual ROS packages contributed by the community may use different open-source licenses.
ROS includes a rich set of development and debugging tools:
| Feature | ROS 1 | ROS 2 |
|---|---|---|
| Communication | Custom TCPROS/UDPROS | DDS (industry standard) |
| Discovery | Central ROS Master | Decentralized (DDS discovery) |
| Real-time support | Limited | QoS policies, lifecycle nodes |
| Security | None built-in | DDS Security (authentication, encryption, access control) |
| Multi-robot | Requires workarounds | Native DDS domain support |
| OS support | Linux only (officially) | Linux, Windows, macOS |
| Build system | catkin | ament + colcon |
| Python version | Python 2 (early) / Python 3 (Noetic) | Python 3 only |
| Status | End of life (May 2025) | Active development |
With the end of ROS 1 in May 2025, the ROS community is fully focused on ROS 2 development. The Jazzy Jalisco LTS release (May 2024) provides a stable foundation through 2029, while the Kilted Kaiju release (May 2025) introduced Zenoh as a Tier 1 middleware alternative.
Active areas of development include tighter integration with artificial intelligence and machine learning frameworks, improved support for cloud robotics, enhanced real-time performance, and expanding the ecosystem of hardware drivers and application packages. The formation of OSRA in 2024 signals a maturing governance model designed to sustain the project as ROS continues to expand beyond research and into commercial production deployments.
The ROS ecosystem remains one of the most active open-source communities in robotics, with contributions from hundreds of organizations and thousands of individual developers worldwide.