Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ReferenceFrameFactor

Open In Colab
['ReferenceFrameFactorPoint3Pose3']

ReferenceFrameFactor<POINT, TRANSFORM> is a ternary factor used to relate landmark observations made in two different reference frames (e.g., from two different robots or two distinct SLAM sessions). It connects:

  1. A landmark (POINT) expressed in a ‘global’ or common reference frame (globalKey).

  2. A transform (TRANSFORM) representing the pose of a ‘local’ frame relative to the ‘global’ frame (transKey). Typically TRANSFORM = global_T_local.

  3. The same landmark (POINT) expressed in the ‘local’ reference frame (localKey).

The factor enforces the constraint that the globally expressed landmark, when transformed by the global_T_local transform, should match the locally expressed landmark. The transformation logic depends on the specific POINT and TRANSFORM types and is handled by the transform_point helper function (which usually calls Transform::transformFrom).

Error: Log(local−1⋅transform_point(trans,global)) \text{Log}(\text{local}^{-1} \cdot \text{transform\_point}(\text{trans}, \text{global}))

This factor is crucial for multi-robot map merging or combining results from different SLAM sessions where common landmarks have been observed.

Creating a ReferenceFrameFactor

Instantiate by providing the keys for the global landmark, the transform, the local landmark, and a noise model. The noise model dimensionality should match the dimension of the POINT type.

ReferenceFrameFactor: : ReferenceFrameFactor(Global: l0, Transform: t0, Local: o0)
isotropic dim=3 sigma=0.1

Evaluating the Error

The error represents how much the transformed global landmark deviates from the local landmark estimate.

Expected local landmark: [ 2. -4.  1.]

Error at ground truth: 4500.0 (Should be zero)
Error with noisy local landmark: 4621.125