本文提出了使用异构点线特征的slam系统,继承了ORB-SLAM,包括双目匹配、帧追踪、局部地图、回环检测以及基于点线的BA。使用最少的参数对线特征采用标准正交表示,推导了线特征重投影误差的雅克比矩阵,改进了实验结果。因为使用线特征能够提供更多的几何约束,传统的方法只使用了点特征,对光照变化以及位置歧义较为敏感。但是线特征也有两个问题要解决:首先是空间中的线参数太多,图优化时计算量增加,空间中的线只有四个自由度,但是通常被表示成6个自由度(端点表示以及Plucker坐标);其次,由于参数过多,大多数线特征法都采用数值计算雅克比,而本文中推导了了雅克比矩阵,提高精确度。

总之,本文统一了代价函数,将点线重投影误差结合,前端提出改进方法提取并匹配线特征,后端线特征采用标准正交表示,参数最少且解耦合,为了最小化重投影误差,推导了雅克比矩阵。

线特征的检测和表示

A.提取描述线特征

作者改进了使用较多的LSD线段特征检测器,该方法虽然在噪声较大的各种环境都能运行,但是容易将一条线段分为好几段。为了改进这一点,作者通过比较前一条线的最后一个点和下一条线的第一个点距离,以及两条线段中点之间的距离,如果都比给定的阈值小,且线段方向差异较小。(上面提到的距离都是描述子之间的距离,点特征为ORB特征,线特征为LBD特征(文献[14]) )。

B.线段特征匹配

匹配的线段几何特征要求参考文献[15],本文两条线匹配要满足以下要求:

1)两条线之间的角度不超过一个阈值

2)两条线的长度差不多

3)两条线重合的长度超过一个阈值(这里的重合应该是在两张图片相同区域???)

4)两条线的LBD描述子距离小于阈值

C. 几何表示

三维空间的直线,可以用两个齐次或者非齐次坐标表示,齐次坐标与Plucker坐标之间的转换见公式(1),用一个6维的向量表示:方向向量+法向量。由于三维直线只有四个自由度,而上面的表示为6个自由度,后端优化增加了计算量,因此参考了文献[11]中的标准正交表示。最终只要四个参数的\(\delta _\theta\)表示,具体对直线的几何表示见图(5)。

对点线测量进行图优化

A.点线特征测量模型

\(T_{cw}\)表示世界和相机之间的转换矩阵,直线从世界坐标转换到相机坐标系下见公式(7),参考了文献[16],这里是Plucker坐标,因此与笛卡尔坐标系的公式不一样,再通过内参投影到图像上,见公式(8)。重投影误差即为匹配线段与重投影到图像上的线段之间的端点距离。

相机位姿、3D点位置、3D线位置为图优化中的顶点(即优化变量)。而边则为点和线的重投影误差,见公式(10)和(11)。假设观测遵循高斯分布,使用huber核构建代价函数,见公式(12)。

B.线重投影误差的雅克比

这里推导对位姿变化的雅克比以及四自由度的\(\delta _\theta\)雅克比,使用链式法则求导,误差函数对投影的线\(l'\)的导数见公式(13),投影线对Plucker坐标的导数见公式(14)。Plucker坐标在相机系下的表示对在世界坐标系下的表示见公式(15),后者对\(\delta _\theta\)的导数见公式(16),因此\(\delta _\theta\)的雅克比即可求出来。而Plucker坐标在世界坐标系下的表示对位姿的变化求导较为困难(为什么困难?)。将其分为两个部分求解,平移微小变化和旋转微小变化,对平移增量求导时旋转增量设为0,对旋转矩阵加一个微小量,得到Plucker坐标在世界坐标系下新的表达,则可以得到其对平移量的导数,对旋转量的导数见公式(22),证明见附录。

求出雅克比之后即可使用高斯牛顿法求解图优化问题。

实验:

基于ORB-SLAM2,三个并行线程:追踪、局部地图、回环检测。

不同之处:

1)追踪

校正过的双目图像作为输入,四个并行线程用于提取左右相机中的特征点(ORB特征)。LSD检测线特征,使用LBD描述子。随后两个线程用于双目匹配,所有的特征都被区分为双目或者单目特征,如图所示

对于单目特征,在其他关键帧中找一个未匹配的特征,一旦找到匹配的特征,进行三角化。

运动估计分两种类型:追踪上一帧以及追踪局部地图。追踪上一帧时,使用恒速模型预测相机位姿作为先验,当位姿先验已知,则地图点和线可以投影到当前帧,建立更多联系。3D线投影时与点投影不一样,可能只有部分被观测到,如图所示,

虚线不能被观测到而实线可以观测。为了保证投影的2D线被观测到,使用基于剔除的方法:

  1. 将3D线从世界坐标投影到当前坐标,计算两个端点\(X_{sk}\)以及\(X_{ek}\)。

  2. 如果两个点都在相机后面,丢弃该线。如果一个点在相机后面,计算相机面与3D直线之间的交点。

  3. 将3D点投影到相机平面前方,投影线可能超出相机平面边界,使用Liang-Barsky 进行线修剪,可以保持旋转不变性。

关键帧的选取在ORB-SLAM2的基础上添加了线特征的要求。

2)局部地图:新的关键帧增加是,当前帧和其他帧的共视信息将被更新,局部地图三角化更多的点和线。移除外点,删除冗余帧。相机位姿和路标使用BA进行优化。由于3D线的端点对优化没有影响,但是对匹配和可视化很有用,因此在优化后系统仍然维护3D线的端点。通过反投影2D线到当前帧,并进行修剪。(与SLSLAM类似)

3)回环检测以及全局BA

视觉词袋预先离线训练,用到点特征和线特征,使用ORB特征和LBD特征建立词典,两个单词向量的相似度度量见公式(26)。使用时间一致性完善了匹配的关系,回环时使用SE(3)变换(采用Ransac策略)计算出变换矩阵,如果失败,则使用文献[23]中的方法,采用双目视觉中的匹配直线,最后计算的位姿用于纠正回环。再计算全局BA。

A

面特征行不行?

观测为什么服从高斯分布?

公式(9)怎么理解

论文阅读:Robust Visual SLAM with Point and Line Features的更多相关文章

  1. 论文阅读 | Robust Neural Machine Translation with Doubly Adversarial Inputs

    (1)用对抗性的源实例攻击翻译模型; (2)使用对抗性目标输入来保护翻译模型,提高其对对抗性源输入的鲁棒性. 生成对抗输入:基于梯度 (平均损失)  ->  AdvGen 我们的工作处理由白盒N ...

  2. 多目标跟踪:CVPR2019论文阅读

    多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking  论文链接:https://arxiv.org/abs/1909.0385 ...

  3. SLAM论文阅读笔记

    [1]陈卫东, 张飞. 移动机器人的同步自定位与地图创建研究进展[J]. 控制理论与应用, 2005, 22(3):455-460. [2]Cadena C, Carlone L, Carrillo ...

  4. 三维重建7:Visual SLAM算法笔记

    VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...

  5. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  6. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  7. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  8. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  9. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

随机推荐

  1. H.264/H265码流解析

    H.264/H265码流解析 一.H.264码流解析 一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成 一个原始的 ...

  2. CUDA C 纹理提取Texture Fetching

    CUDA C 纹理提取Texture Fetching 一.参数曲面的纹理  使用纹理指定参数曲面属性. 二.CUDA C 纹理获取开发 用于计算纹理函数,根据纹理引用的各种属性返回的值的公式(请参见 ...

  3. Django框架之路由层汇总

    一 Django中路由的作用 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来 ...

  4. 基于Typescript的Vue项目配置国际化

    基于Typescript的Vue项目配置国际化 简介 使用vue-i18n插件对基于Typescript的vue项目配置国际化,切换多种语言, 配合element-ui或者其他UI库 本文以配置中英文 ...

  5. 【C++】类

    一个简单例子: 1 //c++ 类 2 #include<iostream> 3 using namespace std; 4 class Point 5 { 6 private: 7 i ...

  6. StackOverflow上面 7个最好的Java答案

    StackOverflow发展到目前,已经成为了全球开发者的金矿.它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西.这篇文章是在我们审阅了StackOver ...

  7. MySQL:聊一聊数据库中的那些锁

    在软件开发中,程序在高并发的情况下,为了保证一致性或者说安全性,我们通常都会通过加锁的方式来解决,在 MySQL 数据库中同样有这样的问题,一方面为了最大程度的利用数据库的并发访问,另一方面又需要保证 ...

  8. vs里颜色显示块怎样显示

    就是这种 vs中选择工具-扩展和更新,搜索Web Essentials,安装就好了. 他会安装很多扩展,我这里只需要css相关的

  9. 在 NUC980 上运行 RT-Thread

    NUC980 & RT-Thread (1) NUC980 nuc980 是新塘推出的基于 ARM926EJ-S,集成 64 MB 或 128 MB DDR-II 的处理器,主频可以达到300 ...

  10. OSPF路由协议

    一.OSPF的工作过程 二.OSPF的基本概念 三.DR与BDR 四.OSPF数据包类型 五.OSPF邻接关系的建立 六.OSPF的路由器类型 一.OSPF的工作过程 OSPF路由协议针对每一个区域分 ...