Insights / Embedded & Firmware

The Soul of Robots: ROS (Robot Operating System) in 10 Minutes

What the Robot Operating System is, how its nodes communicate, what ROS 2 changed, and where ROS helps or hurts a robotics product.

A wheeled mobile robot with a robotic arm, its camera, lidar, compute board and motors shown as exploded components linked by data lines

The short answer

ROS (Robot Operating System) is not an operating system. It is an open-source set of libraries, tools and conventions that runs on top of an ordinary OS, usually Ubuntu Linux, and lets a robot's software be built from small programs called nodes that exchange messages through topics, services and actions. New projects should use ROS 2: ROS 1 reached end of life in 2025. ROS 2 replaces the central master with peer-to-peer discovery over DDS, adds quality-of-service and security options, and is designed for production robots as well as research.

What ROS is and why it exists

Building a robot means combining sensors, motors, cameras, perception, planning and control, work that needs many specialists. For a long time each robot started from its own architecture, with dedicated hardware and software written from scratch. Frameworks such as ROS changed that by giving teams shared building blocks.

Middleware (in robotics)
The software layer between a robot's hardware (sensors, manipulators, motors, cameras) and its higher-level functions (object recognition, mapping, planning) that lets the parts exchange data in a standard way.

ROS is that middleware. The smallest executable unit is a node. Nodes are grouped into packages, each focused on one task and installable on its own. A running ROS system is a computation graph of nodes exchanging typed messages, data structures built from basic types, arrays and other messages. The main languages are C++ and Python, through the client libraries rclcpp and rclpy in ROS 2.

How ROS nodes communicate: topics, services and actions

The three ROS communication patterns and when to use each.
PatternHow it worksTypical use
TopicPublish-subscribe, one-way and asynchronous: publishers send without waiting for subscribersContinuous sensor streams such as camera frames, IMU readings or odometry
ServiceRequest and response between a client and a server; the client waits for a single replyShort queries and commands, such as reading a parameter or triggering a calibration
ActionA goal, with periodic feedback and a final result, which the client can cancelLong-running tasks such as navigating to a point or moving an arm

With a service, the connection exists only for one request-response cycle.

A ROS service client node sending a request to a ROS service server node and receiving a response
A ROS service is a single request and response between a client node and a server node.

An action extends the service idea: the goal plays the role of the request and the result the role of the response, with feedback and status messages in between so the client knows how the task is progressing.

An action client sending goal and cancel messages to an action server, which returns status, result and feedback
A ROS action: the client sends a goal and can cancel it, while the server reports status, feedback along the way and a final result.

ROS 1 vs ROS 2: what changed

In ROS 1, every system needed a master process, roscore. Publishers and subscribers registered with it, and once the master had introduced them, messages flowed directly between nodes. If the master stopped, new connections could not be made.

ROS Master linked to a publisher node and a subscriber node, with ROS messages flowing from the publisher through a topic to the subscriber
How ROS 1 connected nodes: publishers and subscribers registered with a central master, then exchanged messages directly. ROS 2 removes the master.

ROS 2 removes the master. Nodes discover each other over DDS (Data Distribution Service), an industry middleware standard, through a ROS middleware interface that lets different DDS implementations be swapped in.

The practical differences between ROS 1 and ROS 2 for a new robotics project.
AspectROS 1ROS 2
StatusEnd of life since 2025 (last release: Noetic)Actively developed, with long-term-support releases
DiscoveryCentral master (roscore)Peer-to-peer discovery over DDS; no single point of failure
Communication tuningLimitedQuality-of-service profiles for reliability, history and deadlines
SecurityNot built inAuthentication, encryption and access control through SROS2 and DDS security
Node lifecycleAd hocManaged lifecycle nodes with defined states
Build toolingcatkinament with colcon

The ecosystem that makes ROS useful

  • RViz: visualises what the robot perceives and plans.
  • Navigation and mapping: Nav2 for mobile-robot navigation and slam_toolbox for mapping and localisation.
  • MoveIt: motion planning for robotic arms.
  • Simulation: Gazebo, the open-source simulator integrated with ROS, for physically realistic testing before hardware exists. Other simulators can be connected too.

This ecosystem also works for hardware makers. A sensor or camera vendor that publishes a ROS driver and a visual model makes its product easier to adopt; a robot maker that chooses components with existing packages gets to a working system sooner. Researchers can develop only the module they study, in the language they know, and rely on community packages for the rest.

Strengths and limitations of ROS

What ROS gives a robotics team, and what it costs.
PropertyStrengthLimitation
Open sourceFree to use in research and commercial products; large contributor baseMany forks and poorly documented packages; quality varies
ModularitySpecialists work on separate nodes, in their own languageEach node costs resources, and serialising messages adds overhead
ScalingSame software across many identical robots; containers simplify deployment and cloud simulationDistributed systems need network and QoS tuning to stay predictable
CommunityForums, courses and books for almost any questionUndocumented changes between versions; upgrades need real effort
Learning curveOne framework covers perception to controlNeeds Linux, build systems, simulation and robotics fundamentals at once

The engineering implication: ROS sits above the real-time layer

ROS 2 runs on a general-purpose computer and is well suited to perception, mapping, planning and coordination. Hard real-time motor and flight control usually stays on a separate microcontroller or flight controller, with ROS talking to it over a defined interface. For microcontrollers, micro-ROS brings a subset of ROS 2 to the device side. Deciding where that boundary sits is one of the first architecture choices in a ROS-based product.

Should you build on ROS?

  • Use ROS 2 for anything new; plan a migration for any ROS 1 system still in service.
  • Choose a current LTS distribution and a DDS implementation, and pin both.
  • Keep timing-critical control on a dedicated controller and define its interface to ROS early.
  • Prefer maintained packages with active releases; review any community package before depending on it.
  • Simulate in Gazebo before hardware is ready, and keep the simulation in your test pipeline.
  • Enable ROS 2 security for robots that run on shared or untrusted networks.

Questions engineers ask

What does ROS stand for?

Robot Operating System. Despite the name it is not an operating system but open-source middleware, libraries and tools that run on top of an OS such as Ubuntu Linux.

Is ROS free?

Yes. ROS is open source, and its core packages use permissive licences such as Apache 2.0 and BSD that allow commercial use. Check the licence of each additional package you depend on.

Is ROS 2 a programming language?

No. ROS 2 is a framework. You write nodes in a programming language, most often C++ or Python, using the rclcpp and rclpy client libraries.

Was this useful?

Where this shows up in our work

SolutionAutonomous & Intelligent Physical Systems EngineeringSplitting a robot or drone between a real-time controller and a higher-level computer, and making the two work together reliably, is the autonomous physical systems work we do across firmware, electronics and AI.

For how the same perception, planning and control split applies to drones, see UAV and drone systems engineering.

Apply this to your product

Talk through your device architecture

Talk through your device architecture

Sources