# frc900/2026robotcode architecture

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

- Interactive diagram: https://gitdiagram.com/frc900/2026robotcode
- Repository: https://github.com/frc900/2026robotcode

## Overview

This repository combines FRC robot-control software with projectile-motion analysis and a ROS-message-to-Java generator. The robot workflow is configured in RobotContainer, which assembles controls, autonomous routines, and robot subsystems; commands then operate mechanisms and drivetrain. The source index supports some component relationships, but excerpts are incomplete, so uncertain runtime wiring is omitted. The README only mentions a compilation-check workflow, which is not part of the product architecture.

Main entry points: [`src/main/java/com/team900/frc2026/RobotContainer.java`](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/RobotContainer.java) (Robot Container), [`ProjectileMotionSim/TrajectorySurfaces/TrajectorySurface.py`](https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/TrajectorySurfaces/TrajectorySurface.py) (Trajectory Surfaces), [`ros_networktables_bridge_genmsg/main.py`](https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/main.py) (Generator Entry), [`src/main/java/com/team900/frc2026/commands/DriveMaintainingHeadingCommand.java`](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/commands/DriveMaintainingHeadingCommand.java) (Heading Command)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_robot["Robot Runtime"]
  node_container["Robot Container"]
  node_robot_state["Robot State<br/>[RobotState.java]"]
  node_controls["Control Boards<br/>[ControlBoard.java]"]
  node_autonomous["Autonomous Routines<br/>[Autos.java]"]
  node_drive["Drive Subsystem"]
  node_heading["Heading Command"]
end

subgraph group_mechanisms["Robot Mechanisms"]
  node_shooting["Shooting Factory"]
  node_shooter["Shooter"]
  node_shooter_config["Shooter Setpoints"]
  node_hood_factory["Hood Factory<br/>[HoodFactory.java]"]
  node_intake_factory["Intake Factory<br/>[IntakeFactory.java]"]
  node_intake["Intake Subsystems"]
end

subgraph group_integration["Vision and ROS"]
  node_coprocessor["Coprocessor"]
  node_vision["Vision Subsystem"]
  node_ros_bridge["ROS NetworkTables"]
end

subgraph group_projectile["Projectile Analysis"]
  node_projectile_solver["Projectile Solver<br/>[ProjectilePath.py]"]
  node_fuel_path["Fuel Path<br/>[FuelPath.py]"]
  node_trajectory_surface["Trajectory Surfaces"]
  node_surface_fit["Surface Fitting"]
  node_surface_plot["Surface Plotting"]
end

subgraph group_generator["Message Generator"]
  node_generator_entry["Generator Entry<br/>[main.py]"]
  node_spec_builder["ROS Spec Builder<br/>[generate_spec.py]"]
  node_class_spec["Java Class Spec<br/>[java_class_spec.py]"]
  node_code_artifacts["Code Artifacts<br/>[code_artifacts.py]"]
  node_generated_java["Generated Java Messages"]
end

node_operator(("Operator"))

node_container -->|"configures"| node_controls
node_container -->|"configures"| node_autonomous
node_container -->|"constructs"| node_drive
node_container -->|"constructs"| node_coprocessor
node_container -->|"constructs"| node_vision
node_container -->|"invokes"| node_shooting
node_container -->|"uses"| node_hood_factory
node_container -->|"uses"| node_intake_factory
node_container -->|"uses"| node_robot_state
node_heading -->|"commands"| node_drive
node_heading -->|"reads pose"| node_robot_state
node_shooting -->|"uses setpoints"| node_shooter_config
node_fuel_path -->|"uses"| node_projectile_solver
node_fuel_path -.->|"checks clearance"| node_trajectory_surface
node_trajectory_surface -->|"uses"| node_projectile_solver
node_trajectory_surface -.->|"fit workflow"| node_surface_fit
node_trajectory_surface -.->|"plot workflow"| node_surface_plot
node_generator_entry -->|"builds specs"| node_spec_builder
node_generator_entry -->|"generates code"| node_code_artifacts
node_spec_builder -->|"builds"| node_class_spec
node_code_artifacts -->|"renders"| node_class_spec
node_generator_entry -->|"writes files"| node_generated_java

click node_container "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/RobotContainer.java"
click node_robot_state "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/RobotState.java"
click node_controls "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/controlboard/ControlBoard.java"
click node_autonomous "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/auto/Autos.java"
click node_drive "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/drive/DriveSubsystem.java"
click node_heading "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/commands/DriveMaintainingHeadingCommand.java"
click node_shooting "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/factories/ShootingFactory.java"
click node_shooter "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/shooter/ShooterSubsystem.java"
click node_shooter_config "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/shooter/ShooterConstants.java"
click node_hood_factory "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/factories/HoodFactory.java"
click node_intake_factory "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/factories/IntakeFactory.java"
click node_intake "https://github.com/frc900/2026robotcode/tree/main/src/main/java/com/team900/frc2026/subsystems/intake"
click node_coprocessor "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/coprocessor/CoprocessorSubsystem.java"
click node_vision "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/vision/VisionSubsystem.java"
click node_ros_bridge "https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/lib/rosNetworkTablesBridge/bridge/ROSNetworkTablesBridge.java"
click node_projectile_solver "https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/ProjectilePath.py"
click node_fuel_path "https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/FuelPath.py"
click node_trajectory_surface "https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/TrajectorySurfaces/TrajectorySurface.py"
click node_surface_fit "https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/TrajectorySurfaces/FitTrajectorySurface.py"
click node_surface_plot "https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/TrajectorySurfaces/PlotTrajectorySurfaces.py"
click node_generator_entry "https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/main.py"
click node_spec_builder "https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/message_conversion/generate_spec.py"
click node_class_spec "https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/message_conversion/java_class_spec.py"
click node_code_artifacts "https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/message_conversion/code_artifacts.py"
click node_generated_java "https://github.com/frc900/2026robotcode/tree/main/src/main/java/com/team900/lib/rosNetworkTablesBridge/messages"

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_container,node_robot_state,node_controls,node_autonomous,node_drive,node_heading toneBlue
class node_shooting,node_shooter,node_shooter_config,node_hood_factory,node_intake_factory,node_intake toneAmber
class node_coprocessor,node_vision,node_ros_bridge toneMint
class node_projectile_solver,node_fuel_path,node_trajectory_surface,node_surface_fit,node_surface_plot toneRose
class node_generator_entry,node_spec_builder,node_class_spec,node_code_artifacts,node_generated_java,node_operator toneIndigo
```

## Components

### Robot Runtime

- [Robot Container](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/RobotContainer.java): `src/main/java/com/team900/frc2026/RobotContainer.java`
- [Robot State](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/RobotState.java): `src/main/java/com/team900/frc2026/RobotState.java`
- [Control Boards](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/controlboard/ControlBoard.java): `src/main/java/com/team900/frc2026/controlboard/ControlBoard.java`
- [Autonomous Routines](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/auto/Autos.java): `src/main/java/com/team900/frc2026/auto/Autos.java`
- [Drive Subsystem](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/drive/DriveSubsystem.java): `src/main/java/com/team900/frc2026/subsystems/drive/DriveSubsystem.java`
- [Heading Command](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/commands/DriveMaintainingHeadingCommand.java): `src/main/java/com/team900/frc2026/commands/DriveMaintainingHeadingCommand.java`

### Robot Mechanisms

- [Shooting Factory](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/factories/ShootingFactory.java): `src/main/java/com/team900/frc2026/factories/ShootingFactory.java`
- [Shooter](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/shooter/ShooterSubsystem.java): `src/main/java/com/team900/frc2026/subsystems/shooter/ShooterSubsystem.java`
- [Shooter Setpoints](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/shooter/ShooterConstants.java): `src/main/java/com/team900/frc2026/subsystems/shooter/ShooterConstants.java`
- [Hood Factory](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/factories/HoodFactory.java): `src/main/java/com/team900/frc2026/factories/HoodFactory.java`
- [Intake Factory](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/factories/IntakeFactory.java): `src/main/java/com/team900/frc2026/factories/IntakeFactory.java`
- [Intake Subsystems](https://github.com/frc900/2026robotcode/tree/main/src/main/java/com/team900/frc2026/subsystems/intake): `src/main/java/com/team900/frc2026/subsystems/intake`

### Vision and ROS

- [Coprocessor](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/coprocessor/CoprocessorSubsystem.java): `src/main/java/com/team900/frc2026/subsystems/coprocessor/CoprocessorSubsystem.java`
- [Vision Subsystem](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/frc2026/subsystems/vision/VisionSubsystem.java): `src/main/java/com/team900/frc2026/subsystems/vision/VisionSubsystem.java`
- [ROS NetworkTables](https://github.com/frc900/2026robotcode/blob/main/src/main/java/com/team900/lib/rosNetworkTablesBridge/bridge/ROSNetworkTablesBridge.java): `src/main/java/com/team900/lib/rosNetworkTablesBridge/bridge/ROSNetworkTablesBridge.java`

### Projectile Analysis

- [Projectile Solver](https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/ProjectilePath.py): `ProjectileMotionSim/ProjectilePath.py`
- [Fuel Path](https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/FuelPath.py): `ProjectileMotionSim/FuelPath.py`
- [Trajectory Surfaces](https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/TrajectorySurfaces/TrajectorySurface.py): `ProjectileMotionSim/TrajectorySurfaces/TrajectorySurface.py`
- [Surface Fitting](https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/TrajectorySurfaces/FitTrajectorySurface.py): `ProjectileMotionSim/TrajectorySurfaces/FitTrajectorySurface.py`
- [Surface Plotting](https://github.com/frc900/2026robotcode/blob/main/ProjectileMotionSim/TrajectorySurfaces/PlotTrajectorySurfaces.py): `ProjectileMotionSim/TrajectorySurfaces/PlotTrajectorySurfaces.py`

### Message Generator

- [Generator Entry](https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/main.py): `ros_networktables_bridge_genmsg/main.py`
- [ROS Spec Builder](https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/message_conversion/generate_spec.py): `ros_networktables_bridge_genmsg/message_conversion/generate_spec.py`
- [Java Class Spec](https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/message_conversion/java_class_spec.py): `ros_networktables_bridge_genmsg/message_conversion/java_class_spec.py`
- [Code Artifacts](https://github.com/frc900/2026robotcode/blob/main/ros_networktables_bridge_genmsg/message_conversion/code_artifacts.py): `ros_networktables_bridge_genmsg/message_conversion/code_artifacts.py`
- [Generated Java Messages](https://github.com/frc900/2026robotcode/tree/main/src/main/java/com/team900/lib/rosNetworkTablesBridge/messages): `src/main/java/com/team900/lib/rosNetworkTablesBridge/messages`

### Other components

- **Operator**

## Connections

- Robot Container → Control Boards: configures (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Autonomous Routines: configures (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Drive Subsystem: constructs (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Coprocessor: constructs (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Vision Subsystem: constructs (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Shooting Factory: invokes (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Hood Factory: uses (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Intake Factory: uses (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Robot Container → Robot State: uses (evidence: `src/main/java/com/team900/frc2026/RobotContainer.java`)
- Heading Command → Drive Subsystem: commands (evidence: `src/main/java/com/team900/frc2026/commands/DriveMaintainingHeadingCommand.java`)
- Heading Command → Robot State: reads pose (evidence: `src/main/java/com/team900/frc2026/commands/DriveMaintainingHeadingCommand.java`)
- Shooting Factory → Shooter Setpoints: uses setpoints
- Fuel Path → Projectile Solver: uses (evidence: `ProjectileMotionSim/FuelPath.py`)
- Fuel Path → Trajectory Surfaces: checks clearance
- Trajectory Surfaces → Projectile Solver: uses (evidence: `ProjectileMotionSim/TrajectorySurfaces/TrajectorySurface.py`)
- Trajectory Surfaces → Surface Fitting: fit workflow
- Trajectory Surfaces → Surface Plotting: plot workflow
- Generator Entry → ROS Spec Builder: builds specs (evidence: `ros_networktables_bridge_genmsg/main.py`)
- Generator Entry → Code Artifacts: generates code (evidence: `ros_networktables_bridge_genmsg/main.py`)
- ROS Spec Builder → Java Class Spec: builds (evidence: `ros_networktables_bridge_genmsg/message_conversion/generate_spec.py`)
- Code Artifacts → Java Class Spec: renders (evidence: `ros_networktables_bridge_genmsg/message_conversion/code_artifacts.py`)
- Generator Entry → Generated Java Messages: writes files (evidence: `ros_networktables_bridge_genmsg/main.py`)
