【BFS三维路径规划】广度优先搜索算法无人机三维路径规划【含Matlab源码 270期】

在这里插入图片描述

⛄一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【三维路径规划】基于matlab广度优先搜索算法无人机三维路径规划【含Matlab源码 270期】

获取代码方式2:
付费专栏Matlab路径规划(初级版)

备注:
点击上面蓝色字体付费专栏Matlab路径规划(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab路径规划(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码

⛄二、无人机简介

0 引言
随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下无人机等,决定飞行器性能主要是内部的飞控系统和外部的路径规划问题。就路径问题而言,在具体实施任务时仅靠操作员手中的遥控器控制无人飞行器执行相应的工作,可能会对操作员心理以及技术提出极高的要求,为了避免个人操作失误,进而造成飞行器损坏的危险,一种解决问题的方法就是对飞行器进行航迹规划。
飞行器的测量精度,航迹路径的合理规划,飞行器工作时的稳定性、安全性等这些变化对飞行器的综合控制系统要求越来越高。无人机航路规划是为了保证无人机完成特定的飞行任务,并且能够在完成任务的过程中躲避各种障碍、威胁区域而设计出最优航迹路线的问题。

1 常见的航迹规划算法
在这里插入图片描述
图1 常见路径规划算法
文中主要对无人机巡航阶段的航迹规划进行研究,假设无人机在飞行中维持高度与速度不变,那么航迹规划成为一个二维平面的规划问题。在航迹规划算法中,A算法计算简单,容易实现。在改进A算法基础上,提出一种新的、易于理解的改进A算法的无人机航迹规划方法。传统A算法将规划区域栅格化,节点扩展只限于栅格线的交叉点,在栅格线的交叉点与交叉点之间往往存在一定角度的两个运动方向。将存在角度的两段路径无限放大、细化,然后分别用两段上的相应路径规划点作为切点,找到相对应的组成内切圆的圆心,然后作弧,并求出相对应的两切点之间的弧所对应的圆心角,根据下式计算出弧线的长度
在这里插入图片描述
式中:R———内切圆的半径;
α———切点之间弧线对应的圆心角。

⛄三、广度优先搜索算法简介

广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。
一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想成立的。
基本步骤:
1.从图中某个顶点v0出发,首先访问v0;
2.依次访问v0的各个未被访问的邻接点;
3.依次从上述邻接点出发,访问它们的各个未被访问的邻接点。
4.若此时图中仍有未被访问的结点,则另选图中的一个未被访问的顶点作为起始点。重复广度优先搜索过程,直到图中的所有节点均被访问过。
在这里插入图片描述

⛄四、部分源代码

clc;
X=0:1:20;
Y=0:1:20;
Z=[0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.7 0.4 0.2 0.4 0.5 0.3;
0.2 0.2 0.3 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.1 0.2 0.4 0.3 0.6 0.5 0.3 0.3 0.3 0.2;
0.2 0.3 0.4 0.4 0.2 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.5 0.7 0.4 0.4 0.3 0.3;
0.2 0.3 0.3 0.6 0.3 0.4 0.3 0.2 0.2 0.3 0.6 0.4 0.3 0.2 0.4 0.3 0.8 0.6 0.7 0.4 0.4;
0.2 0.3 0.3 0.7 0.6 0.6 0.4 0.2 0.3 0.5 0.8 0.8 0.3 0.2 0.2 0.8 1.3 0.9 0.8 0.8 0.4;
0.2 0.3 0.6 0.9 0.8 0.8 0.6 0.3 0.4 0.5 0.4 0.5 0.4 0.2 0.5 0.5 1.3 0.6 1.0 0.9 0.3;
0.3 0.5 0.9 1.1 1.0 0.7 0.7 0.4 0.6 0.4 0.4 0.3 0.5 0.5 0.3 0.9 1.2 0.8 1.0 0.8 0.4;
0.3 0.5 0.8 1.1 1.1 1.0 0.8 0.7 0.7 0.4 0.5 0.4 0.4 0.5 0.4 1.1 1.3 0.7 1.0 0.7 0.6;
0.4 0.5 0.4 1.0 1.1 1.2 1.0 0.9 0.7 0.5 0.6 0.3 0.6 0.4 0.6 1.0 1.0 0.6 0.9 1.0 0.7;
0.3 0.5 0.6 1.1 1.2 1.0 1.0 1.1 0.9 0.4 0.4 0.5 0.5 0.8 0.6 0.9 1.0 0.5 0.8 0.8 0.9;
0.3 0.5 0.9 1.1 1.1 1.0 1.2 1.0 0.8 0.7 0.5 0.6 0.4 0.5 0.4 1.0 1.3 0.9 0.9 1.0 0.8;
0.3 0.3 0.5 1.2 1.2 1.1 1.0 1.2 0.9 0.5 0.6 0.4 0.6 0.6 0.3 0.6 1.2 0.8 1.0 0.8 0.5;
0.2 0.3 0.4 0.9 1.1 1.0 1.1 1.1 0.7 0.4 0.4 0.4 0.3 0.5 0.5 0.8 1.1 0.8 1.1 0.9 0.3;
0.2 0.2 0.9 1.1 1.2 1.2 1.1 1.1 0.6 0.3 0.5 0.3 0.2 0.4 0.3 0.7 1.0 0.7 1.2 0.8 0.4;
0.2 0.4 1.0 1.0 1.1 1.1 1.1 1.1 0.6 0.3 0.4 0.4 0.2 0.7 0.5 0.9 0.7 0.4 0.9 0.8 0.3;
0.2 0.3 1.0 1.0 1.0 1.2 1.0 1.1 0.8 0.3 0.2 0.2 0.2 0.5 0.3 0.6 0.6 0.8 0.7 0.6 0.5;
0.2 0.2 0.9 0.7 1.0 1.0 1.0 0.7 0.5 0.3 0.2 0.2 0.2 0.6 0.2 0.8 0.7 0.9 0.5 0.5 0.4;
0.2 0.2 0.4 0.2 1.0 1.1 0.9 0.4 0.3 0.3 0.5 0.3 0.2 0.2 0.2 0.7 0.3 0.6 0.6 0.3 0.4;
0.2 0.3 0.3 0.2 0.3 1.0 0.4 0.5 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0.6 0.5 0.4 0.4 0.2 0.2;
0.3 0.2 0.2 0.2 0.2 0.4 0.3 0.3 0.3 0.3 0.4 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.3 0.2 0.2;
0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.3 0.2 0.3 0.2 0.1 0.2 0.2 0.4 0.3 0.2 0.2 0.2 0.2];
[x,y] = meshgrid(1:.1:20, 1:.1:20);
z=interp2(X,Y,Z,x,y,‘spline’);
surf(x,y,z);
hold on
X1=[2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 18 19 18 19 18];
Y1=[1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 19 19];
Z1=[0.300000 0.400000 0.500000 0.600000 0.700000 0.800000 0.900000 0.900000 0.900000 0.900000 0.900000 0.900000 0.900000 0.900000 0.900000 0.900000 0.800000 0.700000 0.600000 0.500000 0.400000 0.300000]

⛄五、运行结果

在这里插入图片描述

⛄六、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]巫茜,罗金彪,顾晓群,曾青.基于改进PSO的无人机三维航迹规划优化算法[J].兵器装备工程学报. 2021,42(08)
[4]邓叶,姜香菊.基于改进人工势场法的四旋翼无人机航迹规划算法[J].传感器与微系统. 2021,40(07)
[5]马云红,张恒,齐乐融,贺建良.基于改进A*算法的三维无人机路径规划[J].电光与控制. 2019,26(10)
[6]焦阳.基于改进蚁群算法的无人机三维路径规划研究[J].舰船电子工程. 2019,39(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
广度优先搜索算法BFS)可以用来解决路径规划问题。在Matlab中,我们可以使用图形化用户界面(GUI)来实现。 下面是一个简单的Matlab代码示例,演示了如何使用BFS算法进行路径规划: ```matlab % 创建地图 map = zeros(10, 10); map(3:7, 4) = 1; map(5, 5:8) = 1; map(1:2, 9) = 1; % 定义起点和终点 start_node = [1, 1]; goal_node = [10, 10]; % 创建图形化用户界面 figure; image(1-map); colormap(gray); hold on; plot(start_node(2), start_node(1), 'o', 'MarkerSize', 10, 'LineWidth', 3); plot(goal_node(2), goal_node(1), 'x', 'MarkerSize', 10, 'LineWidth', 3); % 定义四个方向 directions = [[-1,0];[1,0];[0,-1];[0,1]]; % 创建队列 queue = [start_node, 0]; % 创建已访问的节点矩阵 visited = zeros(size(map)); while ~isempty(queue) % 从队列中取出第一个节点 current_node = queue(1, :); queue(1, :) = []; % 如果当前节点是终点,则结束搜索 if all(current_node(1:2) == goal_node) break; end % 遍历四个方向 for i = 1:size(directions, 1) % 计算新节点的位置 new_node = current_node(1:2) + directions(i, :); % 检查新节点是否在地图内 if all(new_node >= 1) && all(new_node <= size(map)) && ~visited(new_node(1), new_node(2)) && ~map(new_node(1), new_node(2)) % 将新节点添加到队列中 queue = [queue; new_node, size(queue, 1)]; % 标记新节点为已访问 visited(new_node(1), new_node(2)) = 1; % 绘制新节点 plot(new_node(2), new_node(1), 'o', 'MarkerSize', 10, 'LineWidth', 3); % 记录新节点的父节点 parent(size(queue, 1), :) = current_node; end end end % 回溯路径 path = [goal_node, size(queue, 1)]; while all(path(1:2) ~= start_node) % 找到当前节点的父节点 path = [parent(path(3), 1:2), parent(path(3), 3)]; % 绘制路径 plot(path(2), path(1), 'o', 'MarkerSize', 10, 'LineWidth', 3, 'color', 'g'); end ``` 在上面的代码中,我们首先创建了一个代表地图的矩阵。其中,0表示可通过的区域,1表示障碍物。然后,我们定义了起点和终点的位置,并创建了一个图形化用户界面,用于显示地图和搜索结果。 接下来,我们使用BFS算法进行路径搜索。我们从起点开始,遍历四个方向(上、下、左、右),检查每个方向上的新节点是否可以加入队列中。如果新节点在地图内、未被访问并且不是障碍物,则将其添加到队列中,并标记为已访问。我们还记录了每个节点的父节点,以便在搜索结束后回溯路径。 最后,我们回溯路径,并将其绘制在图形化用户界面中。 注意:这只是一个简单的示例,实际应用中可能需要进行更多的优化和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值