Application: icp-log-viewer

icp-log-viewer is an interactive GUI tool to inspect and debug ICP (Iterative Closest Point) registration sessions stored as *.icplog files.

How to launch

Once mp2p_icp is installed, move to the directory where your *.icplog files have been stored and run:

icp-log-viewer

You can also point it directly at a single file or a specific directory:

# Load all *.icplog files in a directory
icp-log-viewer -d /path/to/logs/

# Load a single file
icp-log-viewer -f /path/to/log.icplog

# Only load files where the ICP quality is >= 0.5 (50%)
icp-log-viewer -d /path/to/logs/ --min-quality 0.5
Complete command line argument help
USAGE:

  icp-log-viewer  [--autoplay-period <period [seconds]>] [-q <quality [0,1]>]
                  [-l <foobar.so>] [-f <log.icplog>] [-d <.>] [-e <icplog>]
                  [--] [--version] [-h]


Where:

  --autoplay-period <period [seconds]>
    The period (in seconds) between timestamps to load and show in
    autoplay mode.

  -q <quality [0,1]>,  --min-quality <quality [0,1]>
    Minimum ICP quality (range [0,1], i.e. 0%-100%) to load a log file.
    Files whose ICP result quality is below this threshold are skipped.
    This is useful to focus inspection on well-converged ICP results.

  -l <foobar.so>,  --load-plugins <foobar.so>
    One or more (comma separated) *.so files to load as plugins

  -f <log.icplog>,  --file <log.icplog>
    Load just this one single log *.icplog file.

  -d <.>,  --directory <.>
    Directory in which to search for *.icplog files.

  -e <icplog>,  --file-extension <icplog>
    Filename extension to look for. Default is ``icplog``.

  --,  --ignore_rest
    Ignores the rest of the labeled arguments following this flag.

  --version
    Displays version information and exits.

  -h,  --help
    Displays usage information and exits.

GUI and feature explanation

The viewer window is divided into a left control panel and a main 3D viewport.

Log selector

A slider at the top of the panel lets you step through all loaded *.icplog entries (filtered by --min-quality if requested at launch). Use the Back / Forward buttons for single-step navigation, or enable Autoplay to advance automatically at the rate set by --autoplay-period.

3D viewport

The main 3D view shows the global map and the local point cloud registered against it. The initial-guess pose and the final ICP pose can be toggled independently.

ICP statistics panel

Numerical outputs shown for each selected log entry:

  • Quality — the ICP quality score in [0, 1] produced by the configured QualityEvaluator (e.g. QualityEvaluator_PairedRatio).

  • Log pose — the final estimated SE(3) pose of the local map.

  • Initial guess — the pose used to seed the ICP iteration.

  • Init→Final — the correction applied by ICP on top of the initial guess.

  • Covariance / condition number — uncertainty of the result.

  • Pairings — number of point correspondences in the last ICP iteration.

Pairings visualisation

Enable Show pairings to draw the point correspondences found at the last ICP iteration. Individual pairing types (point-to-point, point-to-plane, point-to-line, covariance-to-covariance) can be toggled independently.

Filtering by quality at load time

When a directory contains many log files (e.g. from a full SLAM session) it is often useful to inspect only the low-quality registrations that may have caused drift. Use --min-quality to restrict the loaded set:

# Inspect only high-quality (≥ 80 %) registrations
icp-log-viewer -d logs/ --min-quality 0.8

# Inspect only low-quality (< 20 %) registrations — invert by running with 0
# and then sorting/filtering externally, or set a low threshold and browse manually
icp-log-viewer -d logs/ --min-quality 0.0