If you’re working in robotics — or thinking about it — chances are you’ve come across ROS and ROS 2. These are two of the most widely used open-source frameworks for building, controlling, and connecting complex robots.
But what’s the real difference between the two? And which one should you choose today?
ROS (Robot Operating System) was created in 2007 by Willow Garage, a research lab in California aiming to simplify robotics development. The idea was to provide a modular, open-source platform with common tools and libraries so that researchers could stop reinventing the wheel and focus on innovative, higher-level problems.
Over time, ROS became the standard in academic and experimental robotics, thanks to its huge community and thousands of ready-to-use packages for all kinds of robots.
However, it had some limitations: no built-in real-time support, no secure communications, and difficulties handling distributed, multi-robot environments.
To address these issues, ROS 2 was introduced in 2014 by Open Robotics, with backing from major companies like Amazon, Intel, Bosch, and Apex.AI.
Let’s quickly break down where these two frameworks differ:
Architecture:
ROS 1 uses a centralized system with a ROS Master node managing communication. ROS 2 is fully decentralized, thanks to the DDS (Data Distribution Service) middleware, enabling more scalable, reliable communications.
Communication:
ROS 1 relies on proprietary protocols like TCPROS and UDPROS. ROS 2 uses DDS, a widely adopted standard in industries like defense, aerospace, and automotive.
Real-time and Security:
ROS 1 lacks real-time capabilities and native security tools. ROS 2, on the other hand, supports real-time communication setups, authentication, encryption, and fine-grained permission management.
Platform Compatibility:
ROS 1 runs primarily on Linux. ROS 2 is cross-platform — it works on Linux, Windows, macOS, and even embedded devices via micro-ROS.
Multi-Robot and Distributed Systems:
ROS 1 requires complicated workarounds for multi-robot setups. ROS 2, with DDS, was built for distributed, multi-robot applications.
The decision depends heavily on your project’s goals:
If you’re working on a prototype, academic project, or need to get something running quickly, ROS 1 can still be a solid option. It has a huge library of existing packages and a vast community.
If you’re developing an industrial, commercial, or distributed system, or need real-time support, security, or multi-robot coordination, ROS 2 is absolutely the right choice. It’s modern, scalable, and designed for today’s robotics challenges.
If you work with mobile robots, check out Nav2 — the modern replacement for ROS’s original navigation stack. It’s far more modular and built for multi-sensor, multi-robot environments.
If you’re interested in embedded systems, micro-ROS brings ROS 2’s capabilities to microcontrollers like the ESP32 and STM32, making it much easier to integrate small devices into larger robotics systems.
ROS 2 isn’t just an upgrade to ROS 1 — it’s a complete rethinking of how a robotics framework should work for real-time, secure, distributed, and scalable applications.
If you’re starting a serious or industrial-grade robotics project today, ROS 2 is the way to go. ROS 1, meanwhile, remains a great resource for learning, prototyping, and leveraging its vast ecosystem of existing tools and libraries.
If you’d like, in a future post we could walk you through how to install ROS 2 on Ubuntu and set up your first virtual mobile robot. Would you be interested? Let us know in the comments!