Skip to main content
Version: dev-latest

Differenced Pose Trajectory Error

Overview

Differenced Pose Trajectory Errors describe the the alignment errors from synchronized camera poses (relative to an object-space) compared to poses output by the LNS. These poses are composed by utilizing the component-relative extrinsic between every Camera and LNS.

Definition

Differenced Pose Trajectory Error

FieldTypeDescription
errorsAn array of "Differenced Pose Trajectory Observation Groups"The collection of DPT observation group errors

Differenced Pose Trajectory Observation Groups

FieldTypeDescription
component_idUUIDThe UUID of the LNS component
other_idUUIDThe UUID of the "other" component being compared
observationsAn array of "Differenced Pose Trajectory Observations"The double-differenced errors across sequential timestamps between component and other.

Differenced Pose Trajectory Observation

FieldTypeDescription
t064 bit integerThe timestamp at t0
t164 bit integerThe timestamp at t1
t1_from_t0_pose_differencePoseThe double differenced pose between the t1-from-t0 transforms of component and other of the group.
object_idUUIDThe UUID of the object space observed by other.

Analysis

The double differencing formula used to compute this deals with four poses and one component relative extrinsics (CRE) transform:

  1. LLNS framet1L^{\text{t1}}_{\text{LNS frame}}: The LNS pose at time t1 (directly observed)
  2. LLNS framet0L^{\text{t0}}_{\text{LNS frame}}: The LNS pose at time t0 (directly observed)
  3. Cobjectt1C^{\text{t1}}_{\text{object}}: The other-from-object pose (world extrinsic) at time t1
  4. Cobjectt0C^{\text{t0}}_{\text{object}}: The other-from-object pose (world extrinsic) at time t0
  5. ΓLC\Gamma^{C}_{L}: The other-from-LNS transform, optimized by the calibration process

By knowing these four poses, as well as the optimized transform between the other component and the LNS, we can then formulate the error as follows:

Ct0t1=Cobjectt1(Cobjectt0)1C^{\text{t1}}_{\text{t0}} = C^{\text{t1}}_{\text{object}} \cdot (C^{\text{t0}}_{\text{object}})^{-1}

and

Lt0t1=LLNS framet1(LLNS framet0)1L^{\text{t1}}_{\text{t0}} = L^{\text{t1}}_{\text{LNS frame}} \cdot (L^{\text{t0}}_{\text{LNS frame}})^{-1}

From there, we can then compute the error of the CRE between the two pose differences (this is where the second "difference" of double-differencing comes in) by computing:

ϵ=Ct0t1((ΓCL)1Lt0t1ΓCL)\epsilon = C^{\text{t1}}_{\text{t0}} \cdot ( (\Gamma^{L}_{C})^{-1} \cdot L^{\text{t1}}_{\text{t0}} \cdot \Gamma^{L}_{C})

That ϵ\epsilon is the t1_from_t0_pose_difference as described in the differenced pose trajectory observation. Note that these pose differences are returned as a "pose," which may seem odd at first glance. In truth, these "poses" should be close to identity with the difference being the error across the double-difference operation. For translations, this error is easy to interpret; however, this is not always as easily interpreted for orientations, as the error can come from either of the two estimated other-from-object world extrinsics or from the estimated ΓLC\Gamma^{C}_{L} transform.