💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
Astar算法实现飞行路径的三维规划研究
在飞行路径规划中,我们需要确定飞行器从起点到终点的最佳路径,考虑到飞行器的特性和环境中可能存在的障碍物。这个问题可以被建模成一个图,其中节点表示可能的航点或位置,边表示航线或路径,节点间的距离可以是空间距离或者其他代价。它综合利用了启发式函数和已知的路径代价信息,来找到最优路径。启发式函数用于估计从当前节点到目标节点的代价,这个估计可以帮助算法更快地找到解决方案。
一、Astar算法基本原理与三维规划适用性
Astar算法是一种启发式搜索算法,结合了Dijkstra算法的完备性和最佳优先搜索的效率。其核心公式为:
其中:
- g(n):从起点到当前节点的实际代价(如距离、能耗);
- h(n):启发函数,估计当前节点到目标节点的代价(通常使用欧氏距离、曼哈顿距离等);
- f(n):综合评估函数,指导搜索方向。
在三维路径规划中,Astar算法通过扩展三维节点(包含x、y、z坐标及朝向信息)实现空间搜索。相较于二维,三维环境需处理高度约束(如爬升角、转向角)和更复杂的邻域扩展(如26邻域),同时需平衡搜索效率与路径最优性。
适用性分析:
- 静态环境优化:在已知障碍物的静态环境中,Astar能高效生成全局最优路径。
- 三维约束支持:通过扩展节点属性和代价函数,可兼容飞行器动力学约束(如最大爬升率、最小转弯半径)。
- 动态适应性局限:传统Astar难以应对实时变化的动态障碍物,需结合局部规划算法(如动态窗口法DWA)实现避障。
二、三维环境建模方法
三维路径规划的基础是环境建模,常见方法包括:
-
栅格法:
- 将空间划分为均匀栅格,每个栅格标记为自由、障碍或威胁区域。
- 优点:简单直观,适合复杂地形;缺点:数据量随分辨率指数增长,需采用降维技术(如高度投影平面)优化计算。
- 改进案例:基于高度降维的三维栅格法,通过忽略低空障碍物减少栅格数量,提升效率。
-
点云与几何模型:
- 点云数据(如激光雷达)提供高精度环境表示,但计算复杂度高。
- 几何模型(如多面体、球体)适合结构化障碍物,但对非结构化地形适应性差。
-
八叉树与语义建模:
- 八叉树通过递归细分空间优化搜索效率,仅处理空白叶子节点以减少计算量。
- 语义建模结合空域分类(如自由区域、禁飞区),支持多约束路径生成(图b)。
三、Astar算法的三维扩展实现方式
为适应三维环境,Astar算法需在节点表示、启发函数、搜索策略等方面改进:
-
节点扩展与邻域定义:
- 传统二维采用8邻域,三维扩展为26邻域(包含垂直方向),但会导致计算量激增。改进方案包括动态邻域选择(如仅允许特定爬升角度)。
- 跳点搜索(JPS) :在三维空间跳过对称节点,减少扩展数量。实验表明,JA*算法评估节点数减少62.2%,搜索时间降低64.5%。
-
启发函数优化:
- 三维欧氏距离:
精确反映空间距离。
- 动态权重调整:根据障碍物密度或任务需求调整h(n)h(n)权重,平衡搜索速度与路径质量。例如,障碍密集区域增大h(n)h(n)权重以加快收敛。
- 三维欧氏距离:
-
复合代价函数设计:
- 融合多目标约束,如路径长度、能耗、威胁规避等。例如:
g(n)=λ1⋅距离+λ2⋅能耗+λ3⋅威胁系数g(n)=λ1⋅距离+λ2⋅能耗+λ3⋅威胁系数
- 案例:山区路径规划中,引入地形梯度信息降低陡峭路径的优先级。
- 路径平滑处理:
- 初始Astar路径存在折线段,需通过贝塞尔曲线、B样条插值优化平滑性,同时满足飞行器运动学约束。
四、动态障碍物处理技术
针对动态环境,Astar需与其他算法融合:
-
全局-局部规划融合:
- AGPF算法:结合Astar生成全局路径,人工势场法处理动态避障,解决局部最小值问题。
- 改进A-DWA融合*:全局路径节点作为DWA的中间目标,实时调整速度避开动态障碍物(图c)。
-
速度障碍法(VO):
- 计算无人机与障碍物的相对速度,判断是否进入碰撞区域,动态调整航向。
- 模糊动态窗口:优化DWA的评价函数,结合环境复杂度自适应调整参数权重,提升避障成功率。
-
预测与重规划:
- 使用卡尔曼滤波预测障碍物轨迹,触发局部重规划。实验显示,该方法可在100ms内完成多目标跟踪与路径更新。
五、性能评估指标
三维路径规划需综合多维度指标评估:
-
路径质量:
- 长度:总欧氏距离
需小于最大续航Lmax。
- 平滑度:转向角αi≤αmax,俯仰角约束确保飞行稳定性。
- 长度:总欧氏距离
-
安全性与能耗:
- 威胁代价:与障碍物/雷达的距离反比加权,避免进入危险区域。
- 高度代价:Cal=(Atra−Zmin)/(Zmax−Zmin),平衡隐蔽性与地形规避。
-
实时性:
- 节点扩展数:JA*算法减少62.2%的评估节点。
- 计算时间:改进Astar在复杂地图中搜索时间缩短50%以上。
六、研究案例与未来方向
-
典型应用:
- 消防无人机:基于Astar快速规划避开火场障碍,结合定位误差修正生成鲁棒路径。
- 城市物流:栅格危险度模型优化配送路径,减少30%飞行时间。
-
挑战与改进方向:
- 动态环境适应性:需融合强化学习实现在线学习。
- 多目标优化:结合NSGA-II等多目标算法平衡路径长度、能耗与安全。
- 高密度障碍场景:进一步优化JPS策略,支持超大规模三维地图。
七、结论
Astar算法通过三维扩展与多算法融合,已成为飞行器路径规划的核心工具。其在静态环境中表现出高效性与最优性,而动态场景下仍需依赖混合架构实现避障。未来研究需聚焦于实时性提升、多约束优化及智能化扩展,以应对城市空域管理、紧急救援等复杂任务需求。
📚2 运行结果
主函数部分代码:
clear
load ('MapData.mat');
WayPoints = [];
WayPointsAll = [];
OPEN_COUNT = 0;
OPEN_COUNT_ALL = 0;
%%%%%%Terrain Data Fill%%%%%%%
Cut_Data = Final_Data(301:400,101:200);
MIN_Final_Data = min(min(Cut_Data));
%%%%%%%ALGORITHM START%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%Compute time%%%%%%%%%%%
tic
timerVal = tic
[WayPoints,OPEN_COUNT] = A_star(MAX_X,MAX_Y,MAX_Z,20,20,7,90,70,5,MAP,CLOSED,Display_Data);
toc(timerVal)
elapsedTime = toc(timerVal)
figure(1)
axis([1 MAX_X 1 MAX_Y 1 MAX_Z]);
plot3(WayPoints(:,1),WayPoints(:,2),WayPoints(:,3),'b','linewidth',2);
hold on
surf(Display_Data(1:100,1:100)','linestyle','none');
plot3(20,20,7,'*');
plot3(90,70,5,'^');
set(gca,'xticklabel','');
set(gca,'yticklabel','');
set(gca,'zticklabel',{'2000','4000','6000','4000','5000','6000','7000','8000','9000','10000'});
xlabel('纬度');
ylabel('经度');
zlabel('高度(m)');
grid on
%%%%%%%%%%%%%%绘制禁飞区
[a,z]=ndgrid((0:.05:1)*2*pi,0:.05:20);
x=5*cos(a)+30;
y=5*sin(a)+30;
surf(x,y,z,x*0,'linestyle','none','Facealpha',0.5)
hold on
[a,r]=ndgrid((0:.05:1)*2*pi,[0 1]);
x=5*cos(a).*r+30;
y=5*sin(a).*r+30;
surf(x,y,x*0,x*0,'linestyle','none','Facealpha',0.5)
surf(x,y,x*0+20,x*0,'linestyle','none','Facealpha',0.5)
%%%%%%%%%%%%%%%%绘制异常天气区
[a,z]=ndgrid((0:.05:1)*2*pi,0:.05:20);
x=7.5*cos(a)+60;
y=7.5*sin(a)+70;
surf(x,y,z,x*0,'linestyle','none','Facealpha',0.7,'FaceColor','g')
hold on
[a,r]=ndgrid((0:.05:1)*2*pi,[0 1]);
x=7.5*cos(a).*r+60;
y=7.5*sin(a).*r+70;
surf(x,y,x*0,x*0,'linestyle','none','Facealpha',0.7,'FaceColor','g')
surf(x,y,x*0+20,x*0,'linestyle','none','Facealpha',0.7,'FaceColor','g')
hold off
grid on
view(70,60)
%%%%%%%绘制垂直剖面航图
figure(2)
X_WayPoints = WayPoints(end:-1:1,1);
Y_WayPoints = WayPoints(end:-1:1,2);
Z_WayPoints = WayPoints(end:-1:1,3);
Total_X_WayPoints = [20 X_WayPoints'];
Total_Y_WayPoints = [20 Y_WayPoints'];
Total_Z_WayPoints = [7 Z_WayPoints'];
Terrain_Data = Final_Data(301:400,101:200);
num = size(Total_X_WayPoints);
for i= 1:num(1,2)
Terrain_Z_WayPoints(i) = Terrain_Data(Total_X_WayPoints(1,i),Total_Y_WayPoints(1,i));
end
lat_lonD = [];
lat_lonDisReal = [];
lat_lonDisReal(1) = 0;
plat = (37.3565 - (25/54)*Total_X_WayPoints./100)';
plon = (101.7130 + (25/54)*Total_Y_WayPoints./100)';
pi=3.1415926;
num = size(plat)-1;
for i = 1:num(1,1)
lat_lonD(i)=distance(plat(i),plon(i),plat(i+1),plon(i+1));
lat_lonD(i)=lat_lonD(i)*6371*2*pi/360;
lat_lonDisReal(i+1) = lat_lonDisReal(i) + lat_lonD(i);
end
MIN_Final_Data = min(min(Final_Data(301:400,101:200)));
Total_Z_WayPoints = Total_Z_WayPoints.*100 + MIN_Final_Data;
h1 = plot(lat_lonDisReal,Total_Z_WayPoints,'b');
hold on
plot(lat_lonDisReal,Terrain_Z_WayPoints,'c');
h2 = plot(lat_lonDisReal,Terrain_Z_WayPoints + 1000,'r');
X_fill = lat_lonDisReal;
Y_fill = Terrain_Z_WayPoints;
Y_size = size(Y_fill);
Y_fill_low = zeros(Y_size(1,1),Y_size(1,2));
X_fillfor = [fliplr(X_fill),X_fill];
Y_fillfor = [fliplr(Y_fill_low),Y_fill];
h3 = fill(X_fillfor,Y_fillfor,'c','FaceAlpha',1,'EdgeAlpha',0.3,'EdgeColor','k');
hleg = legend([h1,h2,h3],'规划航迹垂直剖面投影','低空飞行上边界','地形垂直剖面');
set(hleg,'Location','NorthWest','Fontsize',8);
hold off
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]韦春宇,杜娅丹,程智楷等.基于无人机遥感植被指数优选的覆膜冬小麦估产研究[J/OL].农业机械学报:1-14[2024-03-05].http://kns.cnki.net/kcms/detail/11.1964.S.20240229.1556.006.html.
[2]Sheng Y ,Liu H ,Li J , et al. A framework for improving UAV decision of autonomous navigation from training to application migration under perceptual uncertainty[J]. Measurement Science and Technology,2024,35(5).