Merged
Conversation
Contributor
There was a problem hiding this comment.
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.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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!