КОНЦЕПЦИЯ И РАЗРАБОТКАБЕСПИЛОТНЫЙ СПОРТ · #bezpiLOTa · KAIROS DRONE AGENTДокументация
#bezpiLOTa→Getting Started→How It Works
GETTING STARTED / ARCHITECTURE

Flight Controller выполняет жёсткий полётный контур. Companion SBC обслуживает видео, маршрутизацию, API и внешнюю связь. Mission Control выбирает прямой USB, LAN‑путь или remote relay, не смешивая их ответственность.

CONCEPT

End-to-end поток описан как целевая архитектура; задержка и частоты остаются проектными ориентирами до измерений KairOS.

Репозиторий KairOS ↗
03connection modes
1 Hzcompanion heartbeat
2 Hzцелевая cloud telemetry
MAVLINKосновной протокол
01
THE BIG PICTURE

Два компьютера на борту — разные обязанности

Flight Controller управляет motors, stabilization, GPS и sensors. Companion computer — Raspberry Pi, Radxa, Jetson или другой Linux SBC — запускает KairOS Drone Agent и не заменяет FC: он добавляет video, telemetry relay, cloud connectivity, radio, REST API и extensions.

На земле Mission Control работает в браузере. Он может обращаться к FC напрямую по WebSerial, к Drone Agent по LAN, либо к удалённому relay через MQTT/Convex и WebRTC signaling. Ground Agent добавляется в WFB-ng‑сценарии и превращает radio receive в понятный локальный web‑контур.

02
DATA FLOW

Полный круг telemetry, command и video

01

FC → Agent

MAVLink UART обычно работает в диапазоне 115200–921600 baud; agent ждёт heartbeat и определяет firmware.

02

Agent → local consumers

Router распределяет raw MAVLink в IPC socket, WebSocket, cloud service и health state.

03

Agent → cloud

Целевой контур публикует telemetry примерно 2 Hz и status через HTTP/MQTT paths.

04

Camera → browser

V4L2 capture проходит H.264 encode, MediaMTX/RTSP и выбранный WHEP, WebRTC или WFB-ng transport.

05

GCS → FC

Arm, mode, mission и другие команды идут обратно тем же выбранным path; FC выполняет pre-arm rules.

06

ACK → UI

Command acknowledgement и новые heartbeat/state возвращаются, после чего UI меняет статус.

03
THREE CONNECTION MODES

Прямой USB, локальная сеть и remote P2P

РежимТранспортКогда использоватьЦелевой ориентир
Direct USBWebSerial → FC, agent не нуженBench, configuration, calibration, firmwareПроектная цель <10 ms
LAN DirectREST :8080, MAVLink WS :8765, WHEP :8889Indoor, short range, development, field LANЦель: video 50–150 ms; telemetry <100 ms
P2P remote4G/Internet, MQTT SDP signaling, WebRTC, ConvexУдалённое наблюдение и second pathЦель: video 100–300 ms; telemetry 2–5 Hz

Auto transport должен сначала искать LAN‑путь около четырёх секунд, затем переходить к P2P signaling с окном около четырнадцати секунд. Это проектные интервалы: они зависят от сети и не являются KairOS SLA.

05
THE VIDEO PIPELINE

От V4L2 capture до native H.264 playback

01

Capture

USB UVC или MIPI CSI открывается через V4L2; доступный format и resolution проверяются до запуска.

02

Encode

ffmpeg использует H.264 high profile, level 4.1, yuv420p и low-latency flags; hardware encoder выбирается при наличии.

03

Publish

Encoded stream публикуется в MediaMTX/RTSP и становится источником дальнейших transports.

04

LAN

WHEP выдаёт WebRTC напрямую на локальный browser.

05

Remote

MQTT переносит SDP signaling, после чего media идёт P2P WebRTC либо через relay при необходимости.

06

Radio

wfb_tx отправляет H.264 по WFB-ng, Ground Agent принимает и повторно публикует локально.

Параметры nobuffer, low_delay и малый probe size уменьшают очередь, но реальная latency определяется capture, encoder, bitrate, FEC, radio, network и browser decode. KairOS будет публиковать измерения по конкретным профилям, а не одну универсальную цифру.

Видеокабина с H.264-потоком: курс, скорость, высота, GPS, батарея, мини-карта, индикатор записи и полётные команды.
ИНТЕРФЕЙС / ВИЗУАЛЬНЫЙ ПРИМЕРВидеопоток на операторской поверхности

Изображение камеры дополнено HUD, мини-картой, режимом полёта и индикатором записи. На экране отдельно обозначен формат H.264.

06
CLOUD RELAY

MQTT для real-time, Convex для состояния и command queue

Целевой KairOS Agent публикует telemetry в MQTT примерно 2 Hz. MQTT-to-Convex bridge агрегирует состояние с debounce около трёх секунд на устройство, а browser получает reactive queries. Команды записываются в Convex, agent polling забирает pending item, преобразует в MAVLink и возвращает ACK.

textRemote data paths
Telemetry: FC → Agent → MQTT → bridge → Convex → Mission Control
Commands: Mission Control → Convex queue → Agent poll → MAVLink → FC
Video: Camera → Agent → MQTT SDP → P2P WebRTC → Browser
07
GROUND AGENT ROLE

Полевой узел переводит radio receive в локальные интерфейсы

КлиентПуть
LaptopWi‑Fi AP, Ethernet или USB CDC-NCM tether
Phone / tabletBrowser в той же локальной сети или KairOS Android track
Field monitorHDMI + Chromium kiosk
Mission ControlGround-station profile с источниками video/telemetry

Profile literal называется ground-station. Это один codebase с Drone Agent, но другой набор enabled services: receive вместо onboard encode, AP/tether/kiosk вместо FC‑centric onboarding.

08
MISSION CONTROL STATE

Stores разделяют vehicle, telemetry, mission и transport

StoreОтветственность
drone-managerNodes, connection paths и active vehicle
telemetry-storeЖивое состояние и ring buffer на 300 samples
mission-storeWaypoints, patterns, validation, upload state
video-storeSources, transport, playback и errors
settings-storeIndexedDB persistence и migrations
ground-station-storeReceivers, relay path, sources и field IO
Обзор флота из шести агентов: карточки с видео, телеметрией и ресурсами, фильтры online, stale и offline.
ИНТЕРФЕЙС / ВИЗУАЛЬНЫЙ ПРИМЕРСостояния отдельных узлов в обзоре флота

У каждого агента собственные видео, телеметрия и показатели ресурсов. Фильтры и статусы показывают, почему доступность узла и свежесть его данных нужно различать.

09
WHAT HAPPENS WHEN YOU ARM

Arm — это подтверждённая цепочка, а не локальное переключение

01

Operator intent

Mission Control вызывает protocol.arm() после явного подтверждения.

02

Protocol

Создаётся MAV_CMD_COMPONENT_ARM_DISARM, command #400.

03

Transport

Frame идёт через WebSocket/LAN либо Convex/cloud path к Agent.

04

Serial

Agent передаёт command во FC и не выдаёт себя за арбитра pre-arm checks.

05

FC validation

Firmware проверяет sensors, GPS, battery, safety switch, EKF и configured failsafes.

06

State confirmation

HEARTBEAT base_mode bit 7 и ACK возвращаются через IPC/MQTT; UI показывает ARMED только после подтверждения.