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 Motivation02:53
- 
										The Self-Driving Program03:29
- 
										Course Presentation06:16
- 
										Meet your Teacher02:27
- 
										Get the Most out of the Course03:40
- 
										Course Material Download Link00:00
Setup
- 
										Install ROS 203:38
- 
										Configure the Development Environment09:01
Introduction to ROS 2
- 
										Why a Robot Operating System04:18
- 
										What is ROS 203:13
- 
										Why a NEW Robot Operating System04:58
- 
										ROS 2 Architecture03:12
- 
										Hardware Abstraction02:53
- 
										Low-Level Device Control01:22
- 
										Low-Level Device Control01:22
- 
										Messaging Between Process07:00
- 
										Package Management01:41
- 
										Architecture of a ROS 2 Application02:59
- 
										LABCreate and Activate a WorkspaceLAB11:18
- 
										PYSimple PublisherPY18:16
- 
										C++Simple PublisherC++23:14
- 
										PYSimple SubscriberPY13:15
- 
										C++Simple SubscriberC++15:44
Locomotion
- 
										Robot Locomotions05:54
- 
										Mobile Robots04:15
- 
										Friction Effects09:54
- 
										Robot Description03:33
- 
										URDF04:41
- 
										LABCreate the URDF ModelLAB31:24
- 
										Rviz 205:32
- 
										Parameters01:55
- 
										PYParametersPY13:33
- 
										C++ParametersC++01:04
- 
										LABROS 2 Parameter CLILAB06:36
- 
										LABVisualize the RobotLAB09:07
- 
										Launch Files02:01
- 
										LABVisualize the Robot with Launch FilesLAB20:23
- 
										Gazebo04:48
- 
										LABSimulate the RobotLAB14:59
- 
										LABLaunch the SimulationLAB11:10
Control
- 
										ROS 2 Control08:43
- 
										Control Types05:36
- 
										LABros2_control with GazeboLAB13:57
- 
										YAML Configuration File02:43
- 
										LABConfigure ros2_controlLAB12:11
- 
										LABLaunch the ControllerLAB05:54
- 
										LABros2_control CLILAB07:53
Kinematics
- 
										Robot Kinematics03:52
- 
										Pose of a Mobile Robot03:05
- 
										Translation Vector04:46
- 
										LABIntroduction to TurtlesimLAB11:05
- 
										PYTranslation VectorPY16:34
- 
										C++Translation VectorC++28:13
- 
										Rotation Matrix08:14
- 
										PYRotation MatrixPY10:29
- 
										C++Rotation MatrixC++10:22
- 
										Transformation Matrix03:39
Differential Kinematics
- 
										Differential Kinematics01:36
- 
										Velocity of a Mobile Robot03:17
- 
										Linear Velocity06:04
- 
										Angular Velocity05:28
- 
										Velocity in World Frame05:05
- 
										Differential Forward Kinematics04:08
- 
										Simple Speed Controller01:54
- 
										Simple Speed Controller01:54
- 
										PYSimple Speed ControllerPY24:12
- 
										C++Simple Speed ControllerC++30:53
- 
										LABLaunch the Simple ControllerLAB14:03
- 
										LABTeleoperating with JoystickLAB15:40
- 
										LABUsing the diff_drive_controllerLAB22:28
TF2 Library
- 
										The TF2 Library05:23
- 
										Operations with Transformations05:31
- 
										Static and Dynamic Transformations03:00
- 
										PYSimple TF2 Static BroadcasterPY14:09
- 
										C++Simple TF2 Static BroadcasterC++14:09
- 
										PYSimple TF2 BroadcasterPY13:09
- 
										C++Simple TF2 BroadcasterC++13:21
- 
										ROS 2 Services05:43
- 
										PYService ServerPY19:10
- 
										C++Service ServerC++21:05
- 
										PYService ClientPY18:36
- 
										C++Service ClientC++23:31
- 
										PYSimple TF2 ListenerPY20:06
- 
										C++Simple TF2 ListenerC++23:12
- 
										Angle Rapresentations01:41
- 
										Euler Angles03:04
- 
										Quaternion03:54
- 
										PYEuler to QuaternionPY11:47
- 
										C++Euler to QuaternionC++12:39
- 
										LABTF2 ToolsLAB07:31
Odometry
- 
										Where is the Robot03:01
- 
										The Local Localization Challenge05:22
- 
										Wheel Odometry07:49
- 
										Differential Inverse Kinematics05:33
- 
										PYDifferential Inverse KinematicPY18:54
- 
										C++Differential Inverse KinematicC++20:40
- 
										Wheel Odometry – Position03:17
- 
										Wheel Odometry – Orientation03:38
- 
										PYWheel OdometryPY10:35
- 
										C++Wheel OdometryC++10:47
- 
										PYPublish Odometry MessagePY14:47
- 
										C++Publish Odometry MessageC++16:16
- 
										PYBroadcast Odometry TransformPY11:45
- 
										C++Broadcast Odometry TransformC++13:15
Probability for Robotics
- 
										Motivation07:09
- 
										Random Variables08:55
- 
										Conditional Probability07:18
- 
										Probability Distributions08:40
- 
										Gaussian Distributions04:52
- 
										Total Probability Theorem05:44
- 
										Bayes Rule05:11
- 
										Sensor Noise02:37
- 
										PYAdding Noise to Robot MotionPY07:31
- 
										C++Adding Noise to Robot MotionC++11:33
- 
										LABLaunch Noisy ControllerLAB13:29
- 
										LABOdometry ComparisonLAB07:26
Sensor Fusion
- 
										Advantages of having Multiple Sensors06:28
- 
										Gyroscope03:38
- 
										Accelerometer and IMU03:30
- 
										LABSimulate IMU SensorIMU15:46
- 
										Kalman Filter06:28
- 
										PYFilter InitializationPY15:00
- 
										C++Filter InitializationC++20:26
- 
										Measurement Update02:23
- 
										PYMeasurement UpdatePY05:22
- 
										C++Measurement UpdateC++05:17
- 
										State Prediction02:33
- 
										PYState PredictionPY09:16
- 
										C++State PredictionC++10:15
- 
										LABLocalization with Kalman FilterLAB06:29
- 
										Extended Kalman Filter (EKF)04:24
- 
										PYIMU RepublisherPY06:45
- 
										C++IMU RepublisherC++08:44
- 
										LABSensor Fusion with robot_localizationLAB24:31
Conclusions
- 
										Recap02:34
- 
										What’s Next02:09
Earn a certificate
Add this certificate to your resume to demonstrate your skills & increase your chances of getting noticed.
 
				 
 