Operating Systems (OS) for general purpose computers include Windows (XP, 7, 8, 10, 11), Linux (Linux Mint, Ubuntu, Fedora, Gentoo), and Mac (OS X Mavericks, Yosemite, El Capitan). For smartphones, there are Android, iOS, Symbian, RiMO, Tizen, etc. Is Robot Operating System (ROS) a new operating system for robots?
Those new to ROS might think that it is a similar operating system as the aforementioned operating systems. ROS is the abbreviation for Robot Operating System, so it would be safe to say it is an operating system. However, a more accurate description would be that ROS is a Meta-Operating System. This system performs scheduling, loading, monitoring, and error handling processes by utilizing a virtualization layer between applications and distributed computing resources.
To put it another way, ROS is an open-source, robot-operating system. It includes hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, package management, and other services you’d expect from an operating system. It also comes with tools and libraries for getting, building, writing, and running code on multiple computers.
ROS includes a hardware abstraction layer similar to operating systems. However, unlike conventional operating systems, it can be used for numerous combinations of hardware implementation. Furthermore, it is a robot software platform that provides various development environments specialized for developing robot application programs.
ROS is not a conventional operating system such as Windows, Linux, and Android, but a meta-operating system that runs on the existing operating system. To operate ROS, an operating system such as Ubuntu, one of Linux’s distributions, must be installed first. After completing ROS installation on top Linux, features provided by the conventional operating system such as process management system, file system, user interface, and program utility (compiler, thread model) can be used. In addition to the basic features provided by Linux, ROS provides essential functions required for robot application programs as libraries, such as data transmission/reception among heterogeneous hardware, scheduling, and error handling. This type of software is also called middleware or software framework.
As a meta-operating system, ROS is developing, managing, and providing application packages for various purposes, and it has formed an ecosystem that distributes packages developed by users. As described in Figure 2-1, ROS is a supporting system for controlling a robot and sensor with a hardware abstraction and developing robot applications based on conventional operating systems.
ROS data communication is supported not only by a single operating system but also by multiple operating systems, hardware, and programs, making it ideal for robot development involving a variety of hardware.
Objectives of ROS
ROS has a different purpose than other robot software platforms (OpenRTM, OPRoS, Player, YARP, Orocos, CARMEN, Orca, MOOS, Microsoft Robotics Studio). The goal of ROS is to “build the development environment that allows robotic software developers to collaborate on a global level!” That is to say, ROS is focused on maximizing code reuse in robotics research and development, rather than orienting towards the so-called robot software platform, middleware, and framework.
To support this, ROS has the following characteristics.
- Distributed process: It is programmed in the form of nodes, the smallest units of executable processes. Each node runs independently and systematically exchanges data.
- Package management: Multiple processes with the same goal are managed as a package, making it simple to use and develop and share, modify, and redistribute.
- Public repository: Each package is published to the developer’s preferred public repository (e.g., GitHub) and attached a license.
- API: When creating a program with ROS, it is designed to call an API and easily insert it into the code. You’ll notice that ROS programming is similar to C++ and Python in the source code.
- Supporting various programming languages: The ROS program includes a client library that can be used with various programming languages. The library can be used with popular robotics programming languages like Python, C++, and Lisp and languages like JAVA, C#, Lua, and Ruby. Put another way, you can write a ROS program in any programming language you want.
Components of ROS
ROS consists of a client library to support various programming languages, a hardware interface for hardware control, communication for data transmission and reception, the Robotics Application Framework to help create various Robotics Applications, the Robotics Application, which is a service application based on the Robotics Application Framework, Simulation tools which can control the robot in a virtual space, and Software Development Tools.