🌶️ Use an arduino shield (instead of breadboard) to connect all your wires!
Our wires would disconnect easily while testing - which was very frustrating for debugging.
🌶️ Use wheels from the ME 210 store.
We started with our own 3D printed wheels and glued rubber strip around them. We did this so that our wheels would fit perfectly into our turret design. Unfortunately, these homemade wheels did not have enough traction and our robot slipped a lot.
By the time we decided to change the wheels to off-the-shelf parts, our design was fixed and we had to drill a hole in the wheel coupler to fit our motor shaft. These holes (done with a drill press in the PRL) were not perfectly centred, causing us a lot of pain when trying to move forward.
🌶️ Get onto complex code early.
The code for our encoder was not as simple as we had assumed. Turns out the encoder tells us absolute position at any given time except we're not reading it every second, so we can't keep track of every time it turns. The function for knowing exactly when we'd turned 90 degrees was much more mathematically involved than a simple (final_deg - initial_deg) > 90 check.
🌶️ You actually don't have that many pins.
The Arduino Uno really limited the number of pins we had left at the end for servos. A lot of our servos had to double-up (e.g. the game indicator and igniter arm).
🌶️ Probably don't rely on a single sensor for wall following.
Because we couldn't drive straight, we had to commit to an algorithm which moved us away from the pot wall if we were too close, but closer if we were too far. We only relied on the left-hand sensor to do this since the kitchen jutted out and wouldn't have consistent readings. But only reading the left-hand sensor meant that we sometimes got crazy large readings if our robot was turning too much into the pot wall, causing us to turn into the wall and never come out. Hal got really shy during the competition - man, he loves that wall!