论文阅读:Robust Visual SLAM with Point and Line Features
本文提出了使用异构点线特征的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线被观测到,使用基于剔除的方法:
将3D线从世界坐标投影到当前坐标,计算两个端点\(X_{sk}\)以及\(X_{ek}\)。
如果两个点都在相机后面,丢弃该线。如果一个点在相机后面,计算相机面与3D直线之间的交点。
将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的更多相关文章
- 论文阅读 | Robust Neural Machine Translation with Doubly Adversarial Inputs
(1)用对抗性的源实例攻击翻译模型; (2)使用对抗性目标输入来保护翻译模型,提高其对对抗性源输入的鲁棒性. 生成对抗输入:基于梯度 (平均损失) -> AdvGen 我们的工作处理由白盒N ...
- 多目标跟踪:CVPR2019论文阅读
多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.0385 ...
- SLAM论文阅读笔记
[1]陈卫东, 张飞. 移动机器人的同步自定位与地图创建研究进展[J]. 控制理论与应用, 2005, 22(3):455-460. [2]Cadena C, Carlone L, Carrillo ...
- 三维重建7:Visual SLAM算法笔记
VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...
- 论文阅读(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 ...
- BITED数学建模七日谈之三:怎样进行论文阅读
前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- Deep Reinforcement Learning for Dialogue Generation 论文阅读
本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...
随机推荐
- Yolov4性能分析(下)
Yolov4性能分析(下) 六. 权重更新 "darknet/src/detector.c"--train_detector()函数中: ...... /* 开始训练网络 */ f ...
- 浪潮 ClusterEngineV4.0 任意命令执行
1.浪潮ClusterEngineV4.0 任意命令执行 影响版本 ClusterEngineV4.0 2.漏洞影响 远程代码执行 3.复现 fofa语句 title='TSCEV4.0' 抓包构造e ...
- 日常Bug排查-Nginx重复请求?
日常Bug排查-Nginx重复请求? 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,其中不乏一些看起来很低级但很容易犯的问题. 问题现场 有一天运维突然找到 ...
- 『言善信』Fiddler工具 — 14、使用Fiddler进行弱网测试
目录 1.什么是弱网测试 2.弱网环境的影响 3.弱网环境测试场景 4.使用Fiddler进行弱网测试 (1)Fiddler模拟弱网环境 (2)设置弱网的参数 (3)进行弱网测试对比 (4)恢复设置 ...
- OOP第三次总结Blog
1. 前言 相比于前一次Blog题目集,此次七八九题目集偏重于类的继承.多态性使用方法以及接口的应用;在设计层面,强调模式复用,不断的迭代,若前期设计不合理,则后续的题目增加新的功能(即可扩展性)将会 ...
- 基于kerberos的hadoop安全集群搭建
目录 前置条件 kerberos相关 给hadoop各组件创建kerberos账号 将这些账号做成keytab core-site.xml HDFS datanode的安全配置 证书生成和安装 hdf ...
- Linux命令(磁盘的卸载与挂载)
一.光盘挂载与卸载: 1.将光盘CD-ROM(hdc)安装到文件系统的/mnt/cdrom目录下的命令是 C . A mount /mnt/cdrom B mount /mnt/cdrom /dev ...
- CosId 1.0.0 发布,通用、灵活、高性能的分布式 ID 生成器
CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...
- 『无为则无心』Python基础 — 14、Python流程控制语句(while循环语句)
目录 1.什么是循环结构 2.while循环 (1)while循环的语法 (2)while循环的应用 3.while语句的死循环 4.break和continue 5.while循环嵌套 (1)应用场 ...
- 让Qt5默认支持C++17的设置方法
单个项目的设置方法 打开项目的 pro 文件,将CONFIG += console c++11改为CONFIG += console c++17即可. 永久默认支持 c++17 的设置方法 找到 Qt ...