Robot Operating System, or ROS, is a flexible, open-source framework designed for writing robot software. A middleware system built on top of other operating systems, it provides a set of tools, libraries and packages used to create modular and reusable code. That allows programmers to share notes on what they already know in order to focus on developing what they don’t and avoid building everything from scratch.
ROS Definition
ROS is an acronym for “robot operating system,” which refers to an open-source framework that provides tools and libraries for developing modular robotic systems out of reusable code.
What Is ROS?
While researching project topics for their Stanford PhDs, Eric Berger and Keenan Wyrobek stumbled across a patterned problem: Roboticists spent the majority of their time and effort rewriting code, and just a fraction on actual innovation. To solve this, the two set out to create an easy-to-use open-source framework that provides developers with a collection of tools and libraries to build and reuse code for robotics software. As a result, the Robot Operating System (ROS) was born in 2007.
Highly adaptable and scalable, ROS is used to build everything from household appliances like vacuum cleaners to drones, industrial robots and autonomous vehicles. Because of its collaborative nature, it’s often featured in both research and commercial robotics projects.
“ROS has become the lingua franca of the robotics world for connecting sensors, actuators and processing elements,” Anthony Rowe, professor of electrical and computer engineering at Carnegie Mellon University, told Built In. “Without ROS, it would take a tremendous amount of effort to get basic robotics projects off the ground.”
Using a distributed computing architecture, ROS facilitates the development of complex robot applications across a variety of hardware platforms, such as hardware abstraction, device drivers, message-passing between processes and package management, to name a few. This includes a number of robot-specific tooling for things like 3D visualization, motion control and navigation.
How Does ROS Work?
ROS works by organizing robot software into modular units called nodes. Each node performs specific tasks — like sensor processing, motor control or decision-making — and are responsible for controlling one part of the bot. These nodes need to communicate with each other to make the robot function as a whole, so they use a publish-subscribe — or “pubsub” — messaging network, where data is exchanged through topics, services or actions.
“You can think of a pubsub system kind of like Twitter,” Rowe said, “where people subscribe to topics of interest by following a user. Then whenever that user posts, or publishes, information, it’s delivered to everyone that subscribes.”
Topics are channels that allow nodes to send and receive data. They’re organized into a directory structure so programs can easily access and share information.
Nilutpol Kashyap, a level-three Intel Edge software innovator at Intel and robotics engineer at Acceleration Robotics, gave this example: If a camera node shares images through a “camera topic,” then a different node, which may be tasked with a job relative to visual media (like object recognition or tracking), could subscribe to this topic in order to access said images.
Nodes also advertise and call on one another for help using services, which are synchronous request-response interactions, and actions, or long-term tasks that provide updates along the way.
“ROS also provides a messaging system that allows these nodes to talk to each other without worrying about the underlying details, like how the data is being transferred,” Kashyap told Built In. “This setup makes it much easier for developers to work on different parts of a robot without stepping on each other’s toes.”
Versions of ROS
There are two versions of ROS: the original, ROS 1, and the next generation, ROS 2.
ROS 1
- Launched in 2007
- Single-threaded design
- Custom-messaging-system middleware
- Primarily uses C and Python
- Reliable, stable user base with extensive community resources
- Used for academic research and prototyping
- Runs on Linux
ROS 2
- Launched in 2017
- Multi-threaded design
- Data-distribution-service middleware
- Also uses C and Python, but can support other languages
- Processes requests concurrently to handle time-sensitive tasks
- Native security features, such as encryption and authentication
- Used in industrial and commercial applications
- Runs on Windows, macOS and Linux
Despite their differences, both are regularly used in new projects, with ROS 1 continuing to be a common fixture in recent releases.
How Is ROS Being Used?
A robotics company will often start with ROS powering their product, according to Tom Hummel, chief technology officer at Rapid Robotics. It allows a company to “get to proof-of-value very quickly for a given system,” he explained, which “allows developers to take advantage of the latest advances in robotic technology straightaway.” That’s why many companies incorporate ROS systems into their groundbreaking technology — including the use cases below:
Autonomous Vehicles
ROS is widely used in self-driving-car development, integrating sensor data from LiDAR, cameras and GPS for vehicle perception and decision-making. It’s consistently featured in the DARPA Urban Challenge, a government-backed competition designed to advance autonomous vehicle innovation. Companies like Stereolab use ROS to drive AI-powered 3D-depth and motion sensing in its computer vision tech built for robot drones and cars, while Luminar Technologies uses it to develop LiDAR solutions.
Industrial Robots
ROS simplifies the development of industrial-grade robotic arms by helping coordinate tasks like pick-and-place, assembly and welding, while integrating sensors and machinery. Bosch, Addverb and GE all implement ROS programming into their manufacturing processes.
Humanoid Robots
ROS enables humanoid robots to perform tasks like navigation, object recognition and grasping by providing the necessary algorithms and tools for interacting with their environment. ROS powers Draco, Apptronik’s flagship biped, as well as GITAI’s space-bound robots and rovers.
Medical Robots
ROS is crucial in developing surgical robots for minimally invasive operations by enabling precise control of robotic arms and seamless integration of imaging systems. It also supports haptic feedback, allowing surgeons to perform delicate procedures with enhanced precision. A two-armed, teleoperated surgical robot known as the Raven II uses a guided video camera and surgeon-interface system built on top of ROS, and so do EndoControl’s laparoscopic VIKY systems, which are handheld, robotically controlled endoscopic positioners.
Agricultural Robots
ROS supports the development of autonomous agricultural vehicles by enabling the integration of sensors for soil analysis, GPS for navigation and machine learning for crop management. This open-source framework helps streamline tasks like planting, harvesting and monitoring, optimizing modern farming practices. AGCO, Nature Robots and Organifarms all use ROS to build harvesting and regenerative farming practice tech.
Unmanned Aerial Vehicles (UAVs)
High-flying drone applications employ ROS across various functions, like aerial surveillance, delivery, mapping and environmental monitoring. The open-source framework facilitates the integration of cameras and LiDAR sensors while supporting flight control algorithms and mission planning, contributing to the overall functionality of drones. For example, Artisense offers both ROS1 and ROS2 support in its computer vision and sensor fusion positioning software systems.
Service Robots
Many household robots rely on ROS to get a sense of their immediate surroundings, whether it’s by integrated navigation systems or sharpening their user interaction capabilities. Only then can they stay on top of cleaning, plant watering and entertaining guests. Groove X’s adorably affectionate companion-bot Lovot runs on ROS middleware, and so does UBTECH’s bipedal robot-butler Walker X.
Research and Education
ROS’s user-friendly open-source framework is made for experimentation, which is how it’s become a major player in advancing complex robotic systems. Known for its versatility and accessibility, the middleware offers extensive tools and a standardized structure to quickly prototype, test and iterate on algorithms and robotic components. ROS’s widespread use and active community builds out the resource further, making it an ideal platform for learning. Since its mainstream adoption, ROS has been a top choice among universities and research institutions.
Frequently Asked Questions
What is the difference between OS and ROS?
An operating system, or OS, manages computer hardware and provides core functionalities for running all types of applications, from file management to process scheduling, whereas a robot operating system, or ROS, is the specialized framework that sits on top of an OS. It offers tools and libraries specifically designed for developing and integrating robotic systems.
What language does ROS use?
ROS primarily uses C and Python, but can also support other languages, like Java and Lisp, through add-on libraries and interfaces.
When should I use ROS?
Use ROS when developing robotics applications that require modularity, hardware abstraction and a robust set of tools and libraries for integrating algorithms, sensors and control systems. ROS 1 is ideal for prototyping and research-based projects, while ROS 2 is better for multi-robot systems that require real-time performance or industrial and commercial applications of scale.