ROS: an open-source Robot Operating System (2009)

Writing code that runs on a robot is a very challenging task. Hardware varies from robot to robot, and the software required to perform certain tasks (e.g. picking up objects) can require an enormous amount of code (e.g. low-level drivers, object detection, motion planning, etc.). ROS, the Robot Operating System, is a framework for writing and managing distributed systems that run on robots. Note that ROS is not an operating system as the name suggests.

Nomenclature

A node is a process (or software module) that performs computation. Nodes communicate by sending messages (like protocol buffers) to one another. Nodes can publish messages to a topic or subscribe to a topic to receive messages. ROS also provides services (i.e. RPCs) which are defined by a service name, a request message type, and a response message type.

What is ROS?

In short, ROS provides the following core functionality.

Design Goals

ROS has the following design goals which motivate its design.

Use Cases