A .zip of some of tonights Driver Station log files can be found on drive.
Our code is hosted on github as MusicalToaster.
Each subsystem has a thread (the camera class does have a thread, but is not a subsystem any more. This approach is similar to what CTRE did with their SwerveDrivetrain class.
It became an issue when we were using Phoenix Tuner to run the right shooter motor so we could develop a table for determining good angles at different distances for our turret. It would run for maybe 5 seconds, then the loop over run error would occur, and it would stop.
We noticed that the code would just restart, and I am unsure what the cause of it restarting would be. Loop Overrun is just a warning, right?
We commented out telemetrization of a few of the subsystems states to see if reducing outputs to network tables would resolve the issue.
Should we use periodic() instead? Having a separate thread theorectically allows for us to be able to update values more often, but if for some reason it’s causing us issues, then we can use periodic(). As of right now, as you can see in the logs, the CPU usage is relatively low. It’s not like the threads are fighting for CPU in my mind, but I could be wrong.
We can not afford another whole night to deal with this blunder. Any suggestions to help guide us in the right direction and pin point the root cause are greatly appreciated.