# 一、研究目标
## 1.1 课题研究目的:
无人机路径规划,无人机由起点出发向终点飞行,事先不知道环境地图的分布;假设无人机装备了激光雷达,能够探测一定范围的障碍物信息;利用 A*算法规划当前认为可行的路径,不断探测障碍物,并不断规划路径使无人机最终到达目标点。
## 1.2 课题研究目标:
- ① 实现最基本的地图加载、显示;
- ② 实现路径规划与显示,在前面程序的基础上,实现 A * 算法,在这个阶段可以假设环境地图都已知,规划全局的地图并显示;
- ③ 实现激光雷达的扫描,在上述程序基础上,模拟激光雷达扫描。模拟从当前位置发射多条射线,判断障碍物是否在射线上并将结果进行显示;
- ④ 动态路径规划,在上述的成果基础上,设计动态路径规划的算法并实现。
# 二、研究开发方案
本课题项目要求实现无人机的感知、路径规划,主要目的在于让我们理解无人机系统的感知与控制。而路径规划的前提是感知,如何设计感知方法,更好的模拟无人机雷达扫描策略是重点,所以我们的重心应该放在扫描策略的制定上,而之后的路径规划我们可以套用 A *算法并加以改进,因为原本的 A* 算法是针对已知地图的一个“静态”的路径规划,而我们现在的无人机路径规划是一个逐步探索计算的过程,是具有“动态”属性的。
所以最关键的点在于如何设计雷达扫描机制的基础上改进 A*算法。
# 三、关键技术
- 栅格地图的构建;
- 雷达扫描方式的设计;
- *算法的改进。
# 四、研究开发计划
本项目首先使用 MATLAB 实现,确保项目的顺利完成,力求完美完成,在此基础之上利用剩余时间进行 C++ 的学习,尽力使用 C++ 做出一些成果。以下部分按照时间节点进行阐述。
## 4.1 ——随机栅格地图的建立
在 MATLAB 中实现的步骤比较简单:
- ① 创建一个随机 0-1 矩阵,我在此处设定矩阵大小为 20×20。
- ② 在矩阵右侧和下侧增加一行一列 0,由于使用的 pcolor 函数来赋予栅格颜色,故其是由四个相邻元素决定一个格子的颜色。
- ③ 在图中标注横纵坐标,用圆点标注起始点、目标点的位置及标注字样。
- 如图 1 所示,即为建立的随机栅格地图。
![](https://www.writebug.com/myres/static/uploads/2022/1/8/64c23bcbbdf85377bf24d458e5b949d2.writebug)
## 4.2 ——学习复现 A*算法
A*算法的基本流程思想如下:
把起点加入 open list。
重复如下过程:
- 遍历 open list,查找 F 值最小的节点,把它作为当前要处理的节点。
- 把这个节点移到 close list。
- 对当前方格的 4 块相邻方格的每一个方格进行如下操作:
- ◆ 如果它是不可抵达的或者它在 close list 中则忽略它。否则,做如下操作。
- ◆ 如果它不在 open list 中,把它加入 open list,并且把当前方格设置为它的父亲,记录该方格的 F,G 和 H 值。
◆ 如果它已经在 open list 中,检查这条路径(即经由当前方格到达它那里)是否更好,用 G 值作参考。更小的 G 值表示这是更好的路径。如果是这样,把它的父亲设置为当前方格,并重新计算它的 G 和 F 值。
- 停止,当你
- ◆ 把终点加入到了 open list 中,此时路径已经找到了,或者
- ◆ 查找终点失败,并且 open list 是空的,此时没有路径。
- 保存路径。从终点开始,每个方格沿着父节点移动直至起点,这就是你的路径。
- 在 A*算法中,最重要的元素有:open list,close list 和路径代价 G,H 和 F。
- 如图 2 所示为 A*算法的实现实例。
![](https://www.writebug.com/myres/static/uploads/2022/1/8/dcd084cad4117e9ac2102b537bd8cad7.writebug)
## 4.3 ——将建立栅格地图和 A*算法结合起来
此步骤旨在验证较为复杂的地图中,之前 A*算法是否能够实现,比较简单,如图 3 所示,即为效果展示图,无人机可以达到终点。
![](https://www.writebug.com/myres/static/uploads/2022/1/8/4eff995979617905010a9a2edcf21141.writebug)
## 4.4 ——学习如何用 MATLAB 制作动图
在此阶段,先学习如何使用 MATLAB 制作动态图,为之后演示无人机 A*算法寻路做一个基础工作。
在此部分我主要学习的特殊函数包括:
①drawnow:刷新屏幕。当代码执行时间长,需要反复执行 plot 时,MATLAB 程序不会马上把图像画到 figure 上,这时,要想实时看到图像的每一步变化情况,需要使用这个语句。我们需要实时显示,因此需要使用这个函数。
- ②getframe:捕获坐标区或图窗作为影片帧。
- ③frame2im:返回与影片帧关联的图像数据。输出一个三维矩阵。
- ④rgb2ind:将 rgb 图像转化成索引图像。
- 重点的代码:imwrite,当写第一帧的时候,使用 Loopcount 的 inf,即为无限循环,当写其他帧的时候,使用 WriteMode 的 append 追加。
- 如图 4 所示即为最简单的一个 MATLAB 动图实现。
![](https://www.writebug.com/myres/static/uploads/2022/1/8/09c20d9b2503818bce378b6c0591fd78.writebug)
## 4.5 ——将简单的 A*寻路制作成动图显示
此部分,先用一个简单的障碍物探索能否实现无人机的路径规划动态展示如动图 5 左图所示,然后将其结合到复杂环境中看它的表现,如动图 5 右图所示。
在简单环境中可以看出,A*算法在遇到前面有“一堵墙”的障碍物时,会停止前进并扩张之前走过的路径,查找如何能够绕过障碍物,甚至它会考虑从起点先沿向终点的反向进行寻路,在扩张到可以绕过障碍物之后其也并没有马上走过去,而是搜索到暂停位置与墙相隔的位置之后,才决定直接走过去,以此来绕过障碍物。
在复杂环境中,我们可以看到,在无人机走到死角时,会选择从之前来的路径重新找路。
![](https://www.writebug.com/myres/static/uploads/2022/1/8/bfaacd16ef2e0c8d04991d1f526b5c03.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/1/8/2749e5399ca733ec71b83ca3fbe8a1aa.writebug)
可以从复杂环境的展示中看出,此时无人机是需要不断的探索全图,进行一个路径规划,在左边一大片区域是备选方案,以防走到死角无法走通。但是,真实的无人机不可能如此扫图,而是走到那里探索到那里,即动态扫描,这样也会加快算法的运行,此即为下一步的工作目标:先实现动态扫描再进行雷达扫描方式的改进。
## 4.6 ——动态扫描与死角退回
针对上一节提出的无人机地图扫描方法,我认为不能以一个上帝视角来进行未知区域的扫描与计算,而应该是以无人机的特性来看,走到哪里,接着扫描哪里,如果遇到障碍物无法前进的情况下,才进行退回,重新规划,但这样操作就与原始的 A *算法有所区别了,传统的 A* 算法会遍历每一个格子的综合代价,以便选取最优的路径,而相对于一个正方形地图,如图 6 所示,起始点与目标点在地图的两个对角,那么如果采用曼哈顿距离,在同一条反次对角线上的格子,综合代价都是相等的,如图所示的几条反次对角线上到两点的距离都是相同的。所以会出现一个格子向不同方向行动时,综合代价是相同的,而 A *算法以综合代价 F 为评价指标来进行排名并行动是会造成“弯路”的,所以,我们不仅要改进 A* 走哪儿扫哪儿的问题,还要令在综合代价 F 相同时,选择启发函数 H 最小的路径。
![](https://www.writebug.com/myres/static/uploads/2022/1/8/9aae94f229c53bdc0d69a270fd3d0087.writebu
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
课题研究目的: 无人机路径规划,无人机由起点出发向终点飞行,事先不知道环境地图的分布;假设无人机装备了激光雷达,能够探测一定范围的障碍物信息;利用 A*算法规划当前认为可行的路径,不断探测障碍物,并不断规划路径使无人机最终到达目标点。 课题研究目标: ① 实现最基本的地图加载、显示; ② 实现路径规划与显示,在前面程序的基础上,实现 A * 算法,在这个阶段可以假设环境地图都已知,规划全局的地图并显示; ③ 实现激光雷达的扫描,在上述程序基础上,模拟激光雷达扫描。模拟从当前位置发射多条射线,判断障碍物是否在射线上并将结果进行显示; ④ 动态路径规划,在上述的成果基础上,设计动态路径规划的算法并实现。
资源推荐
资源详情
资源评论
收起资源包目录
100012309-基于MATLAB实现飞行器信息系统(课程设计).zip (42个子文件)
airinfo
结果2.png 8KB
LICENSE 1KB
飞行器信息系统课程设计报告-2018300492-安乾军.pdf 801KB
第三步:代码重构
myAstar.m 2KB
Drawapath.m 922B
goahead.m 2KB
makeaGIF.m 323B
b.mat 195B
c.mat 211B
result.gif 568KB
reconsitution.m 2KB
d.mat 278B
goaheade.m 2KB
.keep 0B
Drawamap.m 746B
飞行器信息系统课程设计报告-2018300492-安乾军.docx 7.43MB
第二步:自己编写的代码实现更好的功能
result4.gif 673KB
结果2.png 8KB
two.m 6KB
Drawapath.m 941B
one.m 4KB
makeaGIF.m 381B
b.mat 195B
c.mat 211B
result5.gif 841KB
result3.gif 192KB
d.mat 278B
结果1.png 7KB
Drawamap.m 766B
.gitignore 446B
结果.png 8KB
README.md 28KB
第一步:分7步实现简单的功能
minexplore7.m 9KB
result2.gif 3.62MB
astar2.m 4KB
makeGIF4.m 635B
simple_astar_GIF5.m 9KB
map1.m 672B
result1.gif 1.26MB
comprehensive6.m 9KB
.keep 0B
map_astar3.m 6KB
共 42 条
- 1
资源评论
神仙别闹
- 粉丝: 2680
- 资源: 7667
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CocosDashboard-v2.1.3-win-042311.exe
- 基于yolov5和deepsort算法的车辆检测项目源码+数据集(高分项目).zip
- 基于YOLOv5+Deepsort实现车辆行人追踪和计数(完整源码+说明文档+数据).zip
- 150360364459673Pex10_9.py
- 74ls138译码器Multisim仿真设计
- 深度学习在图像分类任务中的应用
- 华为OD资源整理-包含华为OD概述,招聘流程等
- 基于BP神经网络的供热管道压力和温度预测(代码完整,数据齐全)
- 架空电力线弧垂计算公式
- 基于BP神经网络的四分类预测,基于RBF的四分类预测,基于GRNN的四分类预测,基于PNN的四分类预测
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功