EKF SLAM from Scratch (C++) [In Progress]
C++, ROS2, Unit Testing, CMake
Overview [In Progress]
This post will be completed soon.
I am currently implementing an Extended Kalman filter SLAM algorithm from scratch through several ROS2 packages and a custom C++ library.
GitHub: https://github.com/henryburon/ekf-slam-turtlebot
turtlelib
is a C++ library for handling SE(2) math and other turtlebot-related calculations.
nusim
is a ROS2 package that provides a simulated environment for the robots.
nuturtle_description
is a ROS2 package that dispalys turtlebot3 models in RViz.
nuturtle_control
controls the robot in simulation and the physical world.
nuslam
implements EKF SLAM to estimate the robot’s pose.
Details
turtlelib
Designed to facilitate geometric computations and two-dimensional rigid body transformations. Provided functionalities include:
- Point, vector, and twist manipulation
- SVG-based visualization
- Operator overloading
All functions are tested using the Catch2 unit test framework.
nusim
ROS2 C++ node that provides a simulated environment for the robot. Launches RViz and displays walls, obstacles, and a single red robot. User can configure launch parameters in basic_world.yaml.
nuturtle_description
Builds turtlebot models with imported meshes in URDF; displays in RViz. Option to display all four models, or just one.
Launch with:
1
ros2 launch nuturtle_description load_one.launch.py
Future Work
This project is currently in progress. I will soon be finishing the EKF SLAM algorithm and implementing it on a robot in the physical world.