Skip to content

cornellev/icp

Repository files navigation

icp

Last updated 2024-05-05 02:20:55.300469.
Made by Ethan Uppal.

Introduction

This repository hosts Ethan's implementation of Iterative Closest Points (ICP) as applied to scan matching. It is a first step in my project to implement Simultaneous Localization and Mapping (SLAM).

Install

You can view installation instructions at INSTALL.md.

Usage and Documentation

I host the usage information and documentation at cornellev.github.io/icp/. Please see there for information on how to download and how to use the library.

You can build the documentation yourself locally with make docs. The main page will be located at docs/index.html relative to the project root.

v1.2.1

Started work on a new implementation (read this paper). It passes all make test tests. Here is the performance currently:

ICP ALGORITHM BENCHMARKING
=======================================
* Method name: test1
* Number of trials: 50
* Burn-in period: 0
* Ideal convergence threshold: 20
* Min cost: 19.4709
* Max cost: 19.4709
* Median cost: 19.4709
* Mean cost: 19.4709
* Min iterations: 7 (real: 7)
* Max iterations: 7 (real: 7)
* Median iterations: 7 (real: 7)
* Mean iterations: 7 (real: 7)
* Average time per invocation: 0.00413281s

v1.1.x

The algorithm runs extremely fast now. We only need it to run at 6hz with our current LiDAR.

It also matches quite well. Below is the result of running this ICP implementation on two point clouds obtained within the workspace.

However, there is still remove for improvement with regard to outlier rejection and other parts of the algorithm (for instance, adopting a point-to-line metric).