乐于分享
好东西不私藏

【MATLAB源码-第403期】基于三维A*+ B样条的城市低空物流场景的无人机三维路径规划与动态避障系统仿真.

【MATLAB源码-第403期】基于三维A*+ B样条的城市低空物流场景的无人机三维路径规划与动态避障系统仿真.

操作环境:

MATLAB 2024a

1、算法描述

基于城市低空物流场景的无人机三维路径规划与动态避障研究

摘要

随着低空经济、智慧物流和无人系统技术的快速发展,无人机在城市低空配送、应急投送和末端物流等领域展现出广阔的应用前景。相较于传统地面运输方式,无人机配送具有机动性强、时效性高和受地面交通影响小等优势,但其在城市环境中的飞行任务也面临更为复杂的约束条件。城市低空空间中分布着大量高层建筑、禁飞区域、限高区域以及动态移动目标,飞行环境呈现出明显的三维非结构化特点。同时,无人机在执行物流任务时还会受到风场扰动、电量容量、爬升代价和航迹转弯代价等多重因素的影响,因此仅依赖传统最短路径思想已经难以满足城市低空物流场景中对安全性、可执行性和实时性的综合要求。

针对上述问题,本文围绕城市低空物流任务特点,设计并实现了一套基于 MATLAB2024a 的无人机三维路径规划与动态避障仿真系统。系统首先采用三维栅格地图对城市低空空间进行建模,将楼宇障碍、禁飞区、限高区和可飞行区域统一映射到三维环境中。在全局路径规划阶段,采用 A* 算法在三维离散空间内搜索起点到终点之间的可行路径。A* 算法利用实际代价与启发式估计相结合的评价函数,在保证搜索有效性的同时提高了规划效率,适合用于复杂城市环境中的全局航迹生成。考虑到 A* 算法直接生成的路径通常存在折点较多、转角突变明显等问题,本文进一步引入关键点提取、Bezier 曲线圆角处理以及 B 样条细分方法,对初始路径进行平滑优化,使规划结果更加符合无人机实际飞行过程中的连续性和控制需求。

在此基础上,为提高系统对复杂环境变化的适应能力,本文进一步设计了动态避障与局部重规划机制。当飞行过程中出现动态障碍侵入当前航路时,系统能够根据新的空间占用情况触发局部路径重规划,并重新生成安全航迹,从而保证任务的连续执行。与此同时,本文还引入风场扰动模型和电量消耗模型,使路径规划不再局限于几何意义上的避障问题,而是能够综合考虑逆风、侧风、爬升、转弯以及剩余电量对任务执行的影响,从而增强系统的工程真实性和实际参考价值。

仿真结果表明,基于 A* 算法生成的三维全局路径能够有效避开静态障碍区域,在经过平滑处理后,航迹连续性和飞行可执行性得到明显改善;在动态障碍介入条件下,系统能够实现局部重规划并保持整体任务目标不变;在加入风场与电量约束后,规划结果更加符合城市低空物流无人机的实际飞行规律。本文所建立的系统为城市低空物流场景下无人机三维路径规划研究提供了一种较为完整的实现思路,也为后续开展更高精度环境建模、多无人机协同规划以及智能优化算法研究奠定了基础。

关键词

城市低空物流;无人机;A*算法;三维路径规划;动态避障;Bezier 曲线;B 样条;风场扰动;电量模型


1 绪论

近年来,伴随智慧城市建设不断推进和低空经济概念逐步落地,无人机物流已经成为智能交通与现代配送体系中的重要研究方向。尤其是在城市即时配送、医疗物资运输和应急投送等场景中,无人机能够绕开地面交通拥堵,显著提升运输效率,因此具有较高的应用价值。然而,城市低空环境与开阔环境相比具有更高的复杂性。一方面,建筑物密集分布使得飞行空间被分割为大量不规则区域;另一方面,禁飞区、限高区、临时占用区以及其他低空飞行目标的存在,使无人机必须在受限空间中完成安全、稳定且高效的飞行任务。

路径规划是无人机自主飞行中的核心问题之一。传统二维路径规划方法主要面向地面机器人或平面移动系统,难以充分反映无人机在空间中的立体飞行能力,也难以处理城市低空物流任务中的高度绕行、限高约束和复杂避障问题。因此,针对无人机开展三维路径规划研究具有明显的必要性。与此同时,仅仅获得一条可行路径仍然不够,因为无人机的飞行控制系统对航迹的连续性和平滑性具有较高要求。若路径中存在大量尖锐拐角或方向突变,将会增加控制负担和能量消耗,也会降低实际执行效果。

在众多路径规划算法中,A* 算法由于具备较强的目标导向性、较高的搜索效率和较好的实现可操作性,长期以来被广泛应用于机器人导航和智能交通领域。将 A* 算法推广到三维栅格空间后,可以较自然地用于城市低空物流场景中的全局路径搜索。考虑到 A* 算法输出路径本质上仍然是离散节点连接形成的折线路径,因此还需要进一步结合曲线平滑方法提升路径质量。此外,城市低空物流任务往往具有明显的动态特征,若规划系统缺乏对动态障碍的响应能力,则很难满足真实应用需求。基于上述背景,本文围绕三维 A* 全局路径规划、路径平滑优化、动态避障与局部重规划、风场和电量约束建模等方面展开研究,构建一套较为完整的无人机低空物流仿真系统。


2 系统总体设计

本文所构建的系统面向城市低空物流场景,整体采用模块化设计思想,主要包括环境建模模块、A* 全局路径规划模块、路径平滑模块、动态避障与局部重规划模块、风场建模模块、电量评估模块以及结果分析模块。各模块之间通过统一的数据结构进行信息传递,既保证了系统逻辑上的清晰性,也便于后续进行算法替换和功能扩展。

系统首先通过三维栅格地图对城市环境进行建模,将楼宇、禁飞区、限高区等信息映射为三维占用空间。在此基础上,给定起点与终点坐标后,采用三维 A* 算法在自由空间中搜索一条满足避障约束的初始全局路径。该路径能够反映无人机从起飞点到任务目标点的总体绕行策略,是整个路径规划过程的基础。由于 A* 输出路径仍具有离散折线特征,因此系统随后对路径执行关键点提取和曲线平滑处理,通过 Bezier 圆角和 B 样条细分改善航迹连续性。

当无人机按照规划路径执行飞行任务时,系统会实时监测周围环境变化。一旦检测到动态障碍进入当前航路附近,并可能对后续飞行造成碰撞风险,则触发局部重规划机制,以当前飞行位置为新起点,基于更新后的环境状态重新搜索到目标点的可行路径,并再次进行平滑处理。与此同时,系统根据飞行过程中的位置、速度方向和环境状态计算风场扰动强度,再结合路径长度、爬升、转弯和逆风代价估算电量消耗,从而对不同路径方案的可执行性进行综合评价。通过这种设计,系统能够同时兼顾全局路径可达性、飞行轨迹平滑性以及动态环境适应性。


3 城市低空环境建模

为了在 MATLAB 环境中较好地刻画城市低空空间特征,本文采用三维栅格地图作为环境建模基础。该方法将连续空间离散为规则立方体单元,每个栅格单元对应一个空间状态,用于表示该位置是否可飞行。通过这种方式,复杂的城市空间可以被转换为便于计算和碰撞检测的离散模型,从而为 A* 算法提供直接的搜索基础。

在具体建模过程中,本文重点考虑了三类环境约束。第一类是楼宇障碍。城市中的高层建筑不仅决定了无人机的水平绕行路线,还会对飞行高度产生明显影响,因此需要在三维空间中对其平面范围和高度进行统一建模。第二类是禁飞区,这类区域虽然在物理上未必存在实体遮挡,但从飞行管制角度属于绝对不可进入空间,因此也应视作障碍区域进行处理。第三类是限高区,这类区域并非完全禁止飞行,而是要求无人机在特定区域内不得超过规定高度,这使得路径规划不仅要考虑平面避让,还要考虑垂直方向约束。

通过三维栅格建模,系统能够较为直观地表达复杂城市环境中的空间限制关系,为后续的三维 A* 搜索提供可操作的地图基础。同时,该建模方式还便于在飞行过程中加入动态障碍更新,使局部空间占用状态能够随着时间变化而实时调整。


4 基于 A* 算法的三维全局路径规划

A* 算法是本文全局路径规划的核心方法。与盲目搜索方法相比,A* 算法通过引入启发式函数,在搜索过程中不仅考虑从起点到当前节点的已知代价,还估计当前节点到终点的剩余代价,因此能够在保证较好寻路能力的同时显著减少无效搜索范围。对于城市低空物流任务而言,A* 算法既具有较好的工程可实现性,也便于与三维栅格地图直接结合,因此非常适合作为本课题的全局规划算法。

在本文中,A* 算法工作于三维栅格空间内。算法从起点开始,逐步扩展相邻可达节点,并根据综合评价函数选择更有希望接近目标的搜索方向。搜索过程中,系统需要不断判断新扩展节点是否位于障碍空间、禁飞区或限高违规区域,同时还需记录父节点信息,以便在搜索成功后从终点反向回溯得到完整路径。由于城市低空环境中的飞行路径不仅存在水平位移,还涉及高度变化,因此三维 A* 算法相较于二维情形具有更高的搜索复杂度,也更能体现无人机路径规划问题的空间特征。

本文在三维 A* 全局路径规划中强调两点。其一,A* 算法生成的是一条安全可行的基础路径,它解决的是“从哪里走才能到达目标且不碰障碍”的问题。其二,A* 算法生成的路径通常由多个离散节点串联而成,因此从飞行控制角度看仍然较为粗糙,需要后续平滑处理才能真正作为较优飞行航迹使用。也正因为如此,本文将 A* 全局规划与曲线平滑相结合,形成“先可达、后优化”的总体路径设计思路。


5 路径平滑优化方法

A* 算法得到的初始路径具有较强的离散性,虽然在栅格地图中能够保证安全避障,但往往会出现折点密集、方向变化突兀等问题,这与无人机实际飞行过程中追求连续、平顺和可控的航迹要求并不一致。因此,在完成全局路径搜索之后,必须对路径进行进一步优化。

本文的路径平滑过程主要包括关键点提取、Bezier 圆角处理和 B 样条细分三个阶段。首先,通过关键点提取方法从原始路径节点中筛选出真正决定航迹形状的拐点和转折点,减少冗余节点数量。随后,利用 Bezier 曲线对局部拐角进行圆滑过渡,使原本尖锐的折线路径在转弯处形成更加自然的曲线连接。Bezier 曲线具有局部控制性较强、实现相对简单的特点,适合用于处理局部转角平滑问题。为了进一步提高全局轨迹的连续性,本文在此基础上再引入 B 样条细分方法,对整条路径进行细化处理,使路径在整体上更加平滑自然。

需要指出的是,路径平滑不能脱离环境约束单独进行。若平滑后的轨迹进入障碍空间,则即使曲线形态再优美也没有实际意义。因此,本文在平滑过程中始终保留碰撞检测机制,当某种平滑结果与障碍物发生冲突时,系统将自动降低平滑强度或回退到上一层路径形式,以确保最终输出路径始终满足飞行安全要求。


6 动态避障与局部重规划

在城市低空物流场景中,环境并不是始终静止不变的。除固定建筑和静态禁飞区外,飞行过程中还可能出现临时动态障碍,例如其他飞行器、临时占用空域或突发事件引起的局部封锁。如果无人机始终严格按照起飞前生成的全局路径飞行,则在动态环境下容易发生局部碰撞风险。因此,动态避障与局部重规划是路径规划系统中的重要组成部分。

本文采用“全局路径引导、局部碰撞检测、触发式重规划”的动态避障策略。在飞行执行阶段,系统持续检查无人机当前位置到前方若干航段之间是否受到动态障碍影响。一旦检测到后续航路可能与障碍发生冲突,系统将以当前位置作为新的规划起点,以任务终点作为目标,在更新后的环境地图上重新执行局部路径搜索。局部路径生成后,再次执行路径平滑处理,以保证新航迹在几何上连续且满足飞行控制要求。

这种策略的优点在于既保留了 A* 全局规划对总体任务目标的引导作用,又通过局部重规划提高了系统对环境变化的响应能力。对于城市低空物流任务而言,这种方法能够较好平衡规划效率与飞行安全性,具有较强的实用价值。


7 风场扰动与电量约束建模

为了使仿真结果更贴近真实无人机物流任务,本文在路径规划系统中进一步考虑了风场扰动与电量消耗问题。现实中的无人机飞行并非单纯沿几何路径移动,环境气流和能量储备都会直接影响任务可完成性。若忽略这些因素,则路径规划结果虽然在地图层面可行,但未必适用于真实飞行条件。

在风场建模方面,本文综合考虑了背景风和建筑附近扰动风的影响。背景风用于描述城市低空环境中的基本气流分布,而高层建筑周围则会出现明显的局部风场变化,包括尾流、侧向扰动和局部升降气流等现象。通过构建分层和分区域的风场模型,系统能够在无人机经过不同区域时体现出不同的飞行环境特征,使路径评估更加符合实际情况。

在电量模型方面,本文不再简单地将能量消耗等价为飞行距离,而是综合考虑飞行距离、爬升过程、下降过程、转弯强度、逆风影响以及低电量状态下的安全裕度。一般而言,爬升和逆风飞行会明显增加能量消耗,频繁转弯也会增加姿态调整负担,而侧风则会提升控制复杂度。通过引入这些因素,系统能够更真实地反映不同路径方案在执行成本上的差异,从而使路径规划结果不仅追求避障成功,也更加关注任务可执行性和飞行经济性。


8 结论

本文围绕城市低空物流场景下无人机飞行所面临的空间复杂、约束多样和环境动态变化等问题,构建了一套基于 MATLAB2024a 的三维路径规划与动态避障仿真系统。系统以三维栅格地图为基础,对楼宇障碍、禁飞区和限高区进行统一建模;在全局路径规划阶段,采用 A* 算法完成起点到终点之间的三维可行路径搜索;在此基础上,通过关键点提取、Bezier 曲线和 B 样条方法对路径进行平滑优化,使航迹更加连续、自然和适合飞行控制。针对动态环境变化,系统还加入了动态障碍检测和局部重规划机制,提升了无人机在复杂场景中的自适应避障能力。进一步地,本文通过引入风场扰动模型与电量约束模型,增强了系统的现实意义和工程参考价值。

总体来看,本文所设计的系统能够较好体现城市低空物流无人机路径规划问题中“全局可达、局部可调、轨迹可飞、任务可执行”的综合特征。后续工作还可在更高精度地图建模、多无人机协同、智能优化算法融合以及飞行控制闭环验证等方向继续展开,从而进一步提升系统的研究深度和应用价值。

2、仿真结果演示

3、关键代码展示

当下时代学习怎么用AI是每个人已经之路,给大家推荐几本书:学习AI相关使用技巧!!!                       抓住时代红利!!!

4、MATLAB 源码获取

途径一:点击文章中蓝色字体阅读原文

途径二:复制以下网址到浏览器中打开麦完单品

https://www.maiwan8.com/#/dynamicDetail/0/476f62fcbf6a28db1214894eafb3e030/index?yqm=5FCPU

途径三:复制网址打开麦完店铺搜索该篇文章标题即可

https://www.maiwan8.com/#/packageA/userDynamicCenter/userDynamicCenter?user_id=1261511

途径四:如果以上方式均失效请通过QQ,邮或者微信公众号联系我

                                (点击上方↑↑↑↑↑蓝色字体跳转)