This project involved implementing Extended Kalman Filter (EKF) for Simultaneous Localization and Mapping (SLAM) on a TurtleBot3 using C++ with ROS2.

As this was done from scratch, several packages were developed:

  • turtlelib: Defines SE(2) transformation methods, forward and inverse kinematics for a differential drive robot, visualizes .svg files, and implements EKF SLAM.
  • nuturtle_description: Visualizes multiple TurtleBot3 models of different colors in RViz.
  • nusim: Initializes the simulation environment with walls and obstacles.
  • nuturtle_control: Controls the TurtleBot3 and updates its internal odometry estimate, with integration testing included.
  • nuslam: Applies EKF SLAM to estimate the robot’s pose and maintain the current map of the environment.

EKF SLAM Video Demo

Movement Demo

Physical SLAM testing coming soon!

Check out the project → GitHub