Semantic SLAM with Autonomous Object-Level Data Association

  • 系列文章
  • 摘要&介绍
  • 系统框架
  • 目标检测和追踪
    • 目标检测
    • 物体级数据关联
  • 语义建图

系列文章

1.使用椭球表示物体的语义SLAM的基础知识
2.QuadricSLAM

摘要&介绍

疫情原因封校,好想出去耍耍呀!哎,心情不好,写篇博客发泄一下

这篇论文发布在2021年的ICRA上,也是使用椭球来表示物体。使用BoW词袋向量来完成数据关联,并且提出了一种新的椭球初始化方法。能够完成实时的语义建图。

系统框架

整体上和ORBSLAM2的框架非常的相似,这里不得不说ORBSLAM2太牛逼了,整体架构,代码可读性等等,真的可以说是VSLAM领域的一件优秀的艺术。

追踪部分使用的ORBSLAM2,通过并行线程完成目标检测和SLAM的前端追踪。然后在目标检测生成的包围框内提取ORB特征点,并且转化为词袋向量。然后进行物体级别的数据关联并且判断当前帧是否可以作为关键帧来构建语义地图。
语义建图主要是接受语义关键帧,并且基于带线性约束的二次规划完成物体的创建。然后进行BA。
地图中包含着3D物体和语义关键帧。3D物体记录着被观测到的所有的语义关键帧,语义关键帧记录着该帧中所有观测到的3D物体。类似于ORBSLAM中的MapPoints和KeyFrame,构建相互对应的关系,属实是双向奔赴了。

目标检测和追踪

这部分重点介绍了物体级的数据关联。

目标检测

使用ROS接口的YOLOv3完成实时的目标检测。对于每一个输入的图像 I t \boldsymbol I_t It​,输出一系列语义测量结果 S t = z k S_t = {z_k} St​=zk​,对于每一个语义测量,包含 z k = { b k , c k , s k } z_k = \{ b_k,c_k,s_k\} zk​={bk​,ck​,sk​},分别表示包围框,物体类别和检测分数。

对于每一个ROI(bbox),按照相同的密度提取FAST角点,并且根据ROI面积调整提取的角点的数目。然后提取ORB描述子。一旦提取到ORB特征点,我们匹配视觉词袋来将他们转化为BoW向量。

物体级数据关联

这部分是整个论文的一大创新点,提出了frame-to-map的匹配方法。

第一步,得到一系列的候选物体。对于每一个语义观测结果 z k = { b k , c k , s k } z_k = \{ b_k,c_k,s_k\} zk​={bk​,ck​,sk​},只有与其有相同的类别的物体才能有资格加入到候选物体。这是一个最基本的条件,此外,本文还引入了几何检测来剔除具有相似外表但是位置不准确的物体。考虑如下两种情况。
情况1:物体已经成功初始化,即可以使用椭球来表示。在这种情况下,椭球的中心投影到当前图像 I t \boldsymbol I_t It​中应该位于bbox的内部。如图中的虚线所示
情况2:物体没有被初始化,只记录了一些了被观测到的关键帧,那么,最近被观测到的图像的bbox的中心经过投影后应该位于当前观测的包围框的内部(可以理解为单目相机的三角化测量)。上述前提假设是相机不能有剧烈的视角变化,否则,实际上是同一个物体,但是由于视角的剧烈变化,上一帧的中心可能不在当前帧的bbox内。

第二步:通过上述步骤,我们已经得到了语义观测对应于地图中的一系列候选物体 τ j \tau_j τj​,同时,这些候选物体 τ j \tau_j τj​包含着一系列被观测到的语义关键帧。这一步要做的就是计算当前语义观测 z k = { b k , c k , s k } z_k = \{ b_k,c_k,s_k\} zk​={bk​,ck​,sk​}的词袋向量与 τ j \tau_j τj​的语义关键帧中对应的词袋向量的相似度,论文中的公式为
s ( v 1 , v 2 ) = 1 − 0.5 ∣ v 1 ∣ v 1 ∣ − v 2 ∣ v 2 ∣ ∣ s(v_1,v_2)=1-0.5|\frac{v_1}{|v_1|}-\frac{v_2}{|v_2|}| s(v1​,v2​)=1−0.5∣∣v1​∣v1​​−∣v2​∣v2​​∣
在语义关键帧中最大的得分 c k j c_{kj} ckj​被视为数据关联的得分,表示 z k z_k zk​与地图中的物体 τ j \tau_j τj​可能存在关联。得到这个得分之后,数据关联问题就转化为了一个整数规划问题,对于每一个 z k z_k zk​与 τ j \tau_j τj​之间,定义一个0-1变量

构建整数规划问题,使用的是Or-tools求解。

其中公式(3)中的两个约束条件分别表示为
(1)每个语义观测 z k z_k zk​(因为遍历了所有的j)至多与一个物体相关联
(2)每个物体 τ j \tau_j τj​(同理,因为遍历了所有的k)只能与当前图像中的一个语义测量 z k z_k zk​相关联。

语义建图

这部分原理和QuadricSLAM类似,只不过没有使用SVD分解,而是构建二次规划问题求解。

这里重点记录下新增加的三个约束条件:

  1. 初始化后的椭球应当在相机的前方
  2. 相机的主平面不应该与椭球相交
  3. 椭球的中心投影到当前图像中,对应的像素点应当在包围框的内部。

约束条件1

其中, O K i O_{K_i} OKi​​表示相机中心位置(在世界坐标系下), z K i z_{K_i} zKi​​表示相机的光轴(可以理解为相机坐标系中的指向前方的z轴,即下图中的 z c z_c zc​)在世界坐标系中的方向, O τ j O_{\tau_j} Oτj​​表示椭球在世界坐标系中的位置。

公式(9)表示,由相机中心到物体中心的向量与光轴的方向夹角应当为锐角,所以大于零。

对于相机中心(光心) O K i O_{K_i} OKi​​,假设相机的位姿表示为
T w c = [ R w c t w c 0 1 ] T_{wc}=\left[ \begin{matrix} R_{wc} & t_{wc} \\ 0 & 1 \end{matrix} \right] Twc​=[Rwc​0​twc​1​]
相机的光心在相机坐标系中的位置为 P c = [ 0 , 0 , 0 , 1 ] T Pc=[0,0,0,1]^T Pc=[0,0,0,1]T,那么可以得出在世界坐标系中的位置为
O K i = T w c P c = t w c O_{K_i}=T_{wc}P_c=t_{wc} OKi​​=Twc​Pc​=twc​
另外,我们记
R w c = [ R 11 R 12 R 13 R 21 R 22 R 23 R 31 R 32 R 33 ] R_{wc}=\left[ \begin{matrix} R_{11} &R_{12} &R_{13} \\ R_{21} &R_{22} &R_{23} \\ R_{31} &R_{32} &R_{33} \end{matrix} \right] Rwc​=⎣⎡​R11​R21​R31​​R12​R22​R32​​R13​R23​R33​​⎦⎤​
在相机坐标系中,光轴的方向为 [ 0 , 0 , 1 ] [0,0,1] [0,0,1],那么乘以上述变化矩阵就可以得到世界坐标系中光轴的方向为 [ R 13 , R 23 , R 33 ] T [R_{13},R_{23},R_{33}]^T [R13​,R23​,R33​]T

约束条件2
相机主平面,即在相机模型图像中的 o c , x c , y c o_c,x_c,y_c oc​,xc​,yc​构成的平面。

由于使用的是对偶空间中的椭球表示,所以如果相机主平面与椭球不相交的话,应当是等于零。
在论文中,在世界坐标系中,相机的主平面表示为

下面记录下推导过程
考虑世界坐标系中,相机主平面上的一点 P w = [ x w , y w , z w , 1 ] T P_w=[x_w,y_w,z_w,1]^T Pw​=[xw​,yw​,zw​,1]T。再考虑在相机坐标系中,相机的主平面应当与图像平面( x − y − p x-y-p x−y−p构成的平面)是平行的,即图像应当在无穷远处相交。那么投影关系可以记作
[ u v 0 ] = K [ R c w ∣ t c w ] P w \left[ \begin{matrix} u \\ v \\ 0 \end{matrix} \right]=K[R_{cw}|t_{cw}]P_w ⎣⎡​uv0​⎦⎤​=K[Rcw​∣tcw​]Pw​
其中 t c w = − R w c T t w c t_{cw}=-R_{wc}^Tt_{wc} tcw​=−RwcT​twc​,记 P = K [ R c w ∣ t c w ] = [ P 1 , P 2 , P 3 ] T P=K[R_{cw}|t_{cw}]=[P_1,P_2,P_3]^T P=K[Rcw​∣tcw​]=[P1​,P2​,P3​]T,那么上述投影关系可以表示为
[ u v 0 ] = [ P 1 P 2 P 3 ] P w = [ P 1 P w P 2 P w P 3 P w ] \left[ \begin{matrix} u \\ v \\ 0 \end{matrix} \right]= \left[ \begin{matrix} P_1\\ P_2\\P_3 \end{matrix} \right]P_w= \left[ \begin{matrix} P_1P_w\\ P_2P_w\\P_3P_w \end{matrix} \right] ⎣⎡​uv0​⎦⎤​=⎣⎡​P1​P2​P3​​⎦⎤​Pw​=⎣⎡​P1​Pw​P2​Pw​P3​Pw​​⎦⎤​
通过上述公式可以看到, P 3 P w = 0 P_3P_w=0 P3​Pw​=0,由于 P w P_w Pw​表示世界坐标系中主平面上的点,那么P_3则表示世界坐标系中的相机主平面。由于 P 3 P_3 P3​表示投影矩阵的第三行,代入 R w c , t w c R_{wc},t_{wc} Rwc​,twc​即可得到论文中的表示。

Semantic SLAM with Autonomous Object-Level Data Association 论文笔记相关推荐

  1. Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记

    Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...

  2. Generative Modeling by Estimating Gradients of the Data Distribution 论文笔记

    前言 这篇文章是Score-base Model的理论文章,主要介绍了一种新的扩散模型,样本是通过朗之万动力学产生的,通过估计数据分布梯度来生成数据.由于以往的生产模型主要分为两种(提出的时候扩散模型 ...

  3. 2018_Semantic SLAM Based on Object Detection and Improved Octomap_note

    注释 (2022/4/15 上午9:14:24) "ABSTRACT" (Zhang 等., 2018, p. 1) (pdf) 提出了什么: "In this pape ...

  4. [LiteratureReview]EAO-SLAM Monocular Semi-Dense Object SLAM Based on Ensemble Data Association

    [LiteratureReview]EAO-SLAM: Monocular Semi-Dense Object SLAM Based on Ensemble Data Association 出处:2 ...

  5. EAO-SLAM: Monocular Semi-Dense Object SLAM Based on Ensemble Data Association

    EAO-SLAM: Monocular Semi-Dense Object SLAM Based on Ensemble Data Association EAO-SLAM:集成数据关联的单目半稠密物 ...

  6. 论文精读及分析:Deep Multi-Modal Object Detection and Semantic Segmentation for Autonomous Driving

    本文主要内容为论文<Deep Multi-Modal Object Detection and Semantic Segmentation for Autonomous Driving:Data ...

  7. VPS-SLAM: Visual Planar Semantic SLAM for Aerial Robotic Systems

    VPS-SLAM: Visual Planar Semantic SLAM for Aerial Robotic Systems ABSTRACT:室内环境中存在大量的高级语义信息,这些信息可以为机器 ...

  8. MHT: Basic Methods for Data Association(二)Track Score Function

    文章目录 6.2 Track Score Function 6.2.1 Likelihood Ratio Development 6.2.2 Track Score Initation(跟踪分数启动) ...

  9. 论文阅读:(一)Voxblox++:Volumetric Instance-Aware Semantic Mapping and 3D Object Discovery

    语义SLAM定义: SLAM技术完成了机器人对环境的几何信息的理解,但是忽略了对环境语义信息的理解.单纯的SLAM技术是缺乏场景理解能力的,机器人实时的对3D环境感知理解能力是智能体的技术的关键部分. ...

最新文章

  1. Module Zero之用户管理
  2. python3安装步骤
  3. Android中.9.png图片的使用过程和原理
  4. bzoj4593: [Shoi2015]聚变反应炉
  5. 在图片中添加自己的文本信息(PNG及JPEG格式)
  6. freecplus框架-日期、时间和计时器
  7. pandas的dataframe
  8. 支付宝生活号,同时出现俩网址,到底哪个真哪个假?
  9. RTP协议RTCP协议
  10. OpenUDID 和 IDFA 比较
  11. windows2012R2安装Microsoft Visual C++ 2015 Redistributable报错,提示0x80240017错误代码
  12. latex 字母上面加符号
  13. Java 线程的状态
  14. 推荐场景下融合多模态信息的内容召回模型
  15. ROS中一个关于时间的函数
  16. 如何消除下一代Wi-Fi 6E设备的延迟
  17. 清明祭:缅怀手机领域的那些先烈厂商们,你可还记得?
  18. 简练软考知识点整理-项目管理过程与过程组
  19. MapInfo地图的数据库存储方式介绍
  20. Java精品文章收藏(百度文库)

热门文章

  1. 用Google实现站内搜索
  2. 2015届互联网名企校招网址一览表
  3. CodeGear RadStudio Delphi 2007 Delphi2009 最新破解补丁集
  4. vue中使用element-ui时单元格内换行的问题
  5. 【图解】本地IIS局域网内无法访问的问题
  6. QSqlQueryModel搭配QTableView使用卡死问题
  7. selenium实现自动播放音乐
  8. 基层管理者的角色定位
  9. 【前端】JavaScript基础(二)
  10. 年薪30万只是中游水平,算法工程师是一种怎样的存在?