无人机仿真环境(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 !!!
相关文章:

无人机仿真环境(3维)附项目git链接
项目概述 随着无人机技术在物流、测绘、应急救援等领域的广泛应用,其自主导航、避障算法、路径规划及多机协同等核心技术的研究需求日益迫切。为降低实地测试成本、提高研发效率,本项目旨在构建一个高精度、可扩展的无人机三维虚拟仿真环境&…...
湖北理元理律师事务所:债务优化中的“生活锚点”设计
在债务重组领域,一个常被忽视的核心矛盾是:还款能力与生存需求的冲突。过度压缩生活支出还债,可能导致收入中断;放任债务膨胀,又加剧精神压力。湖北理元理律师事务所通过“三步平衡法”,尝试在法理框架内破…...

Python 训练营打卡 Day 30-模块和库的导入
模块和库的导入 1.1标准导入 import mathprint("方式1: 使用 import math") print(f"圆周率π的值: {math.pi}") print(f"2的平方根: {math.sqrt(2)}\n") 1.2从库中导入特定项 from math import pi, sqrtprint("方式2:使用 f…...

前端实现图片压缩:基于 HTML5 File API 与 Canvas 的完整方案
在 Web 开发中,处理用户上传的图片时,前端压缩可以有效减少服务器压力并提升上传效率。本文将详细讲解如何通过<input type="file">实现图片上传,结合 Canvas 实现图片压缩,并实时展示压缩前后的图片预览和文件大小对比。 一、核心功能架构 我们将实现以…...

【Docker管理工具】部署Docker管理面板DweebUI
【Docker管理工具】部署Docker管理面板DweebUI 一、DweebUI介绍1.1 DweebUI 简介1.2 主要特点1.3 使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载DweebUI镜像五、…...

【后端高阶面经:架构篇】50、数据存储架构:如何改善系统的数据存储能力?
一、数据存储架构设计核心原则 (一)分层存储架构:让数据各得其所 根据数据访问频率和价值,将数据划分为热、温、冷三层,匹配不同存储介质,实现性能与成本的平衡。 热数据层:访问频率>100次/秒。采用Redis集群存储高频访问数据(如用户登录态、实时交易数据),配合…...
编程之巅:语言的较量
第一章:代码之城的召集令 在遥远的数字大陆上,有一座名为“代码之城”的神秘都市。这里居住着各种编程语言的化身,他们以拟人化的形态生活,每种语言都有独特的性格与技能。Python是个优雅的学者,C是个硬核战士&#x…...
STM32 通过 ESP8266 通信详解
✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进 ❤欢迎关注我的知乎:对error视而不见 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 🍎获取更多嵌入式资料可点击链接进群领…...

Qt/C++开发监控GB28181系统/sip协议/同时支持udp和tcp模式/底层协议解析
一、前言说明 在gb28181-2011协议中,只有udp要求,从2016版本开始要求支持tcp,估计也是在多年的实际运行过程中,发现有些网络环境差的场景下,一些udp交互指令丢失导致功能异常,所以后面修订的时候增加了tcp…...

晨控CK-FR03与汇川H5U系列PLC配置MODBUS TCP通讯连接操作手册
晨控CK-FR03与汇川H5U系列PLC配置MODBUS TCP通讯连接操作手册 CK-FR03-TCP是一款基于射频识别技术的高频RFID标签读卡器,读卡器工作频率为13.56MHZ,支持对I-CODE 2、I-CODE SLI等符合ISO15693国际标准协议格式标签的读取。 读卡器同时支持标准工业通讯协…...
山海鲸轻 3D 渲染技术深度解析:预渲染如何突破多终端性能瓶颈
在前期课程中,我们已系统讲解了山海鲸两大核心渲染模式——云渲染与端渲染的技术特性及配置方法。为满足复杂场景下的差异化需求,山海鲸创新推出轻3D渲染功能,本文将深度解析该技术的实现原理与操作实践。 一、轻3D功能研发背景 针对多终端协…...

t014-项目申报管理系统 【springBoot 含源码】
项目演示视频 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,项目信息因为其管理内容繁杂,管理数量繁多导致手工进行…...
阻止H5页面中键盘收起的问题
在移动端H5开发中,当输入框失去焦点时,键盘会自动收起,但有时我们需要阻止这种行为。以下是几种解决方案: 常见原因 输入框失去焦点触发键盘收起页面滚动或触摸其他区域导致键盘收起某些浏览器(特别是iOS Safari)的默认行为 解…...
将 AI 解答转换为 Word 文档
相关说明 DeepSeek 风靡全球的2025年,估计好多人都已经试过了,对于理科老师而言,有一个使用痛点,就是如何将 AI 输出的 mathjax 格式的符号转化为我们经常使用的 mathtype 格式的,以下举例说明。 温馨提示࿱…...
AI 产品的 MVP 构建逻辑:Prompt 工程 ≠ 产品工程?
一、引言:技术细节与系统工程的本质分野 在 AI 产品开发的战场中,Prompt 工程与产品工程的边界模糊正在引发深刻的认知革命。当工程师们沉迷于优化 “请用三段式结构分析用户需求” 这类提示词时,产品经理却在思考如何通过用户行为数据验证 …...

Go语言开发的GMQT物联网MQTT消息服务器(mqtt Broker)支持海量MQTT连接和快速低延时消息传输-提供源码可二次开发定制需求
关于GMQT物联网MQTT消息平台 GoFly社区推出《GMQT物联网MQTT消息平台》,完全使用高性能的Go语言编写,内嵌数据库(不依赖三方库), 全面支持MQTT的v3.0.0、v3.1.1以及完全兼容 MQTT v5 功能。利用Go语言高并发性、高效利用服务器资源、跨平台支…...
JavaScript es6 语法 map().filter() 链式调用,语法解析 和常见demo
摘要: map:遍历数组并对每个元素执行回调函数,返回一个新数组 filter:对 map 返回的数组进行过滤,返回满足条件的元素组成的新数组 1.数字数组处理 const numbers [1, 2, 3, 4, 5];// 先平方,再筛选偶数…...

leetcode2221. 数组的三角和-medium
1 题目:数组的三角和 官方标定难度:中 给你一个下标从 0 开始的整数数组 nums ,其中 nums[i] 是 0 到 9 之间(两者都包含)的一个数字。 nums 的 三角和 是执行以下操作以后最后剩下元素的值: nums 初始…...

Express教程【001】:Express创建基本的Web服务器
文章目录 1、初识express1.1 什么是Express1.2 主要特点1.3 Express的基本使用1.3.1 安装1.3.2 创建基本的Web服务器 1、初识express 目标: 能够使用express.static()快速托管静态资源能够使用express路由精简项目结构能够使用常见的express中间件能够使用express创…...

asio之async_result
简介 async_result用来表示异步处理返回类型 async_result 是类模板 type:为类模板中声明的类型,对于不同的类型,可以使用类模板特例化,比如针对use_future...

代码随想录算法训练营 Day60 图论Ⅹ Bellmen_ford 系列算法
图论 题目 94. 城市间货物运输 I Bellmen_ford 队列优化算法 SPFA 大家可以发现 Bellman_ford 算法每次松弛 都是对所有边进行松弛。 但真正有效的松弛,是基于已经计算过的节点在做的松弛。 本图中,对所有边进行松弛,真正有效的松弛&#…...

独立机构软件第三方检测:流程、需求分析及电商软件检验要点?
独立机构承担着对软件进行第三方检测的任务,这一环节对于提升软件的质量和稳定性起到了极其关键的作用。检测过程拥有一套完善的流程,目的在于确保检测结果的精确性,并保障软件达到高标准。 需求分析 确保软件测试需求清晰十分关键。我们需…...
Java构建Tree并实现节点名称模糊查询
乐于学习分享… 大家加油努力 package com.tom.backtrack;import lombok.Data; import lombok.Getter;import java.util.ArrayList; import java.util.List; import java.util.Objects;/*** 树节点** author zx* date 2025-05-27 19:51*/ Data public class TreeNode {private …...
shadcn/ui
文章目录 前言✅ 核心特点📦 支持组件(常用)🚀 安装使用(框架支持)初始化(Next.js 项目为例)添加一个组件 🧠 对比其他组件库📘 官方资源✅ 总结✅ 功能特性&…...

华为FreeArc能和其他华为产品共用充电线吗?
最近刚买的FreeArc终于到手啦,看到网上有朋友说,这次的耳机是不附带充电线,开箱后发现果真如此,那FreeArc到底用什么规格的充电线,能不能和华为的Type-C数据线通用,我来给大家解答一下吧! Free…...

[网页五子棋][匹配模式]创建房间类、房间管理器、验证匹配功能,匹配模式小结
文章目录 创建房间类创建房间类实现房间管理器 实现匹配器(3)验证匹配功能问题:匹配按钮不改变验证多开 小结 创建房间类 LOL,通过匹配的方式,自动给你加入到一个房间,也可手动创建游戏房间 这一局游戏,进行的“场所…...

实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.7 R语言解题
本文是实验设计与分析(第6版,Montgomery著,傅珏生译) 第3章单因子实验:方差分析3.11思考题3.7 R语言解题。主要涉及单因子方差分析,正态性假设检验,残差与拟合值的关系图,平方根变换。 X<-c(…...

【知识点】第2章:Python程序实例解析
文章目录 知识点整理Python程序语法元素分析 练习题判断题填空题选择题 知识点整理 Python程序语法元素分析 Python程序包括格式框架、注释、变量、表达式、分支语句、循环语句、函数等语法元素。 程序的格式框架 Python语言采用严格的 “缩进” 来表明程序的格式框架。缩进…...
从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
问题背景 最近在项目中遇到一个问题:在档口分享功能中,需要动态生成一个分享图片。代码是这样写的: // 项目中的代码 val shareView LayoutInflater.from(thisStallMainActivityV1).inflate(R.layout.share_header_stall_main_layout, nul…...
Ubuntu 22.04 上使用 Docker 安装 RagFlow
GitHub地址:添加链接描述 RAGFlow 是一款开源的检索增强生成(Retrieval-Augmented Generation,简称 RAG)引擎,旨在通过深度文档理解技术,结合大语言模型(LLM),为用户提供高质量、可溯源的问答服务。 🚀 快速入门 RAGFlow 提供了便捷的部署方式,支持 Docker 环境。…...