Embedded systems
2025-10-22
13 minutes reading

Fundamentals of Robot Operating System (ROS)

Michał Woźniak
Michał Woźniak Software Developer

Robot Operating System (ROS) is an open-source framework that has become the de facto standard for robotics software development. Modern robots are super complex, with many components like sensors, motors and AI algorithms building all of this from scratch is hard for developers.

ROS solves this problem by providing a standardized, modular platform for developing advanced robotic systems. Despite the name, ROS is not an actual operating system like Windows or Linux; it’s a middleware layer or SDK (software development kit) that runs on top of a traditional OS (usually Ubuntu Linux).

In this article we’ll cover:

  • a brief history of ROS

  • the core concepts and main components of ROS

  • the differences between ROS 1 and ROS 2

  • the advantages of using ROS in robotics development

  • practical examples of ROS

Need help with embedded systems?

Our embedded development services help you integrate sensors, real-time software and hardware platforms into robust robotic solutions. Let’s talk about how we can speed up your project.

A Brief History of ROS

ROS was born in the mid 2000s as a research project at Stanford University to make robotics software more reusable and collaborative . Early on, graduate students Eric Berger and Keenan Wyrobek wanted to create a common “baseline system” so researchers wouldn’t have to keep reinventing the wheel for each new robot. They built a prototype robot (the PR1) and software by borrowing best practices from earlier frameworks like Morgan Quigley’s Stanford “Switchyard” system. In 2007 they teamed up with Scott Hassan’s Willow Garage, a robotics incubator, which shared their vision of creating a “Linux for robotics” - an open platform for all. The first ROS code repository was created at Willow Garage in November 2007.

Timeline ROS

Willow Garage then developed the PR2 , a two-armed mobile robot, as the flagship hardware for ROS. By 2010 ROS had its first official release (ROS 1.0) and Willow Garage distributed PR2 robots to several universities to grow the community. It worked: academic and open-source contributions poured in and ROS became a rich ecosystem. In 2012 Willow Garage helped create the Open Source Robotics Foundation (OSRF) to manage ROS’s future. By 2013 OSRF (later renamed Open Robotics) took over ROS development as Willow Garage shut down. Under OSRF/Open Robotics ROS continued to evolve with annual releases and growing community support.

A big milestone was the conception of ROS versions like ROS 2 around 2014. The limitations of “ROS 1” (the original ROS) prompted a rewrite to better suit commercial and advanced research needs. ROS 2 was designed to support real-time control systems , multi-robot systems, embedded platforms, and to incorporate modern networking technologies. The first ROS 2 version (code-named Ardent Apalone ) was released in December 2017. Since then, ROS 2 has gradually become the primary focus, with ROS 1’s final long-term release (Noetic) reaching end-of-life in 2025. Today, ROS stands as an ever-evolving open-source project with a global community, enabling advanced robotic applications. 

What is ROS and Its Main Components

In essence, ROS is a middleware framework that helps different parts of a robot’s software communicate reliably, enabling developers to create robust systems quickly, simplifying the software infrastructure. The ROS system organizes software into a graph of processes called nodes , each handling a specific task (for example, one node might read a camera, another plans a path), facilitating efficient communication patterns.

Main Components of ROS

These nodes communicate with each other by passing messages (using msg files) over topics or via services, allowing for seamless operation across multiple nodes. A topic is like a named bus for streaming messages (using a publish/subscribe model), and a service is a request/reply interface for one-off tasks, allowing nodes to exchange messages efficiently. In ROS 1, a central ROS Master process keeps track of all nodes and facilitates connections, setting up peer-to-peer communication between producer and consumer nodes. (ROS 2 replaces this with a decentralized discovery mechanism, as discussed later.) The ROS parameter server in ROS 1 is a shared dictionary for configuration parameters that nodes can read or write, such as control commands for robot movements, which are key components for robot configuration.

To illustrate, imagine a mobile robot: one node publishes laser scanner data to a “/scan” topic, while a camera node might publish image data to a different topic, so vision-based tasks can be done. Meanwhile a motion control node might offer a service “/move_base” that when called with a target location will move the robot there, while an image processing node might process the visual data. This modular architecture allows developers to mix and match components and reuse code across projects, so communication can happen across different robotic systems. ROS handles the message passing and data marshaling in the background so you can focus on processing data and robot logic.

Beyond the messaging core, ROS tools and libraries simplify common robotics tasks. For example, RViz is a 3D visualization tool for robot sensors and state, useful for debugging and monitoring. Rosbag is a tool for recording and replaying sensor data, which helps with testing algorithms off-line. There are also build systems (e.g. Catkin in ROS 1) and utilities (like roslaunch for starting many nodes at once). ROS is distributed through “ packages ” – bundles of nodes, libraries, and configurations for specific functionality, improving the development process. Thousands of ROS packages exist for everything from robot drivers to SLAM (Simultaneous Localization and Mapping), meaning you can often find a ready-made solution for standard robotics problems.

ROS 1 vs. ROS 2 - Evolution and Differences

As ROS grew in popularity it became clear a new architecture was needed to meet industrial and modern robot requirements . ROS 1 (the original ROS) was a great start but had limitations: it relied on a single master node (so multi-machine deployments were fragile if the master failed), it wasn’t real-time safe out of the box and it was tied to Linux-only libraries. ROS 2 was created to fix these issues.

To illustrate the evolution, the table below highlights the main differences between ROS 1 and ROS 2:

Aspect

ROS 1

ROS 2

Communication & Architecture

Centralized roscore/master, peer-to-peer links; limited protocols (TCPROS/UDPROS), no QoS control

Based on DDS (Data Distribution Service), decentralized discovery, QoS policies, no single point of failure

Real-Time Support

Not real-time safe by default; only partial workarounds possible

Designed for real-time systems, supports embedded platforms and real-time OS

Platform Support

Primarily Linux (Ubuntu)

Cross-platform: Linux, Windows, macOS, real-time OS

Programming & Codebase

Mix of C++ and Python; legacy design choices remain

Mostly C++ with modernized architecture, Python for high-level scripting; better performance & portability

Build System

Catkin build system

Ament build system with improved package management

Node Management

No built-in lifecycle management

Lifecycle nodes for deterministic startup/shutdown

Security

Minimal built-in security

Enhanced security features (authentication, encryption, access control)

End-of-Life

Final release: ROS 1 Noetic (EOL in May 2025)

Ongoing active development, future of the ROS ecosystem

ROS 1 was the foundation that brought standardization and collaboration to robotics. ROS 2 builds on that success, adding modern architecture and real-time, cross-platform capabilities so it’s suitable not only for research but for demanding industrial and commercial deployments.

Why Use ROS: Advantages and Problem-Solving Features

ROS has become popular because it simplifies robotics development in several ways. Here are some key benefits of using ROS:

  • Don’t Reinvent the Wheel: ROS has a philosophy of code reuse, including libraries that simplify low level device control. It has a vast collection of pre-built, community-vetted packages for common robotics functionality. Whether you need a SLAM algorithm for mapping, a driver for a LiDAR sensor or a motion planner for a robotic arm, chances are someone has already developed a ROS package for it. This speeds up development and reduces time-to-market for new robots. Developers can focus on the unique aspects of their application rather than rebuilding basic drivers and algorithms from scratch.

  • Modular design: Where nodes handle specific tasks and communicate through topics and services – makes systems more scalable and robust. By promoting clean separation of concerns, ROS allows for easy swapping or upgrading of components which makes the system more flexible and reliable. If one part crashes it doesn’t bring down the whole system. ROS 2’s decentralized communication makes it even more robust for large fleets of robots or distributed systems. In practice, ROS allows you to start small (maybe one laptop and a robot) and scale up to multi-computer setups or multi-robot teams without a complete redesign.

  • Powerful Tools and Simulation: ROS comes with professional-grade tools for simulation, testing and visualization. For example the Gazebo simulator (now Ignition Gazebo for ROS 2) lets you create a virtual environment and test your robot’s code in 3D physics simulation – a huge cost and time saver before deploying on real hardware. Likewise RViz provides interactive 3D visualizations of sensor data and robot state, so you can debug perception and planning algorithms. Tools like rosbag allow you to record sensor data and play it back, which is invaluable for developing and tuning robotics software off-line. These tools let you experiment with confidence and iterate faster which means more reliable robots.

Gazebo App
  • Large Community and Ecosystem: Join a global community of researchers, hobbyists and companies. Thousands of open-source ROS repositories and a Q&A forum (ROS Answers) full of knowledge. If you have a problem, someone else has seen it before – and maybe written a fix or workaround. Over 1,200 companies use ROS in some form, from startups to industrial giants. This community-driven ecosystem is a force multiplier: you benefit from others’ contributions and you can contribute back. The standardization ROS provides (common message formats, conventions, etc.) means code and skills are transferable across projects and even across organizations. For example a student who learned ROS for a class project can apply the same knowledge to a robotics job in industry – ROS is the common language between academia and industry.

  • Integration and Interoperability: One of ROS’s strengths is how it enables different hardware and software components to work together. It abstracts away device specific details with generic interfaces. For instance if a LIDAR is publishing a LaserScan message on a topic, any SLAM algorithm expecting that message type can subscribe and work with it, regardless of the LIDAR model. This interoperability extends to higher level capabilities as well. ROS has standard messages for things like robot poses, navigation goals, grasp actions, etc. which fosters a plug-and-play ecosystem of solutions. Moreover ROS-Industrial adapts ROS for factory automation, proving ROS can even integrate with heavy-duty industrial equipment.

Using ROS can save development time , increase reliability through tested libraries and foster collaboration. It provides a structure to a robotics project, addressing common pain points like inter-process communication, hardware abstraction, data recording and visualization. By solving these generic problems ROS lets developers focus on innovative features rather than reinventing infrastructure.

Real-World Applications of ROS

Since its inception ROS has found its way into many real-world applications. Here we show examples in medical technology , automotive and Industry 4.0 (where ROS is driving innovation: 

Medical and Healthcare Robotics

Robotic Arm Operation

ROS is being used in medical robotics research and healthcare automation. In surgical robotics for example ROS frameworks are used to integrate imaging systems with robotic manipulators for image-guided interventions. Researchers have built ROS-based systems for tasks like precision needle placement and robotic surgery planning, combining ROS with medical imaging platforms ( like 3D Slicer). By using ROS developers can interface with cameras, MRI/CT images, robotic arms and patient data in one system – speeding up prototyping of advanced medical devices and medical software development.

Beyond large commercial platforms like the Da Vinci robot, many academic and research labs are building smaller, specialized surgical robots using ROS. These systems often combine robotic arms, surgical microscopes and haptic feedback devices into testbeds for microsurgical research. ROS provides the middleware to synchronize real-time imaging, force feedback and robot control, so researchers can experiment with new surgical techniques. They can prototype complex workflows – like bimanual manipulation or tissue simulation – without reinventing the low-level communication stack, which accelerates innovation in surgical robotics.

Automotive and Autonomous Vehicles

Autonomic Car

The automotive industry has adopted ROS heavily, especially in autonomous vehicles and driver assistance. Many research and prototype self-driving cars use ROS as their software backbone. A prominent example is Autoware , the first open-source full-stack software for autonomous driving, which is built on ROS. Autoware (now in ROS 2) provides modules for everything an autonomous car needs – from sensor perception (camera, LiDAR processing) and localization, to path planning and vehicle control – all as ROS nodes and libraries. Using ROS in this context allowed a global community to collaborate on autonomous vehicle technology, accelerating progress in self-driving systems and automotive HMI software, where intuitive interaction between driver, passengers, and automation is key.

Car manufacturers and robotics startups use ROS for rapid prototyping of experimental vehicles. ROS’s simulation tools (like Gazebo/IGN for cars) allow testing self-driving algorithms in virtual cityscapes before trying them on real cars, which is safer and more efficient. Companies have created ROS interfaces for automotive sensors and CAN bus controllers, so new sensors or drive-by-wire systems can be integrated into a ROS-controlled vehicle. While commercial self-driving products may eventually deploy on optimized code or different frameworks, ROS is invaluable in R&D. It provides a common language for engineers to share algorithms and datasets. As an example, many autonomous vehicle projects – from small scale (e.g. campus delivery robots) to full-sized robo-taxis – have roots in ROS-based development.

Industrial Automation and Industry 4.0

Robotic Arm

Industry 4.0 refers to the next generation of smart factories and industrial automation, and ROS is playing a key role in this domain through the ROS-Industrial initiative. ROS-Industrial (ROS-I) is an extension of ROS for manufacturing automation and robotics. It brings ROS’s flexible, high-level programming to industrial robots like robotic arms, conveyors and AGVs (automated guided vehicles). One major advantage ROS-I provides is interoperability : it allows robots and equipment from different manufacturers to communicate and work together under one control framework. Industrial robots traditionally use proprietary software that doesn’t mix well, but ROS-I acts as a translator and coordinator, which is crucial for industrial automation systems where multiple machines must coordinate.

For example ROS-I has packages for common industrial robot brands (ABB, FANUC, Yaskawa, etc.) so a ROS program can send motion commands to any of these robots using the same interface. In a practical scenario a ROS-driven software can coordinate a robot arm on one side of a workcell with a mobile robot that delivers parts, using sensors to monitor the process – all integrated via ROS messages. By bridging the gap between proprietary systems, ROS lowers the barrier to deploying advanced automation in manufacturing, especially for smaller companies who benefit from open-source solutions. The result is a more connected, efficient production line where data flows freely between machines - the vision of Industry 4.0.

Conclusion

From university labs to global phenomenon, ROS has become the foundation of robotics. It’s the glue that holds complex robotic systems together a common framework to build upon, which has saved countless hours of development time around the world. By making robots “think and communicate” the same way, ROS has created an environment where sharing and collaboration is the new normal, and innovation in robotics happens fast. Whether it’s a startup building a delivery drone, an automaker prototyping self-driving cars or a hospital deploying service robots, ROS provides the software building blocks to speed up progress.

As ROS 2 gets better and better and more supported, the Robot Operating System is at the heart of the robotics revolution for experts and newcomers alike to build smarter, more capable robots.

Need help with embedded systems in robotics?

We help you design and integrate real-time software, hardware platforms and sensor networks – for performance and speed to market. Let’s talk about your project.

Contact us

We'll address every query and pinpoint
the ideal strategy for your project's success.

Fill out the form, and we’ll get back to you shortly.

Lukas Kosiński

Lukas Kosiński

Chief Executive Officer

The administrator of the personal data is Somco Software sp. z o.o., 13 Gen. Ottokara Brzoza-Brzeziny St., 05-220 Zielonka, KRS: 855688. The personal data are processed in order to answer the question contained in the contact form. More information, including a description of data subjects rights, is available in the information clause.