KONSEP DAN PENGEMBANGANOLAHRAGA TANPA AWAK · #bezpiLOTa · KAIROS DRONE AGENTDokumentasi
#bezpiLOTa→Drone Agent→API & SDK
KairOS / DRONE AGENT / 03

REST untuk integrasi, WebSocket MAVLink mentah untuk data waktu nyata, topik MQTT berversi untuk relai jarak jauh, dan SDK Python untuk driver serta ekstensi. Bagian ini menetapkan port, endpoint, izin, dan contoh antarmuka milik KairOS yang ditargetkan.

DIRENCANAKAN

API dan SDK dijelaskan sebagai kontrak yang ditargetkan KairOS; versi stabil dan jaminan kompatibilitas belum dirilis.

Repositori KairOS ↗
08endpoint REST inti
JSONrespons REST
WSMAVLink mentah
KEYautentikasi izin
01
REST API / :8080

Delapan endpoint inti

Antarmuka kendali mendengarkan port 8080 dan mengembalikan JSON. Sebagian besar permintaan memerlukan header X-KairOS-Key. Setiap kunci memiliki tingkat izin sehingga pembacaan telemetri dapat dipisahkan dari perintah penerbangan, unggahan misi, dan operasi administratif.

MetodeEndpointData atau tindakan
GET/api/statusKesehatan, waktu aktif, koneksi FC, peran, versi agen
GET/api/telemetrySikap, GPS, baterai, kanal RC, mode penerbangan
GET/api/paramsCache parameter FC dengan penyaringan awalan
POST/api/commandsLepas landas, mendarat, goto, RTL, arm, disarm
GET/api/configKonfigurasi agen saat ini dalam JSON
PUT/api/configUbah kunci dan muat ulang layanan terkait tanpa berhenti
GET/api/servicesrunning, stopped, atau failed untuk layanan yang dikelola
GET/api/logsPeristiwa terstruktur dengan penyaring layanan dan tingkat
bashTelemetri melalui REST
curl -s http://<board-ip>:8080/api/telemetry \
  -H "X-KairOS-Key: <your-key>" | jq
Antarmuka yang ditargetkan KairOS: perintah baru dapat dijalankan setelah komponen terkait dirilis.
jsonContoh respons JSON
{
  "armed": true,
  "mode": "GUIDED",
  "battery": { "voltage": 22.4, "pct": 78 },
  "gps": { "fix": 3, "satellites": 14, "alt": 50.2 },
  "attitude": { "roll": 0.02, "pitch": -0.01, "yaw": 182.5 }
}
02
CONTOH KLIEN

Baca telemetri dan kirim perintah dari Python

pythonKlien KairOS yang ditargetkan—hanya simulator hingga validasi penerbangan
import httpx

BASE = "http://<board-ip>:8080"
headers = {"X-KairOS-Key": "<your-key>"}

telem = httpx.get(f"{BASE}/api/telemetry", headers=headers).json()
print(telem["battery"]["pct"], telem["gps"]["satellites"])

httpx.post(
    f"{BASE}/api/commands",
    headers=headers,
    json={"command": "takeoff", "params": {"alt": 10}},
)
Antarmuka yang ditargetkan KairOS: perintah baru dapat dijalankan setelah komponen terkait dirilis.
03
PORT & TOPIK

Satu aliran MAVLink, beberapa transportasi

AntarmukaPort atau topikTujuan
REST:8080Status, telemetri, konfigurasi, layanan, perintah
MAVLink WebSocket:8765MAVLink v2 biner dua arah
WebRTC WHEP:8889Video lokal
Statuskairos/v1/agents/{agent_id}/statusKesehatan dan ketersediaan agen yang disimpan
Telemetrikairos/v1/agents/{agent_id}/telemetryAliran keadaan wahana
Peristiwakairos/v1/agents/{agent_id}/eventsPeristiwa dan peringatan yang dapat dipantau
Perintahkairos/v1/agents/{agent_id}/commandsPerintah ke agen dengan QoS 1
ACKkairos/v1/agents/{agent_id}/acks/{command_id}Hasil perintah tertentu
Pensinyalan WebRTCkairos/v1/agents/{agent_id}/video/webrtc/offerPenawaran SDP untuk video P2P

Router menerima satu aliran dari FC dan mendistribusikannya ke beberapa konsumen sekaligus: GCS peramban melalui WebSocket 8765, klien SITL/rekayasa melalui TCP 5760, dan alat lama melalui UDP 14550. WebSocket tidak memiliki pembungkus JSON: isinya adalah bingkai MAVLink v2 biner yang kompatibel pada tingkat protokol.

javascriptWebSocket peramban KairOS yang ditargetkan
const ws = new WebSocket("ws://<board-ip>:8765");
ws.binaryType = "arraybuffer";

ws.onmessage = (event) => {
  decodeMavlink(new Uint8Array(event.data));
};

ws.send(encodeCommandLong(sysid, compid, cmd, params));
Antarmuka yang ditargetkan KairOS: perintah baru dapat dijalankan setelah komponen terkait dirilis.
04
SDK PYTHON

Kontrak untuk driver dan logika di wahana

KelasTujuan
CameraDriverKamera CSI, USB UVC, IP, dan SDK vendor
GimbalDriverPan, tilt, roll, dan telemetri gimbal
LidarDriverPerangkat LiDAR dan pengukur jarak
GpsDriverPenerima GPS/GNSS
EscDriverDriver ESC dan telemetri balik
VisionClientBingkai dan deteksi dari bus visi di wahana
05
KEAMANAN

Izin kunci API membatasi ruang tindakan

TingkatOperasi yang diizinkan
readTelemetri, status, konfigurasi, log, dan parameter tanpa perubahan keadaan
commandPerintah penerbangan; mencakup read
missionUnggah dan jalankan berkas misi; mencakup command
configUbah konfigurasi agen dan FC; mencakup read
adminPembaruan, mulai ulang layanan, pengelolaan kunci, dan akses penuh

Jaga kerahasiaan kunci dan jangan memasukkannya ke log publik, tangkapan layar, atau bundel klien. Integrasi peramban sebaiknya menggunakan kredensial berjangka pendek dengan lingkup terbatas, bukan kunci admin permanen.

Antarmuka asisten AI MCP: analisis misi melalui percakapan, peta, telemetri, panggilan alat, log peristiwa, dan izin akses.
ANTARMUKA / CONTOH VISUALKonteks untuk perintah, akses, dan audit

Panel izin dan log panggilan alat tampil di samping misi. Ilustrasi menghubungkan izin dengan konteks operator; kontrak API KairOS dijelaskan dalam teks halaman.

06
INTEGRITAS PESAN

Penandatanganan MAVLink v2 tanpa menyimpan kunci pada agen

Stasiun darat membuat kunci 32 byte dan menyimpannya di peramban sebagai kunci Web Crypto yang tidak dapat diekstrak. Endpoint kemampuan memeriksa firmware dan ketersediaan parameter penandatanganan. Setelah pendaftaran satu kali, pengendali penerbangan memverifikasi tag HMAC-SHA256 pada setiap bingkai keluar. Agen tetap menjadi saluran transparan dan tidak menyimpan kunci penandatanganan.

httpPemeriksaan kemampuan
GET /api/mavlink/signing/capability
X-KairOS-Key: <your-key>

{
  "supported": true,
  "reason": "ok",
  "firmware_name": "ArduPilot",
  "firmware_version": "4.5.0",
  "signing_params_present": true
}
Antarmuka yang ditargetkan KairOS: perintah baru dapat dijalankan setelah komponen terkait dirilis.