Skip to content

jxk6575/SC_FAST_LIVO2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SC_FAST_LIVO2

Qualitative comparison: baseline (left) vs. SC_FAST_LIVO2 (right). Red circles highlight drift artifacts in the baseline trajectories.

Tightly coupled LiDAR–inertial–visual odometry built on FAST-LIVO2, extended with a pose-graph optimization (PGO) hook: the front end keeps the FAST-LIVO2 EKF estimate while loop-closure results are fed back over ROS for state correction and optional local map rebuild. SC is intended to be used together with Scan Context-style place recognition (actual loop detection and factor-graph solving live in an external PGO package).

Publication: Add your title, venue, and arXiv/DOI here when available.

Upstream baseline

This project extends FAST-LIVO2: Fast, Direct LiDAR-Inertial-Visual Odometry from HKU Mars Lab. Use the official repository for the original implementation, datasets, and build prerequisites (ROS, PCL, Eigen, OpenCV, Vikit, Sophus, etc.):

https://github.com/hku-mars/FAST-LIVO2


Features

  • FAST-LIVO2 front end: direct VO + voxel-map LiDAR + IMU; Livox and spinning LiDAR configs supported.
  • PGO integration: subscribes to optimized keyframe poses/IDs; periodically updates the filter state and can rebuild the local map.
  • Dataset launches: AVIA, NTU VIRAL, HILTI 2022, MARS LVIG, and more under launch/.
  • Scripts: meshing and COLMAP export helpers in scripts/ (optional, environment-dependent).

Requirements

Item Suggested
ROS ROS Noetic (Ubuntu 20.04) or another ROS1 distro you validate
C++ C++17
Libraries Eigen3, PCL, OpenCV, Boost (thread), OpenMP optional

Dependencies

Catkin package name: fast_livo (see CMakeLists.txt / package.xml).

ROS / catkin (install or clone into the same workspace):

  • roscpp, sensor_msgs, geometry_msgs, nav_msgs, tf, tf2, tf2_ros
  • image_transport, cv_bridge, pcl_ros
  • vikit_common, vikit_ros
  • livox_ros_driver when using Livox hardware/drivers

Full loop closure (optional):

  • mapping_with_pgo.launch includes aloam_velodyne's fastlivo2_pgo.launch. Build that package in your workspace or run your own PGO/back-end nodes with matching topic names.

Build

# Clone into ~/catkin_ws/src as fast_livo so roslaunch finds the package
cd ~/catkin_ws/src
git clone <YOUR_REPO_URL> fast_livo
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y  # if applicable
catkin_make -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash

Run

FAST-LIVO2 only (default: AVIA + pinhole camera)

roslaunch fast_livo mapping_avia.launch

FAST-LIVO2 + PGO (requires e.g. aloam_velodyne)

roslaunch fast_livo mapping_with_pgo.launch

Other example launches

Launch file Purpose
mapping_avia.launch Livox AVIA + config/avia.yaml
mapping_avia_direct.launch AVIA variant
mapping_avia_marslvig.launch MARS LVIG
mapping_hesaixt32_hilti22.launch HILTI 2022
mapping_ouster_ntu.launch NTU VIRAL (Ouster)
mapping_with_pgo.launch Front end + fastlivo2_pgo.launch + RViz

Edit topic names and extrinsics in config/*.yaml for your bag or robot.


ROS interface (PGO)

Direction Topic / note
Publish /cloud_registered_local (sensor_msgs/PointCloud2, frame_id: camera_init)
Subscribe /aft_pgo_path (nav_msgs/Path) — optimized keyframe poses
Subscribe /key_frames_ids (std_msgs/Header, keyframe id in seq)

Environment variable SC_FASTLIVO2 is set in mapping_avia.launch to this package's path for external nodes.


Parameters (pgo in config/*.yaml)

Additional parameters are read in LIVMapper (defaults in code if omitted):

  • pgo_integration_enable, pgo_update_frequency, pgo_state_update_enable, pgo_map_rebuild_enable
  • pgo_update_weight, pgo_cov_weight
  • max_keyframe_num, keyframe_meter_gap, keyframe_deg_gap, surrounding_search_radius

See readParameters and PGO callbacks in include/LIVMapper.h and src/LIVMapper.cpp.


Repository layout

fast_livo/
├── CMakeLists.txt
├── package.xml
├── assets/
├── config/
├── include/
├── launch/
├── rviz_cfg/
├── scripts/
└── src/

Acknowledgements

The odometry and mapping front end follows FAST-LIVO2 (hku-mars/FAST-LIVO2). Please cite the FAST-LIVO2 paper and credit the upstream authors in any derivative work; clearly describe additions such as PGO integration and your loop-closure back end.


License

This project is licensed under the GNU GPLv2; see LICENSE. Maintainer metadata in package.xml may follow upstream templates; the LICENSE file prevails.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors