Chess Robot Simulation

NOV - DEC 2022

For our robotics final project, four classmates and I decided to create a chess simulation, where a Franka Emika Panda robot loaded in Gazebo using ROS would respond to user inputs and move chess pieces as instructed.


With respect to the workflow of the simulation, the first player would input a desired move. The logic would determine if this move was legal, and the arm would perform the move in Gazebo. The other player would then input their move, and the game continues from there. A systems diagram was generated to help the team visualize how the simulation would work.

We divided the project into the following components:

  • Creating pieces and the board

  • Robot arm motion planning

  • User interface, relating user input to action of piece

  • Grasping and releasing the individual pieces, find appropriate end effector

        • Programing collision avoidance

  • Programming chess logic and rules

        • Tracking current board configuration

I was in charge of determining how motion planning would be executed. The initial configuration of the robot was established using joint goals, where an angle was applied to each joint of the robot. Four planning functions were implemented to account for the four primary movements of one overall chess move within the simulation.

The MoveIt Python interface was utilized to calculate the kinematics for each movement. Specifically, this entailed taking waypoints as arguments within a compute_cartesian_path() method (in each planning function respectively). A plan was thus found that could be executed by the robot.


The speed of the robot was also taken into account. A trajectory function called trajectory_slowed() was implemented and adapted from a project completed by a team at the Dyson School of Engineering. The desired speed of the robot for different parts of the motion could be controlled from this function, where a coefficient could be passed as an argument into trajectory_slowed() when it was called.

In the future, we hope to implement a way to track the pieces as they move throughout the simulation, which would help reduce compounding error. Without a control/feedback system, the slight movement of the pieces off-center in each checkered box increases over time, and eventually the system can't work as effectively. This could be done by potentially using a computer vision system such that the robot can identify the pieces as intended.