Skip to content

EKF-based SLAM implementation using ROS2 & C++. Tested on a real turtlebot 3.

Notifications You must be signed in to change notification settings

maxipalay/ekf-slam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c6c3d14 · Mar 27, 2024
Mar 18, 2024
Jan 21, 2024
Mar 18, 2024
Mar 18, 2024
Feb 7, 2024
Jan 7, 2024
Mar 18, 2024
Mar 16, 2024
Feb 8, 2024
Mar 27, 2024
Mar 1, 2024
Feb 4, 2024

Repository files navigation

EKF-based SLAM

Implementation of kinematics, odometry, simulation and EKF for SLAM from scratch. Find out more in the linked webpage.

SLAM.video.mov

Package List

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 for nuturtle_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

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.

Simulation test

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

Real world test

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)

About

EKF-based SLAM implementation using ROS2 & C++. Tested on a real turtlebot 3.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published