chess_agent. For the dedicated chessboard calibration workflow, go to Chessboard calibration (beta).
Before you start
- Make sure arm control and cameras are working.
- Keep the chessboard fixed in one position while playing.
- Use the app Home screen to start agents.
- Configure Gemini for move detection.
Configure Gemini key
detect_opponent_move loads GEMINI_API_KEY from ~/innate-os/skills/.env.scan.
Create or update this file on the robot:
Agents and skills used
chess_agent uses:
pick_up_piece_simpledetect_opponent_moveupdate_chess_staterecalibrate_manualarm_utilsreset_chess_gamehead_emotion
Start a game
- Run Chessboard calibration (beta) if needed.
- Start
chess_agent. - Call
reset_chess_game(robot_color="white"). - Human plays Black, robot plays White.
~/chess_game_state.json.
Recommended physical validation
Before real play, test placement accuracy:- Place a spare pawn on
A4. - Keep
H5empty. - Run:
- If placement is off, run manual recalibration and test again.
Runtime move loop
The expected cycle is:- Human makes a move.
- Run
detect_opponent_move(robot_color="white"). - Run
update_chess_state(move_uci="...")for the detected move. - Decide robot move.
- Run
pick_up_piece_simple(...)for physical execution. - Run
update_chess_state(move_uci="...")for the robot move.
Castling behavior
Physical castling requires two motion calls:- king move (
E1 -> G1orE1 -> C1) - rook move (
H1 -> F1orA1 -> D1)
e1g1 or e1c1).
Troubleshooting
- Move detection fails:
- verify
GEMINI_API_KEYin~/innate-os/skills/.env.scan - verify wrist camera view is unobstructed
- verify
- Piece placement drifts:
- Reset fails with calibration error:
- run full board calibration first
- Arm hardware issue:
- run
arm_utils(command="reboot_arm")
- run

