A real-time Livox LiDAR+IMU odometry package. Our main work is to redesign an efficient and accurate SLAM scheme based on the excellent ideas of FAST_LIO/faster-lio/LIO-SAM. The specific steps of the system are as follows:
ImageProjection.cpp
: Undistort scan using IMU measurements and high frequency odometry information.fusionOptimization.cpp
: Fusion of LiDAR and IMU based on iterative error state Kalman filter (IESKF) and iVox to estimate global state (PVQ).imuPreintegration.cpp
: Based on ISAM2, the IMU pre-integration factor and the odometry factor are used to jointly estimate the bias of the IMU.Pose Optimazation
: This function is not included in this project, we recommend users to refer to livox_backend. The mentioned project uses a distance-based loop closure detector for global pose graph optimization.
faster-lio |
[ours] faster_lio_sam |
- ROS (melodic)
- glog:
sudo apt-get install libgoogle-glog-dev
- eigen:
sudo apt-get install libeigen3-dev
- pcl:
sudo apt-get install libpcl-dev
- OpenCV
- GTSAM
- livox_ros_driver
- Download the package from git, and upzip the library in the thirdparty:
cd ~/ros/catkin_ws/src
git clone https://github.com/GDUT-Kyle/faster_lio_sam
cd faster_lio_sam/thirdparty
tar -xvf tbb2018_20170726oss_lin.tgz
- Upgrade the g++ compiler to 9.0 or higher by:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9
sudo apt install g++-9
cd /usr/bin
sudo rm gcc g++
sudo ln -s gcc-9 gcc
sudo ln -s g++-9 g++
- Compile with catkin build
catkin build faster_lio_sam
Using Livox's custom message types
!!! IMU messages must contain attitude information !!!
!!! In the current version, the extrinsic transformation matrix between LiDAR and IMU is the identity matrix . (The extrinsic transformation part in the code will be corrected as soon as possible ~~~)
Livox Mid-70
lidar0:
N_SCAN: 1
Horizon_SCAN: 10000
lidarMinRange: 1.0
lidarMaxRange: 200.0
roslaunch faster_lio_sam run.launch
rosbag play [YOUR_ROSBAG] --clock