What this controls
Chess calibration is used to:- map chess squares (
A1toH8) to arm coordinates - move pieces with
pick_up_piece_simple - move to the board observation pose for
detect_opponent_move
~/board_calibration.json.
Board mapping used by chess skills
Current mapping is:top_left=A8top_right=H8bottom_right=H1bottom_left=A1
Full board calibration (first setup, current beta flow)
In the current chess beta flow, calibration is driven from the two top corners only (A8, H8) using recalibrate_manual. The skill then computes A1 and H1 automatically and writes all 4 corners to ~/board_calibration.json.
Use this on first setup or any time the board position changes:
- Put the chessboard in its final position.
- Run
arm_utils(command="torque_off"). - Manually place the end effector above the center of
A8. - Run
recalibrate_manual(corner="A8"). - Manually place the end effector above the center of
H8. - Run
recalibrate_manual(corner="H8"). - Run
arm_utils(command="torque_on"). - Verify
~/board_calibration.jsoncontainstop_left,top_right,bottom_left, andbottom_right.
board_calibration_agent (record_position) for a manual 4-corner workflow, but the chess agent calibration flow uses the top-corner method above.
Quick manual recalibration for drift
Use this if board placement is the same but piece placement quality drifted.- Run
arm_utils(command="torque_off"). - Manually place the end effector above the center of
A8. - Run
recalibrate_manual(corner="A8"). - Manually place the end effector above the center of
H8. - Run
recalibrate_manual(corner="H8"). - Run
arm_utils(command="torque_on").
recalibrate_manual recomputes all four corners and updates ~/board_calibration.json.
Validate before playing
Run a physical validation move:- Place a spare pawn on
A4. - Keep
H5empty. - Run:
- If placement is off, run manual recalibration and retest.
Troubleshooting
board_calibration.jsonmissing or invalid:- rerun the top-corner calibration flow (
A8thenH8withrecalibrate_manual)
- rerun the top-corner calibration flow (
- detection works but arm pose over board is wrong:
- verify all four corners exist in
~/board_calibration.json
- verify all four corners exist in
- reset fails because calibration is missing:
- complete full calibration, then run
reset_chess_game(...)again
- complete full calibration, then run

