# aegis-5243/rebuilt architecture

> Architecture diagram of the GitHub repository aegis-5243/rebuilt, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aegis-5243/rebuilt
- Repository: https://github.com/aegis-5243/rebuilt
- Video tour (about a minute): https://gitdiagram.com/aegis-5243/rebuilt/video

## Overview

This is Team 5243’s WPILib robot-control application. The workflow begins with operator input and robot-mode scheduling, then RobotContainer configures commands that drive the mecanum drivetrain and coordinate intake, shooting, camera-based pose updates, and climbing. Shot geometry and field kinematics support aiming. The graph preserves the major runtime subsystems named by the source index; the README provides no further feature detail. Some subsystem links are evidenced by RobotContainer imports or references, but unsampled implementation means their precise command behavior is not expanded.

Main entry points: [`src/main/java/frc/robot/RobotContainer.java`](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/RobotContainer.java) (Command Setup), [`src/main/java/frc/robot/drive/DriveSubsystem.java`](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/drive/DriveSubsystem.java) (Mecanum Drive), [`src/main/java/frc/robot/camera/CameraSubsystem.java`](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/camera/CameraSubsystem.java) (Camera Subsystem), [`src/main/java/frc/robot/shooter/TurretSubsystem.java`](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/TurretSubsystem.java) (Turret Subsystem)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Robot Runtime"]
  node_main["Program Entry<br/>[Main.java]"]
  node_robot["Robot Lifecycle<br/>[Robot.java]"]
  node_container["Command Setup"]
  node_autos["Autonomous Routines<br/>[Autos.java]"]
end

subgraph group_drive["Drive and Vision"]
  node_drive["Mecanum Drive"]
  node_driveimpl["Drive Controller"]
  node_drivekin["Mecanum Kinematics"]
  node_align["Pose Alignment<br/>[AlignToPose.java]"]
  node_camera["Camera Subsystem"]
  node_limelight["Limelight Helpers"]
end

subgraph group_mechanisms["Robot Mechanisms"]
  node_climb["Climb Subsystem"]
  node_intake["Intake Subsystem"]
  node_shooter["Shooter Subsystem"]
  node_hood["Hood Subsystem<br/>[HoodSubsystem.java]"]
  node_roller["Roller Subsystem"]
  node_turret["Turret Subsystem"]
end

subgraph group_control["Controls and Aiming"]
  node_controller["Controller Mapping<br/>[ProController.java]"]
  node_drivecontroller["Drive Input API"]
  node_joystick["Joystick Mapping"]
  node_turretcalc["Shot Calculator"]
end

subgraph group_shared["Shared Components"]
  node_constants["Robot Constants<br/>[Constants.java]"]
  node_kinematics["Field Kinematics<br/>[Kinematics.java]"]
  node_encoder["Wrapping Encoder"]
  node_utilities["Robot Utilities<br/>[Utilites.java]"]
end

node_operator(("Operator"))

node_operator -->|"provides input"| node_controller
node_main -->|"starts"| node_robot
node_robot -->|"creates"| node_container
node_robot -->|"gets auto command"| node_container
node_container -->|"configures"| node_drive
node_container -->|"registers"| node_camera
node_container -->|"configures"| node_align
node_container -->|"configures"| node_climb
node_container -->|"configures"| node_intake
node_container -->|"configures"| node_shooter
node_container -->|"configures"| node_hood
node_container -->|"configures"| node_roller
node_container -->|"configures"| node_turret
node_container -->|"calculates shots"| node_turretcalc
node_container -.->|"selects routines"| node_autos
node_controller -->|"implements"| node_drivecontroller
node_joystick -->|"implements"| node_drivecontroller
node_drive -->|"uses"| node_driveimpl
node_drive -->|"uses"| node_drivekin
node_drive -->|"reads angle"| node_turret
node_align -->|"uses"| node_drive
node_camera -->|"updates pose"| node_drive
node_camera -->|"reads estimates"| node_limelight
node_drive -->|"uses"| node_kinematics
node_drivekin -->|"references"| node_kinematics
node_turret -->|"uses"| node_encoder
node_climb -->|"uses"| node_encoder
node_autos -->|"uses"| node_drive
node_drive -->|"calculates aiming"| node_turretcalc
node_camera -.->|"reads turret"| node_turret

click node_main "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/Main.java"
click node_robot "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/Robot.java"
click node_container "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/RobotContainer.java"
click node_autos "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/commands/Autos.java"
click node_drive "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/drive/DriveSubsystem.java"
click node_driveimpl "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/lib/CustomMecanumDrive.java"
click node_drivekin "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/lib/CustomMecanumDriveKinematics.java"
click node_align "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/drive/AlignToPose.java"
click node_camera "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/camera/CameraSubsystem.java"
click node_limelight "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/LimelightHelpers.java"
click node_climb "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/climb/ClimbSubsystem.java"
click node_intake "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/intake/IntakeSubsystem.java"
click node_shooter "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/ShooterSubsystem.java"
click node_hood "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/HoodSubsystem.java"
click node_roller "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/RollerSubsystem.java"
click node_turret "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/TurretSubsystem.java"
click node_controller "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/controllers/ProController.java"
click node_drivecontroller "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/controllers/DriveController.java"
click node_joystick "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/controllers/JoystickControllers.java"
click node_turretcalc "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/TurretCalculator.java"
click node_constants "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/Constants.java"
click node_kinematics "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/Kinematics.java"
click node_encoder "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/lib/WrappingDutyCycleEncoder.java"
click node_utilities "https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/Utilites.java"

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_main,node_robot,node_container,node_autos toneBlue
class node_drive,node_driveimpl,node_drivekin,node_align,node_camera,node_limelight toneAmber
class node_climb,node_intake,node_shooter,node_hood,node_roller,node_turret toneMint
class node_controller,node_drivecontroller,node_joystick,node_turretcalc toneRose
class node_constants,node_kinematics,node_encoder,node_utilities,node_operator toneIndigo
```

## Components

### Robot Runtime

- [Program Entry](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/Main.java): `src/main/java/frc/robot/Main.java`
- [Robot Lifecycle](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/Robot.java): `src/main/java/frc/robot/Robot.java`
- [Command Setup](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/RobotContainer.java): `src/main/java/frc/robot/RobotContainer.java`
- [Autonomous Routines](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/commands/Autos.java): `src/main/java/frc/robot/commands/Autos.java`

### Drive and Vision

- [Mecanum Drive](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/drive/DriveSubsystem.java): `src/main/java/frc/robot/drive/DriveSubsystem.java`
- [Drive Controller](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/lib/CustomMecanumDrive.java): `src/main/java/frc/lib/CustomMecanumDrive.java`
- [Mecanum Kinematics](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/lib/CustomMecanumDriveKinematics.java): `src/main/java/frc/lib/CustomMecanumDriveKinematics.java`
- [Pose Alignment](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/drive/AlignToPose.java): `src/main/java/frc/robot/drive/AlignToPose.java`
- [Camera Subsystem](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/camera/CameraSubsystem.java): `src/main/java/frc/robot/camera/CameraSubsystem.java`
- [Limelight Helpers](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/LimelightHelpers.java): `src/main/java/frc/robot/utils/LimelightHelpers.java`

### Robot Mechanisms

- [Climb Subsystem](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/climb/ClimbSubsystem.java): `src/main/java/frc/robot/climb/ClimbSubsystem.java`
- [Intake Subsystem](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/intake/IntakeSubsystem.java): `src/main/java/frc/robot/intake/IntakeSubsystem.java`
- [Shooter Subsystem](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/ShooterSubsystem.java): `src/main/java/frc/robot/shooter/ShooterSubsystem.java`
- [Hood Subsystem](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/HoodSubsystem.java): `src/main/java/frc/robot/shooter/HoodSubsystem.java`
- [Roller Subsystem](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/RollerSubsystem.java): `src/main/java/frc/robot/shooter/RollerSubsystem.java`
- [Turret Subsystem](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/shooter/TurretSubsystem.java): `src/main/java/frc/robot/shooter/TurretSubsystem.java`

### Controls and Aiming

- [Controller Mapping](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/controllers/ProController.java): `src/main/java/frc/robot/controllers/ProController.java`
- [Drive Input API](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/controllers/DriveController.java): `src/main/java/frc/robot/controllers/DriveController.java`
- [Joystick Mapping](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/controllers/JoystickControllers.java): `src/main/java/frc/robot/controllers/JoystickControllers.java`
- [Shot Calculator](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/TurretCalculator.java): `src/main/java/frc/robot/utils/TurretCalculator.java`

### Shared Components

- [Robot Constants](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/Constants.java): `src/main/java/frc/robot/Constants.java`
- [Field Kinematics](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/Kinematics.java): `src/main/java/frc/robot/utils/Kinematics.java`
- [Wrapping Encoder](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/lib/WrappingDutyCycleEncoder.java): `src/main/java/frc/lib/WrappingDutyCycleEncoder.java`
- [Robot Utilities](https://github.com/aegis-5243/rebuilt/blob/main/src/main/java/frc/robot/utils/Utilites.java): `src/main/java/frc/robot/utils/Utilites.java`

### Other components

- **Operator**

## Connections

- Operator → Controller Mapping: provides input
- Program Entry → Robot Lifecycle: starts (evidence: `src/main/java/frc/robot/Main.java`)
- Robot Lifecycle → Command Setup: creates (evidence: `src/main/java/frc/robot/Robot.java`)
- Robot Lifecycle → Command Setup: gets auto command (evidence: `src/main/java/frc/robot/Robot.java`)
- Command Setup → Mecanum Drive: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Camera Subsystem: registers (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Pose Alignment: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Climb Subsystem: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Intake Subsystem: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Shooter Subsystem: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Hood Subsystem: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Roller Subsystem: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Turret Subsystem: configures (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Shot Calculator: calculates shots (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Command Setup → Autonomous Routines: selects routines
- Controller Mapping → Drive Input API: implements (evidence: `src/main/java/frc/robot/controllers/ProController.java`)
- Joystick Mapping → Drive Input API: implements (evidence: `src/main/java/frc/robot/controllers/JoystickControllers.java`)
- Mecanum Drive → Drive Controller: uses (evidence: `src/main/java/frc/robot/drive/DriveSubsystem.java`)
- Mecanum Drive → Mecanum Kinematics: uses (evidence: `src/main/java/frc/robot/drive/DriveSubsystem.java`)
- Mecanum Drive → Turret Subsystem: reads angle (evidence: `src/main/java/frc/robot/drive/DriveSubsystem.java`)
- Pose Alignment → Mecanum Drive: uses (evidence: `src/main/java/frc/robot/drive/AlignToPose.java`)
- Camera Subsystem → Mecanum Drive: updates pose (evidence: `src/main/java/frc/robot/camera/CameraSubsystem.java`)
- Camera Subsystem → Limelight Helpers: reads estimates (evidence: `src/main/java/frc/robot/camera/CameraSubsystem.java`)
- Mecanum Drive → Field Kinematics: uses (evidence: `src/main/java/frc/robot/drive/DriveSubsystem.java`)
- Mecanum Kinematics → Field Kinematics: references (evidence: `src/main/java/frc/lib/CustomMecanumDriveKinematics.java`)
- Turret Subsystem → Wrapping Encoder: uses (evidence: `src/main/java/frc/robot/shooter/TurretSubsystem.java`)
- Climb Subsystem → Wrapping Encoder: uses (evidence: `src/main/java/frc/robot/climb/ClimbSubsystem.java`)
- Autonomous Routines → Mecanum Drive: uses (evidence: `src/main/java/frc/robot/commands/Autos.java`)
- Mecanum Drive → Shot Calculator: calculates aiming (evidence: `src/main/java/frc/robot/drive/DriveSubsystem.java`)
- Camera Subsystem → Turret Subsystem: reads turret (evidence: `src/main/java/frc/robot/camera/CameraSubsystem.java`)
