当前位置: 华文问答 > 数码

当使用视觉SLAM对一个环境建图之后,如何让机器人能够「理解」地图并导航呢?

2017-03-07数码

这个问题推送我好几次了,实在忍不住回答一下。话说我一直把知乎当知网用的,发评论感觉怪怪的。哈哈哈

看到已有的回答大多数都是研一研二的,刚入门这个领域,有这样的疑问挺正常哈。

大体上这个问题是这样的,从移动机器人导航的角度来讲,slam跑出来结果一般只用地图。当然传感器不同地图类型也不一样,二维激光雷达可建二维占据栅格地图用于导航;三维激光建立的点云,八叉树处理后可用于三维导航;视觉orbslam等特征法建出是稀疏特征地图,没法直接用于导航;视觉rgbd-slam、直接法lsd等可建立稠密地图用于导航。

咦,我好像还没回答问题。那继续。。

有了slam建立出的,可用于导航的地图就可以做后续的工作了。当然我们这里谈论的这个问题是传统的导航方法,就是说要先建好地图。至于active-slam那种可以边建图边定位导航的不是我们所讨论的哈。还有那种现在无人车常用的寻车道线,然后场景识别分类,找红绿灯,找人找车避障什么的也不是我们讨论的哈(不要深究无人车还有全局定位,还有高精度地图,跑远了哈)。

好像话说多了,总之就是说,我们讨论的是已有导航地图下移动机器人的导航问题。那么关键来了,问:还要做什么?才能让他动!

答:需要解决两大关键问题!

1 既然已经有地图了,那么就需要接着进行路径规划,路径规划分两种:全局与局部。全局解决怎么从A走到B。这块的方法很多也很成熟,自己搜搜吧;局部解决如何在A到B的过程中避免碰撞。当然环境是静态的,地图又很完整,做全局就行了。路径规划到机器人的寻迹(按你规划的路径走)还有轨迹规划和控制执行要做,这里要对移动机器人运动学动力学建模(大体就是地面式轮式 履带 空中无人机这样几大类,一般导航任务的话通用模型标定测量好就行 )。

2 光有上述运动规划也不行,还要有定位是吧。对于这种已有地图的导航问题就是要解决重定位这一关键问题。这里就有很多方法思路啦,不同环境下,不同传感器方法也不同。比如二维激光雷达可以用粒子滤波进行重定位,也可以叫蒙特卡洛定位。当然也可以多传感器融合着来,比如你用三维激光雷达建的图(激光不好做重定位),然后用视觉orbslam做重定位(orbslam地图太稀疏)。

好了,相信大体解释清楚了吧。