Scheduling Analysis of UAV Flight Control Workloads using Raspberry Pi 5 Using PREEMPT_RT Linux
تُثبت هذه الورقة أنه في حين أن نواة لينكس القياسية غير مناسبة للتحكم في طيران الطائرات بدون طيار عالي التردد على جهاز Raspberry Pi 5 بسبب زمن التأخير المفرط، فإن نواة PREEMPT_RT تقلل بشكل كبير من تذبذب الأداء في أسوأ الحالات بنسبة تقارب 88%، رغم أن تباين التوقيت المتبقي يظل مدفوعاً بشكل أساسي بتنازع الذاكرة في الأجهزة.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
الصورة الكبيرة: هل يمكن لعقل هاتف ذكي أن يقود طائرة بدون طيار؟
تخيل أنك تقوم ببناء طائرة بدون طيار (درون). تقليديًا، كنت بحاجة إلى عقلين:
- الطيار: كمبيوتر صغير، سريع جدًا وبسيط (مثل المتحكم الدقيق - Microcontroller) يقوم بشيء واحد فقط: يمنع الطائرة من الاصطدام. إنه يستجيب في أجزاء من الميكروثانية.
- الملاح: كمبيوتر قوي (مثل Raspberry Pi أو Jetson) يقوم بـ "الأشياء الرائعة": التعرف على الوجوه، تخطيط مسارات معقدة، والتحليق في أسرء مع طائرات أخرى.
المشكلة هي أن وجود عقلين يضيف وزنًا، وأسلاكًا، وتعقيدًا. الحلم هو وضع كلا الوظيفتين على عقل واحد قوي (نظام على شريحة واحدة - SoC). ولكن إليك العقبة: العقول القوية عادة ما تشغل أنظمة تشغيل "عامة الأغراض" (مثل نظام Linux القياسي على حاسوبك المحمول). هذه الأنظمة رائعة في القيام بأشياء كثيرة في وقت واحد، لكنها سيئة جدًا في الدقة. إنها تشبه مدير مطعم مزدحم، بارع في خدمة 50 طاولة ولكنه سيئ جدًا في توقيت خروج "السوفليه" من الفرن في تمام الساعة 3:00 تمامًا.
هذه الورقة البحثية تسأل: هل يمكننا جعل كمبيوتر قوي يعمل بلوحة واحدة (Raspberry Pi 5) يقود طائرة بدون طيار بأمان باستخدام نسخة "الوقت الحقيقي" (Real-Time) من نظام Linux؟
التجربة: "اختبار الضغط"
قام الباحثون بإعداد محاكاة حيث تحتاج الطائرة بدون طيار إلى ضبط توازنها 255 مرة كل ثانية. هذا هو نبض حلقة التحكم. إذا استغرق الكمبيوتر حتى جزء ضئيل جدًا من الثانية لقول "مل بجهة اليسار"، فقد تترنح الطائرة أو تتحطم.
لقد اختبروا نسختين من نظام التشغيل على Raspberry Pi 5:
- Linux القياسي: النسخة "العادية" التي تجدها على أجهزة الكمبيوتر المكتبية.
- PREEMPT_RT Linux: نسخة "محصنة" حيث يُجبر النظام على التوقف عن أي شيء يفعله فورًا إذا احتاج أمر حرج (مثل الحفاظ على استقرار الطائرة) إلى الانتباه.
كما ألقوا بـ "اختبار ضغط" على النظام: جعلوا الكمبيوتر يقوم بعمليات حسابية ثقيلة، ويملأ الذاكرة، ويتعامل مع آلاف المهام الخلفية لمحاكاة سيناريو واقعي حيث تقوم الطائرة أيضًا برؤية حاسوبية وتخطيط مسار.
النتائج: "الازدحام المروري" مقابل "المسار السريع"
1. كارثة Linux القياسي (الازدحام المروري)
عندما تعرض نواة (Kernel) Linux القياسية للضغط، تصرفت مثل تقاطع طرق فوضوي في مدينة بدون إشارات مرور.
- المشكلة: عندما حان وقت "وقت الطيران!"، لم توقظ نواة Linux القياسية مهمة الطائرة فورًا. بدلاً من ذلك، وضعت الطلب في "قائمة مهام" (تسمى SoftIRQ) وقالت: "سأصل إلى ذلك عندما أنتهي من هذا الشيء الآخر".
- النتيجة: تحت الحمل الثقيل، انتظرت مهمة الطائرة أكثر من 9 مللي ثانية لتستيقظ.
- التشبيه: تخيل أنك طيار في قمرة القيادة. تضغط على الزر لإطلاق صاروخ. بدلًا من الإطلاق الفوري، يرسل الزر ملاحظة إلى عامل النظافة، الذي يضعها في كومة، ثم يذهب إلى غرفة الاستراحة ليحتسي القهوة، ثم يخبر الطيار بأن يطلق النار. بحلول الوقت الذي ينطلق فيه الصاروخ، يكون الهدف قد اختفى. الطائرة ستتحطم.
2. نجاح PREEMPT_RT (المسار السريع)
عندما قاموا بالتبديل إلى نواة PREEMPT_RT، تغير سلوك النظام تمامًا.
- الحل: هذه النسخة تعامل مهمة الطائرة كأنها شخصية هامة (VIP). بمجرد أن يرن المنبه، يوقف النظام كل شيء آخر فورًا، ويخلي المكتب، ويوقظ مهمة الطائرة.
- النتيسة: انخفض أسوأ تأخير من 9,000 ميكروثانية إلى 225 ميكروثانية.
- التشبيه: الآن، عندما تضغط على الزر، يقوم حارس أمن مخصص (نواة الوقت الحقيقي) بإخلاء الممر فورًا، ويدفع الجميع بعيدًا، ويرافق الطيار مباشرة إلى أدوات التحكم. الطائرة تحلق بسلاسة.
المفاجأة: الأمر لا يتعلق بالبرمجيات فقط (الجار المزعج)
إليك الجزء الأكثر إثارة للاهتمام في الورقة البحثية. حتى مع وجود "المسار السريع للـ VIP" (PREEMPT_RT)، لم تكن الطائرة سلسة تمامًا. كان لا يزال هناك قدر ضئيل من "الارتجاف" (Jitter).
لماذا؟
أدرك الباحثون أنه على الرغم من أن البرمجيات كانت تقوم بعملها بشكل مثالي، إلا أن الأجهزة (Hardware) كانت مزدحمة.
- التشبيه: تخيل أن مهمة الطائرة هي شخصية هامة (VIP) تجلس في غرفة خاصة (النواة 2). يتم خدمة الـ VIP فورًا. ومع ذلك، تشترك غرفة الـ VIP في مبرد مياه واحد وممر واحد مع الغرف الثلاث الأخرى (النواة 0، 1، و3). عندما تقيم الغرف الأخرى حفلة صاخبة (تشغيل مهام رؤية حاسوبية ثقيلة)، فإنهم يتشاجرون على مبرد المياه ويسدون الممر.
- النتيجة: حتى لو حصل الـ VIP على إشارة "الانطلاق" فورًا، فإنه يضطر للانتظار لكسر من الثانية لأن الممر مزدحم بحركة البيانات. هذا ما يسمى نزاع الذاكرة (Memory Contention).
الحكم النهائي: هل هو جيد بما يكفي؟
قارن الباحثون بين نهج "العقل الواحد" هذا ونهج "العقلين" التقليدي (استخدام متحكم دقيق صغير).
- المتحكم الدقيق (Microcontroller): يشبه السكين السويسري. إنه صغير، رخيص، ودقيق للغاية (الارتجاف يكاد يكون صفرًا). لكنه لا يستطيع القيام بعمليات حسابية معقدة أو التعرف على الوجوه.
- Raspberry Pi 5 (مع PREEMPT_RT): يشبه الكمبيوتر الخارق. إنه "أكثر ضجيجًا" (أقل دقة) بـ 10 مرات من المتحكم الدقيق، ولكنه دقيق بما يكفي لتطيير طائرة بدون طيار بأمان.
- الطائرة تحتاج للاستجابة كل 4 مللي ثانية.
- أسوأ تأخير لـ Raspberry Pi 5 كان 0.225 مللي ثانية.
- هذا يترك هامش أمان كبير.
الخلاصة: مستقبل الطائرات بدون طيار
تثبت هذه الورقة أننا نستطيع أخيرًا التخلي عن إعداد "العقلين" للعديد من الطائرات بدون طيار. يمكننا وضع العمليات الشاقة (الذكاء الاصطناعي، الرؤية، التخطيط) وعمليات الطيران الدقيقة (الاستقرار) على نفس الشريحة.
- ما الذي ينجح: استخدام نسخة "الوقت الحقيقي" من Linux (PREEMPT_RT) يحول الكمبيوتر الفوضوي إلى طيار موثوق.
- ما الذي يتبقى لإصلاحه: الأجهزة نفسها (الذاكرة والذاكرة المخبئية/Cache) لا تزال تصبح مزدحمة قليلاً عند القيام بمهام ذكاء اصطناعي ثقيلة. سيحتاج المهندسون في المستقبل إلى بناء "إدارة حركة مرور" أفضل للأجهزة لجعل الأمر أكثر سلاسة.
باخت-القول: يمكنك الآن قيادة طائرة بدون طيار باستخدام كمبيوتر قوي يفعل كل شيء، طالما أخبرت هذا الكمبيوتر أن يكون مهذبًا ويتوقف عما يفعله عندما تحتاج الطائرة إلى الطيران.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.