DS-SLAM
Yu 2018 · 论文
一句话总结 — 一种面向动态环境的语义视觉SLAM,结合SegNet语义分割与光流/极线运动一致性检查来剔除运动物体,在ORB-SLAM2基础上构建,并生成稠密的语义八叉树地图。
问题
尽管经过了数十年的发展,移动机器人SLAM中仍有两个问题未能很好解决:“如何应对动态环境中的运动物体”,以及”如何让机器人真正理解周围环境并完成高级任务”。一个人走过场景会破坏位姿估计(其特征违反了静态世界假设),而纯几何地图又无法为高层任务提供语义信息。DS-SLAM同时解决这两个问题:在动态场景中实现鲁棒定位,并提供可用于导航等任务的语义地图。
方法与架构
- 五个并行线程:跟踪、语义分割、局部建图、回环检测,以及稠密语义地图构建;局部建图和回环检测保持ORB-SLAM2原样不变。每个RGB帧同时送入跟踪和分割线程——当跟踪线程等待SegNet结果时,会运行运动一致性检查,因此两个线程大致同时完成。
- 语义分割:实时SegNet(Caffe实现),在PASCAL VOC(20类)上训练;人被当作典型的动态类别,不过该方案适用于任何被分割出来的可移动类别。
- 运动一致性检查:光流金字塔将特征点匹配到当前帧(靠近图像边缘或3×3块外观差异较大的匹配会被丢弃);RANSAC估计基础矩阵 ;对于匹配的齐次点 ,,当前帧中的极线为 ,若某点到该极线的距离
超过预设阈值 ,则判定该点为运动点。
- 异常剔除——语义与几何相结合:整块动态区域的轮廓用几何方法提取代价太高且不稳定,因此两种信号构成一个两级判断:如果足够多的运动一致性点落在某个分割目标的轮廓内,则判定该物体为运动物体,其轮廓内的所有ORB特征都会在位姿估计前被剔除。如果没有检测到人,或检测到的人是静止的,则使用全部特征——静止的”动态”类别不会被无意义地丢弃。
- 稠密语义3D八叉树地图:关键帧位姿加深度图像构建局部点云,融合成全局八叉树,每个体素按语义标签着色。占据概率通过对数几率分数 以概率方式融合,每次观测更新为:
其中若体素 在时刻 被观测为占据,则 ,否则为0;只保留概率超过阈值的体素,因此瞬时(动态)体素永远不会稳定地进入地图。
实验结果
- TUM RGB-D(对比RGB-D版ORB-SLAM2;Intel i7,P4000 GPU):在高动态序列上ATE RMSE下降了一个量级——fr3_walking_xyz 0.7521 → 0.0247米(96.71%),fr3_walking_static 0.3900 → 0.0081米(97.91%),fr3_walking_half 0.4863 → 0.0303米(93.76%),fr3_walking_rpy 0.8705 → 0.4442米(48.97%)。提升幅度最高可达97.91%(RMSE)和97.94%(标准差)。
- 漂移(RPE):walking_xyz上的平移漂移RMSE从0.4124降至0.0333,旋转漂移从7.7432降至0.8266;在低动态序列fr3_sitting_static上提升较小(ATE提升25.94%),因为ORB-SLAM2本身已能应对。
- 计时:跟踪线程中ORB提取耗时9.4毫秒+运动一致性检查29.5毫秒,与SegNet的37.6毫秒并行;包括八叉树建图的完整流水线平均每帧约59.4毫秒——接近实时,优于此前的动态过滤方法。
- 真实机器人:与ROS集成,运行在配备Kinect V2(960×540)的TurtleBot2上;对数几率过滤得到的八叉树重建不受行走人员影响,同时提供用于导航的2D代价地图。
对SLAM的意义
经典SLAM假设世界是静态的,而场景中行走的人会严重破坏跟踪——TUM RGB-D的动态序列正是为暴露这一问题而设计的。DS-SLAM与同期的DynaSLAM一起,是这一问题的典范答案之一:在ORB-SLAM2主干中融合分割网络与几何一致性检查。它所帮助确立的”语义先验+运动检查”方案,至今仍是动态环境SLAM的标准基线设计,而其语义八叉树输出也预示了后来那些为高层任务而非仅为定位而构建的地图。