Abstract
一个把直线用作feature的SLAM系统.
跟点相比, 直线对于环境的结构提供了更丰富的信息, 也让其鞥有可能推断地图的空间语义.
- 使用了Plucker line coordiantes来高效的初始化新观测的线特征,以及3D线的投影.
- 用orthonormal representation做图优化.
1. Introduction
线和线段提供了更多环境里的结构信息. 用线特征建立的环境一般都有更少的纹理
用两个端点的三维线表示方式明显不满足SLAM的要求, 因为提取和跟踪线的端点的准确性和可靠性都差那么点那意思. 但也没有没有很统治级的3D线的参数法方法.
我们用了plucker coordinate和orthonormal representation.
线的关联不会提供任何的相对运动的约束. 解决方案是用第三张图来限制gauge freedoms.
2. Related Work
3. Preliminaries
4. 3D Line Feature
A. Line Representation
- Plucker Line Coordinate (mathcal{L} = (n^T, v^T)^T)
注意, (n)和(v)不一定要是unit vector, 从原点到线最近点(Q)的计算是(||n||/||v||).
还有一个约束是 (n^Tv =0).
plucker coordinate的transformation也是个线性转换:
- Orthonormal Representation
我们的实验表明这个表达形式有最小的4个参数,在准确度上和收敛性上变现都很好.
我们可以用plucker coor的QR分解来计算orthonormal representation$$(mathrm{U}, mathrm{W}) in S O(3) imes S O(2)$$
然后把(W)设定为如下式子:
如上图所示, (U)和(W)是三维和二维的旋转矩阵, 所以最小化的4参数表示方式是: $$mathbf{p}^{ op}=left(oldsymbol{ heta}^{ op}, heta ight)$$
这儿(oldsymbol{ heta})标识3-vector, ( heta)是标量.
这样的话((U, W))的更新形式变成: $$mathrm{U} leftarrow mathrm{U}R(oldsymbol{ heta})$$ 和 $$W leftarrow W R( heta)$$.
从orthonormal representation到plucker coordinate的转换如下:
这里(u_i)表示U的第i列.
- [ ] 感觉这儿的(omega)的序号有点问题.
B. Observation Model
如上图所示, 平面(pi_L)由(mathcal{L})和(C_L)决定, 并和平面(mathcal{I}_L)相较于(I_L).
所有在(pi_L)上的线投在平面上都是这个(I_L). 这意味着(mathcal{L})的投影只由(n)决定, 与方向(v)无关.
3D端点(C, D)投影成为(c, d).
在左侧的相机坐标系中, $$underline{mathbf{c}}=mathrm{KC}, underline{mathrm{d}}=mathrm{KD}, mathbf{n}=mathrm{C} imes mathrm{D}, ext { and } underline{1}=underline{mathbf{c}} imes underline{mathrm{d}}$$
这样我们也可以知道, 线的投影方程:
公式(16)表明, 在投影的时候只有normal vector会出现在投影方程里. 相反的, 在看图像观测的时候, 我们也只能得到plucker coordinate的 (n).
plucker coordinate的重投影方程和之前介绍的特征都不一样, 因为它不能直接将两个图像线相减, 我们把重投影误差定义为端点到预测线的距离.
这样的话, 对于端点(d)和线(l_L), cost的定义如下:
这里$$mathbf{d}=left(d_{1}, d_{2}, d_{3} ight)^{ op} ext { and } underline{l}{L}=left(l{1}, l_{2}, l_{3} ight)^{ op}$$
**因为针孔问题, 连续帧中线段有噪声的位置, 只有观测中和期望的线投影正交的部分才有有意义的信息. **
事实上, 我们也测试过其他重投影误差的方法, 比如线段间的旋转和平移的误差, 然而它降低了重建的精度.
这样, 在stereo image上的重投影误差如下:
C. Initialization
在左相机的观测中, 用左相机的光心和图像线可以计算一个平面:
我们回顾dual plucker matrix, 结果如下:
这样我们就可以直接提取plucker line coordinates.
D. Endpoints Trimming
所有的几何计算都把3D线看作是有限的直线, 特定的端点位置不会影响3D线计算的结果.
3D line-based map比之3D point map的优势在于, 它可以更高效的收敛.
在实际情况中, 光线从相机中心反投影很难在3D线上停驻. 我们提了一种方案.
图像e的生成方式是e-d垂直与直线(l_L), 这样3D平面(pi)就可以如下计算:
给定plucker line coordinates, $$mathcal{L}=left(mathbf{n}^{ op}, mathbf{v}^{ op} ight)^{ op}$$, plucker matrix的公式如下:
这样的话, 3D点(D)可以如下计算:
E. Straight Line Detection and Tracking
...
F. Loop Closure Detection
...
5. Graph Optimization
...
Appendix
Plucker Matrix
给定两个点(A, B). Plucker Matrix如下:
是一个反对称矩阵.
它有一些特性:
- 平面(E)包含了直线:(0=[L]_{ imes}E)
- 平面(E)和直线相交: (X=[L]_{ imes}E)
- 点在线上: (0=[ ilde{L}]_ imes X)
- (E=[ ilde{L}]_ imes X)表示平面(E)包含点(X)和线(L).
Dual Plucker Matrix
点和平面都可以被标识为4-vector, 并且它们的几何关系的代数描述都是对称的. 通过在理论中交换两者(点和平面), 我们可以得到一个dual theorem.
在Plucker matrix中, 存在一种dual representation是两个平面相交表示一条线
存在两个平面 (E, F). Plucker Matrix是:
然后
这个式子描述(G)平面包含点(X)和线(L).
也就是dual Plucker Matrix操作的是一条线和一个点生成一个平面.
Relationship between Primal and Dual Plucker Matrix
(X=[L]_ imes E) 的结果是一个线上的点或者是一个zero-vector.
两者相乘是0矩阵
在projective plane中, 两个点的连线也是一个直线:
Geometric Interpretation