Skip to content

Fast lio with loop closing function. the Transform between map coordinate to Odom coordinate is maintained and used to correct the FAST-LIO pose to the map system, providing initial pose-graph. Therefore, Fast-lio2's ikd tree does not require reconstruction, ensuring that the front-end can always run efficiently.

Notifications You must be signed in to change notification settings

Hero941215/fast_lio-sam_loop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

fast_lio-sam_loop

Fast-lio with loop closing function. isam2 is used for pose graph optimization. The loop and odometry are integrated into a unified file. Supports full operation on long sequence datasets, such as urbanNAV dataset (FAST_LIO_SAM will crash in about 10 minutes).

0. Features

In the config file, if keyframe_pub_en and loop_en are true, the loop-closing function is enabled. Then, when correct_fe_en is "true", it means that the front-end ikd-tree will reconstruct when a loop occurs, and "false" means it will not reconstruct. For "false" case, drawing on the LOAM concept, the transform from the map coordinate system to the odom coordinate system is maintained and used to correct the FAST-LIO pose to the map system, providing initial pose graph. Therefore, Fast-lio2's ikd tree does not require reconstruction, ensuring that the front-end can always run efficiently.

Sparse_raw_point_cloud_en is set to true, which allows for downsampling of keyframes stored globally and controlling the running memory to make the system run longer.

Important Notes:

  • A Bug is fixed (2025-04-02): we fixed bug in the reconstruct() function provided by FAST_LIO_LC, FAST_LIO_SAM. Now, both correct_fe_en == true or correct_fe_en == false, the system can run stably. Howerver, when correct_fe_en == true, reconstruct a ikd-tree map usually need more time for odometry, and the odometry pose will jump. So, we recommend correct_fe_en == false.

Run on Public UrbanNav Dataset

1. Prerequisites

1.0 gcc and g++

gcc and g++ 7.5.0 are tested OK. However, gcc and g++ 10.3.0 are not OK for the gtsam we use.

1.1 Ubuntu and ROS

Ubuntu >= 18.04

ROS >= Melodic. ROS Installation

1.2. PCL && Eigen

PCL >= 1.8, Follow PCL Installation.

Eigen >= 3.3.3, Follow Eigen Installation.

1.3. livox_ros_driver

Follow livox_ros_driver Installation.

2. Build

Clone the repository and catkin_make:

    cd ~/$A_ROS_DIR$/src
    git clone https://github.com/Hero941215/fast_lio-sam_loop
    cd fast_lio-sam_loop
    git submodule update --init
    cd ../..
    catkin_make
    source devel/setup.bash
  • Remember to source the livox_ros_driver before build (follow 1.3 livox_ros_driver)

3. Run

3.1. Download Dataset (UrbanNAV):

rosbag play XXX.bag

3.2. Run SLAM system:

roslaunch fast_lio_sam_loop mapping_velodyne.launch

3.3. Save map:

rosservice call /service/save_map

4. Acknowledgments

Thanks for LOAM(J. Zhang and S. Singh. LOAM: Lidar Odometry and Mapping in Real-time), FAST-LIO2FAST_LIO_SAM, FAST_LIO_LC.

About

Fast lio with loop closing function. the Transform between map coordinate to Odom coordinate is maintained and used to correct the FAST-LIO pose to the map system, providing initial pose-graph. Therefore, Fast-lio2's ikd tree does not require reconstruction, ensuring that the front-end can always run efficiently.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages