This package is a combination of lidarslam_ros2 and the LIO-SAM IMU composite method.
See LIO-SAM for IMU composites, otherwise see lidarslam_ros2.
Yellow path: path without loop closure, Green path: modified path, Red: map
Reference(From the LIO-SAM paper)
https://github.com/TixiaoShan/LIO-SAM/blob/master/config/doc/paper.pdf
Yellow path: path without loop closure, Red: map (the 10x10 grids in size of 10m × 10m)
Green path: modified path with loop closure, Red: map
You need ndt_omp_ros2 and gtsam for scan-matcher
clone
cd ~/ros2_ws/src
git clone --recursive https://github.com/rsasaki0109/li_slam_ros2
gtsam install
sudo add-apt-repository ppa:borglab/gtsam-release-4.1
sudo apt update
sudo apt install libgtsam-dev libgtsam-unstable-dev
build
cd ~/ros2_ws
rosdep update
rosdep install --from-paths src --ignore-src -yr
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
The optimization pipeline in Lidar Inertial SLAM were taken from LIO-SAM.
(Note: See the LIO-SAM repository for detailed settings regarding IMU.
The other thing to note is that the speed will diverge if the voxel_grid_size is large.
demo data(ROS1) in LIO-SAM
https://github.com/TixiaoShan/LIO-SAM
To use ros1 rosbag , use rosbags.
The Velodyne VLP-16 was used in this data.
rviz2 -d src/li_slam_ros2/scanmatcher/rviz/lio.rviz
ros2 launch scanmatcher lio.launch.py
ros2 bag play walking_dataset/
Green arrow: pose, Yellow path: path, Green path: path by imu
Yellow path: path without loop closure, Green path: modified path, Red: map
rosgraph
pose_graph.g2o
and map.pcd
are saved in loop closing or using the following service call.
ros2 service call /map_save std_srvs/Empty
rviz2 -d src/li_slam_ros2/scanmatcher/rviz/lio_bigloop.rviz
ros2 launch scanmatcher lio_bigloop.launch.py
ros2 bag play rosbag_v2 big_loop/
Yellow path: path without loop closure, Red: map (the 10x10 grids in size of 10m × 10m)
Green path: modified path with loop closure, Red: map