定位、建图与 SLAM

占据栅格地图

占据栅格地图,是机器人把一处空间画成方格纸那样的地图:地面被切成一张由相等小方块组成的细密网格,每个方块里存着一个数字,回答唯一一个问题——这里有没有实在的东西挡着?想象你在一间房的平面图上铺一张透明方格纸,凡是有墙或桌子压着的方块就把它涂黑,凡是你能走过去的空地就让它留白。这张一格一格涂出来的纸,就是地图。每个方块称为一个栅格单元,一个典型的单元也许覆盖地面上五厘米见方的一小片。

诚实的微妙之处在于,机器人对任何一个方块都从来不是完全确定的,所以每个单元并不只是写“占据”或“空闲”——它存的是一个概率,一个刻画机器人“有多确信这个方块被挡住”的数字。一个被激光一次又一次打中的单元,会朝着“几乎确定被占据”攀升;一个让光束干净穿过的单元,会朝着“几乎确定空闲”滑去;而一个机器人从未瞥见过的方块,则停在五五开上,那是一个诚实的耸肩,意思是“未知”。随着机器人四处行驶、来回扫描传感器,每一次读数都会推一推它穿过的那些单元,于是画面便从一团模糊的雾,逐渐锐化成一张清晰的平面图。

这是存储机器人地图最流行的方式之一,因为它用起来妙在简单。路径规划器只要扫一眼网格,就能只挑浅色的空闲单元来规划路线,同时避开深色、被挡住的单元;定位方法则能把一次新的传感器扫描与网格相比对,从而算出机器人站在哪里。它的代价是内存和细节:单元切得越小,越能捕捉精细的结构,却越吃存储空间;又因为世界被切成了方块,又细又斜的物体可能会在单元边缘处被糊开。

在公寓里慢慢转完一圈后,扫地机器人的应用给你看一张干净的平面图:深色的线条勾出墙壁和家具腿,浅色的区域是它可以清扫的空旷地毯,而沙发底下那几块灰色斑块,则是它始终没怎么看清的地方。

深色单元是墙,浅色单元是空地,灰色单元则仍是未知。

占据栅格通常是二维的——一张平面的楼层图——但同样的思路也能向上扩展为三维的体素网格,用于像无人机这样需要在不同高度上为障碍物建图的机器人。

又称
occupancy grid栅格地图占用栅格地图