参考:占用栅格地图---知乎
上传公式失败,直接上传图片了~
计算出栅格后,利用画线算法bresenham将经过的激光束画出来,小博自己将gmapping里的画线算法改为matlab语言,代码如下:
function [freex,freey]=self_bresenham(startx,starty,endx,endy)
i=0;
j=0;
dx=abs(startx-endx);
dy=abs(starty-endy);
if dx>=dy %|k|<=1
Pm=dx-2*dy;
incr1=-2*dy;
incr2=2*(dx-dy);
if startx>endx %以小坐标为遍历点起始点
x=endx;y=endy;
xend=startx;
ydirflag=-1;
else
x=startx;y=starty;
xend=endx;
ydirflag=1;
end
if(endy-starty)*ydirflag>0 %是预料的情况;
while x<xend
i=i+1;
x=x+1;
if(Pm>0)
Pm=Pm+incr1;
else