What is Robot Operating System (ROS)? - MohanadSinan/Smart-Methods GitHub Wiki

What is ROS?

ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers. ROS is similar in some respects to 'robot frameworks,' such as Player, YARP, Orocos, CARMEN, Orca, MOOS, and Microsoft Robotics Studio.

The ROS runtime "graph" is a peer-to-peer network of processes (potentially distributed across machines) that are loosely coupled using the ROS communication infrastructure. 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](http://wiki.ros.org/Parameter Server). These are explained in greater detail in our Conceptual Overview.

ROS is not a realtime framework, though it is possible to integrate ROS with realtime code. The Willow Garage PR2 robot uses a system called pr2_etherCAT, which transports ROS messages in and out of a realtime process. ROS also has seamless integration with the Orocos Real-time Toolkit.

Operating Systems:

ROS currently only runs on Unix-based platforms. Software for ROS is primarily tested on Ubuntu and Mac OS X systems, though the ROS community has been contributing support for Fedora, Gentoo, Arch Linux and other Linux platforms.

While a port to Microsoft Windows for ROS is possible, it has not yet been fully explored.

Releases:

The core ROS system, along with useful tools and libraries are regularly released as a ROS Distribution. This distribution is similar to a Linux distribution and provides a set of compatible software for others to use and build upon.

What is a Distribution?

A ROS distribution is a versioned set of ROS packages. These are akin to Linux distributions (e.g. Ubuntu). The purpose of the ROS distributions is to let developers work against a relatively stable codebase until they are ready to roll everything forward. Therefore once a distribution is released, we try to limit changes to bug fixes and non-breaking improvements for the core packages (every thing under ros-desktop-full). And generally that applies to the whole community, but for "higher" level packages, the rules are less strict, and so it falls to the maintainers of a given package to avoid breaking changes.

List of Distributions

Updated on May 2020.

Distro Release date Poster EOL date
ROS Noetic Ninjemys May 23rd, May, 2025 (Focal EOL)
ROS Melodic Morenia May 23rd, 2018 May, 2023 (Bionic EOL)
ROS Lunar Loggerhead May 23rd, 2017 May, 2019
ROS Kinetic Kame May 23rd, 2016 April, 2021 (Xenial EOL)
ROS Jade Turtle May 23rd, 2015 May, 2017
ROS Indigo Igloo July 22nd, 2014 April, 2019 (Trusty EOL)
ROS Hydro Medusa September 4th, 2013 May, 2015
ROS Groovy Galapagos December 31, 2012 July, 2014
ROS Fuerte Turtle April 23, 2012 --
ROS Electric Emys August 30, 2011 --
ROS Diamondback March 2, 2011 --
ROS C Turtle August 2, 2010 --
ROS Box Turtle March 2, 2010 --

Which distribution to use?

A rather arbitrary list of usecase driven recommendations. Updated on May 2020.

New Capability Major Update Frequency Recommended distro
Preferred but not required Not preferred Previous LTS (Melodic)
Much preferred Acceptable Latest (Noetic)
Much preferred Not preferred Switch to the latest LTS every 2 year
Platform Recommended distro
Specific platform is required See REP-3 for supported platform
Newer Gazebo is needed Use Noetic for Gazebo 11
I want to use OpenCV3 Kinetic, Melodic or Noetic
I want to use OpenCV4 Noetic