基于MATLAB的PRM算法的路径规划设计

下载链接:

【Matlab期末大作业】基于MATLAB的PRM算法的路径规划设计(大报告+源代码+注释)

  • 课题内容和要求

学会运用MATLAB 解决实际优化问题,例如粒子群优化算法,模拟退火算法等。要求每个同学任意选择学习一种智能优化算法,并应用解决路径规划问题。也可以多名同学进行组队,利用多种算法求解同一问题,并对比不同算法求解特定问题的性能。

1:随机生成具有空白区域和路障区域的二维仿真地图,保证起点和终点之间有一条路径可达。

2:任意选择学习一种智能优化算法,例如PRM算法,粒子群优化算法,蚁群算法,模拟退火算法等。

3:利用选择的优化算法去解决路径规划的问题,并且通过GUI界面显示规划好的路径结果。

二、需求分析

地图生成模块(build):实现二维仿真地图,具备空白区域(自由通行)和黑色区域(路障禁止通行);每次随机生成空白格子和黑色格子的数量和位置不同;在每次生成的地图中,固定起点和终点位置,保证在每次的随机地图中,两点间必有一条路径可达。

PRM算法模块(PRM):基于PRM算法思想,实现PRM概率路径的算法设计,并且能够基于随机地图去找到多种可行的路径规划方案。

画图模块(dijkstar):根据PRM算法求解随机地图的路径链表,选取dijkstar描绘出一条合适的路径;基于MATLAB的GUI模块设计出便于人机交互的可视化图形界面,显示出最终的算法规划结果。

三、概要设计

  1. Node类: classdef Node

创建了一个Node类用来代表无向图中的节点,每个Node都记录着与自己相邻的所有节点以及其连接边的代价值,并通过创建一个Node的结构图数组node_list来表示整个无向图。

类的成员包括:

type:节点的类型(起点、终点、路点)。

coordinate:节点的实际坐标。

adjacent_coordinate:与该节点相邻的所有节点的坐标。

adjacent_index:与该节点相邻的所有节点在node_list中的索引。

cost:与相邻点的边的代价值。

2.计算距离函数:  function dis = distance(node1, node2)

用欧几里得度量(euclidean metric)计算二维空间两个Node节点间的实际距离;欧几里得度量(欧氏距离)是欧几里得空间中两点间“普通”(即直线)距离,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

计算公式如下:

3.碰撞检测函数: function result = ObstacleCheck(start, target, Map, step_length)

碰撞检测是PRM算法中十分重要的部分。如果没有碰撞检测机制,就无法正确构建一张避开障碍的无向图,也就无法生成一条规划好的路径。

碰撞检测机制如下图所示:

假设要对A,B两点之间的连线进行碰撞检测,那么就需要对矢量AB进行等距采样,从中分割出若干个等间距的采样点,从而逐个检测其是否位于障碍物的位置。至于要从中取多少个采样点,这取决于你对其检测精度的要求。

采样点的个数取决于对碰撞检测精度的要求。显而易见的是,采样点越多,碰撞检测结果就越精确,但是当采样点的数量到达某一阈值后,随着其数目的增加,检测精度的提高并没有明显得提升,相反,过多的采样点在一定程度上增加了计算的压力,降低了程序运行时的性能。

碰撞函数的流程图如下:

4.随机地图生成:build.m

基于深度优先搜索法去遍历地图中的所有可通行点,并且生成一条连通的可行路径。深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。

随机地图生成的流程图如下:

5.PRM路径生成函数:

function[NodeList]=PRM_Builder(Map,origin,destination,sampling_points,step_length_limit, show_graph)

PRM是基于启发式节点增强策略的一种路径规划方法,很好的解决了在高维空间中构造出有效路径图的困难。它通过在构形空间中进行采样、对采样点进行碰撞检测、测试相邻采样点是否能够连接来表示路径图的连通性。此方法的一个巨大优点是,其复杂度主要依赖于寻找路径的难度,跟整个规划场景的大小和构形空间的维数关系不大。 然而当规划的路径需要通过密集的障碍物或者需要经过狭窄的通道时,PRM方法的效率变的低下。

PRM的作用:PRM的主要任务是将原本的栅格地图转化为一张稀疏无向图,然后将简化得到的无向图交给Dijkstar进行查询。

PRM路径生成函数的流程图如下:

6.主程序: begin.m

调用不同的函数与M文件,实现对随机地图的可行路径规划。

主程序流程图如下:

7.GUI设计

四、详细设计

1. Node类

 2.计算距离函数:

3. 碰撞检测函数:

4. 随机地图生成:

 5.PRM路径算法:

6. GUI函数:

6.测试数据以及结果如下:

序号

起点

终点

地图大小

步长限制

采样点

时间结果

1

(0,1)

(11,10)

11 x 11

5

100

6.16s

成功

2

(0,1)

(11,10)

11 x 11

20

100

3.88s

成功

3

(0,1)

(15,14)

15 x 15

5

200

20.78s

成功

4

(0,1)

(15,14)

15 x 15

5

100

15.10s

失败

5

(0,1)

(15,14)

15 x 15

5

200

49.58s

成功

7.测试数据及其结果分析

1:成功

2:成功

3:成功

4:失败

【大作业】基于MATLAB的PRM算法的路径规划设计(随机地图+GUI+源码+报告)相关推荐

  1. 【路径规划】基于matlab Hybrid A_Star算法机器人路径规划【含Matlab源码 1390期】

    ⛄一.A_star算法简介 1 A Star算法及其应用现状 进行搜索任务时提取的有助于简化搜索过程的信息被称为启发信息.启发信息经过文字提炼和公式化后转变为启发函数.启发函数可以表示自起始顶点至目标 ...

  2. matlab求解多自由度振动系统,【2017年整理】1-《机械振动基础》大作业,基于matlab的多自由度振动.doc...

    [2017年整理]1-<机械振动基础>大作业,基于matlab的多自由度振动 <机械振动基础>大作业 (2016年春季学期) 题目多自由度振动系统的固有频率和固有阵型 姓 名学 ...

  3. 数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码

    @数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...

  4. 用matlab实现女声变男声步骤,数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码...

    @数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...

  5. HTML期末大作业~基于HTML+CSS+JavaScript 牛排美食餐饮网站设计与实现(6个页面)

    HTML期末大作业~基于HTML+CSS+JavaScript 牛排美食餐饮网站设计与实现 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总 ...

  6. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

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

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab广度优先搜索算法无人机 ...

  8. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  9. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. 福州大学计算机组成原理试题,2016年福州大学计算机专业基础C复试之计算机组成原理复试笔试最后押题五套卷...
  2. ping(团队作业)
  3. Android Fragment 生命周期及其正确使用(建议使用自定义View替换Fragment)
  4. Java无处不在:使用DukeScript在任何地方运行一次编写
  5. 【牛客 - 551E】CSL 的魔法(贪心,思维,STLmap,分块)
  6. python 经典100例(1-20)
  7. android socket 框架c#,C#与Android Socket通信
  8. Shell 的简单常用语法
  9. java设计一百亿的计算器_请设计一个一百亿的计算器
  10. ENVI-IDL基础学习(1)
  11. qcc300x笔记之固件升级(六)
  12. [渝粤教育] 中国地质大学 国际贸易实务 复习题
  13. 百科不全书之Python进阶
  14. 计算机无法安装网卡驱动,如何用驱动人生解决win10网卡驱动问题
  15. 内存的分页管理(在4G内存下)
  16. 【CuteJavaScript】GraphQL真香入门教程
  17. Linux系统进程的理解与相关命令的使用系列
  18. 高三物理教学工作计划
  19. 关闭windows安全警报_趣谈中医(11)痛泻要方所治痛泻,好比水坝要泄洪,必拉响警报...
  20. 荣耀6插上卡显示无服务器,华为荣耀6怎么插卡?荣耀6sim卡安装方法步骤图文详解...

热门文章

  1. H265和H264区别
  2. 2.G3-PLC PHY
  3. IT项目管理领导力,修炼自我,成就共同的成就。
  4. 原生小程序下载功能(直接复制用就行了)
  5. IDEA安装及其使用详解教程
  6. 在vue中如何使用字体图标(阿里巴巴)
  7. 无缝衔接的人会遭报应吗_请大家不要伤害别人报应早晚会来
  8. 旅行出游首选 贝尔金便携无线路由器
  9. 网页防篡改系统与网站安全
  10. 基于Java的小学数学辅助教学软件