Robotics and ROS 2 - Learn by Doing! Manipulators
- Description
- Curriculum
- FAQ
- Reviews

Would you like to learn ROS 2 , the second and last version of Robot Operating System by building a real robot?
The philosophy of this course is the Learn by Doing and quoting the American writer and teacher Dale Carnegie
Learning is an Active Process. We learn by doing, only knowledge that is used sticks in your mind.
In order for you to master the concepts covered in this course and use them in your projects or, why not, also in your future job, I will guide you through the learning of all the functionalities of ROS both from the theoretical and practical point of view.
Each section is composed of three parts:
-
Theoretical explanation of the concept and functionality
-
Usage of the concept in a simple Practical example
-
Application of the functionality in a real Robot
I almost forgot! We need one more, essential and exciting part of this course for your active learning!
-
Experiment, Develop and Test your ideas in the Robot (real or simulated in your PC)
In each Section of the course, I’ll introduce you a new concept and then we will use it to add new functionalities to the robot:
-
Introduction to the Course
-
Setup the Environment: Install Ubuntu and ROS Noetic
-
Introduction to ROS: What is ROS and why is so important in Robotics.
Create the first ROS node
-
ROS Publisher/Subscriber
-
-
Digital Twin: Use a simulator to develop and test the functionalities of the robot without the need of any hardware device
-
URDF
-
Gazebo
-
Parameters
-
RViz2
-
Launch Files
-
-
Control: How to create a Control System for Robot actuators
-
Timer
-
Services
-
ros2_control
-
-
Kinematics: Use the package MoveIt! for the Trajectory Planning
-
TF2
-
MoveIt! 2
-
-
Application: Interface and make available all the functionalities of the robot to other software to create more complex applications and functionalities
-
Actions
-
-
Alexa: Use the Alexa Voice Assistant to actuate the robot with the voice
-
Build the Robot: Build the real robot and migrate all the functionalities from a simulated robot to a real one
-
Arduino IDE
-
Serial Communication
-
-
Conclusion and Summary of the course
To facilitate your learning and help you join the robotic world, the code lessons are available both in C++ and in Python and you can decide which language to use during the course.
Anyway, I would suggest you to follow both in order to complete your Robotics Software Developer profile!
-
8Install Ubuntu on Virtual Machine
-
9Install Ubuntu on Dual Boot
-
10<LAB>Install ROS 2 Jazzy on Ubuntu 24.04</LAB>
-
11<LAB>Install ROS 2 Humble on Ubuntu 22.04</LAB>
-
12<LAB>Configure the Development Environment in Ubuntu 24.04</LAB>
-
13<LAB>Configure the Development Environment in Ubuntu 22.04</LAB>
-
14Why a Robot Operating System?
-
15What is ROS 2
-
16Why a NEW Robot Operating System?
-
17ROS 2 Architecture
-
18Hardware Abstraction
-
19Low-Level Device Control
-
20Messaging Between Process
-
21Package Management
-
22Architecture of a ROS 2 Application
-
23Introduction to ROS 2
-
24<LAB>Create and Activate a Workspace</LAB>
-
25<PY>Simple Publisher</PY>
-
26<C++>Simple Publisher</C++>
-
27<PY>Simple Subscriber</PY>
-
28<C++>Simple Subscriber</C++>
-
29Workspaces, Publishers, Subscribers
-
30Robot Description
-
31URDF
-
32<LAB>Create the URDF Model</LAB>
-
33<LAB>Complete the URDF Model</LAB>
-
34RViz 2
-
35Parameters
-
36<PY>Parameters</PY>
-
37<C++>Parameters</C++>
-
38<LAB>ROS 2 Parameter CLI</LAB>
-
39URDF and Parameters
-
40<LAB>Visualize the Robot</LAB>
-
41Launch Files
-
42<LAB>Visualize the Robot with Launch Files</LAB>
-
43Add an RGB Camera to your Robot
-
44Gazebo
-
45<LAB>Simulate the Robot</LAB>
-
46<LAB>Launch the Simulation</LAB>
-
47Simulate an RGB Camera in Gazebo
-
55Robot Kinematics
-
56Pose of a Robot Arm
-
57Translation Vector
-
58Elementary Rotations
-
59Rotation Matrix
-
60Transformation Matrix
-
61Forward Kinematics
-
62TF2 Library
-
63<LAB>TF2 Tools</LAB>
-
64ROS 2 Services
-
65<PY>Service Server</PY>
-
66<C++>Service Server</C++
-
67Static and Dynamic Transformations
-
68<PY>Service Client</PY>
-
69<C++>Service Client</C++>
-
70Angle Representations
-
71Euler Angles
-
72Quaternion
-
73<PY>Euler to Quaternion Service</PY>
-
74<C++>Euler to Quaternion Service</C++>
-
75Inverse Kinematics
-
76MoveIt! 2
-
77<LAB>Configure MoveIt! 2</LAB>
-
78<LAB>Launch MoveIt! 2</LAB>
-
79Application Layer
-
80ROS 2 Actions
-
81<PY>Create an Action Server</PY>
-
82<C++>Create an Action Server</C++>
To install the simple_action_server in your CMakeLists.txt
add_library(simple_action_server SHARED src/simple_action_server.cpp)
target_include_directories(simple_action_server PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
target_compile_definitions(simple_action_server
PRIVATE "SIMPLE_ACTION_SERVER_CPP_BUILDING_DLL")
ament_target_dependencies(simple_action_server
"arduinobot_msgs"
"rclcpp"
"rclcpp_action"
"rclcpp_components")
rclcpp_components_register_node(simple_action_server
PLUGIN "arduinobot_cpp_examples::SimpleActionServer"
EXECUTABLE simple_action_server_node
)
-
83<PY>Create an Action Client</PY>
-
84<C++>Create an Action Client</C++>
-
85MoveIt! 2 API
-
86<PY>MoveIt! 2 API</PY>
-
87<C++>MoveIt! 2 API</C++>
-
88<LAB>MoveIt! 2 API</LAB>
-
89Task Server
-
90<PY>Task Server</PY>
-
91<C++>Task Server</C++>
-
92<LAB>Task Server</LAB>
Social Network