Python3项目基于几何方法实施两个无人机模拟,并使用碰撞避免系统。项目链接:
UAV Collision Avoidance是我的学士学位论文项目会议问题在3D空间中安全合作的问题。项目实施功能性物理计算,可扩展的GUI,现实的ADS-B可能避免碰撞系统和机上飞行计划。应用程序提供多线程实时仿真,呈现模拟飞机以及线性预渲染的仿真,允许快速算法有效性测试。
-45°, 45°和-90°, 90° ,其中正倾斜角表示攀爬,正滚角意味着右侧沿距离。在现实主义保存中,角度不近似。碰撞检测和回避算法都取决于几何方法。他们在参考的论文2中介绍。碰撞检测区分碰撞和正面碰撞。当无人机投影中心碰撞之间没有距离时,第二个适用,而第一个是其他类型的接触。
几何方法被证明可用于碰撞检测和避免。在大多数情况下,该系统能够避免碰撞。该系统不是完美的,在某些情况下可能会失败,尤其是当检测到冲突时,飞机彼此太近时。该系统是节能的,可用于现实生活中。
拟议的测试案例生成和评估系统是简单有效的。它允许在各种情况下快速测试系统的有效性。该系统可以进一步开发,以包括更复杂的方案和其他参数。
Python3 3项目被包装为PYPI软件包4 。 Pyside6 5 (QT的Python QT6库)用于GUI实施。
应用程序是基于两种主要对象类型(模拟和飞机)构建的。仿真是最初的设置创建的,从而允许并发实时变体和线性预渲染。飞机由两个元素组成,即无人机和飞行控制计算机的物理表示,由ADS-B线控制。从无人机系统中的研究中得出了第二篇引用论文6的研究。
仿真数据以CSV格式存储。文件中的每一行代表进行的单个模拟。 CSV文件中的列表示有关测试案例的详细信息,包括飞机的初始和最终参数,碰撞检测结果以及两种情况下有和无需避免的案件的飞机之间的相对距离最小。
示例仿真数据文件存储在数据目录数据中。使用10 Hz模拟频率进行的200个模拟测试的结果存储在文件仿真-2024-06-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通过克隆回购并运行以下命令来构建它:
#! /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)世界通过平坦的高度(z坐标)投影在2D屏幕上。在程序开始时,该视图不在任何飞机上。该视图可以使用箭头键移动,也可以使用N键以飞机为中心。
项目范围中没有保留一个编码约定。 QT的方法是骆驼格式的,其余的就是默认的Python命名约定,包括可变和成员名称的Snake_case。
MiłoszMaculewicz
检查许可证

名词项目的Anthony Lui的无人机(CC By 3.0)
所有使用的参考文献均在下面列出。
飞机主轴↩
基于几何方法的无人机避免碰撞↩
Python3↩
PYPI↩
pyqt6↩
能源有效的无人机飞行控制方法在有风的环境中