There are four main tasks that the robot should do regardless of what its current goal.

  1. Driving
  2. Asking the Jetson Nano for data
  3. Receiving data from the Jetson Nano
  4. Status indication

With the help of these four threads running at all times, the robot can intelligently find balls, drive to goals (which are at known positions), score balls, etc. There will be interaction and isolation functions that get called at the during the match, which will update the state variables and do the simpler things that tell the tasks what to do.