Skip to content

Automatic Sensor Calibration

Calibration Anywhere

Extrinsics, intrinsics, and time offsets for every sensor in under 10 minutes. Works in any environment. No targets. No checkerboards.

Get a free calibration See how it works

pixel perfect
reprojection error
<10 min
calibration time
anywhere
operating environment

What makes it different

Calibration that scales.

No checkerboards

No checkerboards. No targets. No fiducials. No environmental modifications. Calibrate in the lab, in the field, anywhere.

No checkerboard required
Fully automated

No engineers required. No manual alignment procedure. Move the robot in a figure-8; the software does the rest.

All sensors

Extrinsics, intrinsics, and time offsets for every sensor — cameras, lidars, radars, IMUs, encoders, GNSS or INS units.

Scales to your fleet

Same automated process for 1 or 10,000 robots. No per-robot engineering. Run calibrations in the cloud or on the robot.

Why it matters

Miscalibration degrades everything downstream.

Miscalibrated sensors produce misaligned data: images that don't line up, lidar points that don't match camera pixels, timestamps that don't agree. Perception, localization, and path planning depend on an accurate calibration.

Calibration improves:

Sensor fusion quality

Extrinsics error is spatial noise. Better extrinsics improve every downstream fusion output: detection confidence, bounding box size, tracked object vectors.

Fleet consistency

Every robot performs to the same standard, regardless of deployment site. No "gold units," no "duds." Easier to maintain, easier to scale.

Operational continuity

Calibrations degrade from vibration, thermal cycling, and mechanical shock, and robots go offline. Fast reliable calibration improves uptime.

How it works

Move the robot. Capture sensor data. Get the calibration.

Works anywhere: no targets, no checkerboards, no engineers required. Harden the process in a few locations and deploy globally without concern.

1
Move the robot

Move quickly in a figure-8 or three-point turn near large static structure. No special environment, no site modifications.

2
Capture sensor data

Record ~30 seconds of data from all sensors (lidars, cameras, radars, IMUs, encoders, GNSS and/or INS units). Upload to the Data Portal or invoke the on-prem Docker container.

python3 upload.py --platform R2 --instance D2 /logs/data.mcap
docker run --rm -u 1000:1000 -v /logs/data.mcap quay.io/msa/customer:latest calibrate --platform R2 --instance D2
3
Get the calibration

Receive a calibration zip containing extrinsics, intrinsics, and time offsets for all sensors.

Calibration outputs

Generated with quality metrics for confident deployment.

All outputs are generated from a single ~30 second data collect.

# Calibration Anywhere by Main Street Autonomy
# 
# Position xyz; Quaternions xyzw
# [ x_m, y_m, z_m, qx, qy, qz, qw]
back_2d_lidar:
  parent: "base_link"
  child: "back_2d_lidar"
  value: [-0.494047, 0.006522, 0.426849, -0.001075, 0.001938, -0.017212, 0.999849]
front_2d_lidar:
  parent: "base_link"
  child: "front_2d_lidar"
  value: [0.021299, -0.003307, 0.424852, 0.001939, 0.001071, 0.999878, 0.015468]
front_3d_lidar:
  parent: "base_link"
  child: "front_3d_lidar"
  value: [-0.234892, -0.006363, 0.527931, -0.001696, -0.000016, -0.001686, 0.999997]
chassis_imu:
  parent: "base_link"
  child: "chassis_imu"
  value: [-0.216158, 0.012443, 0.164176, -0.000206, 0.001893, 0.705067, 0.709138]
right_stereo_camera:
  parent: "base_link"
  child: "right_stereo_camera"
  value: [-0.286952, -0.166885, 0.352829, 0.005047, 0.003323, 0.707693, -0.706494]
left_stereo_camera:
  parent: "base_link"
  child: "left_stereo_camera"
  value: [-0.435905, 0.148248, 0.352080, -0.000206, 0.001893, 0.705067, 0.709138]
front_stereo_camera:
  parent: "base_link"
  child: "front_stereo_camera"
  value: [0.102732, 0.063245, 0.351200, -0.002547, -0.008137, -0.004329, 0.999954]
front_fisheye_camera:
  parent: "base_link"
  child: "front_fisheye_camera"
  value: [0.110473, -0.011563, 0.380919, -0.001953, 0.010184, -0.004450, 0.999936]
# Calibration Anywhere by Main Street Autonomy
#
image_width:  1920
image_height: 1200
camera_name:  front_fisheye_camera
camera_matrix:
  rows: 3
  cols: 3
  data: [452.05569820004172,   0,                   943.94114653517386,
           0,                 451.71918139761948,   600.59251441034132,
           0,                   0,                     1              ]
distortion_model: equidistant
distortion_coefficients:
  rows: 1
  cols: 5
  data: [ 0.057062094961652564,  0.013893343356487644,
         -0.002032900688365591, -0.000800499136648722, 0]
readout_time_sec: -0.0015505231518380849
projection_matrix:
  rows: 3
  cols: 4
  data: [452.05569820004172,   0,                   943.94114653517386, 0,
           0,                 451.71918139761948,   600.59251441034132, 0,
           0,                   0,                     1,               0]
# Calibration Anywhere by Main Street Autonomy
#
# Time offsets are listed in seconds
/chassis/imu:                       0
/back_2d_lidar/scan:               -0.022429021
/front_2d_lidar/scan:              -0.002225964
/front_3d_lidar/lidar_points:      -0.179069499
/front_stereo_camera/image_raw:     0.007262095
/left_stereo_camera/image_raw:      0.007668094
/right_stereo_camera/image_raw:     0.005853115
/front_fisheye_camera/image_raw:    0.005996255

Supported sensors

Any type, number, combination, and layout of perception sensors.

No priors, TF tree, or CAD required. Calibration Anywhere works with any sensor configuration on any rigid (and some semi-rigid) robot platforms.

Cameras
  • RGB, multispectral, thermal (LWIR)
  • Stereo, depth (stereo or indirect ToF)
  • Rolling shutter and global shutter
  • Fisheye, wide-angle, narrow-angle, catadioptric, pinhole
Lidars
  • 3D mechanical scanning, fixed, and flash lidars
  • 2D planar laser scanners
  • Pulse or FMCW (doppler) modulation
Radars
  • 4D radar (azimuth, elevation, range, doppler)
IMUs
  • 3DoF gyro + 3DoF accelerometer
Odometry
  • Wheel encoders (shaft ticks or wheel speeds)
GNSS
  • One or more receivers
  • With or without RTK corrections
INS
  • Any reported pose or position estimates

Deployment Options

From R&D bringup to production at scale.

Start with human-reviewed calibrations in the cloud. Move to on-robot Docker once your platform is hardened. Each mode designed for a different stage of your deployment.

Remote service
Hosted in the cloud. Humans review every result.
  • Upload sensor data to Data Portal
  • Typical TAT: 1 business day
  • Best for initial setup, hardening, high-stakes calibrations
On-prem software
Docker container. No data leaves the robot.
  • CPU only, 1–2 cores of Jetson Orin or equivalent
  • Typical TAT: under 1 hour
  • Best for fleet-scale production and air-gapped environments
Background online
Continuous monitoring. Automatic drift detection.
  • Monitors odometry and triggers on motion
  • Alerts when new calibration is available
  • Best for platforms where manual calibration is operationally difficult

Maturity

Used in production by autonomy teams worldwide.

Main Street Autonomy is trusted by industry-leading robotics companies to deliver accurate calibrations in a short period of time. Calibration Anywhere is mission-critical software.

Results from a recent engagement with a leading North American Automotive OEM:

1,736
calibrations in 6 months
99.97%
system uptime
<0.067%
defect rate
2 weeks
setup to first calibration
“The strategic partnership [with Main Street Autonomy] has expedited our technical roadmap by 12 to 16 months.”
Ott Männik — Software Lead, Auve Tech
“The help that Main Street Autonomy provided was essential for our work. All MSA needed was a little perception data, and they were able to quickly get us the information we needed to have accurate camera data from the robot.”
Dr. Robert Griffin — Research Scientist, IHMC
“Working with Main Street Autonomy for two years has delivered results beyond what we could achieve on our own.”
Micah Nye — Chief Engineer, MIT-PITT-RW

See it work for your robot.

Share sensor data; we'll send you a free calibration. No commitment, no engineers required on your end.

Get a free calibration