Throughout this process, we dealt with many challenges and from these challenges learned some important lessons.
With regards to the mechanical side of robot design, we learned the importance of robust parts and making things out of strong materials. A lot of our wood parts, like motor mounts, and 3D printed parts, like the launch bearing mount, would break after use. While some of them would last a while before breaking, some would break really quickly, leading to a lot of redesigning and remanufacturing. We would have saved time and energy by making these parts more robust from the start. We also learned the importance of design iteration, which is a cycle of testing and redesigning. Our hook had to be redesigned around 15 times in order to ensure that it would re-engage correctly. We could have iterated it less, but it might not have worked when it counted as it didn't work completely consistently until our last design iteration.
Electrically, we learned that it is very important to research system-critical parts to ensure they will function before purchasing and attempting to use them. We struggled for a long time with a Bluetooth module that wasn't designed to provide the communication that we wanted it to, which could have been avoided with a little more research into what most Arduino developers use when working with Bluetooth. We also learned the importance of ensuring a system is completely powered off when adding and removing components, as we nearly experienced a catastrophic system failure the day before the competition due to a motor's wires being plugged into their controller while the system was powered on. Luckily, another motor's wires were burned out instead of any of the critical components, and we were able to replace the wires to get the system working again.
For the software side, we learned the importance of understanding the limitations of the system you're programming for and working with or around those limitations. There were a few functionalities that we wanted the Arduino to perform at times that its hardware wasn't designed to allow. Reading the documentation was very helpful in understanding why this was and how to work with the system to give the functionality we needed.
In terms of integration, we learned that it's important to try to integrate the system and have all the parts working together as soon as possible, rather than assuming that they will all work perfectly together at the end. Luckily, we were able to accomplish this well enough for this project that we were able to work out any issues that arose before the competition.