This repository serves as a WIP PoC to guide future years in potential best-practices following the command-based paradigm. Best effort was made this off-season to produce at least one example of how to implement most things, with some testing done -- primarily through simulation to prove the general concept.
-
Commands – Focused on the preferred practice being single file commands.
- Simple subsystem actions ->
RunIntake - Complex multi-step command ->
TransitionToLevelOne - Composition Commands with factory ->
intakeCoral()
- Simple subsystem actions ->
-
RobotContainer / Structure
- RobotContainer -> Basic button-command bindings. Creates IO instances based on robot mode and provides to Subsystem.
- TriggerFactory -> Special command triggers/actions or complex command bindings.
- CommandFactory -> Creation of commands, stores the upper-level list available to the user.
- RobotState -> Serves as a basic superstructure and replaces the state structure of Timed-Robot. Primarily tracks what each subsystem's command is currently doing for use widely.
-
Subsystem Structure
- Constants -> Individual constants file for each subsystem. Potentially enums as well.
- Main Subsystem -> Stores the IO reference and exposes methods for robot-wide use.
- IO Implementations -> Each possible representation of robot's IO (e.g., RealHardware, Sim).