Learning ROS2
Robot Operating System (ROS) is a set of open source algorithms, hardware driver software and tools developed to develop robot control software. Even though it has operating system in its name it is not an operating system. It is
- Communication System (Publish Subscribe and Remote Method Invocation),
- Framework & Tools (Build system & dependency management, Visualization, Record and Replay)
- Ecosystem (Language bindings, Drivers, libraries and simulation (Gazebo)).
(Quoted from https://medium.com/software-architecture-foundations/robot-operating-system-2-ros-2-architecture-731ef1867776)
Basically, ROS2 is just how we communicate and coordinate information and commands throughout a large and complicated robotics system with a lot of moving parts
The Basics
The basics concepts of ROS2 have shockingly good documentation that would be difficult to outdo, so for this part it will mostly be links to go do the tutorials yourself. Please download ROS2 if you haven’t already
Below are the links for the sections you should go through IN ORDER. The sub bullet points are the specific tutorials you should do, and the crossed out ones are not required though you can still do them if you want
Beginning Concepts
The links below will teach you the basics concepts of ROS2. You can follow along with the turtlebot examples if that would help you, but feel free to just read through the sections
Coding the Basic Concepts
These tutorials are when you actually start to get into programming these things. It is HIGHLY recommended that you set up a temporary repository and follow along with creating all this code. I personally recommend typing out the code yourself and adding more comments as you go rather than copy/pasting
What language you choose to write things in is up to you. You do not have to do both the Python and C++ versions of tutorials, though it may be useful to do both
- Beginner: Client Libraries
- Using colcon to build packages
- Creating a workspace
- Creating a package
- Writing a simple publisher and subscriber (C++)
- Writing a simple publisher and subscriber (Python)
- Writing a simple service and client (C++)
- Writing a simple service and client (Python)
- Creating custom msg and srv files
- Implementing custom interfaces
- Using parameters in a class (C++)
- Using parameters in a class (Python)
- Creating and using plugins (C++)
Intermediate
This is where things start to get technical. Some of these sections are complicated enough to split into a more dedicated tutorial, so pay attention to which ones are crossed out as optional
- Intermediate
- Managing Dependencies with rosdep
- Creating an action
- Writing an action server and client (C++)
- Writing an action server and client (Python)
- Composing multiple nodes in a single process
- Using the Node Interfaces Template Class (C++)
- Monitoring for parameter changes (C++)
- Monitoring for parameter changes (Python)
- Launch
- RViz
Advanced
For the most part, advanced topics shouldn’t be necessary for you to learn right now. It is recommended that you briefly look through what’s in the list just to know the option to research it is there if needed, but you do not have to go through any of them in depth unless you feel like it
https://docs.ros.org/en/jazzy/Tutorials/Advanced.html
Author: Ella Moody (https://github.com/TheThingKnownAsKit)