# tucanusfrc/off2026 architecture

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

- Interactive diagram: https://gitdiagram.com/tucanusfrc/off2026
- Repository: https://github.com/tucanusfrc/off2026

## Overview

This is a WPILib command-based robot program. Its main path is robot mode lifecycle → container-selected autonomous command or controller-bound teleop commands → hardware subsystems. Those subsystems drive, collect/shoot game pieces, and position the climber; drive also uses a gyro. The graph preserves the sampled autonomous sequence and the documented-in-code control bindings. Several command implementations and full wiring details are not excerpted, so uncertain links are omitted rather than inferred.

Main entry points: [`src/main/java/frc/robot/RobotContainer.java`](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/RobotContainer.java) (Bindings and chooser), [`src/main/java/frc/robot/subsystems/DriveSubsystem.java`](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/DriveSubsystem.java) (Drivetrain), [`src/main/java/frc/robot/autos/AutoTeste1.java`](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/autos/AutoTeste1.java) (Autonomous sequence), [`src/main/java/frc/robot/subsystems/IntakeShooter.java`](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/IntakeShooter.java) (Intake shooter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Robot runtime"]
  node_robot["Mode lifecycle<br/>[Robot.java]"]
  node_container["Bindings and chooser"]
end

subgraph group_control["Command control"]
  node_auto["Autonomous sequence<br/>[AutoTeste1.java]"]
  node_manual["Manual drive<br/>[ManualDrive.java]"]
  node_auto_position["Position drive"]
  node_auto_turn["Turn drive<br/>[AutoTurnDrive.java]"]
  node_catch_shoot["Catch and shoot<br/>[CatchnShoot.java]"]
  node_catch["Catch<br/>[Catch.java]"]
  node_drop["Drop<br/>[Drop.java]"]
  node_shoot["Shoot<br/>[Shoot.java]"]
  node_convenio_out["Conveyor out<br/>[ConvenioOut.java]"]
  node_climber_open["Open climber"]
  node_climber_close["Close climber"]
  node_climber_default["Climber default"]
  node_timed_drive["Timed drive"]
end

subgraph group_hardware["Robot mechanisms"]
  node_drive["Drivetrain"]
  node_intake["Intake shooter<br/>[IntakeShooter.java]"]
  node_conveyor["Conveyor"]
  node_climber["Climber mechanism"]
end

subgraph group_sensing["Drive sensing"]
  node_pigeon["Gyro sensor"]
end

node_controller(("Driver controllers"))
node_dashboard["SmartDashboard chooser"]

node_robot -->|"creates"| node_container
node_robot -->|"selects and schedules"| node_container
node_container -->|"offers autonomous"| node_auto
node_container -->|"sets default"| node_manual
node_container -->|"binds buttons"| node_catch
node_container -->|"binds buttons"| node_drop
node_container -->|"binds buttons"| node_shoot
node_container -->|"binds buttons"| node_convenio_out
node_container -->|"binds buttons"| node_climber_open
node_container -->|"binds buttons"| node_climber_close
node_container -->|"reads input"| node_controller
node_container -->|"publishes chooser and yaw"| node_dashboard
node_auto -->|"runs with timeout"| node_catch_shoot
node_auto -->|"requires"| node_drive
node_auto -->|"requires"| node_climber
node_manual -->|"controls"| node_drive
node_auto_position -->|"commands position"| node_drive
node_auto_turn -->|"commands turn"| node_drive
node_timed_drive -->|"commands speed"| node_drive
node_catch_shoot -->|"activates and stops"| node_intake
node_catch_shoot -->|"runs and stops"| node_conveyor
node_catch -->|"controls"| node_intake
node_catch -->|"controls"| node_conveyor
node_drop -->|"controls"| node_intake
node_drop -->|"controls"| node_conveyor
node_shoot -->|"controls"| node_intake
node_convenio_out -->|"controls"| node_conveyor
node_climber_open -->|"positions open"| node_climber
node_climber_close -->|"positions closed"| node_climber
node_climber_default -->|"sets default position"| node_climber
node_drive -->|"reads yaw"| node_pigeon

click node_robot "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/Robot.java"
click node_container "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/RobotContainer.java"
click node_auto "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/autos/AutoTeste1.java"
click node_manual "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/ManualDrive.java"
click node_auto_position "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/AutoPositionDrive.java"
click node_auto_turn "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/AutoTurnDrive.java"
click node_catch_shoot "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/CatchnShoot.java"
click node_catch "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/Catch.java"
click node_drop "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/Drop.java"
click node_shoot "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/Shoot.java"
click node_convenio_out "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/ConvenioOut.java"
click node_climber_open "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/OpenStateClimber.java"
click node_climber_close "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/CloseStateClimber.java"
click node_climber_default "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/DefaultGameStateClimber.java"
click node_timed_drive "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/AutoTimedDrive.java"
click node_drive "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/DriveSubsystem.java"
click node_intake "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/IntakeShooter.java"
click node_conveyor "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/ConvenioSubsystem.java"
click node_climber "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/ClimberSubsystem.java"
click node_pigeon "https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/PigeonSubsystem.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_robot,node_container toneBlue
class node_auto,node_manual,node_auto_position,node_auto_turn,node_catch_shoot,node_catch,node_drop,node_shoot,node_convenio_out,node_climber_open,node_climber_close,node_climber_default,node_timed_drive toneAmber
class node_drive,node_intake,node_conveyor,node_climber toneMint
class node_pigeon toneRose
class node_controller,node_dashboard toneIndigo
```

## Components

### Robot runtime

- [Mode lifecycle](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/Robot.java): `src/main/java/frc/robot/Robot.java`
- [Bindings and chooser](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/RobotContainer.java): `src/main/java/frc/robot/RobotContainer.java`

### Command control

- [Autonomous sequence](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/autos/AutoTeste1.java): `src/main/java/frc/robot/autos/AutoTeste1.java`
- [Manual drive](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/ManualDrive.java): `src/main/java/frc/robot/commands/ManualDrive.java`
- [Position drive](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/AutoPositionDrive.java): `src/main/java/frc/robot/commands/AutoPositionDrive.java`
- [Turn drive](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/AutoTurnDrive.java): `src/main/java/frc/robot/commands/AutoTurnDrive.java`
- [Catch and shoot](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/CatchnShoot.java): `src/main/java/frc/robot/commands/CatchnShoot.java`
- [Catch](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/Catch.java): `src/main/java/frc/robot/commands/Catch.java`
- [Drop](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/Drop.java): `src/main/java/frc/robot/commands/Drop.java`
- [Shoot](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/Shoot.java): `src/main/java/frc/robot/commands/Shoot.java`
- [Conveyor out](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/ConvenioOut.java): `src/main/java/frc/robot/commands/ConvenioOut.java`
- [Open climber](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/OpenStateClimber.java): `src/main/java/frc/robot/commands/OpenStateClimber.java`
- [Close climber](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/CloseStateClimber.java): `src/main/java/frc/robot/commands/CloseStateClimber.java`
- [Climber default](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/DefaultGameStateClimber.java): `src/main/java/frc/robot/commands/DefaultGameStateClimber.java`
- [Timed drive](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/commands/AutoTimedDrive.java): `src/main/java/frc/robot/commands/AutoTimedDrive.java`

### Robot mechanisms

- [Drivetrain](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/DriveSubsystem.java): `src/main/java/frc/robot/subsystems/DriveSubsystem.java`
- [Intake shooter](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/IntakeShooter.java): `src/main/java/frc/robot/subsystems/IntakeShooter.java`
- [Conveyor](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/ConvenioSubsystem.java): `src/main/java/frc/robot/subsystems/ConvenioSubsystem.java`
- [Climber mechanism](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/ClimberSubsystem.java): `src/main/java/frc/robot/subsystems/ClimberSubsystem.java`

### Drive sensing

- [Gyro sensor](https://github.com/tucanusfrc/off2026/blob/main/src/main/java/frc/robot/subsystems/PigeonSubsystem.java): `src/main/java/frc/robot/subsystems/PigeonSubsystem.java`

### Other components

- **Driver controllers**
- **SmartDashboard chooser**

## Connections

- Mode lifecycle → Bindings and chooser: creates (evidence: `src/main/java/frc/robot/Robot.java`)
- Mode lifecycle → Bindings and chooser: selects and schedules (evidence: `src/main/java/frc/robot/Robot.java`)
- Bindings and chooser → Autonomous sequence: offers autonomous (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Manual drive: sets default (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Catch: binds buttons (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Drop: binds buttons (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Shoot: binds buttons (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Conveyor out: binds buttons (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Open climber: binds buttons (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Close climber: binds buttons (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → Driver controllers: reads input (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Bindings and chooser → SmartDashboard chooser: publishes chooser and yaw (evidence: `src/main/java/frc/robot/RobotContainer.java`)
- Autonomous sequence → Catch and shoot: runs with timeout (evidence: `src/main/java/frc/robot/autos/AutoTeste1.java`)
- Autonomous sequence → Drivetrain: requires (evidence: `src/main/java/frc/robot/autos/AutoTeste1.java`)
- Autonomous sequence → Climber mechanism: requires (evidence: `src/main/java/frc/robot/autos/AutoTeste1.java`)
- Manual drive → Drivetrain: controls (evidence: `src/main/java/frc/robot/commands/ManualDrive.java`)
- Position drive → Drivetrain: commands position (evidence: `src/main/java/frc/robot/commands/AutoPositionDrive.java`)
- Turn drive → Drivetrain: commands turn (evidence: `src/main/java/frc/robot/commands/AutoTurnDrive.java`)
- Timed drive → Drivetrain: commands speed (evidence: `src/main/java/frc/robot/commands/AutoTimedDrive.java`)
- Catch and shoot → Intake shooter: activates and stops (evidence: `src/main/java/frc/robot/commands/CatchnShoot.java`)
- Catch and shoot → Conveyor: runs and stops (evidence: `src/main/java/frc/robot/commands/CatchnShoot.java`)
- Catch → Intake shooter: controls (evidence: `src/main/java/frc/robot/commands/Catch.java`)
- Catch → Conveyor: controls (evidence: `src/main/java/frc/robot/commands/Catch.java`)
- Drop → Intake shooter: controls (evidence: `src/main/java/frc/robot/commands/Drop.java`)
- Drop → Conveyor: controls (evidence: `src/main/java/frc/robot/commands/Drop.java`)
- Shoot → Intake shooter: controls (evidence: `src/main/java/frc/robot/commands/Shoot.java`)
- Conveyor out → Conveyor: controls (evidence: `src/main/java/frc/robot/commands/ConvenioOut.java`)
- Open climber → Climber mechanism: positions open (evidence: `src/main/java/frc/robot/commands/OpenStateClimber.java`)
- Close climber → Climber mechanism: positions closed (evidence: `src/main/java/frc/robot/commands/CloseStateClimber.java`)
- Climber default → Climber mechanism: sets default position (evidence: `src/main/java/frc/robot/commands/DefaultGameStateClimber.java`)
- Drivetrain → Gyro sensor: reads yaw (evidence: `src/main/java/frc/robot/subsystems/DriveSubsystem.java`)
