/ PROJECTS, CHESSBOT

Chessbot, Part 1: Introduction and Motivation

In the spring semester of my junior year at Vanderbilt, all of my classes (heat transfer, mechatronics, deep learning, and microcontrollers) culminated in final projects. The instructions for deep learning and mechatronics were simple: make something cool. Since I have always been interested in developing intelligence for robotic applications, I figured this would be the perfect opportunity to combine the skill sets I had learned from both classes to make a combined project. In isolation, both of these subject areas alone allow for some neat inventions. However, the intersection of the two allows for seriously powerful, intelligent, and useful creations.

When I embarked on this project, I wanted to make it something big. It was more than a class project to me - it was a way to push my design skills to the limits and learn new skills along the way. With my prior experience in mechatronic systems, machine learning, and intelligent robotics, I knew wouldn't learn anything from just meeting the basic requirements of each of the projects. So instead, I set my goals for the projects higher than the class requirements, to a level I knew I would struggle to accomplish in the 1 month timeframe.

My other motivation for choosing a challenging process was more personal. My final goal for my project was to prove to myself that I was, in fact, capable of desgining and implementing a large scale robotics project end-to-end. Most of my experience in mechanical, electrical, and software design for robotics projects has been in teams (and more recently, specifically leading the team). Because of that, I always had a slight doubt that I was not as experienced as I might think. With this project, I wanted to prove to myself that I had the knowledge and skill to implement all the necessary systems to create an intelligent mechatronic device from end-to-end.

With all of my goals in mind, I spent a couple of days brainstorming ideas that would check all the boxes. Laying in bed one night, it hit me: a robot that plays chess against a human. But on a physical board with pieces. And also with an AI that can beat its opponent every time (that I train myself, of course). In my classic fashion, I stayed up until the sunrise ideating, conceptualizing, and organizing the project.

Project Breakdown

With such a large project and only a month to complete it, I knew that I would have to break down the project into manageable subcomponents that all integrated together to create the full system. When breaking the project down, I defined exactly what functionality each subcomponent should provide and how it interfaces with all of the other subcomponents. This was a critical skill that I learned from leading the Vanderbilt robotics team. The diagram below outlines this structure.

Subsystem and Interface Diagram for ChessBot
Subsystem and Interface Diagram for ChessBot

This structure provides multiple advantages. Firstly, with defined requirements, there are clear goals to "complete" for each subsystem, allowing me to quantify the progress on each system clearly throughout the design process. Additionally, since all of the interfaces between the subsystems were well defined, I could develop all of the systems in parallel and simulate the inputs to test each one individually. Instead of having to find identify bugs when everything is running together, I could fully validate each subsystem before integrating them, making debugging much faster. Furthermore, I could develop the layers of the technology stack in parallel instead of serially, which saved time because of the lead time for mechanical parts and the time it takes to train the neural networks.

With the framework of the project laid out, I quickly jumped into the design and development. The next articles in this series cover the design process for each of these subomponents in more detail. Stay tuned for more ChessBot updates!