Gems of Wisdom

General Approach

  • All Progress is Change. Not all Change is Progress.
  • Focus on the long-term vision.
  • Focus on meeting the bare minimum requirements first. Don't sink too much time on strategy. That said, the checkpoints do not necessarily reflect the best strategy for winning.
  • Caveat: the checkpoints are still a pretty good set of milestones towards what you should be accomplishing. Blowing through them without accomplishing them can mean you are way behind or that you are a visionary genius who doesn't need the constraints of the teaching team. The former is probably more likely.
  • It feels, at the beginning of the project, like you've laid out a nice set of internal milestones that build on each other. But then you start shooting for the stars because "we'll accomplish the easier stuff on the way, but can't wait on this big thing." Doing the easy stuff explicitly first is a lot more useful, since the big thing likely won't work anyways.

Team Dynamics

  • Trust your teammates when they are exploring. One can advise against a decision and still support the decision-maker.
  • Work-life balance is important. Don't neglect the other people that are important to you or your other needs.
  • Your teammates are good people, but sometimes you just need to be away from them. Go home and take a nap, go eat dinner with other friends or significant others, read a book, etc. You will get frustrated and it isn't their fault, but continuing to be around them doesn't always help.

Structural Design

  • Prototype early to leave more space to pivot.
  • LASER Cutter access sucks. Plan accordingly.
  • Design for disassembly and troubleshooting.
  • A couple hours spent assembling a good mechanical prototype with soldered boards and motors fixed makes testing much smoother.

Electronic Design

  • Buy an extra set of batteries. Switch them out for fresh ones and charge them often.
  • IR Sensor circuits are not fun to build. A breadboard circuit may work where a soldered circuit will not.
  • Keep your ground and power Molex connectors consistent and standardized for integration troubleshooting.
  • Having a wire color scheme (e.g. red is always power and never a signal no matter what) makes it far less likely you blow up a circuit by plugging things in incorrectly. In addition, having different colors for different voltages would have been nice, is we had done it.
  • Having a central PDB with rails of Molex connectors was great, except when we had some loose connections and they took many, many hours to debug.
  • Encoders are super finnicky. They work great but take a lot of effort. We spent too much time trying to get a set to work right. When we got a new pair and re-soldered and re-installed them, they worked much better.

Software Design

  • Have more courage to try coding things out...
  • Installing uVision and TeraTerm on team members' laptops is crucial.
  • Having a lot of modules that weren't state machines was really useful for us. I think it is easy to only write SMs because that is what we do in labs. But we had modules for wheel speed control and driving commands, game state, SPI commands, ultrasound sensing, IR based localisation etc. and they all made integration sooooooo much easier.
  • Know how to abandon your code that you slaved over. We wrote hundreds of lines more code than we used because we couldn't integrate it all. If we had tried any longer, we wouldn't have succeeded.
  • Don't yank the microUSB out of the Tiva...