Pengendali Penerbangan menjalankan loop penerbangan waktu nyata ketat. SBC pendamping menangani video, perutean, API, dan komunikasi eksternal. Mission Control memilih USB langsung, LAN, atau relai jarak jauh sambil menjaga pemisahan tanggung jawabnya.
Alur menyeluruh dijelaskan sebagai arsitektur yang ditargetkan; latensi dan frekuensi tetap menjadi target rancangan sampai pengukuran KairOS tersedia.
Repositori KairOS ↗Pada halaman ini +
Dua komputer di wahana—tanggung jawab berbeda
Pengendali Penerbangan mengendalikan motor, stabilisasi, GPS, dan sensor. Komputer pendamping—Raspberry Pi, Radxa, Jetson, atau SBC Linux lainnya—menjalankan KairOS Drone Agent dan tidak menggantikan FC: ia menambahkan video, relai telemetri, konektivitas cloud, radio, REST API, dan ekstensi.
Di darat, Mission Control berjalan dalam peramban. Sistem dapat mengakses FC langsung melalui WebSerial, Drone Agent melalui LAN, atau relai jarak jauh melalui MQTT/Convex dan pensinyalan WebRTC. Ground Agent ditambahkan untuk skenario WFB-ng dan mengubah penerimaan radio menjadi sistem web lokal yang mudah diakses.
Putaran lengkap telemetri, perintah, dan video
FC → Agen
UART MAVLink biasanya beroperasi pada 115200–921600 baud; agen menunggu heartbeat dan mengidentifikasi firmware.
Agen → konsumen lokal
Router mendistribusikan MAVLink mentah ke soket IPC, WebSocket, layanan cloud, dan keadaan kesehatan.
Agen → cloud
Sistem yang ditargetkan memublikasikan telemetri sekitar 2 Hz dan status melalui jalur HTTP/MQTT.
Kamera → peramban
Tangkapan V4L2 melewati pengodean H.264, MediaMTX/RTSP, dan transportasi WHEP, WebRTC, atau WFB-ng yang dipilih.
GCS → FC
Perintah arm, mode, misi, dan lainnya kembali melalui jalur terpilih yang sama; FC menegakkan aturan pre-arm.
ACK → UI
Konfirmasi perintah dan heartbeat/keadaan terbaru kembali, lalu UI memperbarui statusnya.
USB langsung, LAN, dan P2P jarak jauh
| Mode | Transportasi | Kapan digunakan | Target rancangan |
|---|---|---|---|
| USB langsung | WebSerial → FC, tanpa memerlukan agen | Meja uji, konfigurasi, kalibrasi, firmware | Target rancangan <10 ms |
| LAN langsung | REST :8080, MAVLink WS :8765, WHEP :8889 | Dalam ruangan, jarak dekat, pengembangan, LAN lapangan | Target: video 50–150 ms; telemetri <100 ms |
| P2P jarak jauh | 4G/Internet, pensinyalan SDP MQTT, WebRTC, Convex | Pengamatan jarak jauh dan jalur sekunder | Target: video 100–300 ms; telemetri 2–5 Hz |
Transportasi otomatis seharusnya terlebih dahulu mencari jalur LAN selama sekitar empat detik, kemudian berpindah ke pensinyalan P2P dengan jendela sekitar empat belas detik. Ini adalah interval rancangan: bergantung pada jaringan dan bukan SLA KairOS.
Router menangani heartbeat, aliran, dan beberapa klien
- Agen mengirim heartbeat komputer pendamping pada 1 Hz dengan MAV_TYPE_ONBOARD_CONTROLLER.
- Setelah heartbeat FC, agen meminta sikap, GPS, baterai, RC, dan sensor.
- Permintaan aliran diulang sekitar setiap 30 detik agar tetap bekerja setelah FC dimulai ulang atau berubah keadaan.
- Port umum: /dev/ttyS0, /dev/ttyUSB0, /dev/ttyACM*; profil papan menentukan prioritas penemuan otomatis.
- Soket IPC /run/kairos/mavlink.sock membawa bingkai biner ke layanan lain.
- Mission Control mengurai MAVLink v2 dengan CRC; ArduPilot/PX4 menggunakan MAVLink, sedangkan Betaflight/iNav menggunakan 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 relayDari tangkapan V4L2 hingga pemutaran H.264 natif
Tangkap
USB UVC atau MIPI CSI dibuka melalui V4L2; format dan resolusi yang tersedia diperiksa sebelum mulai.
Kodekan
ffmpeg menggunakan H.264 high profile, level 4.1, yuv420p, dan flag latensi rendah; encoder perangkat keras dipilih jika tersedia.
Publikasikan
Aliran terkode dipublikasikan ke MediaMTX/RTSP dan menjadi sumber bagi transportasi berikutnya.
LAN
WHEP mengirim WebRTC langsung ke peramban lokal.
Jarak jauh
MQTT membawa pensinyalan SDP, setelah itu media dikirim melalui WebRTC P2P atau, jika diperlukan, relai.
Radio
wfb_tx mengirim H.264 melalui WFB-ng; Ground Agent menerimanya lalu memublikasikan ulang secara lokal.
Parameter nobuffer dan low_delay serta ukuran probe kecil mengurangi antrean, tetapi latensi sebenarnya bergantung pada tangkapan, encoder, bitrate, FEC, radio, jaringan, dan dekode peramban. KairOS akan memublikasikan pengukuran untuk profil tertentu, bukan satu angka universal.
MQTT untuk data waktu nyata, Convex untuk keadaan dan antrean perintah
KairOS Agent yang ditargetkan memublikasikan telemetri MQTT sekitar 2 Hz. Jembatan MQTT-ke-Convex mengagregasi keadaan dengan debounce sekitar tiga detik per perangkat, sedangkan peramban menerima kueri reaktif. Perintah ditulis ke Convex; polling agen mengambil item tertunda, mengubahnya menjadi MAVLink, dan mengembalikan 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 → BrowserSimpul lapangan mengubah penerimaan radio menjadi antarmuka lokal
| Klien | Jalur |
|---|---|
| Laptop | AP Wi-Fi, Ethernet, atau tethering USB CDC-NCM |
| Ponsel / tablet | Peramban pada jaringan lokal yang sama atau jalur Android KairOS |
| Monitor lapangan | HDMI + kios Chromium |
| Mission Control | Profil stasiun darat dengan sumber video/telemetri |
Literal profilnya adalah ground-station. Profil ini berbagi satu basis kode dengan Drone Agent tetapi mengaktifkan layanan berbeda: penerimaan alih-alih pengodean di wahana, serta AP/tether/kiosk alih-alih orientasi awal yang berpusat pada FC.
Store memisahkan wahana, telemetri, misi, dan transportasi
| Store | Tanggung jawab |
|---|---|
| drone-manager | Simpul, jalur koneksi, dan wahana aktif |
| telemetry-store | Keadaan langsung dan buffer melingkar 300 sampel |
| mission-store | Waypoint, pola, validasi, keadaan unggahan |
| video-store | Sumber, transportasi, pemutaran, dan kesalahan |
| settings-store | Penyimpanan persisten IndexedDB dan migrasi |
| ground-station-store | Penerima, jalur relai, sumber, dan I/O lapangan |
Arm adalah rangkaian terkonfirmasi, bukan sakelar lokal
Niat operator
Mission Control memanggil protocol.arm() setelah konfirmasi eksplisit.
Protokol
MAV_CMD_COMPONENT_ARM_DISARM, perintah #400, dibuat.
Transportasi
Bingkai dikirim melalui WebSocket/LAN atau jalur Convex/cloud ke Agent.
Serial
Agent meneruskan perintah ke FC tanpa mengklaim kewenangan atas pemeriksaan pre-arm.
Validasi FC
Firmware memeriksa sensor, GPS, baterai, sakelar keselamatan, EKF, dan failsafe yang dikonfigurasi.
Konfirmasi keadaan
HEARTBEAT base_mode bit 7 dan ACK kembali melalui IPC/MQTT; UI menampilkan ARMED hanya setelah konfirmasi.

