Skip to main content
Version: 11.0

Circle Misalignment

Created by: All Camera-LiDAR pairs


Circle misalignment is a metric unique to MetriCal. It's an artifact of the way MetriCal bridges the two distinct modalities of camera (primarily 2D features and projection) and LiDAR (3D point clouds in Euclidean space).

The design of the circular target is the key. The target starts as a regular camera fiducial like a ChArUco board. That board is then sized into a circle of a known diameter and outlined with retroreflective material, like tape. This design allows both cameras and LiDAR to pick up the fiducial via its sensing modality.

Circle Board

There is one circle misalignment metric group for every circular target in use.


Circle misalignment metrics contain the following fields:

metadataA common metadata objectThe metadata associated with the point cloud this circle target was measured in.
object_space_idUUIDThe UUID of the object space that was being observed.
measured_circle_centerAn array of 3 float valuesThe X/Y/Z coordinate of the center of the circle target, in the LiDAR coordinate frame
world_extrinsics_component_idsAn array of UUIDsThe camera UUIDs for each world extrinsic in world_extrinsics
world_extrinsicsAn array of world extrinsics objectsThe world pose (camera from object space) that correspond to each circle_center_misalignment
circle_center_misalignmentAn array of circle center coordinatesThe errors between the circle center location estimated between each camera and the observed LiDAR
circle_center_rmseFloatThe circle center misalignment RMSE over all world extrinsics.


The "Center"

Much of the circle misalignment metrics are about bridging the gap between the two modalities.

  • The center of the circle in camera space is the center of the ChArUco board, given its metric dimensions
  • The center of the circle in LiDAR space is the centroid of the planar 2D circle fit from the points detected on the ring of retro-reflective tape.

Circle Inliers

The measured_circle_center above is this LiDAR center; the circle_center_misalignment is the error between that LiDAR circle center and the circle center estimated from each camera. This might seem straightforward, but there's a bit more to it than that.

Since there are no commonly observable features between cameras and LiDAR, MetriCal has to use a bit of math to make calibration work. Think of the object circle center as our origin; we'll call this COC^O. The LiDAR circle center is that same point, but in the LiDAR coordinate frame:

CL=ΓOLCOC^L = \Gamma^{L}_{O} \cdot C^O

...and every camera has its own estimate of the circle center w.r.t the camera board, CCC^C:

CC=ΓOCCOC^C = \Gamma^{C}_{O} \cdot C^O

We can relate these centers to one another by using the extrinsics between LiDAR and Camera, ΓCL\Gamma^{L}_{C}:

C^L=ΓCLCC=ΓCLΓOCCO\hat C^L = \Gamma^{L}_{C} \cdot C^C = \Gamma^{L}_{C} \cdot \Gamma^{C}_{O} \cdot C^O

With both CLC^L and C^L\hat C^L in the LiDAR coordinate frame, we can calculate the error between the two and get our circle_center_misalignment:

ccm=CLC^Lccm = C^L - \hat C^L

ΓOC\Gamma^{C}_{O} is what is referred to when we say world_extrinsics, and the world_extrinsics_component_ids designate what camera that extrinsic relates to. MetriCal calculates these for every pair of synced camera-LiDAR observations.