Our team set out to build the best tabletop shuffleboard playing robot around. We hoped that by the end of our project, our robot would be easily able to beat any of us in shuffleboard. Actually making the robot do this, however, posed a variety of interesting challenges:
The cost of a tabletop shuffleboard would force us to design and build our own replica board on a budget
The ability of a Sawyer robot gripper to accurately and precisely throw shuffleboard pucks was totally unknown, requiring us to build our own solution
The best way to play shuffleboard isn't obvious, especially due to the fact that shuffleboard has infinite possible actions and infinite possible board configurations
Reliably finding up to 8 shuffleboard pucks on a random surface from any angle with a low-quality camera means accounting for a variety of scenarios
Each of these individual challenges combined to allow all of our team members to put their knowledge from the semester to work on novel issues such that, at the end when each of our pieces combined, we had made a robot that could play a full round of shuffleboard.
What we learned in this project could easily be applied to other real-world robotics projects. One example is in addressing the sim-to-real gap which was an issue we faced and a prominent problem in modern robotics. In our project, we encountered this problem with the friction estimation and associated dynamics modeling that was necessary for tuning the simulator. Our successes and failures in this effort could be useful to others working on similar projects. One related work that comes to mind is free-end cable casting, wherein the robot swings a held cable in order to get the endpoint to land in a desired position on the table (see https://arxiv.org/abs/2111.04814 for more details). Our work with friction modeling and best-move prediction could be especially applicable to this project.