Thanks to hku mars lab chunran zheng for the open source excellent work
- 🔓 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. Please note that the dataset is being uploaded gradually.
MARS-LVIG dataset:A multi-sensor aerial robots SLAM dataset for LiDAR-visual-inertial-GNSS fusion
Ubuntu 22.04. ROS Installation.
PCL>=1.6, Follow PCL Installation.
Eigen>=3.3.4, Follow Eigen Installation.
OpenCV>=3.2, Follow Opencv Installation.
Sophus Installation for the non-templated/double-only version.
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build && cd build && cmake ..
make
sudo make install
if build fails due to so2.cpp:32:26: error: lvalue required as left operand of assignment
, modify the code as follows:
so2.cpp
namespace Sophus
{
SO2::SO2()
{
- unit_complex_.real() = 1.;
- unit_complex_.imag() = 0.;
+ unit_complex_.real(1.);
+ unit_complex_.imag(0.);
}
Vikit contains camera models, some math and interpolation functions that we need. Vikit is a catkin project, therefore, download it into your catkin workspace source folder.
For well-known reasons, ROS2 does not have a direct global parameter server and a simple method to obtain the corresponding parameters. For details, please refer to https://discourse.ros.org/t/ros2-global-parameter-server-status/10114/11. I use a special way to get camera parameters in Vikit. While the method I've provided so far is quite simple and not perfect, it meets my needs. More contributions to improve rpg_vikit
are hoped.
# Different from the one used in fast-livo1
cd fast_ws/src
git clone https://github.com/Robotic-Developer-Road/rpg_vikit.git
Thanks to the following repositories for the code reference:
Follow livox_ros_driver2 Installation.
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:
cd ~/fast_ws/src
git clone https://github.com/Robotic-Developer-Road/FAST-LIVO2.git
cd ../
colcon build --symlink-install --continue-on-error
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
ros2 bag play -p Retail_Street # space bar controls play/pause
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.