💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥



🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。



⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 运行结果

📝2.1 Dijkstra算法

📝2.2 A*算法

📝2.3 动态规划

🎉3 Matlab代码实现


💥1 概述

     在基于采样的方法中,需要在落在给定地图的未占用区域的地图上生成一定数量的点。然后,我们计算哪个节点与哪些节点有连接。通过这种方式,获得了生成的随机点的无向图。

    为了生成这些点,可以使用一些复杂的方法来尽可能聪明地在地图周围分布节点。但是在那个存储库中,选择通过均匀随机来生成它们。生成了100个节点,这些节点位于地图的自由区域。有给定的映射,生成的节点及其连接。

      通过Dijkstra、Astar和动态规划测试了102个节点图路径规划。

📚2 运行结果

基于Dijkstra、A*和动态规划的移动机器人路径规划(Matlab代码实现)_算法

📝2.1 Dijkstra算法

基于Dijkstra、A*和动态规划的移动机器人路径规划(Matlab代码实现)_算法_02

📝2.2 A*算法

基于Dijkstra、A*和动态规划的移动机器人路径规划(Matlab代码实现)_matlab_03

📝2.3 动态规划

基于Dijkstra、A*和动态规划的移动机器人路径规划(Matlab代码实现)_matlab_04

部分代码:

function [map, nodelocation]= generate_node(map,nnode)
% merge vertices of all obstacle
obsx=map.pgx{1};
obsy=map.pgy{1};
for i=2:length(map.pgx)
obsx=[obsx NaN map.pgx{i}];
obsy=[obsy NaN map.pgy{i}];
end
map.obsx=obsx;
map.obsy=obsy;
% set nodelocation to all zero
nodelocation=zeros(nnode,2);
% generate nodes
n=1;
while (n<=nnode)
% generate random two number in range of map's border
rx=rand* (map.xrange(2)-map.xrange(1)) + map.xrange(1);
ry=rand* (map.yrange(2)-map.yrange(1)) + map.yrange(1);
state=0;
% if this node is not inside any obstacle
if ~inpolygon(rx,ry,obsx,obsy)
% add this location to nodelocation list
nodelocation(n,1)=rx;
nodelocation(n,2)=ry;
n=n+1;
end
end
hold on;
plot(nodelocation(:,1),nodelocation(:,2),'r*');
hold off;

 

🎉3 Matlab代码实现