This adds the new system for organizing our autonomy. A very basic explanation is that individual tasks inherit from the BaseTask class and use state machines to complete their task. Multiple successive tasks are organized into different runs (prequal, finals, etc.) which inherit from the BaseRun class.
The BaseTask class provides some simple preprepared functionality to publish a debug string and an overlay image. I also added a small helper class that handles thresholding CV2 images so we don't have to recreate the wheel in every task that needs thresholding.
In the future it would be good to automate some more of the setup and state machine handling for the BaseTask class. We might also consider switching to StrEnums with auto() instead of the current type.
This PR also changes our simulated sonar to the sonoptix echo and adds a ping360 to the top of the vehicle.
This adds the new system for organizing our autonomy. A very basic explanation is that individual tasks inherit from the BaseTask class and use state machines to complete their task. Multiple successive tasks are organized into different runs (prequal, finals, etc.) which inherit from the BaseRun class.
The BaseTask class provides some simple preprepared functionality to publish a debug string and an overlay image. I also added a small helper class that handles thresholding CV2 images so we don't have to recreate the wheel in every task that needs thresholding.
In the future it would be good to automate some more of the setup and state machine handling for the BaseTask class. We might also consider switching to StrEnums with auto() instead of the current type.
This PR also changes our simulated sonar to the sonoptix echo and adds a ping360 to the top of the vehicle.