Semantic visual SLAM in dynamic environment 论文笔记
文章整体是参考《DS-SLAM》的 在其基础上添加了综合利用光度、重投影和深度误差判断动态点的约束。
摘要
本文提出了一种新的SLAM方法,利用mask R-CNN检测环境中的动态对象,并构建包含语义信息的地图。在该方法中,利用重投影误差、光度误差和深度误差为每个关键点分配一个鲁棒权值。从而实现动态点与静态点的分离,利用动态关键点实现动态对象的几何分割。为每个像素分配一个语义标签,以重建语义地图。
引言
-
使用 mask R-CNN 对图像进行语义分割。语义分割信息去除动态点以获得基于静态特征的准确基本矩阵。
-
我们改进了多视图几何方法结合mask R-CNN,可以结合两种方法的优点更好地检测动态目标。我们使用深度误差、光度误差和重投影误差来为静态点分配稳健的权重,以分离静态点和动态点。
-
提出了一种新颖的语义 SLAM 来消除动态对象对定位和映射的影响。我们使用带有几何约束的 mask R-CNN 作为与 SLAM 集成的语义分割网络,通过将标签传递给 OctTree 来构建语义图(包括背景在内的 4 个类)
方法描述
使用RGB-D相机作为输入,利用mask R-CNN 对图像进行语义分割,来提取潜在的动态对象并初始化一个准确的相机位姿。使用LK光流金字塔(由粗到细的光流法)跟踪参考帧的特征点,根据语义分割的结果获得准确的基本矩阵。提出一种新的几何法检测动态点,并根据语义分割结果去除动态点。最终构建一个八叉树地图对地图点分配语义标签来获得只有静态环境的语义地图。
相机位姿的语义分割和初始化
等待语义分割结束后,利用静态点来启动相机位姿初始化。(语义分割的耗时较长,会导致整个初始化的时间很长)
由于语义分割可能不会检测到部分动态目标点,因此对初始位姿进行优化。
几何方法:
首先计算关键点与对应投影点的亮度误差,亮度误差服从 t 分布。可以为每个关键点分配一个稳健的静态权重值。
基于《Robust odometry estimation for RGB-D cameras》提出了重投影误差约束和深度误差约束
重投影误差约束是投影坐标与匹配点坐标的差值2范数
深度误差约束是位姿变换的Z坐标和深度图返回的实际深度值的差值
对于动态目标点,这三个误差值会很大。
假设深度误差和重投影误差也服从t分布,建立一个新的误差向量E=(EIi,ECi,EDi),对于每个特征点,定义静态权重如下:
其中,连加符号为协方差矩阵,三个误差变量相互独立,与t分布相关的自由度设置为11
根据残差结果的统计分析,我们设置相应的阈值τ来区分动态特征点和静态特征点。如果关键点的静态权重值小于τ,则为动态点。
将筛选出的动态特征点作为生长点,利用区域生长算法对当前帧的深度图像进行分割。
特征点跟踪和异常值去除
采用LK光流金字塔算法跟踪当前帧的参考关键帧特征点(包括动态点和静态点)。由于光照等原因,匹配结果中会出现一些不匹配的情况,需要消除。如果参考关键帧中的关键点 xi 和当前帧中的跟踪匹配点 xmi 正确匹配,则它们应满足极坐标约束如下:
其中F是基本矩阵,Fxi是当前帧中关键点对应的极线。匹配点应该在参考关键帧关键点对应的极线上。计算对极约束误差,误差小于阈值,则正确匹配。
动态环境语义地图
本文构建了八叉树语义地图
在时刻1、2… T 观测数据为z1 z2 … zT。则记下第n个叶节点记录的占用概率如下:
可以使用log it变换将概率p变换成实数域,如下所示:
其中α是对数几率。对数的倒数如下所示
通过参考log-odds,可以重新定义等式为
其中,L(n|z1:T)为时间T时第n个叶节点的对数,L(n|z1:T-1 )为T-1时的对数。
L(n|zT)为T时刻给定观测值zT的第n个叶节点的概率
节点占用概率通过将每个新数据与原始数据融合来更新。子节点可以得到父节点的占据概率,并在节点上添加像素语义标签,得到最终的语义图。