mikeferguson/robot_calibration

Generic calibration for robots

What it solves

This project provides a set of ROS2 nodes to calibrate robot parameters, reducing errors in 3D camera intrinsics/extrinsics, joint angle offsets, and robot frame offsets. It also handles mobile-base tuning for wheel diameter, track width, gyro gain, and magnetometer hard iron calibration.

How it works

Calibration is performed in two primary steps:

  1. Data Capture: The robot captures samples consisting of joint positions and "observations" (points detected by sensors like cameras or laser scanners). It uses "feature finders" (e.g., CheckerboardFinder, PlaneFinder) to identify specific targets in the environment.
  2. Optimization: The system optimizes robot parameters to minimize reprojection errors—the difference in the pose of points as seen by different sensors. For example, it aligns the position of a checkerboard as seen by a camera with its position as calculated by the robot arm's kinematics.

Results are exported as updated URDF files or camera configuration YAML files.

Who it’s for

Robotics engineers and developers using ROS2 who need to precisely align their robot's physical hardware with its digital model (URDF) and calibrate onboard sensors.

Highlights

  • Multi-Sensor Support: Includes finders for checkerboards (2D and 3D), LEDs, planes, and laser scans.
  • Flexible Optimization: Supports various error blocks to compare 3D chains, 2D cameras, meshes, and planes.
  • Mobile Base Tuning: Dedicated nodes for calibrating wheel geometry and magnetometer offsets.
  • Integration: Can be wrapped in ROS 2 launch files and supports recording bagfiles to re-run optimization without re-capturing data.

Related

  • Project
  • Project
  • Project
  • Project
  • Project