axol serve). To calibrate every joint at once, use tune.factory.
When to use it
The gravity feed-forward starts from the CAD masses and centers of mass. Cables, the end-effector and build differences can make a real link a few percent off. The position spring then has to carry the missing torque, so the joint sags under load byunmodeled torque / kp. Raising the gains won’t fix the sag. Correcting the model fixes it at every angle.
How it works
The joint sweeps back and forth at a constant speed, as intune.friction. Averaging the forward and backward torques cancels friction, which leaves gravity. The tool fits the difference from the current model as a shift in the link’s center of mass.
- The link’s mass stays at its CAD value. For a custom gripper much heavier than stock, set its mass first with
tune.factory --mass. - One joint’s sweep can’t see every direction of the center of mass equally well. Directions it can’t see stay at their current value.
- A fitted shift of more than 60 mm is rejected as bad data.
Sweep poses
Gravity can’t turn a joint whose axis is vertical, so the tool poses other joints to load the test joint:
The clearance rules from
tune.friction also apply. shoulder_2 sweeps only outboard of rest. shoulder_3 and wrist_1 sweep with shoulder_2 held 10° outboard, and are limited to ±90° in their loaded poses. If a sweep would still carry no gravity load, the tool refuses to fit it.
Order
Run fromwrist_3 to shoulder_1. A shoulder sweep moves every link past it, so errors in uncalibrated wrist and elbow links end up in the shoulder’s fit. The tool prints a note when links further out are still uncalibrated.
Run tune.friction --save on the joint first. The tool refits the friction offset Fo against the corrected model and saves it with the center of mass.
The report prints the center-of-mass shift in mm, how well the model fits before and after, and the worst sag at rest before and after, at the joint’s configured
kp.
