Flight controller কঠোর real-time flight loop চালায়। Companion SBC ভিডিও, routing, API ও external communication সামলায়। Mission Control direct USB, LAN path বা remote relay বেছে নেয়, দায়িত্বগুলো মেশায় না।
End-to-end flow লক্ষ্য architecture হিসেবে বর্ণিত; KairOS measurements না হওয়া পর্যন্ত latency ও rates design targets।
KairOS repository ↗এই পৃষ্ঠায় +
Onboard দুই computer — ভিন্ন দায়িত্ব
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 browser-এ চলে। WebSerial দিয়ে সরাসরি FC, LAN দিয়ে Drone Agent অথবা MQTT/Convex ও WebRTC signaling দিয়ে remote relay-তে যেতে পারে। WFB-ng ব্যবহারে Ground Agent যোগ হয় এবং radio reception-কে বোধগম্য local web ব্যবস্থায় রূপান্তর করে।
Telemetry, command ও ভিডিওর পূর্ণ চক্র
FC → Agent
MAVLink UART সাধারণত 115200–921600 baud-এ চলে; agent heartbeat অপেক্ষা করে firmware শনাক্ত করে।
Agent → local consumers
Router raw MAVLink IPC socket, WebSocket, cloud service ও health state-এ বিতরণ করে।
Agent → cloud
লক্ষ্য ব্যবস্থা প্রায় 2 Hz-এ telemetry এবং HTTP/MQTT paths দিয়ে status প্রকাশ করে।
Camera → browser
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 বদলায়।
সরাসরি USB, local network ও remote P2P
| Mode | Transport | কখন ব্যবহার করবেন | লক্ষ্য মান |
|---|---|---|---|
| সরাসরি USB | WebSerial → FC, agent লাগে না | Bench, configuration, calibration, firmware | Design target <10 ms |
| সরাসরি LAN | REST :8080, MAVLink WS :8765, WHEP :8889 | Indoor, short range, development, field LAN | লক্ষ্য: ভিডিও 50–150 ms; telemetry <100 ms |
| দূরবর্তী P2P | 4G/Internet, MQTT SDP signaling, WebRTC, Convex | Remote observation ও দ্বিতীয় 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 অন্য services-এ binary frames দেয়।
- 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 দিয়ে খোলে; শুরুর আগে উপলব্ধ 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 queue কমায়, কিন্তু প্রকৃত latency capture, encoder, bitrate, FEC, radio, network ও browser decode-এ নির্ধারিত হয়। KairOS নির্দিষ্ট 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 → BrowserField node radio reception-কে local interfaces-এ বদলায়
| Client | পথ |
|---|---|
| ল্যাপটপ | Wi‑Fi AP, Ethernet বা USB CDC-NCM tether |
| ফোন / tablet | একই local 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 state |
| 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() ডাকে।
Protocol
MAV_CMD_COMPONENT_ARM_DISARM, command #400 তৈরি হয়।
Transport
Frame WebSocket/LAN বা Convex/cloud path দিয়ে Agent-এ যায়।
Serial
Agent command FC-তে পাঠায়, pre-arm checks-এর arbiter সেজে থাকে না।
FC validation
Firmware sensors, GPS, battery, safety switch, EKF ও configured failsafes যাচাই করে।
State confirmation
HEARTBEAT base_mode bit 7 ও ACK IPC/MQTT দিয়ে ফেরে; confirmation-এর পরেই UI ARMED দেখায়।

