本文提出了使用异构点线特征的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. CVPR2020论文解析:视频语义检索

    CVPR2020论文解析:视频语义检索 Fine-grained Video-Text Retrieval with Hierarchical Graph Reasoning 论文链接:https:/ ...

  2. TensorRT深度学习训练和部署图示

    TensorRT深度学习训练和部署 NVIDIA TensorRT是用于生产环境的高性能深度学习推理库.功率效率和响应速度是部署的深度学习应用程序的两个关键指标,因为它们直接影响用户体验和所提供服务的 ...

  3. NVIDIA Turing Architecture架构设计(上)

    NVIDIA Turing Architecture架构设计(上) 在游戏市场持续增长和对更好的 3D 图形的永不满足的需求的推动下, NVIDIA 已经将 GPU 发展成为许多计算密集型应用的世界领 ...

  4. LongAdder源码阅读笔记

    功能描述 LongAdder通过创建多个副本对象,解决了多线程使用CAS更新同一个对象造成的CPU阻塞,加快了对线程处理的速度.当多个线程同一时刻更新一个AtomicLong类型的变量时,只有一个线程 ...

  5. 【渗透实战】记一次艰难的内网漫游第四期_蹭我WIFI?看我如何利用组合拳日进蹭网者内网

    /文章作者:Kali_MG1937 CSDN博客ID:ALDYS4 QQ:3496925334/ 内网漫游系列第三期:[渗透实战]记一次艰难的内网漫游第三期_我是如何利用APT攻击拿到内网最高权限的 ...

  6. 类编程的WAF(上)

    一.复杂的需求 WAF (WEB 应用防火墙) 用来保护 WEB 应用免受来自应用层的攻击.作为防护对象的 WEB 应用,其功能和运行环境往往是复杂且千差万别的,这导致即便防御某个特定的攻击方式时,用 ...

  7. 学习响应式编程 Reactor (5) - reactor 转换类操作符(2)

    Reactor 操作符 上篇文章我们将 Flux 和 Mono 的操作符分了 11 类,我们来继续学习转换类操作符的第 2 篇. 转换类操作符 转换类的操作符数量最多,平常过程中也是使用最频繁的. F ...

  8. Django(70)接口版本控制

    前言   在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请求API,系统返回数据.但是难免在系统发展的过程中,不可避免的需要添加新的资源,或者修改现有资源.因此,改 ...

  9. 整理一波Go工程化目录结构~

    在Go语言领域遨游了几个月后,发现自己对Go语言相关的工程目录结构有些不了解,按照原来的习惯在Go工程中建立的目录结构显得比较奇怪,好的目录结构绝对是可以加强工程效率的,所以接下来会参考煎鱼.毛大等大 ...

  10. 基于 CentOS 8 搭建 openLDAP 服务器

    转载请注明原文地址:基于 CentOS 8 搭建 openLDAP 服务器 环境 OS: CentOS 8.4.2105 PHP: 7.4.21 注意 CentOS 7 中可能默认提供了 openLD ...