What is ROS?
Robot Operating System (ROS) is a robot middleware. It is not the only robot middleware available. There are also some other robot middleware as briefly listed here and more extensively listed and compared to each other in this paper. The development of ROS was initiated at Stanford University. It was then developed and maintained at Willow Garage from 2007 to 2013. From 2013 to date, it has been developed and maintained by Open Source Robotics Foundation (OSRF) which afterwards changed its name to Open Robotics. Below are a few articles talking about the history of ROS:
- https://spectrum.ieee.org/automaton/robotics/robotics-software/the-origin-story-of-ros-the-linux-of-robotics
- https://www.theconstructsim.com/history-ros/
- https://en.wikipedia.org/wiki/Robot_Operating_System
Although it is called an operating system, it is actually not an operating system (OS) in the same meaning as Windows, Linux, Mac, iOS, or Android. The term “operating system” here is rather used metaphorically. In fact, ROS is a middleware. It is a robot middleware. It is built and working on a real OS such as Linux, Mac, or Windows.
ROS distributions (commonly called distros for short) are named in the order of alphabets, starting from Box Turtle (released in March 2010) to Noetic Ninjemys (released in May 2020) for ROS1, and starting from Ardent Apalone (released in December 2017) to Galactic Geochelone (released in May 2021) and still other distros to go for ROS2. Noetic Ninjemys is the last distribution of ROS1. After this last distro of ROS1, the development of ROS is focused to ROS2. Some of the ditros are Long-Term Support (LTS) distros. It is recommended to install and use LTS ROS distros due to its more stability and long-term support.
The architecture of ROS can be conveniently illustrated in the so-called ROS Graph. ROS is a software on which nodes are communicating to each other through messages, by using various schemes namely: 1) topic publishing and subscribing, 2) services, and 3) actions.
Serving as a middleware, ROS is sitting on top of a real OS. On top of the ROS core components, robotic application packages are built by the community, such as navigation packages, SLAM packages, MoveIt, perception packages, etc. Users can develop their custom code in, typically, C++ or Python, wrapped as one or more ROS packages. This software is communicating with robot’s actuators and sensors through some ROS drivers. The information from the robot’s sensors are received and subsequently processed by one or more algorithms, and the actuation command is sent to the robot’s actuators to move the robot.
There are four main official resources of ROS:
- ROS Wiki: http://wiki.ros.org/
- ROS Q&A’s: https://answers.ros.org/
- ROS Discourse: https://discourse.ros.org/