About mp2p_icp

A collection of C++ libraries and tools for multi-primitive-to-primitive (MP2P) matching, optimization, ICP-related algorithms, and point-cloud pipeline design. Part of the MOLA project.

How to cite it

mp2p_icp has been used in these papers:

  • The mola_lidar_odometry system, presented in [BC25].

  • Formerly, it was used in 2019 in [BC19a].

Install mp2p_icp

Note

You are reading installation instructions for the mp2p_icp package only. For installing the complete MOLA odometry and SLAM system, see Installing.

How to install the C++ mp2p_icp libraries and applications:

Note

Since this repository was split into the mp2p_icp_core (headless libraries and CLI applications, no GUI dependencies), mp2p_icp_viz (GUI applications: mm-viewer, icp-log-viewer), and mp2p_icp (metapackage, depends on both) ROS packages, standalone (non-colcon) plain-CMake builds are no longer supported. Build within a ROS workspace, either the whole thing via the mp2p_icp metapackage, or just mp2p_icp_core if you only need the headless libraries/apps.

Probably the easiest way to get mp2p_icp:

sudo apt install ros-${ROS_DISTRO}-mp2p-icp

To only install the headless libraries and CLI applications (no GUI dependencies):

sudo apt install ros-${ROS_DISTRO}-mp2p-icp-core

You can build mp2p_icp within a ROS 2 workspace using colcon, just as with any other package:

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone --recurse-submodules https://github.com/MOLAorg/mp2p_icp.git
cd ~/ros2_ws/
colcon build --symlink-install --packages-up-to mp2p_icp --cmake-args -DCMAKE_BUILD_TYPE=Release
. install/setup.bash

Or, to only build the headless libraries/apps:

colcon build --symlink-install --packages-up-to mp2p_icp_core --cmake-args -DCMAKE_BUILD_TYPE=Release

Demos

icp-run demos

# 2D icp with point-to-point pairings only:
icp-run \
  --input-local mp2p_icp_core/demos/local_001.mm \
  --input-global mp2p_icp_core/demos/global_001.mm \
  -c mp2p_icp_core/demos/icp-settings-2d-lidar-example-point2point.yaml \
  --generate-debug-log

# Inspect the debug log:
icp-log-viewer
# 2D icp with point-to-line pairings:
icp-run \
  --input-local mp2p_icp_core/demos/local_001.mm \
  --input-global mp2p_icp_core/demos/global_001.mm \
  -c mp2p_icp_core/demos/icp-settings-2d-lidar-example-point2line.yaml \
  --generate-debug-log

# Inspect the debug log:
icp-log-viewer