تتولى وحدة التحكم بالطيران المنظومة الصارمة للطيران. يخدم الحاسوب المرافق الفيديو والتوجيه وAPI والاتصال الخارجي. يختار Mission Control اتصال USB المباشر أو مسار LAN أو المرحّل البعيد دون خلط مسؤولياتها.
وُصف التدفق الكامل بوصفه بنية مستهدفة؛ ويبقى زمن التأخر والترددات أهداف تصميم حتى قياسها في KairOS.
مستودع KairOS ↗في هذه الصفحة +
حاسوبان على متن المركبة — مسؤوليات مختلفة
تتحكم وحدة التحكم بالطيران في المحركات والتثبيت وGPS والمستشعرات. يشغّل الحاسوب المرافق، Raspberry Pi أو Radxa أو Jetson أو غيره من حواسيب Linux أحادية اللوحة، KairOS Drone Agent ولا يستبدل FC؛ بل يضيف الفيديو وترحيل القياس عن بُعد والاتصال السحابي واللاسلكي وREST API والتوسعات.
على الأرض، يعمل Mission Control في المتصفح. يمكنه مخاطبة FC مباشرة عبر WebSerial أو Drone Agent عبر LAN، أو مرحّل بعيد عبر MQTT/Convex وإشارات WebRTC. يُضاف Ground Agent في سيناريو WFB-ng ويحوّل الاستقبال اللاسلكي إلى منظومة ويب محلية واضحة.
الدورة الكاملة للقياس عن بُعد والأوامر والفيديو
FC → الوكيل
يعمل MAVLink UART عادة ضمن نطاق 115200–921600 باود؛ وينتظر الوكيل heartbeat ويحدد البرنامج الثابت.
الوكيل → المستهلكون المحليون
يوزع الموجّه MAVLink الخام على مقبس IPC وWebSocket والخدمة السحابية وحالة الصحة.
الوكيل → السحابة
تنشر المنظومة المستهدفة القياس عن بُعد بنحو 2 Hz والحالة عبر مسارات HTTP/MQTT.
الكاميرا → المتصفح
يمر التقاط V4L2 بترميز H.264 وMediaMTX/RTSP ثم بوسيلة نقل WHEP أو WebRTC أو WFB-ng المختارة.
GCS → FC
تعود أوامر التسليح والوضع والمهمة وغيرها عبر المسار المختار نفسه؛ وتطبق FC قواعد ما قبل التسليح.
ACK → الواجهة
تعود إقرارات الأوامر وheartbeat والحالة الجديدة، ثم تغيّر الواجهة الحالة.
USB مباشر وشبكة محلية وP2P بعيد
| الوضع | وسيلة النقل | متى يُستخدم | القيمة المستهدفة |
|---|---|---|---|
| USB مباشر | WebSerial → FC، دون حاجة إلى وكيل | منصة الاختبار والإعداد والمعايرة والبرامج الثابتة | هدف التصميم <10 ms |
| LAN مباشر | REST :8080, MAVLink WS :8765, WHEP :8889 | داخل المباني والمدى القصير والتطوير والشبكة المحلية الميدانية | الهدف: الفيديو 50–150 ms؛ والقياس عن بُعد <100 ms |
| P2P بعيد | 4G/الإنترنت، وإشارات SDP عبر MQTT، وWebRTC، وConvex | المراقبة عن بُعد والمسار الثاني | الهدف: الفيديو 100–300 ms؛ والقياس عن بُعد 2–5 Hz |
ينبغي للنقل التلقائي البحث أولًا عن مسار LAN لنحو أربع ثوانٍ، ثم الانتقال إلى إشارات P2P ضمن نافذة نحو أربع عشرة ثانية. هذه فترات تصميم تعتمد على الشبكة، ولا تمثل اتفاقية مستوى خدمة KairOS.
يخدم الموجّه heartbeat والتدفقات وعدة عملاء
- يرسل الوكيل heartbeat للحاسوب المرافق بتردد 1 Hz مع MAV_TYPE_ONBOARD_CONTROLLER.
- بعد heartbeat من FC، يطلب الاتجاه وGPS والبطارية وRC والمستشعرات.
- تُكرر طلبات التدفق كل 30 ثانية تقريبًا لتجاوز إعادة تشغيل FC أو تغير حالته.
- المنافذ المعتادة: /dev/ttyS0 و/dev/ttyUSB0 و/dev/ttyACM*؛ ويحدد ملف اللوحة أولوية البحث التلقائي.
- يحمل مقبس IPC في /run/kairos/mavlink.sock الإطارات الثنائية إلى الخدمات الأخرى.
- يحلل Mission Control رسائل MAVLink v2 مع CRC؛ ويستخدم 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 relayمن التقاط V4L2 إلى تشغيل H.264 الأصلي
الالتقاط
تُفتح USB UVC أو MIPI CSI عبر V4L2؛ ويُتحقق من التنسيق والدقة المتاحين قبل التشغيل.
الترميز
يستخدم ffmpeg ملف H.264 high profile والمستوى 4.1 وyuv420p وخيارات تقليل التأخر؛ ويُختار المشفّر العتادي عند توفره.
النشر
يُنشر التدفق المشفر في MediaMTX/RTSP ويصبح مصدرًا لوسائل النقل التالية.
LAN
يقدّم WHEP تدفق WebRTC مباشرة إلى المتصفح المحلي.
عن بُعد
ينقل MQTT إشارات SDP، ثم تنتقل الوسائط عبر WebRTC P2P أو عبر مرحّل عند الحاجة.
الاتصال اللاسلكي
يرسل wfb_tx تدفق H.264 عبر WFB-ng، ويستقبله Ground Agent ثم يعيد نشره محليًا.
تقلل معلمات nobuffer وlow_delay وحجم probe الصغير الطابور، لكن زمن التأخر الفعلي تحدده عملية الالتقاط والمشفّر ومعدل البت وFEC والراديو والشبكة وفك الترميز في المتصفح. سينشر KairOS قياسات لملفات محددة، لا رقمًا عالميًا واحدًا.
MQTT للبيانات الآنية، وConvex للحالة وطابور الأوامر
ينشر وكيل KairOS المستهدف القياس عن بُعد في MQTT بنحو 2 Hz. يجمع جسر MQTT-to-Convex الحالة مع تأخير تجميعي نحو ثلاث ثوانٍ لكل جهاز، ويتلقى المتصفح استعلامات تفاعلية. تُكتب الأوامر في Convex، ويجلب اقتراع الوكيل العنصر المعلق ويحوّله إلى 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تحول العقدة الميدانية الاستقبال اللاسلكي إلى واجهات محلية
| العميل | المسار |
|---|---|
| حاسوب محمول | Wi‑Fi AP أو Ethernet أو مشاركة اتصال USB CDC-NCM |
| هاتف / جهاز لوحي | متصفح على الشبكة المحلية نفسها أو مسار KairOS لنظام Android |
| شاشة ميدانية | HDMI + كشك Chromium |
| Mission Control | ملف المحطة الأرضية مع مصادر الفيديو والقياس عن بُعد |
الاسم الحرفي للملف هو ground-station. يستخدم قاعدة الكود نفسها مع Drone Agent، لكن بمجموعة مختلفة من الخدمات المفعلة: الاستقبال بدلًا من الترميز على المركبة، ونقطة الاتصال والمشاركة والكشك بدلًا من تهيئة متمحورة حول FC.
تفصل المخازن المركبة والقياس عن بُعد والمهمة والنقل
| المخزن | المسؤولية |
|---|---|
| drone-manager | العقد ومسارات الاتصال والمركبة النشطة |
| telemetry-store | الحالة المباشرة ومخزن حلقي لـ300 عينة |
| mission-store | نقاط المسار والأنماط والتحقق وحالة التحميل |
| video-store | المصادر ووسيلة النقل والتشغيل والأخطاء |
| settings-store | الحفظ الدائم في IndexedDB وعمليات الانتقال |
| ground-station-store | المستقبلات ومسار الترحيل والمصادر ومدخلات ومخرجات الميدان |
التسليح سلسلة مؤكدة، لا تبديل محلي
نية المشغّل
يستدعي Mission Control الدالة protocol.arm() بعد تأكيد صريح.
البروتوكول
يُنشأ MAV_CMD_COMPONENT_ARM_DISARM، الأمر رقم #400.
النقل
ينتقل الإطار عبر WebSocket/LAN أو مسار Convex/السحابة إلى الوكيل.
المنفذ التسلسلي
يمرر الوكيل الأمر إلى FC ولا يحل محلها في تحكيم فحوص ما قبل التسليح.
تحقق FC
يتحقق البرنامج الثابت من المستشعرات وGPS والبطارية ومفتاح السلامة وEKF وإجراءات الإخفاق المضبوطة.
تأكيد الحالة
تعود البتة 7 من HEARTBEAT base_mode وACK عبر IPC/MQTT؛ ولا تعرض الواجهة ARMED إلا بعد التأكيد.

