Flight controller real-time flight loop चलाता है। Companion SBC वीडियो, routing, API और बाहरी communication संभालता है। Mission Control direct USB, LAN path या remote relay चुनता है, उनकी जिम्मेदारियाँ नहीं मिलाता।
End-to-end flow लक्षित architecture है; KairOS measurements तक latency और rates design targets हैं।
KairOS repository ↗इस पृष्ठ पर +
Onboard दो computers — अलग जिम्मेदारियाँ
Flight controller motors, stabilization, GPS और sensors संभालता है। Raspberry Pi, Radxa, Jetson या अन्य Linux SBC companion computer KairOS Drone Agent चलाता है और FC की जगह नहीं लेता: यह वीडियो, telemetry relay, cloud connectivity, radio, REST API और extensions जोड़ता है।
Ground पर Mission Control ब्राउज़र में चलता है। वह WebSerial से सीधे FC, LAN से Drone Agent या MQTT/Convex और WebRTC signaling से remote relay तक पहुँच सकता है। WFB-ng उपयोग में Ground Agent जोड़ा जाता है और radio reception को समझने योग्य local web system में बदलता है।
Telemetry, command और वीडियो का पूरा चक्र
FC → Agent
MAVLink UART सामान्यतः 115200–921600 baud पर चलता है; agent heartbeat की प्रतीक्षा करके firmware पहचानता है।
Agent → स्थानीय consumers
Router raw MAVLink को IPC socket, WebSocket, cloud service और health state में वितरित करता है।
Agent → cloud परत
लक्षित प्रणाली लगभग 2 Hz पर telemetry और HTTP/MQTT paths से status प्रकाशित करती है।
Camera → ब्राउज़र
V4L2 capture H.264 encode, MediaMTX/RTSP और चुने WHEP, WebRTC या WFB-ng transport से गुजरता है।
GCS → FC
Arm, mode, mission और अन्य commands उसी चुने path से लौटती हैं; FC pre-arm rules लागू करता है।
ACK → UI
Command acknowledgement और नया heartbeat/state लौटने पर UI status बदलता है।
Direct USB, local network और remote P2P
| Mode | Transport | कब उपयोग करें | लक्षित मान |
|---|---|---|---|
| सीधा USB | WebSerial → FC, agent आवश्यक नहीं | Bench, सेटअप, calibration, firmware | Design target <10 ms |
| सीधा LAN | REST :8080, MAVLink WS :8765, WHEP :8889 | Indoor, कम दूरी, development, field LAN | लक्ष्य: वीडियो 50–150 ms; telemetry <100 ms |
| दूरस्थ P2P | 4G/Internet, MQTT SDP signaling, WebRTC, Convex | दूरस्थ निगरानी और दूसरा path | लक्ष्य: वीडियो 100–300 ms; telemetry 2–5 Hz |
Auto transport पहले लगभग चार seconds LAN path खोजेगा, फिर लगभग चौदह seconds की window में P2P signaling पर जाएगा। ये design intervals हैं: network पर निर्भर हैं और KairOS SLA नहीं हैं।
Router heartbeat, streams और अनेक clients संभालता है
- Agent MAV_TYPE_ONBOARD_CONTROLLER के साथ 1 Hz companion heartbeat भेजता है।
- FC heartbeat के बाद attitude, GPS, battery, RC और sensors माँगता है।
- FC reboot या state change से उबरने के लिए stream requests लगभग हर 30 seconds दोहराई जाती हैं।
- सामान्य ports: /dev/ttyS0, /dev/ttyUSB0, /dev/ttyACM*; board profile auto-search priority तय करता है।
- IPC socket /run/kairos/mavlink.sock binary frames अन्य services तक पहुँचाता है।
- Mission Control CRC के साथ MAVLink v2 parse करता है; ArduPilot/PX4 MAVLink और Betaflight/iNav MSP v1/v2 उपयोग करते हैं।
Flight Controller UART
│
▼
kairos-mavlink router
├─ /run/kairos/mavlink.sock
├─ /run/kairos/state.sock
├─ WebSocket :8765
├─ TCP :5760 / UDP :14550
└─ optional cloud relayV4L2 capture से native H.264 playback तक
कैप्चर
USB UVC या MIPI CSI V4L2 से खुलता है; launch से पहले उपलब्ध format और resolution जाँचे जाते हैं।
एन्कोड
ffmpeg H.264 high profile, level 4.1, yuv420p और low-latency flags उपयोग करता है; उपलब्ध होने पर hardware encoder चुना जाता है।
प्रकाशित करें
Encoded stream MediaMTX/RTSP में प्रकाशित होती है और आगे के transports का source बनती है।
LAN
WHEP सीधे local browser को WebRTC देता है।
दूरस्थ
MQTT SDP signaling ले जाता है, जिसके बाद media P2P WebRTC या आवश्यकता होने पर relay से जाता है।
रेडियो
wfb_tx WFB-ng से H.264 भेजता है; Ground Agent प्राप्त करके locally फिर प्रकाशित करता है।
nobuffer, low_delay और छोटे probe size queues घटाते हैं, लेकिन वास्तविक latency capture, encoder, bitrate, FEC, radio, network और browser decode से तय होती है। KairOS specific profiles के measurements प्रकाशित करेगा, एक universal संख्या नहीं।
Real-time के लिए MQTT, state और command queue के लिए Convex
लक्षित KairOS Agent लगभग 2 Hz पर MQTT में telemetry प्रकाशित करता है। MQTT-to-Convex bridge प्रति device लगभग तीन seconds debounce के साथ state aggregate करता है और browser reactive queries प्राप्त करता है। Commands Convex में लिखी जाती हैं; agent polling pending item लेकर MAVLink में बदलता है और ACK लौटाता है।
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फील्ड node radio reception को local interfaces में बदलता है
| Client | मार्ग |
|---|---|
| लैपटॉप | Wi‑Fi AP, Ethernet या USB CDC-NCM tether |
| फ़ोन / tablet | उसी स्थानीय network में browser या KairOS Android track |
| फील्ड monitor | HDMI + Chromium kiosk |
| Mission Control | वीडियो/telemetry sources वाला ground-station profile |
Profile literal ground-station है। Drone Agent के साथ codebase एक है, लेकिन enabled services अलग हैं: onboard encode के बजाय receive, FC-centric onboarding के बजाय AP/tether/kiosk।
Stores vehicle, telemetry, mission और transport अलग रखते हैं
| State store | ज़िम्मेदारी |
|---|---|
| drone-manager | Nodes, connection paths और active vehicle |
| telemetry-store | Live state और 300 samples का ring buffer |
| mission-store | Waypoints, patterns, validation और upload स्थिति |
| video-store | Sources, transport, playback और errors |
| settings-store | IndexedDB persistence और migrations |
| ground-station-store | Receivers, relay path, sources और field IO |
Arm पुष्ट sequence है, केवल local switch नहीं
Operator का निर्णय
स्पष्ट confirmation के बाद Mission Control protocol.arm() बुलाता है।
प्रोटोकॉल
MAV_CMD_COMPONENT_ARM_DISARM, command #400 बनाई जाती है।
डेटा परिवहन
Frame WebSocket/LAN या Convex/cloud path से Agent तक जाता है।
Serial
Agent command FC को भेजता है और स्वयं को pre-arm checks का निर्णायक नहीं मानता।
FC सत्यापन
Firmware sensors, GPS, battery, safety switch, EKF और configured failsafes जाँचता है।
स्थिति की पुष्टि
HEARTBEAT base_mode bit 7 और ACK IPC/MQTT से लौटते हैं; UI confirmation के बाद ही ARMED दिखाता है।

