Implementation of kinematics, odometry, simulation and EKF for SLAM from scratch. Find out more in the linked webpage.
SLAM.video.mov
This repository consists of several ROS packages
nuturtle_description
- Customized description for the turtlebot.nusim
- Custom simulator with environment for turtlebot.nusim_interfaces
- Custom service/message definitions for nusim.nuturtle_control
- ROS2 control interface for a turtlebot running the custom MSR code.nuturtle_control_interfaces
- Custom service/message definitions fornuturtle_control
.nuslam
- Feature based EKF SLAM implementation.
There is also a C++ library
turtlelib
- Provides classes and operations for control and sensing.diff_drive
- Operations necessary to calculate the kinematics of a differential drive robot.geometry2d
- General geometric calculation in 2 dimensions, including vectors, points, angles operations.se2d
- Definitions and operations for 2D rigid body motions.svg
- Accessory interface to visualize frames.
Odometry.test.-.720p.mov
The odometry test recorded in the video showed a final error of roughly 0.29 meters. This test was performed using encoder odometry solely.
Driving a circle around 4 landmarks in simulation. Green robot represents SLAM estimation, red robot represents ground truth in simulation, blue robot represents odometry-based localization.
2024-03-27.15-04-36.mp4
Testing on the actual turtlebot! The SLAM outperforms the odometry with just a couple laps. First video in this readme shows this test.
Driving the robot around the course and taking it back to its initial pose (eye-measuring using a mark on the floor).
Final SLAM estimation (x,y,theta): (-0.02, 0.01, -0.06) Final odometry estimation (x,y,theta): (0.02, 0.24, -0.67)