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.
What makes it different
Calibration that scales.
No checkerboards. No targets. No fiducials. No environmental modifications. Calibrate in the lab, in the field, anywhere.
No engineers required. No manual alignment procedure. Move the robot in a figure-8; the software does the rest.
Extrinsics, intrinsics, and time offsets for every sensor — cameras, lidars, radars, IMUs, encoders, GNSS or INS units.
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:
Extrinsics error is spatial noise. Better extrinsics improve every downstream fusion output: detection confidence, bounding box size, tracked object vectors.
Every robot performs to the same standard, regardless of deployment site. No "gold units," no "duds." Easier to maintain, easier to scale.
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.
Move quickly in a figure-8 or three-point turn near large static structure. No special environment, no site modifications.
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.
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.005996255Supported 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.
- RGB, multispectral, thermal (LWIR)
- Stereo, depth (stereo or indirect ToF)
- Rolling shutter and global shutter
- Fisheye, wide-angle, narrow-angle, catadioptric, pinhole
- 3D mechanical scanning, fixed, and flash lidars
- 2D planar laser scanners
- Pulse or FMCW (doppler) modulation
- 4D radar (azimuth, elevation, range, doppler)
- 3DoF gyro + 3DoF accelerometer
- Wheel encoders (shaft ticks or wheel speeds)
- One or more receivers
- With or without RTK corrections
- 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.
- Upload sensor data to Data Portal
- Typical TAT: 1 business day
- Best for initial setup, hardening, high-stakes calibrations
- CPU only, 1–2 cores of Jetson Orin or equivalent
- Typical TAT: under 1 hour
- Best for fleet-scale production and air-gapped environments
- 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:
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