All work

ROBOTICS / GAME AI

Auto-chess

A chess-playing robot arm, hanging upside down over a real board. A camera watches, Stockfish picks the moves, and the arm moves the pieces.

Where
Ingram Hall Makerspace, Texas State
When
October 2026
Hardware
OpenMANIPULATOR-X + Jetson Orin NX 16GB
Status
In progress: camera step next
430 mmmount height above the board, so the arm reaches every square
±179°base rotation, more than the table-mounted arm’s ±160°
2 modesrobot vs robot, or you vs the robot with a leaderboard
10–60 minchess clock presets per side, counting only the robot’s thinking time

GALLERY · 1 IMAGE

01

The idea

An OpenMANIPULATOR-X arm, hanging upside down above a real chess board and driven by an NVIDIA Jetson Orin NX with ROS 2 Humble, plays chess: a camera watches the board, Stockfish picks the moves, and the arm moves the pieces.

It runs on the same Jetson and the same arm as Robo, the Ingram Hall Makerspace robot, so everything it inherits (hardware, setup, arm coordinates and safety rules) is written down in a handoff document.

02

Two ways to play

  1. Robot vs robot

    The arm plays both White and Black, one move each, at a difficulty you pick for each side.

  2. Human vs robot

    A visitor types their name, picks a difficulty (Beginner, Easy, Medium or Hard), a time (10, 15, 30 or 60 minutes per side) and a colour, then plays the robot. Finished games are saved and the start screen shows a leaderboard of wins against the robot for each difficulty.

The robot’s clock only counts its thinking time, not the time the arm spends moving.

03

Why upside down, and how it stays safe

Standing on the table, the arm can’t reach the far rows of the board. Hanging 430 mm above the board centre from an aluminium-extrusion frame, it reaches every square with the gripper tilted up to 30°.

  • Geometry: forward and inverse kinematics for the hanging arm, a “park” pose that folds it up under the beam, and checks that it stays clear of its mount plate and keeps its elbow above the gripper.
  • Safe motion: joint moves that never dip over the board, straight lines up and down, and a fallback that searches for a chain of small one-joint moves when moving all joints together wouldn’t be safe.
  • Carrying height: while carrying, the elbow and wrist stay above the tallest piece (the 80 mm king) plus 15 mm, measured from the board surface under the arm, so a board that isn’t quite level is fine.
  • Calibration: touch the four corner squares with the fingertips and every other square is blended from them. Calibrating again after raising the arm straight up is a one-line command that shifts the saved calibration.
  • Real chess rules at the arm: captures, castling, en passant and promotion each become arm steps, and each piece type is gripped at its own height. If the gripper closes on nothing twice, the arm puts the piece back, parks, and asks a human to finish the move so the game carries on.
  • Developed without the robot: a pretend arm and pretend eyes let the whole thing run and be tested on a Mac, then be pulled onto the Jetson.

04

Where it stands

  • Done: Chess core: Stockfish levels, clock and game loop
  • Done: Screen: start screen, game screen, saved results and a leaderboard
  • Done: Arm: park pose, calibration, pick and place, captures, castling, en passant, promotion
  • Not yet: First test on the real arm
  • Not yet: Camera: four-corner board calibration and spotting the human’s move by comparing the board before and after
  • Not yet: Everything together on the Jetson, with launch and stop scripts

Tested with a fake arm so far. The arm code is written but has not yet been run on the real hardware, which is the next milestone.

STACK

Built with

PythonStockfishpython-chessTkinterROS 2 HumbleNVIDIA Jetson Orin NXOpenMANIPULATOR-Xpytest