Mobile Robotics Engineers
Luqman
Course Overview
Welcome to your pathway to becoming a Robotics Software Engineer. This comprehensive program is designed to elevate your software engineering skills, focusing on practical robotics applications using C++ and ROS2. You’ll begin with core concepts and progress through advanced topics, providing you with a deep understanding of software development for robotics.
Modules Overview:
Robots URDF and Kinematics Modeling
- Explore URDF for robot modeling, add 3D meshes for mobile robots and robotic arms, and understand physical properties through Gazebo simulations.
Robotics Sensing and Processing
- Work with ROS2 to process sensor data, learning both online and offline data processing methods essential for real-world robotics.
Control Systems with ROS2 Control
- Study control systems including PID, LQR, and optimal control techniques, and implement these in various robotics projects using
ros2_controlwith multiple controller types.
Version Control with GitHub
- Master GitHub for version control, collaborative development, and best practices in managing robotics projects.
Mapping and SLAM
- Learn to perform SLAM for both 2D and 3D environments, write mapping algorithms, and utilize ROS2 for robust 2D and 3D mapping.
Path Planning Algorithms
- Discover path planning algorithms, including RRT, A*, and Grid Sweep, for effective navigation within robotic applications.
Navigation
- Integrate mapping, planning, and control to enable mobile robot navigation using Nav2, building towards autonomous robot movement.
Algorithm Development :
- Developing Path Planning , Control System and Sensor Fusion algorithms
Throughout the learning path, you’ll engage in hands-on assignments that reinforce key concepts from each module.
Our clear submission process and dedicated Discord channel ensure you receive ongoing support and feedback on your journey.
Course Content
- Learning Path Guidelines
-
Robots URDF and Kinematics Modeling
-
Module Introduction
00:01:00 -
Understanding Transforms
00:04:00 -
Static Transforms with TF2
00:08:11 -
Mobile Robot and Transforms in URDF
00:05:08 -
Robot Structure Tree with URDF
00:05:08 -
Creating a Mobile Robot with URDF
00:05:37 -
Creating a Mobile Robot with URDF
00:05:37 -
Adding Visual Body Elements in URDF
-
URDF changes for Gazebo
00:05:12 -
Gazebo Plugins and why?
00:02:44 -
Mobile robot drive pluging for Gazebo
00:04:07 -
Gazebo vs Rviz Comparison
00:00:49 -
Gazebo vs Rviz Comparison
00:00:49 -
Simulation vs Real Robot Challenges
00:00:58 -
Mobile Robot Development Components and Wiring
00:02:13 -
Building robot
00:11:11 -
Electric Mottor Driving Components
00:02:21 -
Programming the MicroController using Platformio
00:04:40 -
Porgramming Motor Controlling
00:05:32 -
Understand difference between ROS2 , Platformio , Gazebo
00:01:19 -
MicroROS example on ESP32
00:05:02 -
MicroROS node Communication
00:06:50 -
MicroROS complete Server Client Example
00:06:33 -
Velocity sending standard in ROS2 Ecosystem
00:01:16 -
Creating cmd_vel topic through microROS
00:06:38 -
Sending Velocity to drive Robot
00:06:31 -
Module 1 : Recap
00:01:21 -
URDF and Robot Creation in ROS 2
-
-
Robotics Sensing and Processing
-
Module Introduction
00:00:36 -
Project Maze Solving
-
Alias for easy compilation and building
-
Lidar Sensor on Turtlebot3
00:06:11 -
Lidar Data Understanding
-
Lidar Data Grouping
-
Maze Creation
-
Maze and World Arrangement
-
Maze Solving Understanding
-
Maze Solving Using Lidar
-
As a developer you write good code.
00:00:58 -
Maze Solving Code Design
-
Restructuring Maze Solving project Code
00:09:48 -
Project Vision based Line Following
-
Camera Sensor Data Understanding
00:04:42 -
Gazebo Line World
-
Line Segmentation
00:05:23 -
Boundary Extraction
-
Mid Point Extraction
-
Line Following
-
Simulation to Real Robot Positioning
00:00:56 -
Real Robot Sensors
00:00:30 -
Encoder Sensor Interface on ESP32
00:03:41 -
IMU Sensor Interfaceon ESP32
00:02:52 -
IMU Sensor Output Analysis
00:01:45 -
Creating libraries for IMU and Encoders
00:09:54 -
Analysing output of our sensors
00:00:36 -
Why we need MicroROS
00:00:30 -
MicroROS Interface for our Robot
00:08:39 -
Analysing MicroROS communication
00:02:34 -
Connecting Robot Upper Portion for Lidar
00:03:06 -
Why do we need a raspberry pi ?
00:01:06 -
Installing Ubuntu on RPI
00:07:05 -
Visualizing Lidar Data in RVIZ2
00:03:35 -
Understanding Lidar Data visually
00:05:59 -
Processing Lidar Data by splitting
00:03:40 -
ESP32 MicroROS and RPI ROS2 Communication
00:09:48 -
Generating Odom from Encoders
00:10:52 -
Sensor Data Manipulation for Robot Control
-
-
Control Systems with ROS2 Control
-
Module Introduction
-
C++ Efficient Programming Habit
-
ROS2 Controllers Requirments
-
Custom Velocity Controllers
-
Controllers Interfaces
-
Testing Custom Controllers
-
Revisting Ros2_control interface
-
Control System a subject
-
Feedback Controlling for Go to Goal
-
Linear Goal
-
Improving Robot Reaction
-
Proportional Controller
-
2D Planer Goal
-
Improving Reaction
-
Optimizing Go to Goal Behaviour
-
Starting a complex Algorithm
-
Introduction to Linear Quadratic Control
-
Architecture of LQR
-
Creating LQR Library
-
LQR ROS2 Node
-
Running LQR with Tb3
-
Enhancing Robot Control for Smooth Motion
-
-
Mapping and SLAM
-
Mapping Introduction
-
What is Occupancy Grid
-
Custom Occupancy Grid Node
-
Basic Mapping Algorithm
-
Lidar to Grid Node
-
Cartographer Mapping Basic Working
-
ROS2 Slamtoolbox Online Async Mapping
-
Parameters Values Effect on Mapping
-
PNG Image to 2D map
-
3D Rtab Visual Mapping
-
SLAM for Slambot
00:00:58 -
Recording Data for mapping
00:03:42 -
Gmapping on ROS2 Bag
00:05:32 -
Building the Map with Slambot
00:04:13 -
Hardware Inaccuracies
00:00:44 -
Odometry Testiing for SLAMBot
00:03:12 -
Improving SLAM for our robot
00:07:52 -
ROS 2 Mapping with SLAM
-
Types of Mapping and next steps
-
-
Version Control with Github
-
Introduction to Version Control
-
How Github is useful ?
-
Creating a Custom Repository
-
Why we have Branches ?
-
Practices in Branches
-
Getting History and Reverting Back
-
Commit Back
-
Submodules for Multi level Repositories
-
Adding Submodules
-
Running Packages with Dependencies
-
Bash Scripting
-
Github Actions for automation
-
Creating Github Actions
-
-
Path Planning Algorithms
-
Module Introduction Path Planning
-
Grid Sweep Algorithm
-
Visualizing Grid Sweep
-
Improving Grid Sweep
-
File Organizing for Better Code
-
Astar Path Planning Algorithm
-
Linkedin List in C++
-
Astar Interfacing Code
-
Multi Queues
-
Completing Astar with ROS2 Interface
-
Rapidly Exploring Random trees Algorithm
-
RRT Node Library
-
Writing Node Class
-
Unit Testing Node Class
-
RRT Working Revisit
-
Writing RRT
-
RRT ROS2 Node Integeration
-
Testing RRT Class Functionality
-
Path Planning with A* and RRT
-
-
Navigation
-
Module Introduction Navigation
-
Nav2 Architecture and Software Development
-
Running Nav2 Stack Example
00:08:47 -
Nav2 Software Development Steps
00:14:53 -
Nav2 Example Reflection
00:06:53 -
Nav2 Example Configurations
00:06:09 -
Nav2 Nodes Comamnder
00:14:15 -
Nav2 Custom Path Planner
-
Adding Path Planner to Nav2 Part a
-
Adding Path Planner to Nav2 Part b
-
Adding Path Planner to Nav2 Part c
-
Shifting to Real Robot for Autonomous Navigation
-
Mapping and Control Architecture
-
Control Loop for Slambot Navigation
-
Finalizing our Slambot Control Architecture
-
Velocity Control Implementation
-
Introduction to ROS2 Control Framework
-
Changes in Control Architecture for ROS2 Interface
-
Mock Control Testing
-
Introduction ROS2 Control Plugin
-
Implementing Hardware Interface Plugin
-
Disecting Custom Diffbot Plugin
-
Testing Slambot to Rviz
-
Our Current system Walkthrough
-
Mapping on our SlamBot
-
Navigation for our custom SlamBot
-
Loading Saved Map
-
Parameters Tuning
-
Testing Different Parameters
-
Complete SLAM and Navigation
-
Final thoughts on Autonomous Navigation
-
-
Custom Algorithm Development
-
Module Introduction to Sensor Fusion
-
Why we need Kalman Filters
-
Important concepts of Statistics and Kalman Filters
-
Implementation of Linear Kalman Filter
-
State estimation along X and Y axis
-
Noise Effect on KF
-
More advance approach
-
Intorduction to EKF
-
Implementation of Extended Kalman Filter
-
Adding Functionality in Custom EKF
-
ROS2 Node for Utilize EKF
-
ROS2 EKF Package for Robot Localization
-
IMU and GPS Sensor Fusion for TurtleBot3
-

issaiass
Course shows in depth understanding of ROS 2 middleware integrating common algorithms from the scratch, it gives me more knowledge of insights on how to develop ROS 2 Robots.