Skip to content

Request: add an ros2-humble branch #2

Description

@gitgitgogogo

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions