摘要

三维语义地图在移动机器人的导航、路径规划、智能抓取、人机交互等任务中有着关键的作用,因此如何实时地构建三维语义地图尤为重要。当前同时定位和地图构建(Simultaneous Localization And Mapping,SLAM)算法已经可以达到较高的定位和制图精度,但是在动态环境下如何通过剔除动态物体来获得较高的定位精度,以及理解周围场景中存在的物体及其位置信息等问题没有得到很好的解决。在此,文中提出了一种可在动态环境下构建语义地图的算法。该算法在ORB-SLAM2上进行改进,在跟踪线程中加入动静点检测算法来剔除检测为动点的特征点,提高了动态环境下的定位精度;添加目标检测线程对关键图像进行目标检测,在地图构建线程中构建Octo-Map地图,同时根据检测结果构建3D目标数据库。为了证明该算法的可行性,以实验室为测试环境,分别进行了目标检测、动态点检测、三维目标信息获取和动态环境下语义地图构建的实验。在目标检测实验中,训练了速度和精度较高的目标检测网络——mobilenet-v2-ssdlite,检测速度可以达到7帧/秒,基本可以实现实时检测。在动态点检测中,采用光流法剔除动态点,处理速度为16.5帧/秒。文中创建了数据集来评测算法性能,相比原版ORB-SLAM2算法,结合光流法后的算法的定位精度提高了5倍;在三维目标信息获取上,采用了基于深度滤波和基于点云分割两种方法,结果表明后者的3D目标获取更为精确。最后,对整个实验室进行动态环境下的语义地图构建,构建Octo-Map稠密地图,根据检测结果构建3D目标数据库,并将目标尺寸和位置的检测值与真实值进行对比,误差均在5厘米以内。实验结果表明所提算法具有较高的精度和实时性。