기하학적 접근법을 기반으로 한 충돌 회피 시스템을 사용한 두 개의 UAV 시뮬레이션 구현에 관한 Python3 프로젝트. 프로젝트 링크 :
UAV Collision Avoidance 3D 공간에서 UAVS 안전 협력의 학사 논문 프로젝트 회의 문제입니다. 프로젝트는 기능 물리 계산, 확장 가능한 GUI, 현실적인 ADS-B 가능성 충돌 회피 시스템 및 온보드 비행 계획을 구현합니다. 애플리케이션은 시뮬레이션 된 항공기를 제시하는 멀티 스레드 실시간 시뮬레이션과 선형 사전 렌더링 된 시뮬레이션을 제공하여 빠른 알고리즘 효과 테스트를 제공합니다.
-45°, 45° 및 -90°, 90° 간주되며, 양의 피치 각도는 등반을 의미하며 양의 롤 각도는 뱅킹 오른쪽을 의미합니다. 각도는 현실주의 보존을 위해 근사되지 않습니다.충돌 감지 및 회피 알고리즘은 기하학적 접근 방식에 의존합니다. 그들은 참조 논문 2 에 제시되었다. 충돌 감지는 충돌과 정면 충돌을 구분합니다. 두 번째는 UAV가 예상 대중 충돌 중심 사이에 거리가없고 다른 유형의 접촉 일 때는 먼저 적용됩니다.
기하학적 접근법은 충돌 감지 및 회피에 유용합니다. 이 시스템은 대부분의 경우 충돌을 피할 수 있습니다. 시스템은 완벽하지 않으며 일부 시나리오에서, 특히 항공기가 갈등이 감지 될 때 서로 너무 가까이있을 때 실패 할 수 있습니다. 이 시스템은 에너지 효율적이며 실제 시나리오에서 사용할 수 있습니다.
제안 된 테스트 사례 생성 및 평가 시스템은 간단하고 효과적입니다. 다양한 시나리오에서 시스템의 효과를 빠르게 테스트 할 수 있습니다. 이 시스템은보다 복잡한 시나리오와 추가 매개 변수를 포함하도록 추가로 개발 될 수 있습니다.
Python3 3 프로젝트는 PYPI 패키지 4 로 래핑됩니다. Pyside6 5 (QT의 Python QT6 라이브러리)가 GUI 구현에 사용되었습니다.
응용 프로그램은 시뮬레이션 및 항공기의 두 가지 주요 객체 유형을 기반으로 구축됩니다. 시뮬레이션은 초기 설정까지 생성되어 동시 실시간 변형 및 선형 사전 렌더링이 가능합니다. 항공기는 UAV의 물리적 표현 및 ADS-B 스레드에 의해 제어되는 두 가지 요소의 물리적 표현으로 구성됩니다. UAV 시스템들 사이의 연구는 두 번째 인용 논문 6 에서 얻어졌다.
시뮬레이션 데이터는 CSV 형식으로 저장됩니다. 파일의 각 행은 수행 된 단일 시뮬레이션을 나타냅니다. CSV 파일의 열은 항공기의 초기 및 최종 매개 변수, 충돌 감지 결과 및 회피가없는 경우에 항공기 간의 최소한의 상대 거리를 포함하여 테스트 사례에 대한 자세한 정보를 나타냅니다.
예제 시뮬레이션 데이터 파일은 데이터 디렉토리 데이터에 저장됩니다. Hz 시뮬레이션 주파수로 수행 된 200 개의 시뮬레이션 테스트 결과는 파일 시뮬레이션 -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 "파일 구조를 여기에서보십시오 : 파일 구조
현재 8 가지 가능한 주장이 있습니다.
file_path test_index collision_avoidance GUI 시뮬레이션을 실행합니다. 파일 이름을 지정하고 기본값을 찾을 수 있습니다. 테스트 인덱스를 지정하고 기본값을 0으로 유지할 수 있습니다. 충돌 회피를 지정하고 기본값을 꺼질 수 있습니다test_number 충돌 회피 알고리즘의 효과, 테스트 번호 기본값을 15로 비교하는 전체 테스트를 실행합니다.file_path test_index 지정된 경우 파일에서 헤드리스 시뮬레이션을로드하고 수행합니다. 그렇지 않으면 데이터 디렉토리 데이터에서 기본 예제 테스트 사례를로드합니다. 테스트 인덱스를 지정하고 기본값을 0으로 할 수 있습니다argument - 앱 인수에 대한 도움말 메시지; 모든 인수 목록에 대한 기본값앱의 실시간 버전에는 환경과의 사용자 상호 작용을 허용하는 몇 가지 주요 바로 가기가 있습니다.
메모
항공기 0은 첫 번째 항공기이고 항공기 1은 두 번째 항공기입니다.
본격적인 테스트를 허용하는 앱의 실시간 버전에 대한 몇 가지 주요 바로 가기가 있습니다.
다음 명령을 실행하여 앱을 설치하십시오.
pip install uav-collision-avoidance데비안 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 ] 3 차원 (3D) 세계는 높이를 평평하게하여 2D 화면에 투사됩니다 (Z 좌표). 프로그램 시작시보기는 항공기에 중점을 두지 않습니다. 보기는 화살표 키로 이동하거나 N 키를 사용하여 항공기를 중심으로 이동할 수 있습니다.
하나의 코딩 컨벤션은 프로젝트의 범위에 보존되지 않습니다. QT의 방법은 Camelcase 형식이며 나머지는 변수 및 멤버 이름에 대한 Snake_case를 포함한 기본 파이썬 이름 지정 컨벤션입니다.
Miłosz MacUlewicz
라이센스 확인

명사 프로젝트의 Anthony Lui의 드론 (CC x 3.0)
사용 된 모든 참조는 아래에 나열되어 있습니다.
항공기 원칙 축 al
기하학적 접근에 기반한 UAV 충돌 회피 ↩
python3 ↩
pypi ↩
pyqt6 6
에너지 효율적인 UAV 비행 제어 방법 장애물과 바람이있는 환경에서