基于麻雀算法的无人机航迹规划

文章目录

  • 基于麻雀算法的无人机航迹规划
    • 1.麻雀搜索算法
    • 2.无人机飞行环境建模
    • 3.无人机航迹规划建模
    • 4.实验结果
      • 4.1地图创建
      • 4.2 航迹规划
    • 5.参考文献
    • 6.Matlab代码

摘要:本文主要介绍利用麻雀算法来优化无人机航迹规划。

1.麻雀搜索算法

麻雀搜索算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/108830958。

2.无人机飞行环境建模

​ 环境模型的建立是考验无人机是否可以圆满完成人类所赋予各项任务的基
础和前提,其中第一步便是如何描述规划空间中的障碍物。首先我们将采取函数模拟法模拟地貌特征。其函数表达式为:
z(x,y)=sin(y+a)+bsin(x)+ccos(dy2+x2)+ecos(y)+fsin(fy2+x2)+gcos(y)(1)z(x,y)=sin(y+a)+bsin(x)+ccos(d\sqrt{y^2+x^2})+ecos(y)+fsin(f\sqrt{y^2+x^2})+gcos(y)\tag{1} z(x,y)=sin(y+a)+bsin(x)+ccos(dy2+x2​)+ecos(y)+fsin(fy2+x2​)+gcos(y)(1)
其中,(x,y)(x, y)(x,y) 为地形上某点投影在水平面上的点坐标,zzz 则为对应点坐标的高度。式中a,b,c,d,e,f,ga, b, c, d, e, f , ga,b,c,d,e,f,g 是常系数,想要得到不同的地貌特征可以通过改变其常系数的大小,以上建模是作为环境模型的基准地形信息。但为了得到障碍区域我们还需要在这个基准地形上叠加山峰模型,这样就可以模拟像山峰、丘陵等障碍地理信息。山峰模型的数学表达式为:
h(x,y)=∑ihiexp[−(x−xoi)2ai2−(y−yoi)2bi2]+ho(2)h(x,y)=\sum_ih_iexp[-\frac{(x-x_{oi})^2}{a_i^2}-\frac{(y-y_{oi})^2}{b_i^2}]+h_o \tag{2} h(x,y)=i∑​hi​exp[−ai2​(x−xoi​)2​−bi2​(y−yoi​)2​]+ho​(2)
式 (2)中,hoh_oho​ 和 hih_ihi​ 分别表示基准地形和第iii座山峰的高度,(xoi,yoi)(xoi , y oi )(xoi,yoi)则表示第 i座山峰的中心坐标位置,a i 和 b i 分别是第 i 座山峰沿 x 轴和 y 轴方向的坡度。由式(1)和(2),我们可以得到如下表达式:
Z(x,y)=max[z(x,y),h(x,y)](3)Z(x,y)=max[z(x,y),h(x,y)]\tag{3} Z(x,y)=max[z(x,y),h(x,y)](3)
无人机在躲避障碍物的同时也会经常遇到具有威胁飞行安全的区域,我们称之为威胁区域。这些威胁区域可以是敌人的雷达和防空导弹系统的探测威胁区域也可以是一些其它的威胁,一旦无人机进入这些区域很有可能会被击落或者坠毁。为了简化模型,本文采用半径为 r 的圆柱形区域表示威胁区域,其半径的大小决定威胁区域的覆盖范围。每一个圆柱体的中心位置是对无人机构成最大威胁的地方并向外依次减弱。

3.无人机航迹规划建模

​ 在环境建模的基础上,无人机航迹规划需要考虑到在执行复杂任务的过程中自身性能约束要求,合理的设计航迹评价函数才能使得麻雀搜索算法得出的最后结果符合要求,并保证规划出的航迹是有效的。考虑到实际环境中,无人机需要不断适应变化的环境。所以在无人机路径规划过程中,最优路径会显得比较复杂,并包含许多不同的特征。基于实际的情况,本文采用较为复杂的航迹评价函数进行无人机路径规划。影响无人机性能的指标主要包括航迹长度、飞行高度、最小步长、转角代价、最大爬升角等。

​ 搜索最佳路径通常与搜索最短路径是密不可分的。在无人机航迹规划过程中,航迹的长度对于大多数航迹规划任务来说也是非常重要的。众所周知,较短的路线可以节省更多的燃料和更多的时间并且发现未知威胁的几率会更低。我们一般把路径定义为无人机从起始点到终点所飞行路程的值,设一条完整的航线有nnn个节点,其中第iii个航路点和第i+1i+1i+1个航路点之间的距离表示为 lil_ili​ ,这两个航路点的坐标分别表示为(xi,yi,zi)(x_i,y_i,z_i )(xi​,yi​,zi​),(xi+1,yi+1,zi+1)(x_{i+1}, y_{i+1},z_{i+1})(xi+1​,yi+1​,zi+1​)并分别记作 g(i)g(i)g(i)和 g(i+1)g(i+1)g(i+1)。航迹需要满足如下条件:
{li=∣∣g(i+1)−g(i)∣∣2Lpath=∑i=1n−1li(4)\begin{cases} l_i = ||g(i+1)-g(i)||_2\\ L_{path}=\sum_{i=1}^{n-1}l_i \end{cases}\tag{4} {li​=∣∣g(i+1)−g(i)∣∣2​Lpath​=∑i=1n−1​li​​(4)
在飞行的过程中会遇到障碍物或者进入威胁区域,如果无人机无法躲避障碍物或者飞入了威胁区域将面临被击落或坠毁的危险以至于无法到达终点,记为Lpath=∞L_{path}=\inftyLpath​=∞,但是无穷函数在实际问题中很难表示,我们采用惩罚的方式进行处理。一般情况下,为了利用地形覆盖自身位置,无人机应尽可能降低高度这可以帮助自身避免一些未知雷达等威胁。但是太低的飞行高度同样会加大无人机同山体和地面的撞击几率,因此设定稳定的飞行高度是非常重要的。飞行高度不应该有太大的变化,稳定的飞行高度可以减少控制系统的负担,节省更多的燃料 。为了使无人机飞行更加安全,给出的飞行高度模型:
{hheight=1n∑i=0n−1(z(i)−z‾)2z‾=1n∑i=0n−1z(i)(5)\begin{cases} h_{height}=\sqrt{\frac{1}{n}\sum_{i=0}^{n-1}(z(i)-\overline{z})^2}\\ \overline{z}=\frac{1}{n}\sum_{i=0}^{n-1}z(i) \end{cases}\tag{5} {hheight​=n1​∑i=0n−1​(z(i)−z)2​z=n1​∑i=0n−1​z(i)​(5)
无人机的可操作性也受到其转角代价函数的限制。,在飞行过程中无人机的转角应不大于其预先设定的最大转角,转角的大小会影响其飞行的稳定性。本文的研究中,设定最大转角为 ΦΦΦ,当前转角为θ\thetaθ并且aia_iai​是第iii段航路段向量。
{cosθ=aiTai+1∣ai∣∣ai+1∣Jturn=∑i=1n(cos(Φ−cosθ))(6)\begin{cases} cos\theta =\frac{a_i^Ta_{i+1}}{|a_i||a_{i+1}|}\\ J_{turn}=\sum_{i=1}^n(cos(\Phi-cos\theta)) \end{cases}\tag{6} {cosθ=∣ai​∣∣ai+1​∣aiT​ai+1​​Jturn​=∑i=1n​(cos(Φ−cosθ))​(6)
其中,∣a∣|a|∣a∣代表矢量aaa的长度。

​ 通过对以上三个方面建立了无人机航迹规划的代价函数,可以得出本文的航迹评价函数如下:
Jcost=w1Lpath+w2hheight+w3Jturn(7)J_{cost}=w_1L_{path}+w_2h_{height}+w_3J_{turn} \tag{7} Jcost​=w1​Lpath​+w2​hheight​+w3​Jturn​(7)
其中,JcostJ_{cost}Jcost​是总的代价函数,参数wiw_iwi​ ,i=1,2,3i=1,2,3i=1,2,3 表示每个代价函数的权值,且满足如下条件:
{wi≥0∑i=13wi=1(8)\begin{cases} w_i\geq0 \\ \sum_{i=1}^3 w_i=1 \end{cases} \tag{8} {wi​≥0∑i=13​wi​=1​(8)
通过对总的代价函数进行有效地处理,我们可以得到由线段组成的航迹。不可否认的是得到的路径往往是仅在理论上可行,但为了实际可飞,有必要对航迹进行平滑处理。本文采用三次样条插值的方法对路径进行平滑。

4.实验结果

4.1地图创建

设置地图参数a, b, c, d, e, f , g=1。地图大小为:200*200。设置三个山峰,山峰信息如表1所示。威胁区域信息如表2所示

表1:山峰信息

信息 山峰中心坐标 山峰高度 山峰X方向坡度 山峰y方向坡度
山峰1 [60,60] 50 20 20
山峰2 [100,100] 60 30 30
山峰3 [150,150] 80 20 20

表2 威胁区域信息

信息 威胁区域中心坐标 威胁区域半径
威胁区域1 [150,50] 30
威胁区域2 [50,150] 20

创建的地图如下:

4.2 航迹规划

设置起点坐标为[0,0,20],终点坐标为[200,200,20]。利用麻雀算法对航迹评价函数式(7)进行优化。优化结果如下:

从结果来看,麻雀算法规划出了一条比较好的路径,表明算法具有一定的优势。

5.参考文献

[1]薛建凯. 一种新型的群智能优化技术的研究与应用[D].东华大学,2020.DOI:10.27012/d.cnki.gdhuu.2020.000178.

6.Matlab代码

基于麻雀算法的无人机航迹规划 - 附代码相关推荐

  1. 基于麻雀算法改进的DELM预测-附代码

    麻雀算法改进的深度极限学习机DELM的回归预测 文章目录 麻雀算法改进的深度极限学习机DELM的回归预测 1.ELM原理 2.深度极限学习机(DELM)原理 3.麻雀算法 4.麻雀算法改进DELM 5 ...

  2. 麻雀搜索算法(SSA)文章复现:《基于混沌麻雀搜索算法的无人机航迹规划方法_汤安迪》

    麻雀搜索算法(SSA)文章复现:<基于混沌麻雀搜索算法的无人机航迹规划方法_汤安迪> 策略为:立方混沌+反向学习初始化种群+反向精英策略改进发现者策略+正余弦算法改进加入者策略+动态调整警 ...

  3. 基于麻雀搜索算法的同步优化特征选择 - 附代码

    基于麻雀搜索算法的同步优化特征选择 - 附代码 文章目录 基于麻雀搜索算法的同步优化特征选择 - 附代码 1.数据集 2.SVM模型建立 3.麻雀搜索算法同步优化特征选择 4.测试结果 5.参考文献: ...

  4. 基于灰狼算法优化的lssvm回归预测-附代码

    基于灰狼算法优化的lssvm回归预测 - 附代码 文章目录 基于灰狼算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于灰狼算法优化的LSSVM 4.测试结果 5.Mat ...

  5. 基于麻雀搜索算法优化的支持向量机回归预测-附代码

    基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...

  6. 【图像分割】基于麻雀算法优化Kmeans实现图像分割附Matlab代码

    1 内容介绍 提出一种基于K-Means聚类的麻雀算法,该算法利用麻雀算法鲁棒性较强且不易陷入局部最优值的特点,动态的确定了聚类的数目和中心,解决了K-Means聚类初始点选择不稳定的缺陷,在此两种算 ...

  7. 【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码

    1 内容介绍 一种基于麻雀搜索算法优化极限学习机的风电功率预测方法,具体包括如下步骤:步骤1,确定影响风电功率的主导影响因子:步骤2,构建麻雀搜索算法优化核极限学习机预测模型,通过该模型对风电功率进行 ...

  8. 【无人机】基于混合粒子群算法求解无人机航迹规划问题附Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  9. 【路径规划-PRM路径规划】基于RRT算法避障路径规划附完整matlab代码

    1 内容介绍 尽管RRT算法是一个相对高效率,同时可以较好的处理带有非完整约束的路径规划问题的算法,并且在很多方面有很大的优势,但是RRT算法并不能保证所得出的可行路径是相对优化的.因此许多关于RRT ...

最新文章

  1. 汇总|目标检测中的数据增强、backbone、head、neck、损失函数
  2. 解决PHP下载文件名中文乱码
  3. 计算机与技术卓越信息技术,2018版计算机科学与技术专业(卓越工程师)培养目标与毕业要求...
  4. [2020.11.27NOIP模拟赛]拼图王【dp】
  5. [css] css中最常用的字体有哪些?你是怎么选择字体的?
  6. 【计蒜客 - 2019南昌邀请赛网络赛 - I】Max answer(单调栈,RMQ)
  7. 工程图标注粗糙度_Inventor教程之工程图标注实例
  8. C语言 | 内存对齐02 - 为什么会有内存对齐?它解决了什么问题
  9. 停止使用C#异步流保存到磁盘
  10. Google Cloud大规模宕机;中国正式进入 5G 商用元年!苹果发布SwiftUI |开发者周刊...
  11. 计算机硬盘权限,磁盘权限设置
  12. ASP.NET中 Bin,App_Browser,App_code,App_Data,App_Theme 等文件
  13. python类的数组属性_python3库numpy数组属性的查看方法
  14. Java 在线反编译反编译工具
  15. 科隆国际游戏展:戴尔与ALIENWARE展示创新电竞产品
  16. php源码安装图文教程_安装PHP的教程及说明(图文详解)
  17. 华三V5交换机ssh配置
  18. ddos攻击服务器的几种方式
  19. 命令行修改微信小程序开发AppId
  20. Vulkan Samples 阅读 -- Basics(四): Texture Arrays Cube Map Textures 3D Textures

热门文章

  1. LVGL8制作简易时钟
  2. c语言小游戏——弹跳的小球和简单的飞机游戏
  3. SpringBoot2 核心知识点
  4. 详解 Android 系统启动流程
  5. wps参考文献乱码。英文的行间距怎么调?
  6. HTML绘制太极八卦图
  7. 我的分享:第九章:月薪三万执行计划
  8. Node 开发一个多人对战的射击游戏(实战长文)
  9. tableau:柱图的两种实现方式
  10. 分享830个蜘蛛IP段(分析1G日志得)