当前位置: 首页 > news >正文

无人机仿真环境(3维)附项目git链接

项目概述

        随着无人机技术在物流、测绘、应急救援等领域的广泛应用,其自主导航、避障算法、路径规划及多机协同等核心技术的研究需求日益迫切。为降低实地测试成本、提高研发效率,本项目旨在构建一个高精度、可扩展的​无人机三维虚拟仿真环境​​,支持算法验证、仿真训练与场景压力测试。支持导入相关航线路径,进行无人机编队/分布路径模拟,支持多种无人机队形,支持输入大区域类型根据无人机数量进行区域划分。可视化方面,支持放大缩小,视野转换,全方位调整视野角度。

主页面显示:上面为三维路径图,包括区域描绘,路径绘制,下方会显示仿真运行过程中的飞行信息。

示意图:

功能说明

支持多无人机不同高度飞行,实时显示对应位置信息,状态信息,编队内角色,路径总路程,预计完成时间(与设置的无人机飞行时间相关)。

代码说明

由于本人良好的编码习惯,代码中均有注释说明,这里不做赘述,仅对项目文件进行说明及个别举例。

1.uav/single_uav.py 为单个无人机声明,包括各自航路点,高度,速度,状态........等基本信息。

# 例:
def init(self, id, initial_coords, high=50, status=0,speed=20):self.id = idself.position = initial_coords  # 当前位置self.initial_position = initial_coords  # 初始位置self.high = high       # 默认高度设为50单位self.status = status    # 状态信息  0 正常 1 故障 2 打击 3 终止任务self.path_points = []   # 每个无人机独立的路径点self.current_index = 0  # 当前路径点的索引self.speed=speed        # 速度默认20self.actual_path = []  # 存储实际经过的路径点self.initial_transition_done = False  # 跟踪是否完成了初始位置到第一路径点的

2.uav/uav_cluster.py 为无人机群声明,包括集群编队队形,共享信息..........等。

# 例:
def set_formation(self, queue_type=None):  queue_type = queue_type or self.default_formation  # 如果没有传递队形类型,使用默认队形self.current_formation = queue_typeoffset = 15  # 每个无人机的基本间隔# 设置不同队形的位置偏移if self.current_formation == '0x01':  # 一字纵队self.formation_offsets = [(i * offset, 0) for i in range(len(self.uavs))]elif self.current_formation == '0x02':  # 二字纵队self.formation_offsets = [(i % 2 * offset, i // 2 * offset) for i in range(len(self.uavs))]elif self.current_formation == '0x03':  # 一字横队self.formation_offsets = [(0, i * offset) for i in range(len(self.uavs))]elif self.current_formation == '0x04':  # 前三角队形self.formation_offsets = [(i * offset, abs(i - len(self.uavs) // 2) * offset) for i inrange(len(self.uavs))]elif self.current_formation == '0x05':  # 后三角队形self.formation_offsets = [(-i * offset, abs(i - len(self.uavs) // 2) * offset) for i inrange(len(self.uavs))]elif self.current_formation == '0x06':  # 左梯次队形self.formation_offsets = [(i * offset, -i * offset) for i in range(len(self.uavs))]elif self.current_formation == '0x07':  # 右梯次队形self.formation_offsets = [(i * offset, i * offset) for i in range(len(self.uavs))]else:self.formation_offsets = [(i * offset, 0) for i in range(len(self.uavs))]  # 默认队形一字横队

3.info_struct/Cooper_Task.py 为相关指令信息结构体,包括编队,分布俩种模式的具体输入信息。

# 例: # 编队机动 
def init(self,que_type,reg_type,reg_locat):  self.queue_type=que_type   # 队形self.region_type=reg_type  # 区域类型 3 圆形 4 线形 其余为多边形 5表示五边形 6表示六边形self.region_location=reg_locat # 区域坐标

4.visual_management.py 为整个可视化类的实现。

例: 修改仿真运行中无人机速度:

    # 初始化视图和无人机模型self.view = self.create_view()self.init_uav_models()# self.timer.start(800)  # 设置仿真运行速度self.timer.start(200)  # 设置仿真运行速度...................current_point = drone.path_points[drone.current_index]next_point = drone.path_points[drone.current_index + 1]num_steps = 400  # 修改点间过渡插值点,越大则仿真中越慢,反之则越快

simulation_main.py 仿真主函数。

# 例:
# 说明
# 区域位置信息输入格式
# 圆形 圆心x,圆心y;半径
# 线形 始点x,始点y;终点x,终点y
# 多边形 顶点1x,顶点1y;顶点2x,顶点2y;顶点3x,顶点3y;..........
# 编队侦察 对应算法 编队侦察-多边形。struct_data = (“0x01”, 5, “50,250;100,250;150,150;75,100;25,150") # 一字纵队队形 五边形 多边形区域顶点task_info=cooper_task(“0x01”,struct_data) # 编队飞行 任务信息# 分区侦察 对应算法 分区侦察-圆。struct_data=(3,3,“65,75;220") # 3个子区域(无人机数量),3:圆形区域标识,大区域坐标task_info=cooper_task(“0x03”,struct_data) # 分布飞行 任务信息# 仿真实例化base_path=“tsp_pathdata/tsp_path_region_{}.csv” # 分布搜索路径 tsp_path_region_0 tsp_path_region_1 tsp_path_region_2 的形式数量就是区域的数量,每个里面是单个区域的路径。fixed_path=“tsp_pathdata//tsp_path.csv”  # 编队搜索路径。visualization = UAVVisualization(task_info,base_path,fixed_path)。visualization.run()。

根据任务信息,无人机定义进行信息的修改,将相关路径替换为自己的路径文件即可,路径格式为 csv 俩列 x,y

路径文件示意

拓展讨论

后续会逐渐增加三维障碍物的显示,进一步提高系统的复杂度,如果说有什么好的方法,可以与我讨论,或者直接提交到我的git中,大家一块将这个仿真项目完善起来。

项目链接:https://github.com/Ricardo-HY/-Unmanned-aerial-vehicle-simulation.git

如需代码自行下载即可,觉得可以的话,三连一下叭,记得给我 star !!!

相关文章:

  • 【分库分表】企业实战全流程总结
  • Vue中van-stepper与input值不同步问题及解决方案
  • freeswitch 呼入 ‘WRONG_CALL_STATE‘
  • 牛客周赛 Round 94
  • Python服务器请求转发服务
  • WPF【11_5】WPF实战-重构与美化(MVVM 实战)
  • 深入理解 JDK、JRE 和 JVM 的区别
  • 常见的网络设备
  • C语言中清空缓存区到底写到哪里比较好
  • 随叫随到的电力补给:移动充电服务如何重塑用户体验?
  • 【Webtrees 手册】第 10章 - 用户体验
  • 大模型的多显卡训练实现涉及分布式计算框架。实现方式附代码
  • 哪些技术要素决定了多媒体数字沙盘的呈现效果与用户体验?
  • 短剧看广告APP系统开发:打造高效变现与用户体验双赢平台
  • 【K8S】K8S基础概念
  • 第三届黄河流域网安技能挑战赛复现
  • vscode ssh远程服务端设置
  • 新版Chrome浏览器加载eDrawings 3D Viewer控件网页查看DWG、DXF
  • JSON解析性能优化全攻略:协程调度器选择与线程池饥饿解决方案
  • Baklib赋能企业知识智联体系
  • 优秀个人网站/深圳做网站的公司
  • 做阿里巴巴怎么进公司网站/2022年搜索引擎优化指南
  • 湛江网站建设费用/谷歌搜索引擎免费入口
  • 建设工程包括什么工程/学seo网络推广
  • 网站如何做首面关键词/首页关键词怎么排名靠前
  • 上海建网站/站长工具seo综合查询访问