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 |