# whearobotics/mako architecture

> Architecture diagram of the GitHub repository whearobotics/mako, 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/whearobotics/mako
- Repository: https://github.com/whearobotics/mako

## Overview

MAKO is a collection of FRC robotics learning examples rather than one deployed application. Its principal command-based workflow maps driver input or an autonomous selection into commands that operate drive and elevator subsystems. Separate examples demonstrate timed robot control, sensor reading, and Pixy camera vision. The graph preserves those distinct examples; command-based relationships are supported by excerpts and the source index, while some example entry-point wiring is only documented by source-index references.

Main entry points: [`code/command_based/robotcontainer.py`](https://github.com/whearobotics/mako/blob/main/code/command_based/robotcontainer.py) (Robot container), [`code/command_factory/robotcontainer.py`](https://github.com/whearobotics/mako/blob/main/code/command_factory/robotcontainer.py) (Robot container), [`code/command_based/commands/autos.py`](https://github.com/whearobotics/mako/blob/main/code/command_based/commands/autos.py) (Autonomous routines), [`code/command_factory/commands/autos.py`](https://github.com/whearobotics/mako/blob/main/code/command_factory/commands/autos.py) (Autonomous routines)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_command["Command-based robots"]
  node_cb_robot["Robot lifecycle<br/>[robot.py]"]
  node_cb_container["Robot container<br/>[robotcontainer.py]"]
  node_cb_auto["Autonomous routines<br/>[autos.py]"]
  node_cb_drive_cmd["Drive commands<br/>[drivecommands.py]"]
  node_cb_elevator_cmd["Elevator commands"]
  node_cb_drive["Drive subsystem<br/>[drivesubsystem.py]"]
  node_cb_elevator["Elevator subsystem"]
  node_cb_constants["Robot constants"]
end

subgraph group_factory["Command factory variant"]
  node_cf_robot["Robot lifecycle<br/>[robot.py]"]
  node_cf_container["Robot container<br/>[robotcontainer.py]"]
  node_cf_auto["Autonomous routines<br/>[autos.py]"]
  node_cf_drive_cmd["Drive commands<br/>[drivecommands.py]"]
  node_cf_drive["Drive subsystem<br/>[drivesubsystem.py]"]
  node_cf_elevator["Elevator subsystem"]
  node_cf_constants["Robot constants"]
end

subgraph group_timed["Timed robot examples"]
  node_elevator_robot["Elevator demo<br/>[robot.py]"]
  node_mecanum_robot["Mecanum demo<br/>[robot.py]"]
  node_motor_robot["Motor test<br/>[robot.py]"]
  node_hello_robot["Hello robot<br/>[hello_robot.py]"]
end

subgraph group_sensing["Sensor examples"]
  node_sensor_robot["Sensor demo<br/>[robot.py]"]
  node_color_util["Color matching<br/>[color_util.py]"]
end

subgraph group_vision["Pixy vision"]
  node_pixy_robot["Vision demo<br/>[robot.py]"]
  node_pixy_api["Pixy protocol API<br/>[pixy2.py]"]
  node_pixy_ccc["Color-connected blocks<br/>[pixy2ccc.py]"]
  node_spi_link["SPI transport<br/>[spilink.py]"]
  node_link_base["Link interface<br/>[link.py]"]
end

node_operator(("Driver/operator"))

node_operator -->|"controls robot"| node_cb_container
node_cb_robot -->|"creates"| node_cb_container
node_cb_container -->|"selects routine"| node_cb_auto
node_cb_container -->|"binds controls"| node_cb_drive_cmd
node_cb_container -->|"binds controls"| node_cb_elevator_cmd
node_cb_container -->|"creates subsystem"| node_cb_drive
node_cb_container -->|"creates subsystem"| node_cb_elevator
node_cb_container -->|"uses settings"| node_cb_constants
node_cb_auto -->|"builds routines"| node_cb_drive_cmd
node_cb_auto -->|"builds routines"| node_cb_elevator_cmd
node_cb_auto -->|"operates drive"| node_cb_drive
node_cb_auto -->|"operates elevator"| node_cb_elevator
node_cb_drive_cmd -->|"calls methods"| node_cb_drive
node_cb_elevator_cmd -->|"operates elevator"| node_cb_elevator
node_cf_robot -->|"creates"| node_cf_container
node_cf_container -->|"selects routine"| node_cf_auto
node_cf_container -->|"binds controls"| node_cf_drive_cmd
node_cf_container -->|"creates subsystem"| node_cf_drive
node_cf_container -->|"creates subsystem"| node_cf_elevator
node_cf_container -->|"uses settings"| node_cf_constants
node_cf_auto -->|"builds routines"| node_cf_drive_cmd
node_cf_auto -->|"operates drive"| node_cf_drive
node_cf_auto -->|"operates elevator"| node_cf_elevator
node_cf_drive_cmd -->|"calls methods"| node_cf_drive
node_sensor_robot -->|"uses utilities"| node_color_util
node_pixy_robot -->|"uses API"| node_pixy_api
node_pixy_api -->|"constructs transport"| node_spi_link
node_pixy_api -->|"uses blocks API"| node_pixy_ccc
node_pixy_ccc -->|"uses protocol"| node_pixy_api
node_spi_link -->|"implements interface"| node_link_base

click node_cb_robot "https://github.com/whearobotics/mako/blob/main/code/command_based/robot.py"
click node_cb_container "https://github.com/whearobotics/mako/blob/main/code/command_based/robotcontainer.py"
click node_cb_auto "https://github.com/whearobotics/mako/blob/main/code/command_based/commands/autos.py"
click node_cb_drive_cmd "https://github.com/whearobotics/mako/blob/main/code/command_based/commands/drivecommands.py"
click node_cb_elevator_cmd "https://github.com/whearobotics/mako/blob/main/code/command_based/commands/elevatorcommands.py"
click node_cb_drive "https://github.com/whearobotics/mako/blob/main/code/command_based/subsystems/drivesubsystem.py"
click node_cb_elevator "https://github.com/whearobotics/mako/blob/main/code/command_based/subsystems/elevatorsubsystem.py"
click node_cb_constants "https://github.com/whearobotics/mako/tree/main/code/command_based/constants"
click node_cf_robot "https://github.com/whearobotics/mako/blob/main/code/command_factory/robot.py"
click node_cf_container "https://github.com/whearobotics/mako/blob/main/code/command_factory/robotcontainer.py"
click node_cf_auto "https://github.com/whearobotics/mako/blob/main/code/command_factory/commands/autos.py"
click node_cf_drive_cmd "https://github.com/whearobotics/mako/blob/main/code/command_factory/commands/drivecommands.py"
click node_cf_drive "https://github.com/whearobotics/mako/blob/main/code/command_factory/subsystems/drivesubsystem.py"
click node_cf_elevator "https://github.com/whearobotics/mako/blob/main/code/command_factory/subsystems/elevatorsubsystem.py"
click node_cf_constants "https://github.com/whearobotics/mako/tree/main/code/command_factory/constants"
click node_elevator_robot "https://github.com/whearobotics/mako/blob/main/code/elevator/robot.py"
click node_mecanum_robot "https://github.com/whearobotics/mako/blob/main/code/mecanum/robot.py"
click node_motor_robot "https://github.com/whearobotics/mako/blob/main/code/motor_test/robot.py"
click node_hello_robot "https://github.com/whearobotics/mako/blob/main/code/hello_robot/hello_robot.py"
click node_sensor_robot "https://github.com/whearobotics/mako/blob/main/code/sensors/robot.py"
click node_color_util "https://github.com/whearobotics/mako/blob/main/code/sensors/color_util.py"
click node_pixy_robot "https://github.com/whearobotics/mako/blob/main/code/pixyvision/robot.py"
click node_pixy_api "https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/pixy2.py"
click node_pixy_ccc "https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/pixy2ccc.py"
click node_spi_link "https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/links/spilink.py"
click node_link_base "https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/links/link.py"

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_cb_robot,node_cb_container,node_cb_auto,node_cb_drive_cmd,node_cb_elevator_cmd,node_cb_drive,node_cb_elevator,node_cb_constants toneBlue
class node_cf_robot,node_cf_container,node_cf_auto,node_cf_drive_cmd,node_cf_drive,node_cf_elevator,node_cf_constants toneAmber
class node_elevator_robot,node_mecanum_robot,node_motor_robot,node_hello_robot toneMint
class node_sensor_robot,node_color_util toneRose
class node_pixy_robot,node_pixy_api,node_pixy_ccc,node_spi_link,node_link_base,node_operator toneIndigo
```

## Components

### Command-based robots

- [Robot lifecycle](https://github.com/whearobotics/mako/blob/main/code/command_based/robot.py): `code/command_based/robot.py`
- [Robot container](https://github.com/whearobotics/mako/blob/main/code/command_based/robotcontainer.py): `code/command_based/robotcontainer.py`
- [Autonomous routines](https://github.com/whearobotics/mako/blob/main/code/command_based/commands/autos.py): `code/command_based/commands/autos.py`
- [Drive commands](https://github.com/whearobotics/mako/blob/main/code/command_based/commands/drivecommands.py): `code/command_based/commands/drivecommands.py`
- [Elevator commands](https://github.com/whearobotics/mako/blob/main/code/command_based/commands/elevatorcommands.py): `code/command_based/commands/elevatorcommands.py`
- [Drive subsystem](https://github.com/whearobotics/mako/blob/main/code/command_based/subsystems/drivesubsystem.py): `code/command_based/subsystems/drivesubsystem.py`
- [Elevator subsystem](https://github.com/whearobotics/mako/blob/main/code/command_based/subsystems/elevatorsubsystem.py): `code/command_based/subsystems/elevatorsubsystem.py`
- [Robot constants](https://github.com/whearobotics/mako/tree/main/code/command_based/constants): `code/command_based/constants`

### Command factory variant

- [Robot lifecycle](https://github.com/whearobotics/mako/blob/main/code/command_factory/robot.py): `code/command_factory/robot.py`
- [Robot container](https://github.com/whearobotics/mako/blob/main/code/command_factory/robotcontainer.py): `code/command_factory/robotcontainer.py`
- [Autonomous routines](https://github.com/whearobotics/mako/blob/main/code/command_factory/commands/autos.py): `code/command_factory/commands/autos.py`
- [Drive commands](https://github.com/whearobotics/mako/blob/main/code/command_factory/commands/drivecommands.py): `code/command_factory/commands/drivecommands.py`
- [Drive subsystem](https://github.com/whearobotics/mako/blob/main/code/command_factory/subsystems/drivesubsystem.py): `code/command_factory/subsystems/drivesubsystem.py`
- [Elevator subsystem](https://github.com/whearobotics/mako/blob/main/code/command_factory/subsystems/elevatorsubsystem.py): `code/command_factory/subsystems/elevatorsubsystem.py`
- [Robot constants](https://github.com/whearobotics/mako/tree/main/code/command_factory/constants): `code/command_factory/constants`

### Timed robot examples

- [Elevator demo](https://github.com/whearobotics/mako/blob/main/code/elevator/robot.py): `code/elevator/robot.py`
- [Mecanum demo](https://github.com/whearobotics/mako/blob/main/code/mecanum/robot.py): `code/mecanum/robot.py`
- [Motor test](https://github.com/whearobotics/mako/blob/main/code/motor_test/robot.py): `code/motor_test/robot.py`
- [Hello robot](https://github.com/whearobotics/mako/blob/main/code/hello_robot/hello_robot.py): `code/hello_robot/hello_robot.py`

### Sensor examples

- [Sensor demo](https://github.com/whearobotics/mako/blob/main/code/sensors/robot.py): `code/sensors/robot.py`
- [Color matching](https://github.com/whearobotics/mako/blob/main/code/sensors/color_util.py): `code/sensors/color_util.py`

### Pixy vision

- [Vision demo](https://github.com/whearobotics/mako/blob/main/code/pixyvision/robot.py): `code/pixyvision/robot.py`
- [Pixy protocol API](https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/pixy2.py): `code/pixyvision/pixy2api/pixy2.py`
- [Color-connected blocks](https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/pixy2ccc.py): `code/pixyvision/pixy2api/pixy2ccc.py`
- [SPI transport](https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/links/spilink.py): `code/pixyvision/pixy2api/links/spilink.py`
- [Link interface](https://github.com/whearobotics/mako/blob/main/code/pixyvision/pixy2api/links/link.py): `code/pixyvision/pixy2api/links/link.py`

### Other components

- **Driver/operator**

## Connections

- Driver/operator → Robot container: controls robot (evidence: `code/command_based/robotcontainer.py`)
- Robot lifecycle → Robot container: creates (evidence: `code/command_based/robot.py`)
- Robot container → Autonomous routines: selects routine (evidence: `code/command_based/robotcontainer.py`)
- Robot container → Drive commands: binds controls (evidence: `code/command_based/robotcontainer.py`)
- Robot container → Elevator commands: binds controls (evidence: `code/command_based/robotcontainer.py`)
- Robot container → Drive subsystem: creates subsystem (evidence: `code/command_based/robotcontainer.py`)
- Robot container → Elevator subsystem: creates subsystem (evidence: `code/command_based/robotcontainer.py`)
- Robot container → Robot constants: uses settings (evidence: `code/command_based/robotcontainer.py`)
- Autonomous routines → Drive commands: builds routines (evidence: `code/command_based/commands/autos.py`)
- Autonomous routines → Elevator commands: builds routines (evidence: `code/command_based/commands/autos.py`)
- Autonomous routines → Drive subsystem: operates drive (evidence: `code/command_based/commands/autos.py`)
- Autonomous routines → Elevator subsystem: operates elevator (evidence: `code/command_based/commands/autos.py`)
- Drive commands → Drive subsystem: calls methods (evidence: `code/command_based/commands/drivecommands.py`)
- Elevator commands → Elevator subsystem: operates elevator (evidence: `code/command_based/commands/elevatorcommands.py`)
- Robot lifecycle → Robot container: creates (evidence: `code/command_factory/robot.py`)
- Robot container → Autonomous routines: selects routine (evidence: `code/command_factory/robotcontainer.py`)
- Robot container → Drive commands: binds controls (evidence: `code/command_factory/robotcontainer.py`)
- Robot container → Drive subsystem: creates subsystem (evidence: `code/command_factory/robotcontainer.py`)
- Robot container → Elevator subsystem: creates subsystem (evidence: `code/command_factory/robotcontainer.py`)
- Robot container → Robot constants: uses settings (evidence: `code/command_factory/robotcontainer.py`)
- Autonomous routines → Drive commands: builds routines (evidence: `code/command_factory/commands/autos.py`)
- Autonomous routines → Drive subsystem: operates drive (evidence: `code/command_factory/commands/autos.py`)
- Autonomous routines → Elevator subsystem: operates elevator (evidence: `code/command_factory/commands/autos.py`)
- Drive commands → Drive subsystem: calls methods (evidence: `code/command_factory/commands/drivecommands.py`)
- Sensor demo → Color matching: uses utilities (evidence: `code/sensors/robot.py`)
- Vision demo → Pixy protocol API: uses API (evidence: `code/pixyvision/robot.py`)
- Pixy protocol API → SPI transport: constructs transport (evidence: `code/pixyvision/pixy2api/pixy2.py`)
- Pixy protocol API → Color-connected blocks: uses blocks API (evidence: `code/pixyvision/pixy2api/pixy2.py`)
- Color-connected blocks → Pixy protocol API: uses protocol (evidence: `code/pixyvision/pixy2api/pixy2ccc.py`)
- SPI transport → Link interface: implements interface (evidence: `code/pixyvision/pixy2api/links/spilink.py`)
