Something that most people seem to forget about 3D printers is that they are just a simple robot that happens to throw up melted plastic into cool shapes. Basically, a 3D printer really isn’t that much different to engineer than a drone or a Roomba or a pick-and-place machine. And most 3D printers are relatively simple robots that can easily be retasked to perform different functions with enough creativity and effort. The secret is G-code, the computer programming language that runs just about every basic robot that you can think of. With G-code, provided that the programmer is aware of what functions the robot is capable of, the robot can be programmed to perform virtually any task within its range of movements in any order, sequence or speed.
When software developer and maker Patrick Graham decided that he wanted to create a robot that could play chess he knew it would be a challenge. Especially since he had decided on this project only a few months before the Raleigh Maker Faire 2013, where he wanted to show his chess-playing robot off. He was being realistic when he determined that there was no way that he would be able to build a robot from scratch and program it to play chess all within his very tight window, but he knew if he already had a robot that he could easily convert it into a chess playing machine. So he turned to his friends at his local makerspace for help and some novel ideas, and thankfully one of his fellow makers had an old 3D printer that he happily offered him.
The printer being offered up to him was a heavily modified Rostock Delta Bot 3D printer that Graham knew would look really cool playing chess. He decided to quickly modify the 3D printer into a pick-and-place machine and replaced the printing head with electromagnets that he would use to manipulate the chess pieces. The electromagnetic head would would be able to pick up and place the game pieces thanks to a nail that he would embed into each piece. This would make all of the pieces the same exact height, so it would be easier for the robot to grab onto them.
Based on the size of the printing bed, Graham determined that the chess board would be seven inches square. While the delta 3D printer originally had a printing envelope of about eight inches, he knew that the head would have difficulty reaching each corner if he made the board that big so he opted to scale the board down a bit. Another friend from his makerspace already had the files for a 3D printable chess set so he was able to quickly print out a full set of pieces scaled down to the seven inch board, and even more volunteers helped him create the electromagnet and embed the nails into the top of the 3D printed pieces. This project really became a bit of a group effort, which is what is so amazing about makerspaces.
Graham himself went about teaching the robot how to actually play chess. Because most chess playing computer programs record and manage moves using algebraic notation, he needed to find a way to convert it over to G-Code. He ended up creating an entire library that would translate all of the moves into basic g-code. Unfortunately the Algebraic Notation to G-code converter that he used doesn’t actually keep track of the game pieces, so moves need to be programmed in using a Reversible Algebraic Notation. The player simply enters the starting and ending location and the robot will pick up the piece and move it into place.
You can see Graham’s 3D printer playing chess here:
With a lot of sleepless nights and a bunch of help from his makerspace, Graham managed to get his project done in time for the Raleigh Maker Faire, but he still has a lot of plans for it. First he wants to improve the accuracy of the robot’s moves and eliminate some of the jerky movements so it can move pieces faster. He also wants to upgrade the software so it can keep track of all of the pieces and where they have been moved. He would also like to adapt the robot to accept moves from a device wirelessly, either via WiFi or an app of some kind. And of course he’d like to make some cosmetic changes to the printer so it looks neater and is easier to transport and set up.
You can read more about this cool chess-playing 3D printer project over on Graham’s website here. And you can get the code that converts the reversible algebraic notation into the G-code commands on the github repository. Graham also notes that he is eager for anyone who wants to help him with his project, or is looking for help with their own to contact him. Is that something that interests you? Discuss in the 3D Printer Plays Chess forum over at 3DPB.com.