# driftless-vexu/driftless_pushback architecture

> Architecture diagram of the GitHub repository driftless-vexu/driftless_pushback, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/driftless-vexu/driftless_pushback
- Repository: https://github.com/driftless-vexu/driftless_pushback

## Overview

This is VEXU competition-robot software built on PROS. The principal workflow starts at the competition callbacks, constructs a match controller, then runs autonomous or operator control against the robot. The tree also shows trajectory and motion-control code, robot subsystems, controller adapters, and a menu. Connections below are limited to relationships documented in the supplied excerpts or reference index; several implementation files and subsystem details were not sampled, so their internal call paths are not asserted.

Main entry points: [`Driftless_PushBack_PROS/src/driftless/auton/AAuton.cpp`](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/auton/AAuton.cpp) (Autonomous routines), [`Driftless_PushBack_PROS/src/driftless/OpControlManager.cpp`](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/OpControlManager.cpp) (Operator manager), [`Driftless_PushBack_PROS/src/driftless/robot/Robot.cpp`](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/robot/Robot.cpp) (Robot subsystems), [`Driftless_PushBack_PROS/src/driftless/MatchController.cpp`](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/MatchController.cpp) (Match controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_match["Match orchestration"]
  node_factory["Controller factory"]
  node_match_controller["Match controller"]
  node_auton_manager["Autonomous manager<br/>[AutonManager.cpp]"]
  node_auton_routines["Autonomous routines<br/>[AAuton.cpp]"]
  node_op_manager["Operator manager"]
  node_alliances["Alliance selection"]
end

subgraph group_control["Robot control"]
  node_control_system["Control system<br/>[ControlSystem.cpp]"]
  node_motion_control["Motion controllers"]
  node_path_following["Path following"]
  node_trajectory_generation["Trajectory generation"]
  node_trajectory_following["Trajectory following"]
  node_robot["Robot subsystems<br/>[Robot.cpp]"]
  node_drive_subsystem["Holonomic drive"]
  node_intake_subsystem["Intake subsystem<br/>[DirectIntake.cpp]"]
  node_operator_controls["Operator controls"]
end

subgraph group_platform["Hardware and interface"]
  node_controller_adapter["PROS controller adapter<br/>[ProsController.cpp]"]
  node_controller_interface["Controller interface<br/>[IController.hpp]"]
  node_menu["LVGL menu<br/>[LvglMenu.cpp]"]
  node_coprocessor["Coprocessor link<br/>[Coprocessor.cpp]"]
  node_voltage_control["Motor voltage control"]
end

node_callbacks["Competition callbacks<br/>[main.cpp]"]

node_callbacks -->|"creates"| node_factory
node_factory -->|"constructs"| node_match_controller
node_match_controller -->|"runs autonomous"| node_auton_manager
node_match_controller -->|"runs operator control"| node_op_manager
node_auton_manager -->|"runs selected routine"| node_auton_routines
node_auton_manager -->|"sets alliance"| node_alliances
node_auton_routines -->|"controls"| node_robot
node_auton_routines -->|"uses"| node_control_system
node_auton_routines -->|"follows trajectory"| node_trajectory_following
node_op_manager -->|"configures controls"| node_operator_controls
node_op_manager -->|"passes robot"| node_robot
node_op_manager -->|"uses controller"| node_controller_interface
node_controller_adapter -->|"implements"| node_controller_interface
node_trajectory_generation -.->|"generates input"| node_trajectory_following
node_control_system -.->|"dispatches"| node_motion_control
node_robot -.->|"contains"| node_drive_subsystem
node_robot -.->|"contains"| node_intake_subsystem

click node_callbacks "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/main.cpp"
click node_factory "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/MatchControllerFactory.cpp"
click node_match_controller "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/MatchController.cpp"
click node_auton_manager "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/AutonManager.cpp"
click node_auton_routines "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/auton/AAuton.cpp"
click node_op_manager "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/OpControlManager.cpp"
click node_alliances "https://github.com/driftless-vexu/driftless_pushback/tree/main/Driftless_PushBack_PROS/src/driftless/alliance"
click node_control_system "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/ControlSystem.cpp"
click node_motion_control "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/motion/PIDHolonomicGoToPose.cpp"
click node_path_following "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/path/PIDPathFollower.cpp"
click node_trajectory_generation "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/trajectory/trajectory_generator/TrajectoryGenerator.cpp"
click node_trajectory_following "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/trajectory/trajectory_follower/PIDTrajectoryFollower.cpp"
click node_robot "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/robot/Robot.cpp"
click node_drive_subsystem "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/robot/subsystems/holonomic_drive_train/ModularHolonomicDrive.cpp"
click node_intake_subsystem "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/robot/subsystems/intake/DirectIntake.cpp"
click node_operator_controls "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/op_control/holonomic_drive_train/HolonomicDriveTrainOperator.cpp"
click node_controller_adapter "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/pros_adapters/ProsController.cpp"
click node_controller_interface "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/include/driftless/io/IController.hpp"
click node_menu "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/menu/LvglMenu.cpp"
click node_coprocessor "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/hal/Coprocessor.cpp"
click node_voltage_control "https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/io/motor_voltage_control/PartialFeedForwardVoltageController.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_factory,node_match_controller,node_auton_manager,node_auton_routines,node_op_manager,node_alliances toneBlue
class node_control_system,node_motion_control,node_path_following,node_trajectory_generation,node_trajectory_following,node_robot,node_drive_subsystem,node_intake_subsystem,node_operator_controls toneAmber
class node_controller_adapter,node_controller_interface,node_menu,node_coprocessor,node_voltage_control toneMint
class node_callbacks toneTeal
```

## Components

### Match orchestration

- [Controller factory](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/MatchControllerFactory.cpp): `Driftless_PushBack_PROS/src/driftless/MatchControllerFactory.cpp`
- [Match controller](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/MatchController.cpp): `Driftless_PushBack_PROS/src/driftless/MatchController.cpp`
- [Autonomous manager](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/AutonManager.cpp): `Driftless_PushBack_PROS/src/driftless/AutonManager.cpp`
- [Autonomous routines](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/auton/AAuton.cpp): `Driftless_PushBack_PROS/src/driftless/auton/AAuton.cpp`
- [Operator manager](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/OpControlManager.cpp): `Driftless_PushBack_PROS/src/driftless/OpControlManager.cpp`
- [Alliance selection](https://github.com/driftless-vexu/driftless_pushback/tree/main/Driftless_PushBack_PROS/src/driftless/alliance): `Driftless_PushBack_PROS/src/driftless/alliance`

### Robot control

- [Control system](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/ControlSystem.cpp): `Driftless_PushBack_PROS/src/driftless/control/ControlSystem.cpp`
- [Motion controllers](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/motion/PIDHolonomicGoToPose.cpp): `Driftless_PushBack_PROS/src/driftless/control/motion/PIDHolonomicGoToPose.cpp`
- [Path following](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/path/PIDPathFollower.cpp): `Driftless_PushBack_PROS/src/driftless/control/path/PIDPathFollower.cpp`
- [Trajectory generation](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/trajectory/trajectory_generator/TrajectoryGenerator.cpp): `Driftless_PushBack_PROS/src/driftless/control/trajectory/trajectory_generator/TrajectoryGenerator.cpp`
- [Trajectory following](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/control/trajectory/trajectory_follower/PIDTrajectoryFollower.cpp): `Driftless_PushBack_PROS/src/driftless/control/trajectory/trajectory_follower/PIDTrajectoryFollower.cpp`
- [Robot subsystems](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/robot/Robot.cpp): `Driftless_PushBack_PROS/src/driftless/robot/Robot.cpp`
- [Holonomic drive](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/robot/subsystems/holonomic_drive_train/ModularHolonomicDrive.cpp): `Driftless_PushBack_PROS/src/driftless/robot/subsystems/holonomic_drive_train/ModularHolonomicDrive.cpp`
- [Intake subsystem](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/robot/subsystems/intake/DirectIntake.cpp): `Driftless_PushBack_PROS/src/driftless/robot/subsystems/intake/DirectIntake.cpp`
- [Operator controls](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/op_control/holonomic_drive_train/HolonomicDriveTrainOperator.cpp): `Driftless_PushBack_PROS/src/driftless/op_control/holonomic_drive_train/HolonomicDriveTrainOperator.cpp`

### Hardware and interface

- [PROS controller adapter](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/pros_adapters/ProsController.cpp): `Driftless_PushBack_PROS/src/driftless/pros_adapters/ProsController.cpp`
- [Controller interface](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/include/driftless/io/IController.hpp): `Driftless_PushBack_PROS/include/driftless/io/IController.hpp`
- [LVGL menu](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/menu/LvglMenu.cpp): `Driftless_PushBack_PROS/src/driftless/menu/LvglMenu.cpp`
- [Coprocessor link](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/hal/Coprocessor.cpp): `Driftless_PushBack_PROS/src/driftless/hal/Coprocessor.cpp`
- [Motor voltage control](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/driftless/io/motor_voltage_control/PartialFeedForwardVoltageController.cpp): `Driftless_PushBack_PROS/src/driftless/io/motor_voltage_control/PartialFeedForwardVoltageController.cpp`

### Other components

- [Competition callbacks](https://github.com/driftless-vexu/driftless_pushback/blob/main/Driftless_PushBack_PROS/src/main.cpp): `Driftless_PushBack_PROS/src/main.cpp`

## Connections

- Competition callbacks → Controller factory: creates
- Controller factory → Match controller: constructs
- Match controller → Autonomous manager: runs autonomous
- Match controller → Operator manager: runs operator control
- Autonomous manager → Autonomous routines: runs selected routine
- Autonomous manager → Alliance selection: sets alliance
- Autonomous routines → Robot subsystems: controls
- Autonomous routines → Control system: uses
- Autonomous routines → Trajectory following: follows trajectory
- Operator manager → Operator controls: configures controls
- Operator manager → Robot subsystems: passes robot
- Operator manager → Controller interface: uses controller
- PROS controller adapter → Controller interface: implements
- Trajectory generation → Trajectory following: generates input
- Control system → Motion controllers: dispatches
- Robot subsystems → Holonomic drive: contains
- Robot subsystems → Intake subsystem: contains
