The ultimate goal of the sensing portion of this project is for Baxter to know the (x, y, z) coordinates of all 24 checkers pieces with respect to its base frame. There are multiple approaches we could have taken involving computer vision, but we chose to start with a simpler AR Tag system in order to get the full system in place. We also chose this method because it allows us to more easily localize the board. However, this came with its own set of challenges. Initially, we wished to use Baxter's head camera since it would be stationary and thus the sensing would not come in the way of moving. This proved to be infeasible because the field of view of the head camera did not include directly in front of Baxter: the only place the arms can reach. Thus we were limited to using the right hand camera to sense the board.
The goal for the planning module was simply to allow Baxter's left gripper to consistently pick up checkers pieces and to allow the right arm to sense the board properly. To do this, we the MoveIt! package to get the gripper and cameras to their desired positions. We, however, could not rely on MoveIt to plan entire paths simply because of the inconsistency of its RRT planner. This meant that we could not directly plan paths to (x, y, z) coordinates of markers and instead had to split the movement up.
The algorithm module of the project provided the back-end for the Baxter checkers moves, allowing the Baxter robot to make intelligent plays. This allowed it to play without user input moves, giving the feel of playing against a smart robot agent. For the implementation of this module, we used Arthur Samuel’s historic checkers algorithm. The algorithm uses a mini-max structure, where it expands future moves and takes most optimal move. We also use Alpha-Beta pruning to speed up the program. Due to processing constraints, we chose to expand up to five future moves only. For more optimal performance, larger number of future moves may be expanded.
An illustration of the minimax tree, where Baxter assumes the human player will attempt to minimize its score.