Skip to main content

Control Point Post-Processing Stages

Three post-processing stages minimize the distances (errors) between the estimated and the measured control points. After a rigid transformation of the datasets to their relative location, the second and third stages undistort the datasets. Thanks to the two undistortion stages, the user can gauge the remaining error between any two control points.

Post-processing with control points works in three stages. The post-processed dataset is the result after all three stages have run. At each stage, some or all control points are active, meaning that the software uses them to improve the trajectory estimate.

The user can activate and deactivate control points per stage using the respective boolean flags in the Dataset Anchor Info Files.

Each stage produces an Error Log File, which shows the remaining error at each control point after that stage.

Here is a summary of the three post-processing stages:

AlignmentVerificationOptimization
Actionrigid transformationundistortionundistortion
Enabled Anchors (typical use)allselected setall
Remaining Error (See also: Error Gauging)all drift errorshows error between control points, minimized at active anchor poses.minimized at all anchor poses
Error Log Fileanchors_alignment.loganchors_verification.loganchors.log

Stage 1: Alignment

The first stage rigidly transforms the dataset. It starts with two coordinate systems:

  • Coordinate system: contains the measured control points. Its origin is the origin from where the control points were measured.
  • Dataset (SLAM) coordinate system: contains the trajectory estimate and estimated anchor poses. Its origin is the start of the dataset.
  1. Before using information from the control points, the software overlays the two coordinate systems.

  2. The software rotates and moves the dataset coordinate system until every estimated anchor pose is relatively close to its measured equivalent. The drift error remains. It is distributed across the active control points.

The Error Log File for the first stage is datasets_proc/<dataset_name>/anchors_alignment.log.

The necessary transformation from the dataset coordinate system to the anchor coordinate system is written to origin.json. That is where the nv_anchor-dataset-alignment tool collects the alignment information from.

Stage 2: Verification

In stages two and three, the software undistorts the trajectory estimate based on the poses of the active control points.
Note: Stage 2 is only required if the user wants to gauge the error between active control points.
After the Alignment stage, the trajectory estimate still includes drift error. For the Verification stage, 50 - 70% of the control points should be activated using the boolean flags in the Dataset Anchor Info File. The software compares the estimated and measured poses of the active control points and re-calculates the trajectory estimate to fit these constraints.

The goal is to fit the estimated anchor poses as closely to their measured equivalents as possible. The remaining errors in the new trajectory estimate are most noticeable at the inactive control points.

Because the undistortion is done across two steps, the stage 2 error log file can be used to gauge the errors in the final trajectory estimate.

When all control points are active, there is no way to tell how big the distortions along the trajectory are in-between control points. Inactive control points, however, have no effect on the new trajectory estimate; almost as if they were not there. But because these inactive control points are there, and you know their poses, you now have points where you can compare the distorted trajectory estimate with real, measured control points.

The Error Log File for the second stage is datasets_proc/<dataset_name>/anchors_verification.log.

Stage 3: Optimization

For the Optimization stage, it is best to activate all the control points, so that the final trajectory estimate is as accurate as possible. The same undistortion algorithm runs again, minimizing the remaining errors at all active control points.

After the Optimization stage, the errors in the trajectory estimate are as small as possible. The remaining errors can only be seen at the control points. Those errors are minimal because of the undistortion process.

However, along the trajectory estimate in-between control points, the probability is high that the remaining errors are smaller than errors at the inactive control points in stage two.

The Error Log File for the third stage is datasets_proc/<dataset_name>/anchors.log.