This repository builds feature-based EKF SLAM on Turtlebot3
from scratch.
The core modules are:
Odometry
- odometry calculations are performed byDifferential Drive Kinematics
Measurement
- both LiDAR and ArUco measurements are implemented- LiDAR measurement - unknown data association in
lidar_ekf_slam
package - ArUco measurement - known data association in
aruco_ekf_slam
package
- LiDAR measurement - unknown data association in
Please navigate to the respective directories for a detailed description of each component.
turtlelib
- contains 2D Lie Group operations for Transforms, Vectors and Twists as well as differential drive robot kinematics for odometry updatesnuturtle_description
- houses the description of a differential drive robot with a caster wheel for supportnuturtle_control
- develops some nodes that are useful in both simulation and on the real robotnusim
- includes functions of position tracking and obstacle settingnuslam
- introduces LiDAR feature detection and EKF SLAM implementation
- Rviz Simulation
- Youtube Link: https://youtu.be/ZHGrI5ZNQc0
- Real World Video
- Youtube Link: https://youtu.be/6MdL9HDXfKs
catkin_make
- build the packageroslaunch nuslam unknown_data_assoc.launch
- launchLiDAR EKF SLAM
algorithm with unknown data association
Dataset Link: https://pan.baidu.com/s/10crRfgGcZ-XgcBjefxAPDg Password: pqby
- The launch file (slam.launch) should be modified to the correct download path
catkin_make
- build the packageroslaunch aruco_ekf_slam slam.launch
- launchArUco EKF SLAM
algorithm with known data associationrosbag play aruco_slam_data_qhd1.bag -r 5
- play the rosbag
Ubuntu20.04, OpenCV 3.1, Eigen, ROS
- OpenCV library for the fundamental functions of Aruco codes: https://docs.opencv.org/3.3.0/d9/d6d/tutorial_table_of_content_aruco.html
- Probalisitic Robotics -- by Thrun, S., Burgard, W., Fox, D. The MIT Press (2005)