Skip to content

[feat] ROS2 Node!#8

Merged
contagon merged 9 commits intomainfrom
feat/ros2-node
Mar 16, 2026
Merged

[feat] ROS2 Node!#8
contagon merged 9 commits intomainfrom
feat/ros2-node

Conversation

@contagon
Copy link
Copy Markdown
Contributor

FORM officially has a ROS2 node! Should be just as easy to build as FORM itself:) It's really just a small wrapper around FORm.

Mostly based off of KISS-ICP's ROS2 node, so super thanks to them!

Copilot AI review requested due to automatic review settings March 13, 2026 20:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a ROS 2 wrapper around the FORM LiDAR odometry estimator, including PointCloud2 conversion utilities, TF/odometry publication, and RViz/launch tooling to run and visualize the system from a ROS workspace.

Changes:

  • Introduces a ROS 2 component node (EstimatorNode) that subscribes to PointCloud2, runs FORM, publishes nav_msgs/Odometry, and optionally publishes debug point clouds + TF.
  • Adds PointCloud2 conversion/helpers (FORM feature vectors ↔ ROS PointCloud2; Pose3 ↔ geometry_msgs).
  • Adds ROS packaging/build tooling and user-facing artifacts (launch file, RViz config, README, pixi environment, package.xml/CMake).

Reviewed changes

Copilot reviewed 16 out of 18 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
ros/src/utils.hpp ROS/GTSAM/PointCloud2 helper utilities for frame IDs, pose conversions, and debug cloud publishing.
ros/src/ros_pc2.h Converts incoming PointCloud2 messages into organized form::PointXYZf vectors.
ros/src/node.hpp Declares the ROS 2 estimator component node interface.
ros/src/node.cpp Implements subscription, parameter wiring, TF lookup/broadcast, odometry publishing, and debug map publishing.
ros/launch/odometry.launch.py Launches the node, optional RViz, and optional rosbag playback.
ros/rviz/form.rviz RViz display configuration for odometry and debug clouds.
ros/README.md Usage/build/run documentation for the ROS wrapper.
ros/pixi.toml Pixi-based dev environment tasks/dependencies for building/running the ROS wrapper.
ros/package.xml ROS package manifest for dependencies and build type.
ros/CMakeLists.txt Builds the ROS shared library component and installs launch/RViz assets.
form/mapping/map.hpp / form/mapping/map.tpp Adds a to_vector() export for keypoint maps (used for visualization).
form/form.hpp / form/form.cpp Exposes Estimator::current_map() for visualization consumers (ROS node).
.gitignore / .gitattributes Repo hygiene updates (ROS build artifacts, lockfile attributes).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

@contagon contagon merged commit 0e28ffd into main Mar 16, 2026
@contagon contagon deleted the feat/ros2-node branch March 18, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants