ados-film.webm
ADOS is an open-source platform for software-defined drones. The Drone Agent turns a companion computer into the drone's onboard brain for the radio link, video, vision, swarm and extensions, and you run it from Mission Control in the browser or on the desktop, from Android, or through AI clients over MCP. It works with ArduPilot, PX4, Betaflight and iNav.
Features such as World Engine (beta), visual-inertial and LiDAR SLAM poses and GPS-denied navigation grow with every release. ADOS is built as a base for smart agriculture, indoor operations and logistics in GPS-denied warehouses, with extensions, a Rust SDK and published crates for anyone who wants to build on it.
flowchart LR
subgraph air["On the drone"]
FC["Flight controller<br/>ArduPilot · PX4 · Betaflight · iNav"]
DA["ADOS Drone Agent"]
end
subgraph ground["On the ground"]
GA["ADOS Ground Agent"]
MC["ADOS Mission Control<br/>browser · desktop"]
AG["ADOS Android GCS"]
MCP["ADOS MCP<br/>AI clients"]
end
EXT["ADOS Extensions"]
FC <-- MAVLink --> DA
DA <-- "long-range radio link" --> GA
MC <-- "LAN or cloud relay" --> DA
MC <-- LAN --> GA
AG <-- "LAN or cloud" --> DA
MCP <-- "LAN or cloud" --> DA
EXT -. "agent plugins" .-> DA
EXT -. "GCS panels" .-> MC
ADOS Ground Agent is the Drone Agent running its ground-station profile.
Reusable libraries from the ADOS Drone Agent, published on crates.io under MIT OR Apache-2.0 (one crate is MIT only). Versioning and licences: crates index.
Platform (versioned with the ADOS Drone Agent)
| Crate | What it does | Docs |
|---|---|---|
ados-protocol |
Wire contracts of the ADOS Drone Agent: IPC framing, plugin RPC envelope, capability tokens and the vision frame bus. | docs.rs |
ados-sdk |
Write Rust plugins for the ADOS Drone Agent: IPC client, plugin context, driver traits and lifecycle runner. | docs.rs |
ados-vision |
Single-object visual tracker: Kalman motion model, appearance re-identification and YOLOv8 head decoding. | docs.rs |
ados-gpio |
Drive status buzzers and LEDs on Linux GPIO lines, with bounded software-PWM beep patterns. | docs.rs |
ados-hal-probe |
Find out what a board's hardware can really do by probing it, plus bundled board profiles. | docs.rs |
Standalone
| Crate | What it does | Docs |
|---|---|---|
ados-sensorhub |
Sensor hub wire protocol: COBS framing, CRC-16 and fixed-layout IMU, baro, mag and GNSS packets. no_std. | docs.rs |
ados-offload |
Choose where perception runs (onboard, offloaded or hybrid) and hold the vehicle when results go stale. | docs.rs |
ados-macpin |
Stable MAC addresses for Linux network adapters that randomize theirs every boot. | docs.rs |
ados-lora |
LoRa transmit governor with cited regional band plans, duty cycle, dwell time and airtime accounting. | docs.rs |
ados-crsf-codec |
no_std CRSF / ExpressLRS codec for RC channels, telemetry and parameter frames. | docs.rs |
ados-positioning |
Split mixed UBX, NMEA and RTCM3 GNSS streams, configure u-blox receivers and run an RTK base survey-in. | docs.rs |
ados-rtcm |
RTCM3 framing, CRC-24Q and MAVLink GPS_RTCM_DATA fragmentation for RTK corrections. | docs.rs |
ados-clock |
Map remote clocks onto the host clock: least-squares and envelope fits, TIMESYNC and a chrony sink. | docs.rs |
ados-swarm |
Swarm control laws: separation, flocking, formations, CBBA task allocation and a point-mass simulator. | docs.rs |
ados-mavlink-tunnel |
Send large messages over MAVLink TUNNEL frames with chunking and bounded reassembly. | docs.rs |
ados-display-driver |
Small-display output on Linux: SSD1306/SH1106 OLED over I2C, pixel packers and a framebuffer writer. | docs.rs |
ados-hmi |
Front-panel input: touchscreen calibration and gestures, button presses and rotary encoders. | docs.rs |
- Fly it: install the Drone Agent on a companion computer and open Mission Control.
- Build on it: write an agent plugin with the Rust SDK or follow the extension guide.
- Talk to us: Discord, or open an issue on the repo you are using.
- Contribute: pull requests are welcome; each README has a Contributing section.
ADOS applications are licensed GPL-3.0-or-later; the Rust library crates are MIT OR Apache-2.0.





