Skip to main content
Version: 15.0

Combining Modalities

MetriCal's real power comes from its ability to calibrate multiple sensor modalities at once. This is made possible by combining different target types for different sensor types, all within the same calibration session.

The target combination most commonly used is a Camera-LiDAR MultiTarget, which combines a markerboard for camera detection with a retroreflective circle for LiDAR detection. This target type allows simultaneous calibration of cameras and LiDAR sensors. Just like individual camera and LiDAR targets, multiple Camera-LiDAR MultiTargets can be used together in a single calibration session to improve coverage and accuracy. See the documentation on using multiple targets for more information.

Camera-LiDAR MultiTarget

This target is a markerboard or aprilgrid with a retroreflective ring on its surface. This target type is required to perform a Camera ↔ LiDAR calibration with MetriCal.

This hybrid target is represented in object space as two separate object spaces: one for the camera target and one for the circle. The description below is only for the circle. See the documentation on using mutual construction groups for more information.

Using Multiple Circle Targets

When using multiple circle targets, MetriCal requires that the radii of the circles be at least 10cm different from each other. If the radii are too similar, the calibration may fail or produce incorrect results.

⬇️Download Object Space JSON: Camera-LiDAR MultiTarget

Target: Camera-LiDAR MultiTarget

Measuring the Circle Offsets

There's no requirement for the circle to be perfectly centered on the camera target. However, you will need to measure the offsets of the circle center relative to the camera target origin in order to use this target type.

We'll put this information into the mutual construction group definition for the two object spaces. Here's an example of how that looks in JSON:

"mutual_construction_groups":
[
{
"24e6df7b-b756-4b9c-a719-660d45d796bf": "parent", // Markerboard object space
"d66d5ad4-b0e9-11f0-91a9-2b83bda4ed9c": // Circle object space
{
"parent_from_object": {
"rotation": [ // No rotation
0,
0,
0,
1
],
"translation": [
0.375, // X offset in meters
0.375, // Y offset in meters
0 // Z offset in meters
]
}
}
}
],
...

Notice that the offsets are relative to the "origin" of the camera target. The way that this is defined differs across board types, and can be a bit confusing.

Premade Targets Are Nice

If you are following our target construction guidelines and are using a Tangram premade target, we have already calculated offsets from the proper origin and constructed the JSON for you. If you are constructing your own custom circle target, though, you will need to find the origin of your board in order to measure circle offsets yourself.

AprilGrid + Circle Target Origin

To find the origin of an AprilGrid style target, first find the tag matching the marker_id_offset of the board. Orient this tag so that it's in the bottom-left corner of your frame of reference. The origin of the board is the top left corner of the top left marker of your board (see diagram).

Target: Circular AprilGrid Description

Markerboard + Circle Target Origin

To find the origin of a Markerboard style target, first find the tag matching the marker_id_offset of the board. Orient this tag so that it's in the top-left corner of your frame of reference. The origin of the board is the bottom right corner of the top left checker of your board (see diagram). Note that the top left checker of your board may be either a black square or a white checker with a tag inside of it. If it's the latter, the origin is the corner of the checker rather than the tag itself.

Target: Circle Target Description