This repository is a Lidar-IMU Localization System with Prior Map Constraint and Lio Constraint for 3D LiDAR. The system is developed based on the open-source odometry framework LIO-Livox. And the feature extract moudle is implemented based on LIO-SAM .
- Mapping Moudle
- A Modified FeatureExtract Function adapt for traditional spinning lidar,such as velodyne,ouster,robosense etc. ;
- A Modified Tightly coupled Lidar-imu laserodometry LIO-Livox-modified;
- Localization Moudle
- A Lidar-IMU Localization System with Prior Map Constraint and Lio Constraint for 3D LiDAR;
- Three IMU_Mode: 0-without using IMU, 1-loose couple IMU and Lidar, 2-tightly coupled IMU and LiDAR;
- Automatic switch Map-Location mode and LIO-Location mode;
A test video of the dataset can be found on BiliBili
UrbanNavDataset test video can be found here
- Ubuntu (tested on 18.04)
- ROS (tested with Melodic)
- Eigen
- Ceres Solver
- PCL
- livox_ros_driver
- Suitesparse
sudo apt-get install libsuitesparse-dev
cd ~/catkin_ws/src
git clone https://github.com/chengwei0427/Lidar_IMU_Localization
cd ..
catkin_make
(1) generate global map with LIO-SAM-modified
roslaunch GC_LOAM run.launch
rosbag play yourbagname.bag --clock
rosserve call /save_map
(2) run localization with global map and your test bag
rosbag LIO_Localization run_loc.launch
rosbag play yourbagname.bag --clock
Set initial pose in rviz
The current version of the system is just a demo and we haven't done enough tests.
There are some parameters in params.yaml files:
- IMU_Mode: choose IMU information fusion strategy, there are 3 modes:
- 0 - without using IMU information, pure LiDAR odometry, motion distortion is removed using a constant velocity model (added 2022-09-16)
- 1 - using IMU preintegration to remove motion distortion (added 2022-09-19)
- 2 - tightly coupling IMU and LiDAR information (added 2022-09-27)
- support tightly coupling IMU and LiDAR in Localization moudle
- estimated positioning accuracy
- abnormal check
- Lio and Map constraint weight
- add test video
- add demo example
- add encoder