iterative closest points
CEV ICP algorithm library
Loading...
Searching...
No Matches
Trimmed ICP
Usage
You can construct a new instance of Trimmed ICP with icp::ICP::from_method("trimmed", config). Supply the following parameters to config (via icp::ICP::Config::set):
Key Description
"overlap_rate" A double between 0.0 and 1.0 for * the overlap rate. The default is 1.0.
Description
Trimmed ICP is identical to Vanilla ICP with the addition of an overlap rate parameter, which specifies the percentage of points between the two point sets that have correspondences. When the overlap rate is 1, the algorithm reduces to vanilla.
  1. Matching Step: see Vanilla ICP for details.
  2. Trimming Step

    Matches are considered in increasing order of distance.

    Sources:

  3. Reflection Handling

    SVD may return a reflection instead of a rotation. For 2D scans, this case is exceedingly rare because it only happens when our "a" scan is colinear, as far as I can tell (at least in a noiseless case). If this happens in a noisy case and the points aren't somewhat colinear, I don't know of a method to recover a good rotation. So we will just assume little noise and guess that the scan is colinear. The source below claims that the least squares solution is probably useless in a similar case in 3D.

    TODO: This is the 2D translation of what the source does. Can we prove that this actually works?

    Sources:

  4. Transformation Step: see Vanilla ICP for details.

Read ICP Sources for a list of all resources used in this project. This page was automatically generated from trimmed.cpp with icp_doc_builder.py.