给机器人装一个语义地图理解器
2020-04-06

一、 遇到的烦恼


最近遇到了一个问题,大家每天都在说“自主导航”,可是自主导航的这个“自主”到底有多自主呢?是完全的自主吗?

要回答这个问题,得先回忆一下移动机器人的工作模式。一般先通过SLAM算法构建出环境的地图,然后在这个地图上开始自主导航。

在自主导航过程中,又可以分为

①先确定一个目标点

②路径规划算法规划出当前位置到目标点的全局路径

③最后追踪着该全局路径,再配合局部动态避障算法到达目标点

1.jpg


其中,步骤②③都是完全自主的,而步骤①却还得需要人为操作。你可能会说,这必须要人来操作了,因为机器人要为人服务嘛,当然得按照人的意愿到达“指定”的目标点。

      但是,智能型机器工具型机器的区别在于:智能型的机器是机器人按照人类的方式和人类的意愿去完成任务的,比如聊天、陪伴、教育、导购,都是人类的生活方式。而工具型机器是必须人类按照机器的方式操作机器去完成任务,比如遥控器、编程、驾驶、键盘输入,都是机器的方式。

按照这种观点,我们颤巍巍给自主导航机器人标记一个目标点,这个行为明显就是人按照机器的方式,瞬间把机器人降级成工具型机器。如果按照人类的方式,就应该这样完成任务,直接说:“Turtlebot,帮我取一瓶啤酒“,而不是给个啤酒瓶子的坐标。



二、怎么解决呢?


首先把我说的话识别成文字,即从“语音”到“文字”,机器人语音交互目前已经及基本实现了。而从“文字”到“地图坐标”这一步还真有点难度啊。

因为,我们第一步构建的地图上面只有房间里的桌子、椅子、墙壁被识别出来的轮廓点点,在这个地图把它们统统当作了“障碍物”。

2.png

而没有把地图中的点和环境中物体的名字联系起来,所以机器人就没有物体的概念,当然看不到了,就像“印第安人看不见海面上哥伦布的船”一样。

所以破解之法就是,把地图上的点与场景中物体的标签关联起来。而在这一解决方案就叫“语义SLAM”。

顾名思义,就是在SLAM构建出的地图,既要包括障碍物信息,也要包含场景物体名称和对应左边信息。



三、怎么去构建语义地图呢?


3.png

目前语义地图的构建方法一般是在SLAM构建地图的同时增加一个视觉神经网络来识别相机观察到的图片物体,最后把识别出来的标签映射到地图上。

4.png

比如,我想喝的啤酒,可能在点云地图中只是一个按照圆柱体分布的一个区域。同时,视觉神经网络识别后,会在啤酒瓶出现的地方,用一个色块标记出来,并注明标签为“啤酒”;最后通过多视图几何投影,把这个啤酒的色块儿对应的点云区域坐标映射,就获得了标签“啤酒”对应的地图坐标。

5.png

这样当机器人听到:我要一瓶啤酒的任务时,先把我说的话识别成文字“找”“啤酒”。在地图的所有标签中寻找“啤酒”,然后获得“啤酒”标签对应的点云区域坐标。最后再把这个“坐标”设定为导航目标点,并用自主导航的方法到达这个目标。配合机械臂手眼抓取完成任务,就实现了机器人自己按照人类的方式完成自主导航。(你觉得还有更好的解决思路吗?)



四、案例分析


在此我们实际分析两个论文提出的算法案例,值得借鉴和参考:

案例一、稠密3D SLAM+DSS net

论文[1]中介绍的方法就是通过RGB-D图像作为输入,然后基于ElasticFusion SLAM[2]算法构建出一个稠密点云地图。对于地图与语义标签的映射问题,它通过一种“降卷积语义分割神经网络”(DSS net)实现的,该网络输入RGB图片和深度信息,输出标记区域+标签。

案例二、半稠密SLAM+DeepCNN net

论文[4]中首先采用条件随机场算法构建出半稠密地图。然后采用Deep CNN实现语义标签关联。

Deep CNN是一种采用逆卷积层实现端到端(end-to-end)的学习和推理过程,然后用最大池化层和降卷积层实现编解码。

6.png

7.png



五、困难


听着好像也不怎么难,那为什么还没有广泛应用呢?因为有几个地方说理论好说,实践太难:

1.  首先就是遮挡问题。神经网络可以识别出一个遮挡的区域。但是映射的3D点云就会“断章取义”了。比如,被遮挡住的人,可能只标记了头部区域,但是三维地图构建是有全身的,这样映射时就不知道身体在哪里了。

2.  其次,我们的语义识别,过度的依赖神经网络识别标记的精度,而目前视觉神经网络虽然识别率非常高了。但是像素级的“标注”却远远达不到我们需要的精度。或许我们应该考虑把语义识别过程融合在地图点云构建过程中,而不是像“甩手掌柜的”一样直接把这块的任务扔给视觉神经网络。

3.  还有就是我们以上的过程都是“纸上”的分析和一点点“实验室”结果。放在实际机器人上,因为视觉神经网络对计算资源的巨大需求,而难以适用于移动机器人的嵌入式计算平台。实际的机器人更需要的是计算复杂度不那么高的算法,这样才能落地应用。



六、反思


看来我的机器人目前还没法装上一个可行的“语义理解器”呀,各位研究者们加加油吧。(有方法,缺优化,这个方向眼红吗?变量多,环境杂,论文一发一大把。)

不过在此我思考了另一个问题,机器人领域到底是一个“学术”还是一种“工程”呢?

因为我们在机器人研发过程中,遇到了问题总是加“补丁”。需要定位,就加个定位模块,再导入一个定位算法包;需要识别了,就加一个图像模块和识别算法包。需要机械臂就装一个,需要双臂就装两个。而整个机器人好像都是各个模块拼凑成的,玩的就像搭积木一样,机器人学者如果不是专一在某一模块领域(这个领域严格说只属于该模块),就会像包工头一样,调集各种各样别人的现有模块,忙的不亦乐乎。

就像爱因斯坦提出相对论之前,大家在牛顿的三大定律下解决问题。可是在微观和宏观中,计算结果明显有误差。为了补救,就会加入一堆“修正因子”,这些修正因子不就像是我们给机器人加的各种“功能补丁”和"拼凑模块"吗?直到爱因斯坦提出了相对论,把宏观和微观都统一在一个简洁明了的相对论公式下,让应用时不需要修修补补。

     机器人领域也正在期盼着出现一个像“相对论”一样的理论或者算法框架。可能深陷各种补丁之内的我们听到这个观点会嗤之以鼻,怎么可能,这么一堆零零碎碎的算法包,怎么能统一到一个东西下面呢?

     哈哈,也许爱因斯坦之前,深陷牛顿理论修修补补的人也是这么认为的。所以,一起来期待那位机器人领域的“爱因斯坦”早日出现吧!或许就是某个时刻被上帝莫名选中的你或者我,时不我待啊。



参考文献

1. J. McCormac, A. Handa, A. Davison, and S.Leutenegger.Semanticfusion: Dense 3d semantic mapping with convolutional neuralnetworks. arXiv preprint arXiv:1609.05130,2016.

2. T. Whelan, S. Leutenegger, R. F. Salas-Moreno,B. Glocker,and A. J. Davison. Elasticfusion: Dense slam without a pose graph.Proc. Robotics: Science and Systems, Rome, Italy,2015.

3. Salas-Moreno R F. Dense Semantic SLAM[D].Imperial College London, 2014.

4. Li X, Belaroussi R. Semi-dense 3d semanticmapping from monocular slam. arxiv 2016[J]. arXiv preprint arXiv:1611.04144.

5. Wang Z, Zhang Q, Li J, et al. A computationallyefficient semantic slam solution for dynamic scenes[J]. Remote Sensing, 2019,11(11): 1363.

6.  Himri K, Ridao P, Gracias N, et al. SemanticSLAM for an AUV using object recognition from point clouds[J].IFAC-PapersOnLine, 2018, 51(29): 360-365.



原创声明:本篇文档为原创文档。欢迎转发转载引用,请注明出处。

Donghu Robot Laboratory, 2nd Floor, Baogu Innovation and Entrepreneurship Center,Wuhan City,Hubei Province,China
Tel:027-87522899,027-87522877

合作与咨询

渠道商务合作:18062020215

售前技术咨询:13807184032

售后服务热线:18062020228

网站备案号:鄂ICP备17004685号-1 | 技术支持 | 联系我们 | 服务条款与隐私权 | 网站地图