# boraayhan/talon-flight-computer architecture

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

- Interactive diagram: https://gitdiagram.com/boraayhan/talon-flight-computer
- Repository: https://github.com/boraayhan/talon-flight-computer

## Overview

TALON is an under-development UAV flight computer. Its principal documented workflow is remote pilot input becoming flight commands, which the runtime routes to autopilot or manual control and then to configured servos and motors; trim follows a separate command path. The README also documents TOGA and input-loss safety behavior, while the tree includes navigation, sensor, and storage modules. Sampled code supports the main runtime and actuator wiring, but does not establish how the Python serial transmitter connects to the RF24 receiver or how the unsampled navigation and sensor modules are orchestrated.

Main entry points: [`lib/TALON/src/TALON.cpp`](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/TALON.cpp) (TALON runtime), [`lib/TALON/src/communication/CommunicationManager.cpp`](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/communication/CommunicationManager.cpp) (Command receiver), [`lib/TALON/src/control/Autopilot/Autopilot.cpp`](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/Autopilot.cpp) (Autopilot modes), [`lib/TALON/src/control/FlightControlsManager/FlightControlsManager.cpp`](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/FlightControlsManager/FlightControlsManager.cpp) (Flight controls manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pilot_io["Pilot Input"]
  node_transmitter["Joystick transmitter<br/>[transmit.py]"]
  node_communication["Command receiver"]
  node_payload["Command payload"]
end

subgraph group_runtime["Flight Runtime"]
  node_entry["Firmware entry<br/>[main.cpp]"]
  node_talon["TALON runtime<br/>[TALON.cpp]"]
  node_commands["Flight data types<br/>[DataStructs.h]"]
  node_autopilot["Autopilot modes<br/>[Autopilot.cpp]"]
end

subgraph group_actuation["Flight Actuation"]
  node_controls["Flight controls manager"]
  node_surfaces["Control surfaces<br/>[ControlSurface.cpp]"]
  node_motors["Motor output<br/>[Motor.cpp]"]
end

subgraph group_navigation_data["Navigation Data"]
  node_pathfinder["Pathfinder<br/>[Pathfinder.cpp]"]
  node_dubins["Dubins paths<br/>[dubins.c]"]
  node_runway["Runway model<br/>[Runway.cpp]"]
  node_imu["IMU placeholder<br/>[IMUPlaceholder.cpp]"]
  node_sd[("SD data<br/>[SD.cpp]")]
end

node_pilot(("Pilot joystick"))
node_serial(("USB serial"))
node_radio(("RF24 radio"))

node_pilot -->|"moves joystick"| node_transmitter
node_transmitter -->|"writes payload"| node_serial
node_radio -->|"delivers packets"| node_communication
node_entry -->|"calls periodic"| node_talon
node_talon -->|"polls commands"| node_communication
node_communication -->|"decodes packets"| node_payload
node_communication -->|"updates commands"| node_commands
node_talon -->|"updates and queries"| node_autopilot
node_talon -->|"applies commands"| node_controls
node_autopilot -->|"produces flight command"| node_commands
node_controls -->|"moves and trims"| node_surfaces
node_controls -->|"sets throttle"| node_motors
node_autopilot -.->|"uses navigation"| node_pathfinder
node_pathfinder -.->|"generates paths"| node_dubins

click node_transmitter "https://github.com/boraayhan/talon-flight-computer/blob/main/src/transmit.py"
click node_entry "https://github.com/boraayhan/talon-flight-computer/blob/main/src/main.cpp"
click node_talon "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/TALON.cpp"
click node_communication "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/communication/CommunicationManager.cpp"
click node_payload "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/communication/CommunicationPayload.cpp"
click node_commands "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/global/DataStructs.h"
click node_autopilot "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/Autopilot.cpp"
click node_controls "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/FlightControlsManager/FlightControlsManager.cpp"
click node_surfaces "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/ControlSurface/ControlSurface.cpp"
click node_motors "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Motor/Motor.cpp"
click node_pathfinder "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/Pathfinder.cpp"
click node_dubins "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/DubinsPathGenerator/dubins.c"
click node_runway "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/Runway.cpp"
click node_imu "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/data/sensors/IMU_PLACEHOLDER/IMUPlaceholder.cpp"
click node_sd "https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/data/SD/SD.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_transmitter,node_communication,node_payload toneBlue
class node_entry,node_talon,node_commands,node_autopilot toneAmber
class node_controls,node_surfaces,node_motors toneMint
class node_pathfinder,node_dubins,node_runway,node_imu,node_sd toneRose
class node_pilot,node_serial,node_radio toneIndigo
```

## Components

### Pilot Input

- [Joystick transmitter](https://github.com/boraayhan/talon-flight-computer/blob/main/src/transmit.py): `src/transmit.py`
- [Command receiver](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/communication/CommunicationManager.cpp): `lib/TALON/src/communication/CommunicationManager.cpp`
- [Command payload](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/communication/CommunicationPayload.cpp): `lib/TALON/src/communication/CommunicationPayload.cpp`

### Flight Runtime

- [Firmware entry](https://github.com/boraayhan/talon-flight-computer/blob/main/src/main.cpp): `src/main.cpp`
- [TALON runtime](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/TALON.cpp): `lib/TALON/src/TALON.cpp`
- [Flight data types](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/global/DataStructs.h): `lib/TALON/src/global/DataStructs.h`
- [Autopilot modes](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/Autopilot.cpp): `lib/TALON/src/control/Autopilot/Autopilot.cpp`

### Flight Actuation

- [Flight controls manager](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/FlightControlsManager/FlightControlsManager.cpp): `lib/TALON/src/control/FlightControlsManager/FlightControlsManager.cpp`
- [Control surfaces](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/ControlSurface/ControlSurface.cpp): `lib/TALON/src/control/ControlSurface/ControlSurface.cpp`
- [Motor output](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Motor/Motor.cpp): `lib/TALON/src/control/Motor/Motor.cpp`

### Navigation Data

- [Pathfinder](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/Pathfinder.cpp): `lib/TALON/src/control/Autopilot/Pathfinder.cpp`
- [Dubins paths](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/DubinsPathGenerator/dubins.c): `lib/TALON/src/control/Autopilot/DubinsPathGenerator/dubins.c`
- [Runway model](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/control/Autopilot/Runway.cpp): `lib/TALON/src/control/Autopilot/Runway.cpp`
- [IMU placeholder](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/data/sensors/IMU_PLACEHOLDER/IMUPlaceholder.cpp): `lib/TALON/src/data/sensors/IMU_PLACEHOLDER/IMUPlaceholder.cpp`
- [SD data](https://github.com/boraayhan/talon-flight-computer/blob/main/lib/TALON/src/data/SD/SD.cpp): `lib/TALON/src/data/SD/SD.cpp`

### Other components

- **Pilot joystick**
- **USB serial**
- **RF24 radio**

## Connections

- Pilot joystick → Joystick transmitter: moves joystick
- Joystick transmitter → USB serial: writes payload
- RF24 radio → Command receiver: delivers packets
- Firmware entry → TALON runtime: calls periodic
- TALON runtime → Command receiver: polls commands
- Command receiver → Command payload: decodes packets
- Command receiver → Flight data types: updates commands
- TALON runtime → Autopilot modes: updates and queries
- TALON runtime → Flight controls manager: applies commands
- Autopilot modes → Flight data types: produces flight command
- Flight controls manager → Control surfaces: moves and trims
- Flight controls manager → Motor output: sets throttle
- Autopilot modes → Pathfinder: uses navigation
- Pathfinder → Dubins paths: generates paths
