Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Calibration

caliper-calib implements the verifiable core of kinematic calibration: joint-offset (zero) calibration.

The problem

A real robot's encoders read joint angles in a frame whose zero is offset from the kinematic model's zero by an unknown constant vector δ (from mechanical assembly, homing, or encoder mounting). Given observations {(commanded qₖ, measured tip pose Tₖ)}, the crate estimates δ such that FK(qₖ + δ) ≈ Tₖ for every observation.

The method

It solves by damped Gauss–Newton least squares. For each observation the residual is the body-frame error twist

rₖ = log6( FK(qₖ + δ)⁻¹ · Tₖ )      ∈ se(3),   stored [v; ω]

At the true offset δ*, FK(qₖ + δ*) = Tₖ, the error pose is the identity, and every rₖ = 0. Differentiating to first order gives d rₖ / d δ = −J_b(qₖ + δ), where J_b is the LOCAL (body) geometric manipulator Jacobian of the target frame — exactly the Jacobian caliper-kinematics already computes. So calibration reuses the same FK and Jacobian machinery the rest of the engine depends on, which is why it inherits their (Pinocchio-validated) correctness for the forward evaluation.

Scope

This is the joint-offset slice of calibration — the part with a clean, verifiable formulation. Fuller kinematic calibration (link-length / DH-parameter identification, etc.) is not claimed here.