Thanks for open-sourcing FAST-LIVO2-RTK.
The project currently targets ROS 1 / catkin, which is becoming increasingly hard to use:
- ROS 1 Noetic reached EOL in May 2025.
- Ubuntu 20.04, the main supported platform for ROS Noetic, also reached the end of standard support in May 2025.
- On modern systems such as Ubuntu 22.04+ and ROS 2-only setups, building and running the package is inconvenient. It requires an old distro, a ROS 1 container, or additional bridging, and it cannot be integrated directly into a ROS 2 stack.
Because of this, I ported the package to ROS 2 Humble and would like to propose adding an official ros2-humble branch.
What I did
A working, tested ROS 2 Humble port is available here:
https://github.com/sb-im/FAST-LIVO2-RTK-ROS2/tree/ros2-humble
The numerical algorithm is unchanged. Only the ROS plumbing was migrated:
catkin -> ament_cmake
roscpp -> rclcpp
tf -> tf2
nh.param -> ROS 2 parameters
cv_bridge, image_transport, and message_filters -> ROS 2 equivalents
- Interface-only ROS 2 packages for Livox
CustomMsg and gnss_comm messages, field-matched to the ROS 1 definitions so converted rosbags play back directly
- ROS 2 build support for
rpg_vikit
- Reproducible Docker setup with ROS 2 Humble, Sophus
a621ff, GTSAM 4.2, and GeographicLib
- ROS 1
.bag -> ROS 2 rosbag2 conversion documented with rosbags-convert
Validation
I ran the port headlessly on the HH-LVGO-01 example bag and compared it against the ROS 1 reference output:
- Optimized trajectory: 2735 vs 2737 poses
- Trajectory length: 297.48 m vs 297.31 m
- Per-pose position difference: mean 0.36 cm, median 0.21 cm, p95 1.27 cm
- Raw RTK track: identical, 2714 poses
- Global map: 34.00 M vs 34.02 M points
The remaining differences appear to come from message delivery timing, namely ROS 2 spin_some / DDS behavior versus the ROS 1 global callback queue, rather than from algorithmic changes.
Note: only HH-LVGO-01 has been validated end-to-end so far. An AGV config is included, but I have not tested it under ROS 2 because I do not have that bag.
Thanks for open-sourcing FAST-LIVO2-RTK.
The project currently targets ROS 1 / catkin, which is becoming increasingly hard to use:
Because of this, I ported the package to ROS 2 Humble and would like to propose adding an official
ros2-humblebranch.What I did
A working, tested ROS 2 Humble port is available here:
https://github.com/sb-im/FAST-LIVO2-RTK-ROS2/tree/ros2-humble
The numerical algorithm is unchanged. Only the ROS plumbing was migrated:
catkin->ament_cmakeroscpp->rclcpptf->tf2nh.param-> ROS 2 parameterscv_bridge,image_transport, andmessage_filters-> ROS 2 equivalentsCustomMsgandgnss_commmessages, field-matched to the ROS 1 definitions so converted rosbags play back directlyrpg_vikita621ff, GTSAM 4.2, and GeographicLib.bag-> ROS 2 rosbag2 conversion documented withrosbags-convertValidation
I ran the port headlessly on the HH-LVGO-01 example bag and compared it against the ROS 1 reference output:
The remaining differences appear to come from message delivery timing, namely ROS 2
spin_some/ DDS behavior versus the ROS 1 global callback queue, rather than from algorithmic changes.