โครงการ Python3 เกี่ยวกับการใช้งานการจำลอง UAV สองครั้งด้วยระบบหลีกเลี่ยงการชนกันตามวิธีการทางเรขาคณิต ลิงค์โครงการ:
UAV Collision Avoidance คือปัญหาการประชุมโครงการวิทยานิพนธ์ระดับปริญญาตรีของฉันเกี่ยวกับความร่วมมือที่ปลอดภัยของ UAVS ในพื้นที่ 3 มิติ โครงการใช้การคำนวณฟิสิกส์ที่ใช้งานได้ GUI ที่ปรับขนาดได้ ADS-B ที่เป็นจริงระบบการหลีกเลี่ยงการชนกันที่น่าจะเป็นและการวางแผนการบินบนกระดาน แอปพลิเคชันนำเสนอการจำลองแบบเรียลไทม์แบบมัลติเธรดที่นำเสนอเครื่องบินจำลองรวมถึงการจำลองแบบเรนเดอร์เชิงเส้นเป็นเส้นตรงช่วยให้สามารถทดสอบประสิทธิภาพอัลกอริทึมอย่างรวดเร็ว
-45°, 45° และ -90°, 90° ตามลำดับโดยที่มุมพิทช์บวกหมายถึงการปีนเขาและมุมม้วนบวกหมายถึงการธนาคารขวา มุมไม่ได้ประมาณสำหรับการอนุรักษ์ความสมจริงทั้งอัลกอริทึมการตรวจจับการชนกันและการหลีกเลี่ยงนั้นขึ้นอยู่กับวิธีการทางเรขาคณิต พวกเขาถูกนำเสนอในเอกสารอ้างอิง 2 การตรวจจับการชนกันแตกต่างระหว่างการชนและการชนกัน อันที่สองใช้เมื่อ UAVs ไม่มีระยะห่างระหว่างจุดศูนย์กลางของการชนกันของมวลชนและครั้งแรกเมื่อมีการติดต่อประเภทอื่น ๆ
วิธีการทางเรขาคณิตพิสูจน์ให้เห็นว่ามีประโยชน์ในการตรวจจับการชนและการหลีกเลี่ยง ระบบมีความสามารถในการหลีกเลี่ยงการชนในกรณีส่วนใหญ่ ระบบไม่สมบูรณ์แบบและอาจล้มเหลวในบางสถานการณ์โดยเฉพาะอย่างยิ่งเมื่อเครื่องบินอยู่ใกล้กันมากเกินไปเมื่อตรวจพบความขัดแย้ง ระบบประหยัดพลังงานและสามารถใช้ในสถานการณ์จริง
การสร้างกรณีทดสอบที่เสนอและระบบการประเมินผลนั้นง่ายและมีประสิทธิภาพ ช่วยให้สามารถทดสอบประสิทธิภาพของระบบได้อย่างรวดเร็วในสถานการณ์ต่าง ๆ ระบบสามารถพัฒนาต่อไปเพื่อรวมสถานการณ์ที่ซับซ้อนมากขึ้นและพารามิเตอร์เพิ่มเติม
โครงการ Python3 3 ถูกห่อเป็นแพ็คเกจ PYPI 4 Pyside6 5 (ห้องสมุด Python QT6 ของ Qt) ใช้สำหรับการใช้งาน GUI
แอปพลิเคชันถูกสร้างขึ้นตามวัตถุสองประเภทหลักคือการจำลองและเครื่องบิน การจำลองถูกสร้างขึ้นเพื่อการตั้งค่าเริ่มต้นทำให้สามารถใช้ตัวแปรเรียลไทม์พร้อมกันได้และการเรนเดอร์เชิงเส้น เครื่องบินประกอบด้วยสององค์ประกอบการแสดงทางกายภาพของคอมพิวเตอร์ UAV และคอมพิวเตอร์ควบคุมการบินซึ่งควบคุมโดยเธรด ADS-B การวิจัยระหว่างระบบ UAV ถูกดึงมาจากกระดาษที่อ้างถึงครั้งที่สอง 6
ข้อมูลการจำลองถูกเก็บไว้ในรูปแบบ CSV แต่ละแถวในไฟล์แสดงถึงการจำลองเดียวที่ดำเนินการ คอลัมน์ในไฟล์ CSV แสดงข้อมูลโดยละเอียดเกี่ยวกับกรณีทดสอบรวมถึงพารามิเตอร์เริ่มต้นและสุดท้ายของเครื่องบินผลการตรวจจับการชนและระยะทางสัมพัทธ์น้อยที่สุดระหว่างเครื่องบินสำหรับทั้งสองกรณีที่มีและไม่มีการหลีกเลี่ยง
ตัวอย่างไฟล์ข้อมูลการจำลองถูกเก็บไว้ในข้อมูลไดเรกทอรีข้อมูล ผลลัพธ์ของการทดสอบการจำลอง 200 ครั้งที่ดำเนินการกับความถี่การจำลอง 10 Hz จะถูกเก็บไว้ในไฟล์ Simulation-20124-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 - เรียกใช้การจำลอง GUI; สามารถระบุชื่อไฟล์และเริ่มต้นกับข้อมูลการจำลองล่าสุดที่พบ ดัชนีทดสอบสามารถระบุและค่าเริ่มต้นเป็น 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สร้างโดยการโคลนนิ่ง repo และเรียกใช้คำสั่งต่อไปนี้:
#! /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 ] โลก 3 มิติ (3D) ถูกฉายบนหน้าจอ 2D โดยความสูงแบน (พิกัด Z) ในการเริ่มโปรแกรมมุมมองไม่ได้อยู่กึ่งกลางเครื่องบินใด ๆ มุมมองสามารถเคลื่อนย้ายด้วยปุ่มลูกศรหรืออยู่กึ่งกลางบนเครื่องบินโดยใช้คีย์ N
อนุสัญญาการเข้ารหัสหนึ่งรายการจะไม่ได้รับการเก็บรักษาไว้ในขอบเขตของโครงการ วิธีการของ QT คือการจัดรูปแบบ Camelcase และส่วนที่เหลือคือการประชุมการตั้งชื่อ Python เริ่มต้นรวมถึง SNAKE_CASE สำหรับตัวแปรและชื่อสมาชิก
Miłosz Maculewicz
ตรวจสอบใบอนุญาต

โดรนโดย Anthony Lui จาก Noun Project (CC โดย 3.0)
การอ้างอิงที่ใช้ทั้งหมดแสดงอยู่ด้านล่าง
แกนหลักของเครื่องบิน↩
การหลีกเลี่ยงการชนกันของ UAV ตามวิธีการเรขาคณิต↩
Python3 ↩
pypi ↩
pyqt6 ↩
วิธีการควบคุมการบิน UAV ประหยัดพลังงานในสภาพแวดล้อมที่มีอุปสรรคและลมกระโชกแรงลม↩