مشروع Python3 فيما يتعلق بتنفيذ محاكاة اثنين من الطائرات بدون طيار مع نظام تجنب الاصطدام على أساس النهج الهندسي. روابط المشروع:
UAV Collision Avoidance هو مشكلة عرض أطروحة البكالوريوس الخاصة بي في تعاون الطائرات بدون طيار في الفضاء ثلاثي الأبعاد. يقوم المشروع بتنفيذ حسابات الفيزياء الوظيفية ، واجهة المستخدم الرسومية القابلة للتطوير ، أنظمة تجنب التصادم المحتملة ADS-B الواقعية والتخطيط على متن الطيران على متن الطائرة. يوفر التطبيق محاكاة في الوقت الفعلي متعددة الترابطات التي تقدم طائرات محاكاة وكذلك محاكاة خطيًا مسبقًا مما يتيح اختبار فعالية الخوارزمية السريعة.
-45°, 45° و -90°, 90° على التوالي ، حيث تعني زاوية الملعب الإيجابية التسلق وزاوية لفة الإيجابية يعني اليمين. لا يتم تقريب الزوايا للحفاظ على الواقعية.تعتمد كل من خوارزميات الكشف عن التصادم وتجنبها على النهج الهندسي. تم تقديمها في الورقة المرجعية 2 . يميز الكشف عن التصادم بين الاصطدام والتصادم المباشر. والثاني ينطبق عندما لا يكون لدى الطائرات بدون طيار مسافة بين مركز الجماهير المتوقع ، والأول عندما يكون كل نوع آخر من التلامس.
يثبت النهج الهندسي مفيدًا في اكتشاف الاصطدام وتجنبه. النظام قادر على تجنب التصادم في معظم الحالات. النظام ليس مثاليًا ويمكن أن يفشل في بعض السيناريوهات ، خاصة عندما تكون الطائرات قريبة جدًا من بعضها البعض عند اكتشاف الصراع. النظام فعال في الطاقة ويمكن استخدامه في سيناريوهات الحياة الواقعية.
نظام الاختبار المقترح نظام التوليد والتقييم بسيط وفعال. يسمح باختبار سريع لفعالية النظام في سيناريوهات مختلفة. يمكن تطوير النظام بشكل أكبر ليشمل سيناريوهات أكثر تعقيدًا ومعلمات إضافية.
يتم لف مشروع Python3 3 كحزمة PYPI 4 . تم استخدام Pyside6 5 (مكتبة Python QT6 من QT) لتنفيذ واجهة المستخدم الرسومية.
تم تصميم التطبيق على أساس نوعين من الكائنات الرئيسية ، المحاكاة والطائرات. يتم إنشاء المحاكاة حتى الإعدادات الأولية ، مما يسمح بمتغير الوقت الحقيقي المتزامن والتقديم المسبق الخطي. تتكون الطائرة من عنصرين ، تمثيل مادي لجهاز الكمبيوتر الطائرات بدون طيار والتحكم في الطيران ، والذي يتم التحكم فيه بواسطة مؤشر ترابط ADS-B. تم استخلاص الأبحاث بين أنظمة الطائرات بدون طيار من الورقة 6 .
يتم تخزين بيانات المحاكاة بتنسيق CSV. يمثل كل صف في الملف محاكاة واحدة أجريت. تمثل الأعمدة الموجودة في ملف CSV معلومات مفصلة حول حالة الاختبار ، بما في ذلك المعلمات الأولية والنهائية للطائرات ، ونتائج اكتشاف التصادم ، والحد الأدنى من المسافة النسبية بين الطائرات لكلا الحالتين مع ودون تجنب.
مثال يتم تخزين ملفات بيانات المحاكاة في بيانات دليل البيانات. يتم تخزين نتائج 200 اختبار محاكاة أجريت مع تردد محاكاة 10 Hz في محاكاة الملف -2024-06-10-00-21-19.CSV.
تم إنشاء بنية الملف باستخدام أمر tree :
tree --gitignore -I " __pycache__|.env|.github|.pytest_cache|.vscode|assets|build|logs|path-visual|uav_collision_avoidance.egg-info|venv|docs "عرض بنية الملف هنا: بنية الملف
هناك ثماني حجج محتملة في الوقت الحالي:
file_path test_index collision_avoidance - يقوم بتشغيل محاكاة واجهة المستخدم الرسومية ؛ يمكن تحديد اسم الملف والإعدادات الافتراضية لأحدث بيانات المحاكاة الموجودة ؛ يمكن تحديد فهرس الاختبار والافتراضات إلى 0 ؛ يمكن تحديد تجنب الاصطدام والتخلف عن السدادtest_number - يقوم بتشغيل الاختبارات الكاملة تقارن فعالية خوارزمية تجنب الاصطدام ، واختبار الافتراضات إلى 15file_path test_index - يقوم بتحميل ويقوم بمحاكاة مقطوعة الرأس من الملف عند تحديدها ، وإلا يقوم بتحميل حالة اختبار المثال الافتراضية من بيانات دليل البيانات ؛ يمكن تحديد فهرس الاختبار والإعدادات الافتراضية إلى 0argument المساعدة - طباعة رسالة مساعدة لحجة التطبيق ؛ الإعدادات الافتراضية لجميع قائمة الوسائطيحتوي الإصدار الحقيقي للتطبيق على العديد من الاختصارات الرئيسية التي تسمح بتفاعل المستخدم مع البيئة.
ملحوظة
الطائرة 0 هي الأولى ، الطائرة 1 هي الثانية.
هناك العديد من الاختصارات الرئيسية للإصدار الحقيقي للتطبيق الذي يسمح باختبار واسع النطاق.
قم بتثبيت التطبيق عن طريق تشغيل الأمر التالي:
pip install uav-collision-avoidanceبالنسبة لـ Debian 12 ، تحتاج إلى تثبيت التبعيات التالية:
sudo apt-get install libgl1 libxcb-xinerama0لتشغيل التطبيق بلا رأس ، تحتاج إلى تشغيل التصدير التالي:
export QT_QPA_PLATFORM=offscreenاستخدم أي مما يلي لتشغيل التطبيق:
uav-collision-avoidanceuav-collision-avoidance realtime [file_name] [test_index] [collision_avoidance]uav-collision-avoidance headlessuav-collision-avoidance tests [test_number]uav-collision-avoidance ongoinguav-collision-avoidance load [file_name] [test_index]uav-collision-avoidance help [argument]uav-collision-avoidance versionقم بإنشائه عن طريق استنساخ الريبو وتشغيل الأوامر التالية:
#! /bin/bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python main.py [argument]python - m venv venv
.venvScriptsactivate
pip install - r requirements.txt
python main.py [ argument ] من المتوقع أن يكون العالم ثلاثي الأبعاد (ثلاثي الأبعاد) على شاشة ثنائية الأبعاد عن طريق ارتفاع ارتفاع (إحداثيات Z). في بداية البرنامج ، لا يتمركز العرض على أي من الطائرات. يمكن نقل العرض باستخدام مفاتيح الأسهم أو مركزها على الطائرة باستخدام مفتاح N
لا يتم الحفاظ على اتفاقية ترميز واحدة في نطاق المشروع. أساليب QT هي تنسيق Camelcase والباقي هو الافتراضي اتفاقية تسمية Python بما في ذلك Snake_Case للمتغير والأعضاء.
ميوسز ماكوليويتش
تحقق من الترخيص

طائرة بدون طيار من أنتوني لوي من مشروع Noun (CC BY 3.0)
جميع المراجع المستخدمة مدرجة أدناه.
المحاور الرئيسية للطائرات ↩
تجنب تصادم الطائرات بدون طيار على أساس النهج الهندسي ↩
Python3 ↩
pypi ↩
pyqt6 ↩
طريقة التحكم في طيران الطائرات بدون طيار كفاءة في استخدام الطاقة في بيئة مع عقبات ومواعيد رياح ↩