This project extends the following open-source contributions:
- Original work: FAST-LIVO2 by Chunran Zheng (HKU MARS Lab).
- ROS2 Humble port: FAST-LIVO2/tree/humble by Robotic-Developer-Road.
- 🔓 2025-01-23: Code released!
- 🎉 2024-10-01: Accepted by T-RO '24!
- 🚀 2024-07-02: Conditionally accepted.
If you have any questions, please feel free to contact: Chunran Zheng zhengcr@connect.hku.hk.
FAST-LIVO2 is an efficient and accurate LiDAR-inertial-visual fusion localization and mapping system, demonstrating significant potential for real-time 3D reconstruction and onboard robotic localization in severely degraded environments.
Our accompanying video is now available on Bilibili and YouTube.
FAST-LIVO2: Fast, Direct LiDAR-Inertial-Visual Odometry
FAST-LIVO: Fast and Tightly-coupled Sparse-Direct LiDAR-Inertial-Visual Odometry
We open-source our handheld device, including CAD files, synchronization scheme, STM32 source code, wiring instructions, and sensor ROS driver. Access these resources at this repository: LIV_handhold.
Our associate dataset FAST-LIVO2-Dataset used for evaluation is also available online.
MARS-LVIG dataset:A multi-sensor aerial robots SLAM dataset for LiDAR-visual-inertial-GNSS fusion.
The FAST-Calib toolkit is recommended. Its output extrinsic parameters can be directly filled into the YAML file.
Ubuntu 22.04. ROS Installation.
PCL>=1.8, Follow PCL Installation.
Eigen>=3.3.4, Follow Eigen Installation.
OpenCV>=4.2, Follow Opencv Installation.
cd ~
git clone https://github.com/strasdat/Sophus.git -b 1.22.10
cd Sophus
mkdir build && cd build && cmake ..
make
sudo make install
Vikit provides essential camera models, math utilities, and interpolation functions. As an ament package for ROS2, download its source into your colcon workspace's src folder. Additionally, I've added OpenCV fisheye distortion correction to the equidistant camera model in vikit_common.
# Different from the one used in fast-livo1
cd ~
git clone https://github.com/Rhymer-Lcy/rpg_vikit_ros2_fisheye.git
mkdir -p ~/fast/src/
cp -r ./rpg_vikit_ros2_fisheye/{vikit_common,vikit_ros} ~/fast_ws/src/
Thanks to the following repositories for the code reference:
Follow livox_ros_driver2 Installation.
cd ~/fast_ws/src/
git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2
why not use livox_ros_driver
? Because it is not compatible with ROS2 directly. actually i am not think there s any difference between livox ros driver and livox ros driver2 's CustomMsg
, the latter 's ros2 version is sufficient.
Clone the repository and colcon build:
git clone https://github.com/Rhymer-Lcy/FAST-LIVO2-ROS2-MID360-Fisheye.git
cd livox_ros_driver2
./build.sh humble
source ~/fast_ws/install/setup.bash
Download our collected rosbag files via OneDrive (FAST-LIVO2-Dataset).
convert ROS1 rosbag to ROS2 rosbag
pip install rosbags
rosbags-convert --src Retail_Street.bag --dst Retail_Street
Such as dataset Retail_Street.db3
, because we use livox_ros2_driver2
's CustomMsg
, we need to change the msg type in the rosbag file.
- use
rosbags-convert
to convert rosbag from ROS1 to ROS2. - change the msg type of msg type in metadata.yaml as follows:
metadata.yaml
rosbag2_bagfile_information:
compression_format: ''
compression_mode: ''
custom_data: {}
duration:
nanoseconds: 135470252209
files:
- duration:
nanoseconds: 135470252209
message_count: 30157
path: Retail_Street.db3
..............
topic_metadata:
name: /livox/lidar
offered_qos_profiles: ''
serialization_format: cdr
- type: livox_ros_driver/msg/CustomMsg
+ type: livox_ros_driver2/msg/CustomMsg
type_description_hash: RIHS01_94041b4794f52c1d81def2989107fc898a62dacb7a39d5dbe80d4b55e538bf6d
...............
.....
Do not forget to source
your ROS2 workspace before running the following command.
ros2 launch fast_livo mapping_aviz.launch.py use_rviz:=True use_sim_time:=True
ros2 bag play -p Retail_Street # Use space bar to play/pause
ros2 launch fast_livo mapping_aviz_metacamedu.launch.py use_rviz:=True use_sim_time:=True # Configuration for MID360-Fisheye dataset
ros2 bag play -p $BAG_PATH # Use space bar to play/pause (self-collected MID360-Fisheye dataset)
The source code of this package is released under the GPLv2 license. For commercial use, please contact me at zhengcr@connect.hku.hk and Prof. Fu Zhang at fuzhang@hku.hk to discuss an alternative license.