LeLab / src /lib /calibrationTargets.ts
GitHub CI
Sync from leLab @ 7317f7103e3a9d7f45fe4c0d6e4660a8f9d295e3
fc9bd9f
// Per-motor target range (max - min, in raw motor steps) by device_type.
// Derived from observed SO-101 calibration files; values sit slightly below
// the smallest observed good range so a real calibration clears the 98% bar.
const SO101_LEADER_TARGETS: Record<string, number> = {
shoulder_pan: 2400,
shoulder_lift: 2300,
elbow_flex: 2150,
wrist_flex: 2250,
wrist_roll: 3700,
gripper: 1150,
};
const SO101_FOLLOWER_TARGETS: Record<string, number> = {
shoulder_pan: 2400,
shoulder_lift: 2300,
elbow_flex: 2150,
wrist_flex: 2250,
wrist_roll: 3700,
gripper: 1400,
};
const TARGETS_BY_DEVICE_TYPE: Record<string, Record<string, number>> = {
teleop: SO101_LEADER_TARGETS,
robot: SO101_FOLLOWER_TARGETS,
};
const RANGE_TOLERANCE = 0.98;
export function isMotorRangeComplete(
deviceType: string | null | undefined,
motor: string,
rangeAchieved: number
): boolean {
if (!deviceType) return false;
const target = TARGETS_BY_DEVICE_TYPE[deviceType]?.[motor];
if (!target) return false;
return rangeAchieved >= target * RANGE_TOLERANCE;
}