Description
Begin your journey into the world of robotics software engineering with a practical, system-focused approach to programming robots in C++ and the ROS framework. Furthermore, learn and apply robotics software engineering algorithms like localization, mapping, and navigation.
Syllabus:
Course 1: Gazebo World
Introduction to Gazebo
- Work with the Gazebo simulator to build new environments, and deploy assets.
Project: Build My World
Create your first environment using the tools you learned in Gazebo.
Key Competencies Demonstrated:
- Creating a Gazebo Environment
- Creating Designs in Gazebo
Course 2: ROS Essentials
Introduction to ROS
- Obtain an architectural overview of the Robot Operating System Framework.
Packages & Catkin Workspaces
- Learn the ROS workspace structure, essential command line utilities, and how to manage software packages within a project.
Write ROS Nodes
- Write ROS nodes in C++.
Project: Go Chase It!
Build a ball-chasing robot to demonstrate your knowledge of ROS, C++, and Gazebo. To begin, you will create a robot in Gazebo, house it in the world you created in the Build My World project, and code a C++ node in ROS to chase yellow balls.
- Creating Catkin Workspaces
- Creating ROS Nodes
- Communicating with ROS Nodes
- Using Additional ROS Packages
- Integration of the Gazebo world
- Additional C++ practise
- RViz Compatibility
Course 3: Localization
Introduction to Localization
- Learn what it means to localize and the challenges behind it.
Kalman Filters
- Learn the Kalman Filter and its importance in estimating noisy data.
Lab: Kalman Filters
- Implement an Extended Kalman Filter package with ROS to estimate the position of a robot.
Monte Carlo Localization
- Learn the MCL (Monte Carlo Localization) algorithm to localize robots.
Build MCL in C++
- Code the MCL algorithm in C++
Project: Where Am I?
To estimate your robot's position as it travels through a predefined set of waypoints, you will interface your own mobile robot with the Adaptive Monte Carlo Localization algorithm in ROS. You'll also fine-tune various parameters to improve the robot's localization efficiency.
Key Competencies Demonstrated:
- ROS Adaptive Monte Carlo Localization Implementation
- Knowledge of tuning parameters is required.
Course 4: Mapping and SLAM
Introduction to Mapping and SLAM
- Learn the Mapping and SLAM concepts, as well as the algorithms.
Occupancy Grid Mapping
- Map an environment by coding the Occupancy Grid Mapping algorithm with C++.
Grid-based FastSLAM
- Simultaneously map an environment and localize a robot relative to the map with the Grid-based FastSLAM algorithm.
- Interface a turtlebot with a Grid-based FastSLAM package with ROS to map an environment.
GraphSLAM
- Simultaneously map an environment and localize a robot relative to the map with the GraphSLAM algorithm.
Project: Map My World
Students will use an RTAB Map ROS package to localise their robot and create 2D and 3D maps of their surroundings. Students must correctly assemble all of the pieces in order to launch the robot and then teleop it to map its surroundings.
Key Competencies Demonstrated:
- ROS/Gazebo SLAM implementation
- ROS debugging tools include rqt and roswtf.
Course 5: Path Planning and Navigation
Intro to Path Planning and Navigation
- Learn what the lessons in Path Planning and Navigation will cover.
Classic Path Planning
- Learn a number of classic path planning approaches that can be applied to low-dimensional robotic systems.
Lab: Path Planning
- Code the BFS and A* algorithms in C++.
Sample-Based and Probabilistic Path Planning
- Learn about sample-based and probabilistic path planning, and how they can improve on the classic approach
Project: Home Service Robot
In this capstone project, you will use a SLAM package to map an environment autonomously. Then, to move objects within an environment, you will interface your robot with a path planning and navigation ROS package.
Key Competencies Demonstrated:
- Advanced integration of ROS and Gazebo
- ROS Navigation Stack 7
- Path planning
Course 6: Optional KUKA Path Planning
Project Introduction
- Learn the requirements of the project.
Project Details
- Learn the project specifications and how to get started.
Project: KUKA Path Planning
Students will use what they've learned about ROS and path planning to navigate a KUKA robot through a 2D maze.
Key Competencies Demonstrated:
- Path planning
- Using C++ and Python in conjunction with an external ROS API