路径规划算法学习Day2
路径规划算法学习Day2-栅格法创建环境地图前言1、栅格法1.1、原理二、使用步骤1.引入库2.读入数据总结前言静态环境中机器人全局路径规划一直是路径规划中的一个重要问题,具有广阔的应用范围。用于全局路径规划的典型方法有可视图法、自由空间法和单元分解法等。栅格法和单元树法是两种常用的单元分解法。今天和大家一起学习的是栅格法。1、栅格法1.1、原理栅格法是对地图建模的一种方法。就是将障碍物模拟成小方
前言
静态环境中机器人全局路径规划一直是路径规划中的一个重要问题,具有广阔的应用范围。用于全局路径规划的典型方法有可视图法、自由空间法和单元分解法等。栅格法和单元树法是两种常用的单元分解法。今天和大家一起学习的是栅格法。
一、栅格法
1、原理
栅格法是对地图建模的一种方法。就是将障碍物模拟成小方格的集合,相当于将场景的所有事物进行二值化替代,障碍物为1,非障碍物为0。
栅格法实质上是将移动机器人的工作环境进行单元分割,将其用大小相等的方块表示出来,这样栅格大小的选取是影响规划算法性能的一个很重要的因素。栅格较小的话,由栅格地图所表示的环境信息将会非常清晰,但由于需要存储较多的信息,会增大存储开销,同时干扰信号也会随之增加,规划速度会相应降低,实时性得不到保证;反之,由于信息存储量少,抗干扰能力有所增强,规划速随之增快,但环境信息划分会变得较为模糊,不利于有效路径的规划。
二、栅格法matlab实现
1.创建地图
代码如下(创建地图):
1)自定义创建
map=[0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0
1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1
0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1
1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0
0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1
1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0
0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0
0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0;]
2)随机数创建20*20矩阵地图
map=rand(20)>0.3;
2.完整代码
以随机数创建地图示例
function grid_method
map=rand(20)>0.8;%随机数创建栅格地图
s_l=1;
m_vec=size(map);%(20,20)
x=0:s_l:m_vec(1);%步进数为i
y=0:s_l:m_vec(2);
figure(1);
axis([0 m_vec(1) 0 m_vec(2)]);
set(gca,'xtick',x,'ytick',y);
set(gca,'GridLineStyle','-','xGrid','on','yGrid','on');
hold on
d=1;
for i=1:m_vec(1)%外走行
for j=1:m_vec(2)%列
if map(i,j)==1
row=j-1;
col=i-1;
fill([row row+1 row+1 row],[col col col+1 col+1],'k');
d=d+1;
end
end
end
for i=1:m_vec(1)*m_vec(2)
number=1:m_vec(1)*m_vec(2);
[row,col]=ind2sub([m_vec(1) m_vec(2)],i);
text(row-0.5,col-0.5,num2str(number(i)),'color','r')
end
3.所生成地图
三、总结
这篇博文是为了后面路径算法准备的工作,期待大家的点评指正。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)