ROS 2 is the second generation of the Robot Operating System, rebuilt from the ground up rather than patched on top of the original. The ROS 2 documentation keeps the same definition of the system, “a set of software libraries and tools for building robot applications,” but states the project’s intent directly: “The goal of the ROS 2 project is to adapt to these changes, leveraging what is great about ROS 1 and improving what isn’t.” The “changes” were the years of new use cases, multi-robot teams, real-time control, embedded targets, and production deployments, that the original architecture had never been designed for.
The deepest change was the communications layer. Where ROS 1 relied on a central master to broker connections, ROS 2 was, in the documentation’s words, “primarily built on top of DDS/RTPS as its initial middleware foundation.” DDS is “an industry standard which is implemented by a range of vendors, such as RTI’s Connext DDS, eProsima’s Fast DDS, Eclipse’s Cyclone DDS.” Adopting it brought “distributed discovery (not centralized like in ROS 1) and control over different ‘Quality of Service’ options for the transportation,” which matter when a network link is lossy or a control loop must meet a deadline.
To avoid locking itself to one vendor, ROS 2 introduced an abstraction called the ROS middleware interface, or RMW. For each DDS implementation an RMW package is “created that implements the abstract ROS middleware interface using that specific implementation’s API and tools.” This let users choose Fast DDS, Cyclone DDS, Connext, and later non-DDS options like Zenoh, without changing application code. The familiar node, topic, and publish/subscribe model from ROS 1 survived on top of this new foundation.
ROS 2 shipped its first named distribution, Ardent Apalone, on December 8, 2017, and settled into a yearly release cadence on World Turtle Day, May 23rd. The transition was deliberate and slow: ROS 1 received its thirteenth and final release, Noetic Ninjemys, in 2020, giving the community years to migrate. The migration was real work, since the master, build system, and many APIs changed, but it moved ROS from a research tool toward something teams could ship in commercial robots.