Skip to main content
Version: dev-latest

Components

A component is an atomic sensing unit (for instance, a camera) that can output zero or more streams of observations. The observations that it produces inform its type.

Common Features

Every component contains some common fields. These are primarily used for identification within the Plex.

FieldTypeDescription
UUIDUuidA universally unique identifier for the component.
NameStringA name to reference the component. These must be unique, and MetriCal will treat them as the "topic" name to match within the provided dataset.

Component Kinds

Camera

Cameras are a fundamental visual component. In addition to the common fields that every component contains, they are defined by the following types:

FieldTypeDescription
IntrinsicsA camera intrinsics objectIntrinsic parameters that describe the camera model.
CovarianceMatrix of floatsAn n×n covariance matrix describing the variance-covariance of intrinsic parameters.
Pixel pitchfloatThe metric size of a pixel in real space. If unknown, should be equal to 1.0.
Pixel pitch units

It is common practice to leave most observations and arithmetic in units of pixels when dealing with image data. However, this practice can get confusing when trying to compare two different camera types, as "1 pixel" may not equate to the same metric error between cameras. Pixel pitch allows us to compare cameras using a common unit, i.e. units-per-pixel.

Note that we leave the unit ambiguous here, as this field is primarily for making analysis easier on human eyes. Common units include microns-per-pixel (μm / pixel) and meters-per-pixel (m / pixel).

Intrinsic Modeling

"Intrinsics" can refer to different models depending on the lens type. MetriCal provides the following intrinsics models for cameras:

Model Name
Description
"no_distortion"No distortion model applied, i.e. an ideal pinhole model
"opencv_radtan"OpenCV RadTan
"opencv_fisheye"OpenCV Fisheye
"opencv_rational"OpenCV Rational, an extension of OpenCV RadTan with radial terms in the denominator
"pinhole_with_brown_conrady"Inverse Brown-Conrady, with correction in image space
"pinhole_with_kannala_brandt"Inverse Kannala-Brandt, with correction in image space
"eucm"Enhanced Unified Camera Model, i.e. EUCM
"double_sphere"Double Sphere
"omni"Omnidirectional

One might choose each of these models based on their application, or dependent upon what software they wish to be compatible with. In many cases, the choice of model may not matter as much as the data capture process.

If you're having trouble deciding which model will fit your system best, contact us and we can help you understand the differences that will matter to you!


LiDAR

MetriCal's categorization of LiDAR comprises a variety of similar yet slightly-different sensors. Some examples could be:

  • A Velodyne VLP-16 scanner
  • An Ouster OS2 scanner
  • A Livox HAP scanner
  • etc.

All of the above LiDAR can be represented as LiDAR components within MetriCal. In addition to the common fields that every component contains, they are defined by the following types:

FieldTypeDescription
IntrinsicsA LiDAR intrinsics objectIntrinsic parameters that describe the LiDAR model.
CovarianceMatrix of floatsAn n×n covariance matrix describing the variance-covariance of intrinsic parameters.
LiDAR Intrinsics

While we can certainly take in fixed offsets for LiDAR intrinsics (especially related to beam-type LiDAR like the VLP-16), MetriCal currently does not optimize for LiDAR intrinsics.

We plan to handle LiDAR intrinsics in a future release of MetriCal.

Intrinsic Modeling

"Intrinsics" can refer to different models depending on the LiDAR type. MetriCal provides the following models for LiDAR:

Model Name
Description
"no_offset"No altitude model applied.
"per_beam_offset_[integer]"The LiDAR consists of a fixed number of beams (e.g. Velodyne VLP-16 has 16 beams, so per_beam_offset_16). Each of these beams has an correction factor for its range, azimuth and altitude. NOTE: These offsets are not currently adjusted as part of calibration in metrical, but will be calibrated in a future release.

IMU

Inertial Measurement Units (IMU) measure specific-force (akin to acceleration) and rotational velocity. This is done through a combination of accelerometer and gyroscopic sensors. IMUs in MetriCal are a combined form of component as MEMS IMUs are rarely able to atomically and physically separate the accelerometer and gyroscope measurements.

Like other component types, aside from the common fields that every component contains, IMUs are defined by the following types:

FieldTypeDescription
BiasAn IMU biasIMU bias parameters
IntrinsicsAn IMU intrinsics objectIMU intrinsics model
Noise ParametersAn IMU noise parameters objectNoise parameters
Bias CovarianceA matrix of floatsA 6×6 covariance matrix describing the variance-covariance of the IMU bias parameters.
Intrinsic CovarianceA matrix of floatsA n×n covariance matrix describing the variance-covariance of the IMU intrinsic parameters, with the value of n dependent on the intrinsics model used.

Intrinsic Modeling

The following models are provided as part of MetriCal:

Model Name
Description
"no_intrinsics"No intrinsic model applied
"scale"Scale model
"scale_shear"Scale and shear model
"scale_shear_rotation"Scale, shear and rotation model
"scale_shear_rotation_g_sensitivity"Scale, shear, rotation and g-sensitivity model