Skip to content

PetropoulakisPanagiotis/ICP-Variants

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ICP-Variants

The Iterative Closest Point (ICP) algorithm has been successfully used for registering 3D scans, especially for robotics tasks. Throughout the years many variants have emerged that either try to reduce the execution time and/or increase the registration quality. In this work, we analyse and examine the most prominent variants in synthetic and real-world scans. We conclude that there is a trade-off between speed and accuracy and only very limited variants can achieve both while we also point out some configurations that do not work well in practice.


Step Available Methods
1. Selection All & Random
2. Matching k-NN & Projective
3. Weighting Constant & Point distances & Normals compatibility & Colors compatibility
4. Rejection Normals angle
5. Metric Point-to-Point & Point-to-Plane & Symmetric ICP
6. Minimization Linear & Non-Linear (Levenberg-Marquardt) Optimiztion

Extra variants: Multi-Resolution ICP & Color ICP (6-dim k-NN)

Requirements

Datasets

Apart from the bunny toy point cloud, we use RGB-D SLAM dataset (freiburg_xyz sequence) for debugging and ETH point cloud registration dataset (Apartment) for benchmark.

ETH dataset format

Some files to note in original ETH:

  • PointCloud.csv: File format

    The header has the following elements:

    • Time_in_sec: timestamps are recorded for each 2D scan produced by the Hokuyo and then uniformly distributed to all points of the 2D scan to reconstruct a timestamps per point (second)
    • x, y, z: coordinates of laser point expressed in global frame (meter)
    • Intensities: intensity returned on each beam. If -1, values weren't recorded
    • 2DscanId: start at 0 and is incremented every time a 2D scan is taken (Each PointCloud has ~344 2D Scan. Id 0 -> 343)
    • Points: start at 0 and is incremented for every point. The value reset at zero for every 2D scan. (Each 2D Scan have 1077 points. Id 1 -> 1077.)
  • overlap_apartment.csv: overlap between scene 0 -> 44 (total 45 point cloud scans)

  • pose_scanner_leica.csv: poseId, timestamp, 4x4 extrinsic matrix (rotation and translation)

Preprocess ETH Dataset

To use the ground truth, we need the matching csv file in addition to the .pcd files downloaded by the point clouds registration algorithms.

  • Clone point clouds registration repo
  • Cd to the cloned repository, edit "eth_setup.py" line 42: datasets -> datasets[:1] to down load only "apartment".
  • run "python eth_setup.py".
  • Move "apartment" folder created to Data folder inside this repo.

Authors

  • Florian Donhauser
  • Cuong Ha
  • Panagiotis Petropoulakis
  • Suren Sritharan

Equal contribution

Αcknowledgements

Prof. Dr. Angela Dai @ 3D AI Lab
Prof. Dr. Matthias Nießner @ Visual Computing Lab
Dr. Justus Thies
Teaching Assistants: M. Sc. Andrei Burov, M. Sc. YuchenRao
Department of Informatics
Technical University of Munich (TUM)
3D AI Lab: https://www.3dunderstanding.org/
Visual Computing & Artificial Intelligence Lab: http://niessnerlab.org/