Gems of Wisdom
- Start early. Everything. Driving, beacon sensing, coding. Seriously. The earlier you are, the more time you will have to test (both because you're early and because no one else is testing yet), and the more you test, the more likely you are to get rid of fatal bugs.
- Iterate a lot. Start with the Lab 8 platform for testing out what you can. Don't invest too much into early platforms or modules, just roll them out so you can keep figuring out where to make improvements.
- For something like a shooter, especially, generate lots of ideas and test a lot of them out. Don't bank on any one idea working.
- Keep things modular. That way you can improve just your shooter, or just your drivetrain, without needing to remake everything.
- State machines are great, but not everything needs to be a state machine. Use them judiciously.
- Implement timeouts. Everywhere. Don't ever let your robot get stuck in a state. Even if you think it will always leave that state, go ahead and put a timeout in. It won't hurt but it will likely help at some point.
- Work in a debugging module to your code. We found that it was great to be able to add events or call functions based on keyboard input, and outputting events and states in a convenient form to terminal is a must.
- Build your soldered perf boards early. They don't always (ever?) behave quite like solderless breadboards, especially when sensitive signals (such as in beacon detecting) are involved.
- Use the right set screws in your motor couplings. They might be 4-48, not 4-40. Also, Loctite.