ROS - Robot Operating System

ROS (Robot Operating System) is a framework for writing robotic software. It was developed in 2007 by the Stanford Artificial Intelligence Laboratory.

It is based on a graph architecture where processing takes place in nodes that may receive, post and multiplex sensor, control, state, planning, actuator and other messages.

ROS has two basic "sides": The operating system side ros as described above and ros-pkg, a suite of user contributed packages (organized into sets called metapackages)

There exist more than 3000 of user contributed packages (suitable for tasks such as SLAM, object recognition and machine learning).

FEATURES

 

GRAPH ARCHITECTURE

NODES: ROS sink and source of data that are sent over the network.

PARAMETERS: persistent data (configuration & initialization) stored at the parameter server

TOPICS: asynchronous (many to many) communication streams

SERVICES: synchronous (one to many) network functions

 

ROS COMMUNICATION

ROS implements several different styles of communication,

  1. including synchronous RPC-style communication over services,
  2. asynchronous streaming of data over topics,
  3. and storage of data on a Parameter Server.

 

Asynchronous Communication using Topics

Topics can be imagined as television channels where publishers can continuously send messages while subscribers can tune themselves into the channel to listen. Several publishers and subscribers are allowed to send on the same topic. Consequently, it is many-to-many one-way communication. The data is sent in messages with either a predefined or a custom-made type defining its content.

Synchronous Communication using Services

Request / reply is done via a service, which is defined by a pair of messages: one for the request and one for the reply. A providing ROS node offers a service under a string name, and a client calls the service by sending the request message and awaiting the reply. Client libraries usually present this interaction to the programmer as if it were a remote procedure call. Services are defined using srv files, which are compiled into source code by a ROS client library. A client can make a persistent connection to a service, which enables higher performance at the cost of less robustness to service provider changes.

Shared Memory using Parameters

ROS offers a parameter server which acts as a shared memory.

from pixhawk

https://pixhawk.ethz.ch/toolchain/ros/start