About the Robot Operating System
A robot operating system is an open-source framework comprising a set of software libraries and tools for designing robotics applications on a personal computer.
The core sections of ROS use the standard 3-clause Berkeley Source Distribution (BSD) licence: an unrestricted licence that allows users to implement its packages in commercial and closed-source products. Other sections of the framework use commonly-used licences such as Apache 2.0, GPL, and MIT.
ROS was first developed in 2007 by two PhD students at Stanford University, Erin Berger and Keenan Wyrobek, as part of a personal robotics program. The academics wanted to create a unifying operating system with support for the full spectrum of robotics applications.
Using a $50,000 grant from two original members of the Apple Macintosh Team, they built the first unifying robotics OS and a hardware prototype called the PR1. After leaving Stanford to join the Willow Garage robotics research lab, they followed up with another iteration: PR2. In April 2012, Willow Garage created the Open Source Robotics Foundation (OSRF), which currently handles all new developments in ROS.
A robot standing next to luggage at a shopping centre in Japan. Image courtesy of Unsplash.
Although ROS are not fully-fledged operating systems like Windows and Linux, they do provide the same functionality as such computer-based operating systems. The standard ROS has thousands of packages, each providing specific functionality for hardware abstraction, machine-to-machine communications, device drivers, package management, testing and visualisation, and so on. Additionally, ROS provides open-source software tools and libraries to obtain, build, write, and execute code for robotics control across multiple computers.
How a Robot Operating System Works
From a high-level perspective, ROS comprises five basic components: the ROS master, nodes, topic, publisher, and subscriber—each discussed below.
The ROS master provides naming and registration for the nodes of a ROS system, which allows them to identify and interact with each other peer-to-peer. It also provides the parameter server: a shared, multivariate dictionary from which nodes can store and retrieve parameters at runtime. The ROS master runs the 'roscore' command that launches the ROS system.
A process that performs computation via a subscriber and publisher model with the ROS master. Nodes communicate with each other via topics, remote procedure call (RPC) services, and the Parameter server. In a typical ROS, different nodes handle specific functions: for example, camera, image processing, and data output—with all the commands and information reposed in the ROS master.
Topics are the means for information exchange between nodes. Each topic has a specific name and type for its publishing process, and a node can only receive it if it is subscribed to the same type. ROS uses Transmission Control Protocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP) for topic transport.
The publisher is a message transmitted by a node. Publishers are 'talker nodes' that broadcast messages within a ROS. The messages can be received by other nodes that are subscribed to the publisher’s topic of a matching type.
The subscriber is a message received by a node. It is an object that is subscribed to a particular topic (of a matching type) on the ROS, and it can receive messages from its publisher.
Applications of ROS
ROS is used extensively for industrial automation across several areas. For example, ROS has been implemented in Baxter, a versatile robot for manufacturing created by Rethink Robots. ROS has also been used for R&D in both academic and non-academic institutions.
Sarah Osentoski, a senior research engineer at Bosch Research and Technology Center, said her team has worked with Willow Garage’s PR2 to both design new robots and reprogram old ones. ROS currently runs on Unix-based platforms—and as of recently, its compatibility with Microsoft Windows OS has also been announced.
ROS offers a number of software tools that allow developers and engineers to utilise ROS packages for tasks and robot-agnostic management. These include the following:
A ROS file format for the recording and playback of ROS message data.
ROS Visualisation, aka Rviz
- A configurable 3D visualiser for visualising robotic systems.
- A suite containing a set of commands for ROS packages and functionality.
A robotic arm-based sewing machine. Image courtesy of Unsplash.
Benefits of ROS
Being a highly distributed and modular system, ROS allows engineers, makers, and manufacturers to utilise as little or as much of the infrastructure as required to add functionality to their projects. Some advantages of ROS include:
Engineers can use ROS to control multiple robots simultaneously with systems that contain more than one ROS master. The individual robots can also communicate with each other in real time and carry out simultaneous or sequential tasks.
Integration with MATLAB and Simulink
Engineers using MATLAB can also find design robotics applications using the Robotics System Toolbox. This toolbox provides algorithms and hardware connectivity for the designing, testing, and verification of autonomous robotics applications.
ROS also provides a powerful collaborative environment. Given that it is open-source and public, users can freely use and add their own code to an extensive global community of contributed packages.
In fact, according to ROS.org's July 2018 report, the ecosystem currently hosts over 3,000 packages that have been publicly announced—plus, new contributions are emerging every year.