机器人学 —— 机器人感知(Mapping)

  对于移动机器人来讲,最吸引人的莫过于SLAM,堪称Moving Robot 皇冠上的明珠。Perception 服务于 SLAM,Motion Plan基于SLAM。SLAM在移动机器人整个问题框架中,起着最为核心的做用。为了专一于Mapping,此章咱们假设 Location 是已知的。算法

一、Metric Map

  轨迹规划任务是再Metric Map的基础上完成的。固然,层次最高的是语意图,语意图是将来研究的热点方向。获取Metric Map 的难度最大之处在于:一、传感器噪声(May be solved by PGM; 二、机器人在移动(Location 问题);数据结构

  常见的MAP是基于UGV而言的, 使用的地图是Occupancy Map,与以前在轨迹规划栏目中的图同样,以 0 表示没法到达的区域,以 1 表示能够达到的区域。app

  

 

二、传感器噪声问题的Naive Solution

  解决传感器噪声问题的方法是对传感器进行建模,其模型为几率模型:框架

  

  对于给定的观测,其factor 如上,当连续N次观测到同一个xy的值时,利用 factor product,便可得到n次观测的Joint CPD ,在Joint CPD 上运行MAP算法,便可得到最终的地图了。在通解的基础上,确实是这样设计算法的,可是咱们目前面对的Mapping 问题还太Naive,不须要如此复杂的手段。设计

  

  此处定义了一个odd,表示发生与否可能性的比值。换言之,就是传感器出错的几率比,这是一个能够估计的量。好比传感器测出有物体的odd是2,没物体的odd是3.blog

  依据Beyes 公式把Odd展开:博客

  

  其中,p(m = 1|z)/p(m = 0/z) 表示的是测量完成后 odd 的值,它等于  这次测量值 + 以前的odd。it

  换言之,咱们只要定义好先验图与log-odd-meas,就能够了。io

三、Mapping Algorithm

  全部的东西老是提及来容易作起来难。即便是如此Naive的Map,真正Coding仍是很难的。尤为是如何高效的实现Map的更新,此外,机器人每次发出的激光线达上千条,每一个位姿都要更新上前个点。对此问题,我设计了并行算法,即便在并行的条件下,生成一次Map也要近20s.基础

  算法流程以下:

  一、将激光击中的点变换到全局坐标系下

  二、利用Breshenman 算法,获取激光经过的路径

  三、获取Occupied Map 与 Free Map

  四、更新Map.

  左图是单次测量的图,也就是机器人一个位姿的测量结果。显然,在靠近机器人的地方,噪声严重。右图是机器人在空间中移动后最终的Map。

四、3D Mapping

  对于2维地图,咱们采用 free+occupy 的形式储存空间中的障碍物。然而有障碍物的地方毕竟仍是少数,或者说,地图是稀疏的。

  对于3维数据而言,咱们用3维的空间来描述显然不划算,由其是当空间巨大时。此时咱们选择的地图,或者说是数据结构是kd-tree 与 OcTree. 此部份内容在点云相关博客中有过介绍,不赘述。

  

相关文章
相关标签/搜索