Author Topic: Java/C++/LabVIEW software design and implementation - strategy and goal  (Read 911 times)

Louis L

  • Administrator
  • Hero Member
  • *****
  • Posts: 564
This posting may be used provide content for Arcadia.

Highlights
  • We program the robot in 3 languages simultaneously.
  • We do this because we don't necessarily have proficiency in any one language,
  • ... and it provides more students the chance to get involved
  • ... and between the two District events, championships and off-season events, there's ample opportunity to still deploy all of the code
  • ... and the overhead of the extra development does not scale linearly
  • ... and it's a great opportunity to learn to work in teams.
  • The 3 groups work on the same hardware testbed. They share time as needed.
  • During the initial coding phase, different groups tackle different parts of the robot. This allows to look at multiple areas of the software and address potential difficulties sooner.
  • Algorithms are shared - the first team that gets to a certain feature and gets it working describes what they did to the other teams who then write their version of the code.
  • UI design is shared. UI behavior is identical across the three implementations.
  • The goal is that a driver/operator need not know what code is running - they all run exactly the same way.
  • From a development point of view, emphasis is placed on writing code that is easy to modify. All numeric values should be declared as constants in one place and easily changed. All constants should be the same across all languages once it is debugged.
  • ... test all edge conditions
  • ... perform unit testing when possible. This applies to all subsystems and features.
  • ... UI response must be unambiguous. Never assume the user will do the right thing. Make sure UI controls are well defined, including what happens when multiple buttons are pressed and how sequences of buttons affect the outcome.
  • State machines must be well defined and cancelable - because you never know when things stop working!
  • Motors functions must have time-outs and current-sensing stall detection.
  • Use closed loop operations whenever possible.
  • Software team members need to be advocates for good software design practices. They need to be involved in the hardware design cycle to keep an eye out for control and sensor mechanisms.
  • We use the forum to document things.