- français
- English
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
- ROS supports peer-to-peer messaging (no need for central server)
- Master runs on one machine (for name registration and lookup)
- Language Independent Architecture
- Communication capabilities that enable distributing computation in a robotic system
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
- Can have one or more publishers / subscribers
SERVICES: synchronous (one to many) network functions
- Can have only one server, can have one or more clients
ROS COMMUNICATION
ROS implements several different styles of communication,
- including synchronous RPC-style communication over services,
- asynchronous streaming of data over topics,
- 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