Self Driving and ROS 2 – Learn by Doing! Odometry & Control
About Course
This free Self-Driving and ROS 2 course on Udemy will teach you how to build a real self-driving robot using ROS2. Learn about autonomous navigation, odometry, and localization from industry experts. This course uses a learn-by-doing approach to teach you all the functionalities of ROS, from theory to practice. Each section includes theoretical explanations, practical examples, and real robot applications. You will learn programming lessons in both Python and C++, giving you the flexibility to choose your preferred language. By taking this course, you will gain valuable skills and knowledge in self-driving robots and ROS 2, opening doors to exciting career opportunities in the robotics field. This course is completely free and available on Theetay, a platform that offers free access to top-rated courses from Udemy, Udacity, Coursera, MasterClass, NearPeer, and other platforms.
What Will You Learn?
- Create a Real Self-Driving Robot
- Mastering ROS2, the last version of the Robot Operating System
- Implement Sensor Fusion algorithms
- Simulate a Self-Driving robot in Gazebo
- Programming Arduino for Robotics Applications
- Use the ros2_control library
- Develop a Controller
- Odometry and Localization
- Kalman Filters and Extended Kalman Filter
- Probability Theory
- Differential Kinematics
- Create a Digital Twin of a Self-Driving Robot
- Master the TF2 library
Course Content
Introduction
-
A Message from the Professor
-
Course Motivation
02:53 -
The Self-Driving Program
03:29 -
Course Presentation
06:16 -
Meet your Teacher
02:27 -
Get the Most out of the Course
03:40 -
Course Material Download Link
00:00
Setup
-
Install ROS 2
03:38 -
Configure the Development Environment
09:01
Introduction to ROS 2
-
Why a Robot Operating System
04:18 -
What is ROS 2
03:13 -
Why a NEW Robot Operating System
04:58 -
ROS 2 Architecture
03:12 -
Hardware Abstraction
02:53 -
Low-Level Device Control
01:22 -
Low-Level Device Control
01:22 -
Messaging Between Process
07:00 -
Package Management
01:41 -
Architecture of a ROS 2 Application
02:59 -
LABCreate and Activate a WorkspaceLAB
11:18 -
PYSimple PublisherPY
18:16 -
C++Simple PublisherC++
23:14 -
PYSimple SubscriberPY
13:15 -
C++Simple SubscriberC++
15:44
Locomotion
-
Robot Locomotions
05:54 -
Mobile Robots
04:15 -
Friction Effects
09:54 -
Robot Description
03:33 -
URDF
04:41 -
LABCreate the URDF ModelLAB
31:24 -
Rviz 2
05:32 -
Parameters
01:55 -
PYParametersPY
13:33 -
C++ParametersC++
01:04 -
LABROS 2 Parameter CLILAB
06:36 -
LABVisualize the RobotLAB
09:07 -
Launch Files
02:01 -
LABVisualize the Robot with Launch FilesLAB
20:23 -
Gazebo
04:48 -
LABSimulate the RobotLAB
14:59 -
LABLaunch the SimulationLAB
11:10
Control
-
ROS 2 Control
08:43 -
Control Types
05:36 -
LABros2_control with GazeboLAB
13:57 -
YAML Configuration File
02:43 -
LABConfigure ros2_controlLAB
12:11 -
LABLaunch the ControllerLAB
05:54 -
LABros2_control CLILAB
07:53
Kinematics
-
Robot Kinematics
03:52 -
Pose of a Mobile Robot
03:05 -
Translation Vector
04:46 -
LABIntroduction to TurtlesimLAB
11:05 -
PYTranslation VectorPY
16:34 -
C++Translation VectorC++
28:13 -
Rotation Matrix
08:14 -
PYRotation MatrixPY
10:29 -
C++Rotation MatrixC++
10:22 -
Transformation Matrix
03:39
Differential Kinematics
-
Differential Kinematics
01:36 -
Velocity of a Mobile Robot
03:17 -
Linear Velocity
06:04 -
Angular Velocity
05:28 -
Velocity in World Frame
05:05 -
Differential Forward Kinematics
04:08 -
Simple Speed Controller
01:54 -
Simple Speed Controller
01:54 -
PYSimple Speed ControllerPY
24:12 -
C++Simple Speed ControllerC++
30:53 -
LABLaunch the Simple ControllerLAB
14:03 -
LABTeleoperating with JoystickLAB
15:40 -
LABUsing the diff_drive_controllerLAB
22:28
TF2 Library
-
The TF2 Library
05:23 -
Operations with Transformations
05:31 -
Static and Dynamic Transformations
03:00 -
PYSimple TF2 Static BroadcasterPY
14:09 -
C++Simple TF2 Static BroadcasterC++
14:09 -
PYSimple TF2 BroadcasterPY
13:09 -
C++Simple TF2 BroadcasterC++
13:21 -
ROS 2 Services
05:43 -
PYService ServerPY
19:10 -
C++Service ServerC++
21:05 -
PYService ClientPY
18:36 -
C++Service ClientC++
23:31 -
PYSimple TF2 ListenerPY
20:06 -
C++Simple TF2 ListenerC++
23:12 -
Angle Rapresentations
01:41 -
Euler Angles
03:04 -
Quaternion
03:54 -
PYEuler to QuaternionPY
11:47 -
C++Euler to QuaternionC++
12:39 -
LABTF2 ToolsLAB
07:31
Odometry
-
Where is the Robot
03:01 -
The Local Localization Challenge
05:22 -
Wheel Odometry
07:49 -
Differential Inverse Kinematics
05:33 -
PYDifferential Inverse KinematicPY
18:54 -
C++Differential Inverse KinematicC++
20:40 -
Wheel Odometry – Position
03:17 -
Wheel Odometry – Orientation
03:38 -
PYWheel OdometryPY
10:35 -
C++Wheel OdometryC++
10:47 -
PYPublish Odometry MessagePY
14:47 -
C++Publish Odometry MessageC++
16:16 -
PYBroadcast Odometry TransformPY
11:45 -
C++Broadcast Odometry TransformC++
13:15
Probability for Robotics
-
Motivation
07:09 -
Random Variables
08:55 -
Conditional Probability
07:18 -
Probability Distributions
08:40 -
Gaussian Distributions
04:52 -
Total Probability Theorem
05:44 -
Bayes Rule
05:11 -
Sensor Noise
02:37 -
PYAdding Noise to Robot MotionPY
07:31 -
C++Adding Noise to Robot MotionC++
11:33 -
LABLaunch Noisy ControllerLAB
13:29 -
LABOdometry ComparisonLAB
07:26
Sensor Fusion
-
Advantages of having Multiple Sensors
06:28 -
Gyroscope
03:38 -
Accelerometer and IMU
03:30 -
LABSimulate IMU SensorIMU
15:46 -
Kalman Filter
06:28 -
PYFilter InitializationPY
15:00 -
C++Filter InitializationC++
20:26 -
Measurement Update
02:23 -
PYMeasurement UpdatePY
05:22 -
C++Measurement UpdateC++
05:17 -
State Prediction
02:33 -
PYState PredictionPY
09:16 -
C++State PredictionC++
10:15 -
LABLocalization with Kalman FilterLAB
06:29 -
Extended Kalman Filter (EKF)
04:24 -
PYIMU RepublisherPY
06:45 -
C++IMU RepublisherC++
08:44 -
LABSensor Fusion with robot_localizationLAB
24:31
Conclusions
-
Recap
02:34 -
What’s Next
02:09
Earn a certificate
Add this certificate to your resume to demonstrate your skills & increase your chances of getting noticed.