ROS 2 Introduction

What is ROS in a nutshell

Content Outline

    If you are wondering:

    Important:

    Do I need to learn to ROS 1 to be able to learn ROS 2 (or vice versa), the answer is NO. (what? you expected a more elaborated answer?... I'm too lazy to write it down)

    Why do we need ROS nowadays?


    Just think for a moment:

    Imagine that it is around the year 2007, and that are many research laboratories in the area of robotics, each one of them with its own robots and each robot with its own particularities. How can you share code between researchers without reinventing the wheel (minimize code rewrite)?

    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.

    To motivate the example let’s think about a 2D LiDAR and the following pipeline:

    A toy example

    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:

    ROS Resources


    ROSources ? (bad joke):