All Projects → MOLAorg → mp2p_icp

MOLAorg / mp2p_icp

Licence: BSD-3-Clause license
Multi primitive-to-primitive (MP2P) ICP algorithms in C++

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to mp2p icp

DICOMautomaton
A multipurpose tool for medical physics.
Stars: ✭ 35 (-58.33%)
Mutual labels:  registration, point-clouds
maks
Motion Averaging
Stars: ✭ 52 (-38.1%)
Mutual labels:  registration, slam
rgbd ptam
Python implementation of RGBD-PTAM algorithm
Stars: ✭ 65 (-22.62%)
Mutual labels:  slam, point-clouds
Nina
A collection of Shorcuts to work faster in Revit.
Stars: ✭ 17 (-79.76%)
Mutual labels:  point-clouds
LIO-SAM based relocalization
A simple system that can relocalize a robot on a built map is developed in this system. The system is based on LIO-SAM.
Stars: ✭ 126 (+50%)
Mutual labels:  slam
numerifides
A proposal for a system of decentralized trust, built on an open, public blockchain.
Stars: ✭ 14 (-83.33%)
Mutual labels:  registration
SchoolRegistrationUI-Android
Check out the new style for App Design aims for school or colleges...😉😀😁😎
Stars: ✭ 56 (-33.33%)
Mutual labels:  registration
lsd slam stereo
LSD-SLAM with Stereo Cameras
Stars: ✭ 48 (-42.86%)
Mutual labels:  slam
M2DGR
M2DGR: a Multi-modal and Multi-scenario Dataset for Ground Robots
Stars: ✭ 238 (+183.33%)
Mutual labels:  slam
Dynamic ORB SLAM2
Visual SLAM system that can identify and exclude dynamic objects.
Stars: ✭ 89 (+5.95%)
Mutual labels:  slam
bg-atlasapi
A lightweight python module to interact with atlases for systems neuroscience
Stars: ✭ 54 (-35.71%)
Mutual labels:  registration
mrivis
medical image visualization library and development toolkit
Stars: ✭ 19 (-77.38%)
Mutual labels:  registration
SJS DROPS
Script using requests module to register accounts to Slam Jam Socialism raffles.
Stars: ✭ 21 (-75%)
Mutual labels:  slam
Universal Head 3DMM
This is a Project Page of 'Towards a complete 3D morphable model of the human head'
Stars: ✭ 138 (+64.29%)
Mutual labels:  registration
hackerAPI
🐓 API for registration, live-site
Stars: ✭ 20 (-76.19%)
Mutual labels:  registration
A-LeGO-LOAM
Advance-LeGO-LOAM
Stars: ✭ 45 (-46.43%)
Mutual labels:  slam
vslam research
this repo is for visual slam research
Stars: ✭ 22 (-73.81%)
Mutual labels:  slam
pybot
Research tools for autonomous systems in Python
Stars: ✭ 60 (-28.57%)
Mutual labels:  slam
OverlapPredator
[CVPR 2021, Oral] PREDATOR: Registration of 3D Point Clouds with Low Overlap.
Stars: ✭ 293 (+248.81%)
Mutual labels:  registration
matrix-registration
a token based matrix registration api
Stars: ✭ 182 (+116.67%)
Mutual labels:  registration

CircleCI Docs

mp2p_icp

A repertory of multi primitive-to-primitive (MP2P) ICP algorithms in C++.

License: New BSD 3-Clause

Docs:

The OLAE-ICP method is described in this technical report:

Jose-Luis Blanco-Claraco. "OLAE-ICP: Robust and fast alignment of geometric
features with the optimal linear attitude estimator", Arxiv 2019.

mp2p_pairings

Introduction

This library provides:

  • mp2p_icp::pointcloud_t: A generic data type to store raw or processed point clouds, e.g. segmented, discrete extracted features. Note that filtering point clouds is intentionally left outside of the scope of this library. See MOLA for possible implementations.
  • mp2p_icp::ICP_Base: A uniform API for matching those generic point clouds.
  • Implementations/wrappers of different ICP algorithms under such uniform API.
  • The library exposes both, complete iterative ICP algorithms, and the underlying optimal transformation estimators which are run at each ICP iteration.

Implemented Optimal Transformation methods

  • optimal_tf_olae(): A novel algorithm that can recover the optimal attitude from a set of point-to-point, line-to-line, and plane-to-plane pairings.
  • optimal_tf_horn(): Classic Horn's closed-form optimal quaternion solution. Relies on the implementation in <mrpt/tfest/se3.h>.
  • optimal_gauss_newton(): Simple non-linear optimizer to find the SE(3) optimal transformation for these pairings: point-to-point, point-to-plane.

Implemented ICP methods

  • ICP_OLAE: ICP for point clouds, planes, and lines. Uses optimal_tf_olae().
  • ICP_Horn_MultiCloud: Align point clouds layers, using classic Horn's closed-form optimal quaternion solution.

Building

Requisites

  • A C++17 compiler. Tested with gcc-7, MSVC 2017.
  • Eigen3
  • CMake >= 3.4
  • MRPT >=2.4.0

Install all the dependencies in Ubuntu with:

# MRPT >=2.4.0, for now from this PPA (or build from sources if preferred):
sudo add-apt-repository ppa:joseluisblancoc/mrpt
sudo apt update
sudo apt install libmrpt-dev

# Rest of dependencies:
sudo apt install build-essential cmake libeigen3-dev

Build

cmake -H. -Bbuild
cd build
cmake --build .   # or make

Run the tests

make test

Run the demos

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

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

# Inspect the debug log:
build/bin/mp2p-icp-log-viewer
# 3D icp with external library wrapper
build/bin/mp2p-icp-run \
  --input-local demos/local_001.mm \
  --input-global demos/global_001.mm \
  -c demos/icp-settings-example-libpointmatcher.yaml \
  --generate-debug-log

# Inspect the debug log:
build/bin/mp2p-icp-log-viewer
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].