Civera, J., D. Galvez-Lopez, L. Riazuelo, J. D. Tardos, and J. M. M. Montiel. “Towards Semantic SLAM Using a Monocular Camera.” In 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems, 1277–84. San Francisco, CA: IEEE, 2011. https://doi.org/10.1109/IROS.2011.6094648.
1 Introduction
本文提出了一种语义SLAM 算法,本算法将传统无意义的特征点和物体融合进到地图中。
本算法融合了三个不同领域的SOTA:
- 一个EKF 单目SLAM 提供相机位姿的在线实时估计,以及包含点特征的稀疏地图;
- 利用 Structure from Motion (SfM) 从稀疏图片中计算一个物体模型数据库;
- 视觉识别来检测图片流中物体是否存在。
3 Notation and General Overview
本算法分为两个支流:
- 单目SLAM;
- 物体识别(通常要慢于SLAM支流)。
本算法的整体视图如Fig. 1所示:
单目SLAM 利用图片从k-m-1 到 k-m更新几何状态向量 x,而视觉识别结果会在步骤k 处得到,但是物体插入应当是相对于输入图片 $I_{k-m}$ 而言的。
作者提前对每一个想要识别的物体进行建模,这些模型包含外观和几何信息:
- 外观信息是由SURF 描述子组成的;
- 几何信息是这些SURF 特征点的3D 位置信息。
物体识别支流将数据库中的物体插入到SLAM 地图的步骤如下:
- 算法搜寻图片 $I_{k-m}$ 中SURF 特征点与数据库中每一个物体之间的关联;
- 利用RANSAC 来计算每个物体的一致几何模型,来最大化关联数量;
- 如果存在足够的一致关联,那么这个特征点就被认为属于该物体,并插入SLAM 地图中;
- 被插入地图中的特征点会被持续跟踪与位置优化。
4 Object Model
如上文所述,物体模型包含由SURF 特征描述子构成的外观信息和特征点位置几何信息,其构建示例如Fig. 2所示:
图中的黄色圆圈代表用来进行识别的SURF 特征。
物体的构建是通过不同的faces 完成的,而构建模型的每一幅图片是一个face 的基础。作者用一个tuple F 来表示face,该tuple中包含了SURF 特征点的位置坐标和描述子,以及形成该face 的图片的位置信息和朝向信息。
5 Object Recognition
物体识别是通过计算图片 $I_{k-m}$ 与物体数据库中每个物体的关联来实现的:
- 对于每个物体而言,计算图片 $I_{k-m}$ 与属于该物体的faces F之间的关联;
- 然后使用RANSAC 进行外点剔除;
- 最终至少包含5对关系才能确认为图片 $I_{k-m}$ 与物体 $I_F$ 之间建立了联系;
- 利用PnP 来估计相对位姿转换关系。
6 Monocular SLAM
6.1 Standard Mode EKF
估计参数建模为多维高斯变量x,包含相机的运动参数以及n 个特征点:
其中,运动参数 $\mathbf{x}_{C_k}$ 包含相机的位置参数 $\mathbf{t}_{C_{k-m}}$ 和方向参数 $\mathbf{q}_{C_{k-m}}$ ,以及线速度和角速度。
6.2 State Augmentation with Past Camera Pose
当物体识别支流在步骤k-m 开始时,SLAM的状态向量需要使用当前步骤的相机位姿进行增强:将当前步骤的位姿参数复制到状态向量中去,并传播相应的协方差矩阵。假设 k 步完成了物体识别与插入操作,那么k-1 步骤的状态向量表示如下:
如果物体识别成功,则过去的相机位姿(本例中为步骤 k-m)被用来进行物体的延迟初始化。在此完成之后,用来增强的相机位姿不再需要,即可从状态向量中进行剔除。
6.3 Object Insertion
物体识别支流的输出是一组物体参考坐标系中的特征点 $\mathbf{y}_F^O$ ,并由此计算face F 与k-m 时刻相机之间的位姿转换关系 $\mathbf{t}^{C_{k-m}}_F, \mathbf{q}^{C_{k-m}}_F$ ;基于此并利用6.2节中的k-m 步骤的增强相机位姿,实现物体特征点到SLAM 地图的插入操作:
因为物体模型中点的3D 位置信息是已知的,因此该模型的所有点可以根据 $\mathbf{y}_F^W$ 结合欧式坐标添加进SLAM 地图中。
在完成插入操作后,物体点被跟踪并利用单目SLAM 算法进行位姿优化。
8 Conclusions and Future Works
本文提出的算法只使用相机作为传感器,是第一个将普通3D 物体实时加入几何SLAM 地图中的算法。
作者提到本算法将相机运动和3D 场景理解结合了起来,提供了部分标注的地图和相机位姿,方便后期机器人的任务开发(如抓住某个物体等);此外,基于提前构建的物体3D 模型库,可以实现在观察到物体某一面之后即可将整个3D 物体添加进地图中去,完成对于未观测信息的补充。