Build hands-on projects to acquire core robotics software

Before You Start Prerequisites:

Make sure to set aside adequate time on your calendar for focused work.​

In order to succeed, we recommend having experience with: 

  • Advanced knowledge in any object-oriented programming language, preferably C++ 
  • ​Intermediate Probability 
  • Intermediate Calculus 
  • Intermediate Linear Algebra 
  • Basic Linux Command Lines

Program Info

This program will teach you:


  • the software fundamentals to work on robotics using C++, ROS, and Gazebo 
  • how to build autonomous robotics projects in a Gazebo simulation environment 
  • probabilistic robotics, including Localization, Mapping, SLAM, Navigation, and Path Planning.

This program is comprised of 6 courses and 5 projects.

Each project you build will be an opportunity to demonstrate what you’ve learned in the lessons.

Your completed projects will become part of a career portfolio that will demonstrate to potential employers that you have skills in C++, ROS, Gazebo, Localization, Mapping, SLAM, Navigation, and Path Planning.


Course 1

Build My World

Use the tools that you’ve learned in Gazebo to build your first environment.

Key Skills Demonstrated: 

  • Launching a Gazebo Environment 
  • Designing in Gazebo

Project 1: Gazebo World

  • Work with the Gazebo simulator to build new environments, and deploy assets.
  • Step by Step - Design and build your first Gazebo environment.


Course 2

Go Chase It!

Demonstrate your proficiency with ROS, C++, and Gazebo by building a ball-chasing robot.

You will first design a robot inside Gazebo, house it in the world you have built in the Build My World project, and code a C++ node in ROS to chase yellow balls.

Key Skills Demonstrated:

  • Building Catkin Workspaces 
  • ROS node creation 
  • ROS node communication 
  • Using additional ROS packages 
  • Gazebo world integration 
  • Additional C++ practice 
  • RViz Integration

Project 2: ROS Essentials

  • Obtain an architectural overview of the Robot Operating System Framework
  • Learn the ROS workspace structure, essential command line utilities, and how to manage software packages within a project.
  • Write ROS nodes in C++.
  • Step by Step - build your first robot in Gazebo
  • Step by Step - build a C++ service server node in ROS.
  • Step by Step - build a C++ service client node in ROS.


Course 3

Where Am I?

You will interface your own mobile robot with the Adaptive Monte Carlo Localization algorithm in ROS to estimate your robot’s position as it travels through a predefined set of waypoints.

You’ll also tune different parameters to increase the localization efficiency of the robot.

Key Skills Demonstrated: 

  • Implementation of Adaptive Monte Carlo Localization in ROS 
  • Understanding of tuning parameters required

Project 3: Localization

  • Learn what it means to localize and the challenges behind it.
  • Learn the Kalman Filter and its importance in estimating noisy data.
  • Implement an Extended Kalman Filter package with ROS to estimate the position of a robot.
  • Learn the MCL (Monte Carlo Localization) algorithm to localize robots.
  • Code the MCL algorithm in C++.
  • Set up and explore the steps for the Where Am I? Project using AMCL with ROS in C++.


Course 4

Map My World

Students will interface their robot with an RTAB Map ROS package to localize it and build 2D and 3D maps of their environment.

Students must put all the pieces together properly to launch the robot and then teleop it to map its environment.

Key Skills Demonstrated:

  • SLAM implementation with ROS/Gazebo 
  • ROS debugging tools: rqt, roswtf

Project 4: Mapping and SLAM

  • Mapping and SLAM
  • Map an environment by coding the Occupancy Grid Mapping algorithm with C++.
  • 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.
  • Simultaneously map an environment and localize a robot relative to the map with the GraphSLAM algorithm.
  • Deploy RTAB-Map on your simulated robot to localize it and create 2D and 3D maps of your environment.