# pratiksha123-sy/dronosaur-drone-modes architecture

> Architecture diagram of the GitHub repository pratiksha123-sy/dronosaur-drone-modes, 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/pratiksha123-sy/dronosaur-drone-modes
- Repository: https://github.com/pratiksha123-sy/dronosaur-drone-modes

## Overview

This repository is a collection of drone-control experiments rather than one integrated application: it includes network command receivers, MAVLink control examples, and independent Pygame simulations. The clearest user-to-action path is a WebSocket client sending a command to the server, which dispatches recognized mode commands; a separate MAVLink subscriber receives commands and can launch mode scripts. Several mode files are simulations, not demonstrated flight-control implementations. The graph reflects only relationships visible in excerpts; unsampled files and the legacy commented code are not treated as verified integrations.

Main entry points: [`mavlink_subscriber.py`](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/mavlink_subscriber.py) (MAVLink receiver), [`subscriberwebsocket.py`](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscriberwebsocket.py) (Command dispatch), [`orbitmode.py`](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/orbitmode.py) (Orbit simulation), [`subscribermavlink.py`](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscribermavlink.py) (TCP command receiver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_command["Command Interfaces"]
  node_ws_server["WebSocket server"]
  node_ws_dispatch["Command dispatch"]
  node_tcp_server["TCP command receiver"]
end

subgraph group_mavlink["MAVLink Control"]
  node_mav_sub["MAVLink receiver"]
  node_legacy_ui["Legacy control UI<br/>[oldsub.py]"]
  node_mav_listener["MAVLink listener<br/>[sub.py]"]
  node_connection_demo["Connection examples<br/>[1com.py]"]
  node_connection_demo2["Connection examples<br/>[2com.py]"]
  node_basic_demo["Basic example<br/>[basic.py]"]
  node_static_ip["Static IP example<br/>[staticipadress.py]"]
end

subgraph group_modes["Modes and Simulations"]
  node_orbit["Orbit simulation<br/>[orbitmode.py]"]
  node_hover["Hover simulation<br/>[howermode.py]"]
  node_dolly["Dolly simulation<br/>[dollymode.py]"]
  node_follow["Follow simulation<br/>[followme.py]"]
  node_custom["Custom simulation<br/>[custommode.py]"]
  node_custom_voice["Voice-controlled drone<br/>[custommode1.py]"]
  node_birdseye["Bird's-eye simulation<br/>[birdseye.py]"]
  node_zoom["Zoom-out mode<br/>[zoomoutmode.py]"]
end

subgraph group_control["Control Experiments"]
  node_pid_py["Python PID example<br/>[pid.py]"]
  node_pid_c["C PID example<br/>[hello.c]"]
  node_margi_demo["Control example<br/>[margi.py]"]
end

node_web_client(("WebSocket client"))
node_tcp_client(("TCP command client"))
node_mav_source(("MAVLink command source"))
node_drone(("Drone / autopilot"))

node_web_client -->|"sends commands"| node_ws_server
node_ws_server -->|"dispatches messages"| node_ws_dispatch
node_ws_dispatch -->|"imports mode"| node_orbit
node_ws_dispatch -->|"imports mode"| node_hover
node_ws_dispatch -->|"imports mode"| node_dolly
node_ws_dispatch -->|"imports mode"| node_follow
node_ws_dispatch -->|"imports mode"| node_custom
node_ws_dispatch -->|"imports mode"| node_birdseye
node_tcp_client -->|"sends commands"| node_tcp_server
node_tcp_server -.->|"connects MAVLink"| node_mav_sub
node_mav_source -->|"sends commands"| node_mav_sub
node_mav_sub -->|"receives telemetry"| node_drone
node_mav_sub -->|"launches script"| node_orbit
node_mav_sub -->|"launches script"| node_birdseye
node_mav_sub -->|"launches script"| node_zoom
node_mav_sub -->|"launches script"| node_follow
node_mav_sub -->|"launches script"| node_dolly
node_mav_sub -->|"launches script"| node_hover
node_mav_sub -->|"launches script"| node_custom
node_legacy_ui -.->|"sends MAVLink commands"| node_drone
node_mav_listener -->|"runs script"| node_orbit
node_custom_voice -->|"issues flight commands"| node_drone

click node_ws_server "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscriberwebsocket.py"
click node_ws_dispatch "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscriberwebsocket.py"
click node_tcp_server "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscribermavlink.py"
click node_mav_sub "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/mavlink_subscriber.py"
click node_orbit "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/orbitmode.py"
click node_hover "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/howermode.py"
click node_dolly "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/dollymode.py"
click node_follow "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/followme.py"
click node_custom "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/custommode.py"
click node_custom_voice "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/custommode1.py"
click node_birdseye "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/birdseye.py"
click node_zoom "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/zoomoutmode.py"
click node_legacy_ui "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/oldsub.py"
click node_pid_py "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/pid.py"
click node_pid_c "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/hello.c"
click node_mav_listener "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/sub.py"
click node_connection_demo "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/1com.py"
click node_connection_demo2 "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/2com.py"
click node_basic_demo "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/basic.py"
click node_margi_demo "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/margi.py"
click node_static_ip "https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/staticipadress.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_ws_server,node_ws_dispatch,node_tcp_server,node_web_client,node_tcp_client toneBlue
class node_mav_sub,node_legacy_ui,node_mav_listener,node_connection_demo,node_connection_demo2,node_basic_demo,node_static_ip toneAmber
class node_orbit,node_hover,node_dolly,node_follow,node_custom,node_custom_voice,node_birdseye,node_zoom toneMint
class node_pid_py,node_pid_c,node_margi_demo toneRose
class node_mav_source,node_drone toneIndigo
```

## Components

### Command Interfaces

- [WebSocket server](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscriberwebsocket.py): `subscriberwebsocket.py`
- [Command dispatch](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscriberwebsocket.py): `subscriberwebsocket.py`
- [TCP command receiver](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/subscribermavlink.py): `subscribermavlink.py`

### MAVLink Control

- [MAVLink receiver](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/mavlink_subscriber.py): `mavlink_subscriber.py`
- [Legacy control UI](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/oldsub.py): `oldsub.py`
- [MAVLink listener](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/sub.py): `sub.py`
- [Connection examples](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/1com.py): `1com.py`
- [Connection examples](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/2com.py): `2com.py`
- [Basic example](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/basic.py): `basic.py`
- [Static IP example](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/staticipadress.py): `staticipadress.py`

### Modes and Simulations

- [Orbit simulation](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/orbitmode.py): `orbitmode.py`
- [Hover simulation](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/howermode.py): `howermode.py`
- [Dolly simulation](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/dollymode.py): `dollymode.py`
- [Follow simulation](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/followme.py): `followme.py`
- [Custom simulation](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/custommode.py): `custommode.py`
- [Voice-controlled drone](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/custommode1.py): `custommode1.py`
- [Bird's-eye simulation](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/birdseye.py): `birdseye.py`
- [Zoom-out mode](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/zoomoutmode.py): `zoomoutmode.py`

### Control Experiments

- [Python PID example](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/pid.py): `pid.py`
- [C PID example](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/hello.c): `hello.c`
- [Control example](https://github.com/pratiksha123-sy/dronosaur-drone-modes/blob/main/margi.py): `margi.py`

### Other components

- **WebSocket client**
- **TCP command client**
- **MAVLink command source**
- **Drone / autopilot**

## Connections

- WebSocket client → WebSocket server: sends commands (evidence: `subscriberwebsocket.py`)
- WebSocket server → Command dispatch: dispatches messages (evidence: `subscriberwebsocket.py`)
- Command dispatch → Orbit simulation: imports mode (evidence: `subscriberwebsocket.py`)
- Command dispatch → Hover simulation: imports mode (evidence: `subscriberwebsocket.py`)
- Command dispatch → Dolly simulation: imports mode (evidence: `subscriberwebsocket.py`)
- Command dispatch → Follow simulation: imports mode (evidence: `subscriberwebsocket.py`)
- Command dispatch → Custom simulation: imports mode (evidence: `subscriberwebsocket.py`)
- Command dispatch → Bird's-eye simulation: imports mode (evidence: `subscriberwebsocket.py`)
- TCP command client → TCP command receiver: sends commands (evidence: `subscribermavlink.py`)
- TCP command receiver → MAVLink receiver: connects MAVLink
- MAVLink command source → MAVLink receiver: sends commands (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Drone / autopilot: receives telemetry (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Orbit simulation: launches script (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Bird's-eye simulation: launches script (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Zoom-out mode: launches script (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Follow simulation: launches script (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Dolly simulation: launches script (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Hover simulation: launches script (evidence: `mavlink_subscriber.py`)
- MAVLink receiver → Custom simulation: launches script (evidence: `mavlink_subscriber.py`)
- Legacy control UI → Drone / autopilot: sends MAVLink commands
- MAVLink listener → Orbit simulation: runs script (evidence: `sub.py`)
- Voice-controlled drone → Drone / autopilot: issues flight commands (evidence: `custommode1.py`)
