Skip to content

FAQ

Getting started

What is Calibration Anywhere?

Calibration Anywhere is automatic sensor calibration software from Main Street Autonomy. The software generates extrinsics, intrinsics, and time offsets for all sensors on the robot, without needing calibration targets.

The software can be deployed in the cloud, on-prem for offline use, or on the robot to run online in the background.

What sensors does Calibration Anywhere support?

Pretty much any perception or motion sensor (except ultrasonics). Your system must include at least one 3D lidar, one 2D lidar, or one stereo camera with known baseline. See System requirements for details.

Does Calibration Anywhere require calibration targets or checkerboards?

No. Calibration Anywhere works from natural scene geometry (walls, buildings, furniture) observed by your sensors during a short data collection. No printed boards, AprilGrids, or targets of any kind are needed.

How do I try it out?

See How to get started working with MSA.

Will my field operators be able to execute the calibration procedure?

Yes. Field operators calibrate using MSA software every day.

Can the robot calibrate itself without a human present?

Yes. See Deployment.


Data and formats

What data formats are accepted?

ROS1 .bag, ROS2 .mcap, and ROS2 .db3 files. Split bag files are acceptable. A non-ROS format is also supported: a .tar file containing images, .pcap files for lidars, and .csv files for IMU and wheel encoder data. See Capturing data.

Do you support non-ROS log formats?

Yes, see Capturing data.

Can I submit multiple bag files for a single calibration?

Yes. Split bag files are accepted. If submitting multiple files, ensure they do not contain duplicate messages from the same topics — this can happen if multiple rosbag record instances were recording simultaneously.

What data does calibration require as input?

Raw sensor data only. Calibration Anywhere does not require any form of localization, odometry, or pre-existing calibration. See Capturing data.

Is there any other data I can provide that is helpful?

CAD files and TF trees are helpful but not required. They can be used to constrain dimensions of calibration that are not directly observable from motion data — for example, the height of an IMU on a robot that only moves in a plane. If you have this data, include it.

Can I include tags, labels, or reference numbers with my sensor data?

Yes. Upload a file named msa_metadata.tar when creating your log. It will be returned in the Calibration output zip file without modification. Calibration Anywhere does not unpack or reference this file.


Calibration process

What motion do I need to capture?

Move the system in two figure-8 patterns while staying close to tall static structure that fills your sensors’ fields of view. Start and end stationary. Complete the motion in 30–60 seconds. If the system cannot move in a figure-8, two three-point turns work as well.

See Capturing data — Calibration motion for step-by-step instructions.

How long does calibration take?

Typically under 10 minutes from upload to result notification.

How often should I recalibrate?

Recalibrate whenever sensors are physically disturbed — after impacts, hardware changes, or shipping. For production deployments where sensors may drift due to vibration, temperature cycling, or wear, a regular cadence depends on your accuracy requirements and operating conditions. Contact MSA to discuss a recalibration strategy for your deployment.

Can I recalibrate in the field without taking the robot offline?

Yes. Because no calibration targets are required, the calibration procedure can be performed wherever the robot operates, indoors or outdoors. The figure-8 motion (or whatever other suitable motion) can be executed during a brief pause in operations; data upload and processing are handled asynchronously.


Output and results

What does Calibration Anywhere output?

A zip file containing:

  • extrinsics.yaml — 6DoF transform for every sensor relative to a reference frame, as [x, y, z, qx, qy, qz, qw]
  • extrinsics.urdf — NVIDIA Isaac Perceptor compatible URDF
  • <sensor_name>.intrinsics.yaml — OpenCV-compatible intrinsics per camera, including distortion model and rolling shutter readout time
  • time_offsets.yaml — time offset in seconds per sensor topic
  • ground.yaml — ground plane relative to each sensor (if the robot moves on flat ground)
  • wheels_cal.yaml — axle track and wheel speed gains (if encoders were included)

See Calibration output for full format documentation and YAML examples.

What is a time offset, and why does it matter?

A time offset is the difference between when a sensor reports its measurement time and the true time of capture. Even small offsets — 10 ms is typical — cause visible misalignment between sensors in fusion applications, because sensors are moving during normal robot operation. Calibration Anywhere outputs a time offset for every sensor topic, in seconds, so you can correct timestamps before fusing data.

Can I use the calibration output in ROS?

Yes. The extrinsics.urdf file is compatible with ROS and NVIDIA Isaac Perceptor. Camera intrinsics are in OpenCV format, compatible with sensor_msgs/CameraInfo. Time offsets are keyed by ROS topic name.

How do I know if my calibration is good?

MSA engineers review every calibration before delivery. The result log includes MSA-provided notes. If the calibration fails, the log status will show Failed with an error note explaining what went wrong — for example, insufficient motion, missing sensor topics, or data quality issues. Contact us with any questions about a specific result.

What happens if the calibration fails?

The log status is set to Failed and an error note is provided. Common causes include insufficient motion data, sensor topics missing from the bag, or data recorded without sensors observing nearby static structure. Review the error note, address the issue, and submit a new log.