ROS 2 Introduction
What is ROS in a nutshell
Why do we need ROS nowadays?
If you think this is a trivial task to the point of “just share the code”, I honestly wouldn’t blame you for thinking that, but the reality is that is not a trivial task.
I like to start with a mental exercise using a “toy example”.
The LiDAR sensor can be as cheap as the RPLidar A1 ↗ ~100 USD or expensive as the Velodyne Puck ↗ ~4,600 USD (there are more expensive LiDAR sensors), but apart from the price difference they have different communication interfaces. The RPLidar A1 uses an adapter from UART-to-USB and the Velodyne uses a Ethernet connection.
The first pieces of software that would later become ROS were being developed at Stanford University by two master’s students Eric Berger and Keenan Wyrobek in the Personal Robotics Program ↗ . The first steps in creating this unified system began with building PR1 ↗ as a prototyping hardware to start working on the software from, borrowing best practices from other macros and open source software such as switchyard from Morgan Quigley another PhD student who had been working on STAIR ↗ (Stanford Artificial Intelligence Robot) at the Stanford Artificial Intelligence Lab. Eric Berger and Keenan Wyrobek in search of funding to continue the development of PR1 met Scott Hassan founder of Willow Garage a technology incubator. Hassan shared Berger and Keenan’s vision of creating a unified system for robotics and invited them to work at Willow Garage, making the first ROS code commit ↗ on November 7, 2007.
Willow Garage began developing PR2 using ROS as runtime software. Soon after ROS was released (0.4 Mango Tango) followed by a paper showing RVIZ and the first article about ROS ( ROS: an open-source Robot Operating System ↗ ).
In 2010 Willow Garage started the creation of Open Source Robotics Foundation (OSRF) and then in 2013 OSRF became the main maintainer of ROS as Willow Garage would be absorbed by its founders. Then Clearpath Robotics takes over the support responsibilities for PR2 in early 2014. Since then OSRF has taken over the primary development of ROS, releasing a new version every year.
Here an official blog about Why ROS ↗ .
What is ROS
Robot Operating System (ROS)
Is an open source middleware suit, and although ROS is not an operating system it has hardware abstraction functions, low-level device control, inter-process communication, package management, network communication and a wide range of macros, making it a flexible framework for robot software development, with a collection of tools, libraries and conventions that adapt to a wide variety of robotic platforms, with the aim of simplifying the task of creating complex and robust robotic systems.
More about middleware later.
ROS is a collection of “things”:
- Plumbing
- Tools
- Capabilities
- Ecosystem
Plumbing
Execution models:
- Iterative execution
- Event-oriented execution
Communication paradigms:
- Publication/Subscription (asynchronous)
- Services (synchronous)
- Actions (asynchronous)
Drivers availability.
Tools
- logging/plotting
- (Communication) graph visualization
- diagnostics
- visualization
- simulation
Capabilities
- Perception
- Navigation
- Manipulation
- Path planning
- more…
ROS Ecosystem: map ↗
- Schools
- Company
- Research Institute
- More
ROS Versions
If you are new to ROS you are probably a little frustrated trying to understand why there are two ROS versions, when to use one over the other or even which one to learn. As I mentioned at the beginning, don’t really worry so much about it and to keep things simple, think of ROS 1 as the old one and ROS 2 as the new one.
- ROS 1
- ROS 2
The truth is there are many technical details that are not necessary to cover at this time with respect to the difference, but if you are curious here it is: Changes between ROS 1 and ROS 2 ↗ .
Is correctly spelled with a space: ROS 2
or ROS 1
, check the Trademark Rules And Guidelines 2022 ↗ section “ROS in text”.
ROS Distributions
ROS distribution, or just ROS distro
A ROS distribution is a versioned set of ROS packages.
The concept of ROS Distributions
Full list of ROS distributions:
ROS Programming Languages
Important:
Nope, ROS is NOT a programming language.
ROS can intermix programming languages:
- Official support: C, C++, Python
Architecture ROS 2
Architecture ROS 1 vs. ROS 2.
Source code for ROS 2 stack:
- Officially supported client libraries:
- ROS client library (rcl) ↗
- ROS middleware (rmw) ↗
- DDS vendors:
ROS Resources
ROSources ? (bad joke):
- ROS website ↗
- ROS Answers ↗ this page is no longer active, use instead Robotics Stack Exchange ↗
- Google package name and keywork wiki: “package” wiki
- Official documentation ↗ RTFM (Read The Friendly Manual) :D