Haoh-Smile
做没做过的事,爱没爱过的人!
展开
-
详解 Dijkstra算法以及<MATLAB>实现
*** 详解 Dijkstra算法 ***Dijkstra 算法是寻找最短路径的一种搜索算法,由荷兰科学家提出。1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合 V 分成两组,第一组为已求出最短路径的顶点集合(用 S 表示,初始时 S 中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S 中,直到全部顶点都加入到 S 中,算法就结束了),第二组为其余未确定最短路径的顶点...原创 2019-10-16 11:29:26 · 2874 阅读 · 12 评论 -
栅格法建立环境地图及MATLAB实现
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%建立环境地图%%%%%%%%%%%%%%%%%%%%%%%%%%%%function DrawMap01(map)n = size(map);step = 1;a = 0 : step :n(1);axis([0 n(2) 0 n(1)]); %设置地图横纵尺寸set(gca,'xtick',a,'ytick',a,'Grid...原创 2019-05-09 15:45:28 · 22374 阅读 · 32 评论 -
栅格法建立环境地图时Dijkstra所用单位距离邻接矩阵的建立及MATLAB实现
%%%%%%%%%%%%%%%%%%%%%%%%得到环境地图的邻接矩阵%%%%%%%%%%%%%%%%%%%%%%%%function W=G2D01(map)l=size(map);W=zeros(l(1)*l(2),l(1)*l(2));for i=1:l(1) for j=1:l(2) if map(i,j)==0 for m=1:l...原创 2019-05-09 15:56:26 · 3891 阅读 · 6 评论 -
障碍栅格处的路径约束
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!栅格地图中障碍栅格处路径约束移动体栅格环境中多采用八方向的移动方式,此移动方式在完全可通行区域不存在运行安全问题,当移动体周围存在障碍栅格时此移动方式可能会发生与障碍物栅格的碰撞问题,为解决此问题加入约束条件,当在分别与障碍物栅格水平方向和垂直方向的可行栅格两栅格之间通行时,禁止移动体采用对角式移动方式。约束条件的加入,实质是改变栅格地图的邻接矩阵,将障碍栅格(数字为“1”的矩阵元素)的对角栅格设为不可达,即将对角栅格的距离原创 2021-04-23 21:30:16 · 901 阅读 · 1 评论 -
在栅格地图中,画出一条路径及<MATLAB>实现
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!在栅格地图中画出一条路径在数字化描述了环境地图以后,运用路径规划算法在建立好的栅格地图中找到一条两节点的路径,其算法给出的只是相应的节点数字量,如何更直观的在栅格地图中画出这条路径呢?下面我们就实现一下在栅格地图中画出我们运用相应算法得到的一条路径。首先根据自己所应用的环境信息建立相应的栅格电子地图,建立栅格地图的方法...原创 2019-11-04 13:50:32 · 8438 阅读 · 5 评论 -
MATLAB Dijkstra算法得到栅格图中所有最短路径
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!得到所有最短路径再次欢迎大家来到“郝搞笑”的博客,通过前几篇文章的介绍,相信大家对Dijkstra算法有了清楚的了解,大家也使用MATLAB软件自己实现了在栅格地图中画出一条路径,接下来的文章会持续更新,包含有得到所有最短路径、时间窗路径冲突检测、各冲突类型等待与更改路径选择等功能(以上都以2条路径为例),我把这些统一放到我的专栏dijkstra 路径规划欢迎大家订阅。接下来,一起实现栅格地图中的所有最短路径吧!传统Dijks原创 2021-04-25 15:08:18 · 3647 阅读 · 12 评论 -
Dijkstra算法结合时间窗规划无冲突路径
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!Dijkstra算法结合时间窗规划无冲突路径前面的几篇文章简单的介绍了Dijkstra算法的原理及MATLLAB实现,在这篇文章开始系统的将规划无冲突路径(2条路径为例)的代码整体的呈现,功能整体考虑,需要对之前几篇文章中的功能代码需要修修补补,在之后的几篇文章中会更新,这篇文章先给大家呈现一个大体框架,详细的各功能代码文与讲解会后续更新。整个功能流程图如下:执行文件代码如下:%%%%%%%%%%%%%%%%%%%%%%建原创 2021-05-04 15:08:44 · 3458 阅读 · 11 评论 -
01 - function [W,Q,I,C] = MapInit(map)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径MapInit(map)功能代码主要实现了栅格地图邻接矩阵的建立及优化,禁止障碍栅格对角处的路径规划。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为MapInit.m,代码实现如下:%%%%%%%%%%%%%%%%%%%%%%%%%环境初始化%%%%%%%%%%%%%%%%%%%%%%%%%原创 2021-05-04 15:29:07 · 1777 阅读 · 1 评论 -
02 - function [L,sp, spcost] =dijkstraR(W, s, d,q)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [L,sp, spcost] =dijkstraR(W, s, d,q)主要功能是规划得到栅格地图中两栅格间所有最短的路径,创建路径列表,为后续无冲突路径选择做铺垫。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为dijkstraR.m,代码实现如下:%%%%%%%%%%%%原创 2021-05-05 09:41:56 · 610 阅读 · 0 评论 -
03 - function [X,Y]=Get_xy(spcost,sp,map)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [X,Y]=Get_xy(spcost,sp,map)主要功能是得到路径中栅格点对应的坐标点,为后续判断路径转弯次数以及画出路径做准备。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为Get_xy.m,代码实现如下:%%%%%%%%%%%%%%%%%%%%%得到所有路径点的坐原创 2021-05-07 18:49:42 · 671 阅读 · 1 评论 -
04 - function [T,N] = GetTrastion(X,Y,sp)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [T,N] = GetTrastion(X,Y,sp)主要功能是计算得到所有最短路径的转弯次数。在两节点所有最短路径中距离是相同的,但路径转弯次数不一定相同,为得到最优路径选择距离最短及转弯次数最少的路径。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为GetTrastion.原创 2021-05-07 18:55:49 · 406 阅读 · 1 评论 -
05 - function [R] = rank( T )功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [R] = rank( T )主要功能是将所有最短路径按照转弯次数从小到大的顺序进行排序,生成预规划路径集合,为后续选择无冲突路径做准备。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为rank.m,代码实现如下:%%%%%%%%%%%%%得到次数递增的路径顺序向量%%%%%原创 2021-05-07 18:59:00 · 363 阅读 · 0 评论 -
06 - function [P]=GetPath(L,spcost,R)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [P]=GetPath(L,spcost,R)主要功能是在转弯次数递增顺序的路径集合中获取 L 数量的路径(两栅格点之间的最短路径或许有很多条,为减少路径选择复杂度,将预规划路径集合中的一部分路径进行选择)。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为GetPath.m,代原创 2021-05-08 08:25:05 · 363 阅读 · 0 评论 -
07 - function [TW] = Get_TimerWindow(spcost,sp,P,N,T)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [TW] = Get_TimerWindow(spcost,sp,P,N,T)主要功能是得到路径集合中各路径的时间窗。时间窗记录了移动体的时间位置状态信息,为判断各移动体间的路径冲突提供条件。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为Get_TimerWindow.m原创 2021-05-10 11:11:03 · 465 阅读 · 2 评论 -
08 - function Detection_TW(map,SD2,P1,P2,sp1,sp2,spcos,X,Y,TW1,TW2)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [TW2,OUT,sp,P,spcos2,X2,Y2] = Detection_TW (map,SD2,P1,P2,sp1, sp2,spcos,X,Y,TW1,TW2)主要功能是当前路径时间窗与已完成规划路径进行冲突类型检测及若存在冲突给出等待或更换路径策略。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文原创 2021-05-13 20:01:15 · 405 阅读 · 0 评论 -
09 -function [] = Get_waitTW(map,SD2,spcos,DT,P1,P2,sp1,sp2,TW1,TW2,X,Y)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [TW2,TW_a,P_a,sp_a,spcost_a,X_a,Y_a,flag] = Get_waitTW(map,SD2,spcost,DT,P1,P2,sp1,sp2,TW1,TW2,X,Y)主要功能是得到等待策略时的时间窗及更换路径时间窗及路径。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函原创 2021-05-14 10:28:53 · 347 阅读 · 0 评论 -
10 - function [] = AlterMap(num,map,SD2,P1,sp1,TW1,TW2,P2,sp2,spcost2,X2,Y2)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [TW,P,sp,spcost,X,Y]=AlterMap(num,map,SD2,P1,sp1,TW1,TW2,P2,sp2,spcost2,X2,Y2)主要功能是将冲突节点作为临时障碍点处理,规划新路径。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为AlterMap.m,原创 2021-05-14 10:31:00 · 287 阅读 · 1 评论 -
11 -function [Q,I]=plotTW(map,TW,sp,OUT,P,Q,C,I)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [Q,I]=plotTW(map,TW,sp,OUT,P,Q,C,I)主要功能是当画出时间窗。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为plotTW.m,代码实现如下:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%画出时间窗%%%%%%%%%%%%%原创 2021-05-14 10:32:39 · 383 阅读 · 7 评论 -
12 - function plotMap_Path(map,spcost,OUT,P,X,Y,C,I)功能代码
欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!各位读者大家好,专栏更新至此已全部更新完本专栏的全部功能代码,再次谢谢您的订阅,如有不足请大家指正!本专栏功能只是完成了两台AGV的无冲突路径规划,任意台AGV路径无冲突规划正在开发调试中,敬请期待。你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function plotMap_Path(map,spcost,OUT,P,X,Y,C,I)主要功能是画出地图及规划路径。代码中的function为方法关键原创 2021-05-14 10:38:17 · 298 阅读 · 0 评论 -
13-function [DT]=DetermineType(P1,P2,sp1,sp2,TW1,TW2)功能代码
标题欢迎来到 <郝搞笑> 的博客,觉得受用客官就点个赞评论一下呗!你已经读过前篇文章的讲解了吧!Dijkstra算法结合时间窗规划无冲突路径function [DT]=DetermineType(P1,P2,sp1,sp2,TW1,TW2)主要功能是判断冲突类型。代码中的function为方法关键字,表明该功能代码需要建立一个.m文件存放,文件名为函数方法名,该功能文件名为DetermineType.m,代码实现如下:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%冲突类型判原创 2021-07-13 20:09:56 · 463 阅读 · 0 评论