Skip to main content
Sets the motor’s zero-position reference to its current mechanical position (persisted to flash). Damiao motors require a power cycle afterward.
Each motor’s encoder zero is calibrated at one of the joint’s mechanical end stops, not at the robot’s rest position. In --guided mode the CLI drives every joint to its closer end stop and zeroes there; in single---id mode you are responsible for holding the joint at the intended end stop before zeroing. AxolArm carries a per-joint offset so the public API stays in joint frame (0 = rest).
FlagDescription
--l / --rSelect the left or right arm (mutually exclusive, required)
--id IDCAN ID of the motor to zero, hex or decimal (required unless --guided)
--type {myactuator,damiao}Motor type (inferred from --id if omitted)
--guidedWalk through every arm joint, zeroing each at its closer end stop
In --guided mode the CLI iterates through all 7 arm joints (the gripper is auto-calibrated at runtime). For each joint you place it somewhere inside its operating range, press Enter, then move it to the prompted end stop and press Enter again. If the motion is in the expected direction the zero is committed immediately. If you moved the wrong way, the CLI keeps your starting reference and asks you to travel to the other end stop instead; pressing Enter there sets the zero. Press Ctrl-C to skip a joint.
axol motor.set-zero-pos --l --id 0x01      # single motor
axol motor.set-zero-pos --l --guided       # all left-arm joints
After --guided calibration each motor’s encoder zero coincides with its calibration end stop. AxolArm carries a per-joint offset internally so the public API (positions, motion_control, etc.) stays in joint frame (0 = rest position). Damiao motors (WRIST_2, WRIST_3) need a power cycle for the new zero to take effect.