K2E-B-L2-2 · Paper Note

PL-SLAM — Points and Lines

Created 2023-08-16Updated 2026-06-11slam / papers / l-localization / l2-line-features

  • Description:PL-SLAM 论文笔记 — 在 ORB-SLAM 基础上加入线特征的单目 SLAM,线重投影误差、点线联合 BA、仅靠 5 线 3 帧初始化(小旋转假设),TUM RGB-D 全面超越 ORB-SLAM
  • My Notion Note ID:K2E-B-L2-2
  • Created:2023-08-16
  • Updated:2026-06-11
  • License转载欢迎:转载请注明作者 Yu Zhang 并附原文出处(yuzhang.io

Table of Contents


1. Summary

Title: PL-SLAM: Real-Time Monocular Visual SLAM with Points and Lines Authors: Albert Pumarola, Alexander Vakhitov, Antonio Agudo, Alberto Sanfeliu, Francesc Moreno-Noguer (IRI, UPC-CSIC, Barcelona; Skolkovo, Moscow) Paper: ICRA 2017 Github: 无官方代码

PL-SLAM 在 ORB-SLAM 三线程架构基础上加入线特征LSD 线段检测器(Line Segment Detector),基于梯度幅值方向场的快速线段检测,von Gioi 2010)检测 + LBD 描述(Line Band Descriptor,沿线段宽度采样梯度条带的二进制描述子,Zhang & Koch 2013)),解决低纹理场景(运动模糊、均匀墙面、无纹理走廊)中点特征消失导致 SLAM 失败的问题。关键贡献是检测线重投影误差(处理遮挡/误检)+ 点线联合 BA + 仅靠 5 条线在 3 帧内完成地图初始化(无需点特征)。

在 TUM RGB-D 全套 14 个序列上,PL-SLAM 在 12/14 序列中 ATE 优于或持平 ORB-SLAM;低纹理序列(f3_long_office、f3_sit_*、f2_desk_person)提升尤为显著(最高从 5.95 cm→1.99 cm)。

PL-SLAM vs ORB-SLAM 轨迹对比:绿色实线(PL-SLAM)更贴近黑色虚线(Ground Truth);右图颜色热力图显示 ORB-SLAM 误差更大(红色更多)


2. Key Contributions

  • 检测线重投影误差:端点遮挡/误检时,用检测端点而非三维端点投影计算误差,鲁棒性更强
  • 点线联合 BA:Huber 鲁棒核统一优化点和线端点误差
  • 线特征初始化:仅 5 条线 + 3 帧(小旋转假设)即可估计初始地图,无需点特征
  • EPnPL 重定位:用 EPnPL(含线特征)替换 ORB-SLAM 的 EPnP,提升遮挡场景重定位精度

3. Method

3.1 系统框架

PL-SLAM 三线程框架:Tracking (ORB 点 + LSD-LBD 线) → Local Mapping (点/线三角化 + 联合 BA) → Loop Closing

三线程(延续 ORB-SLAM):

线程 点特征处理 线特征扩展
Tracking ORB 检测 + BoW 匹配 LSD 检测 + LBD 关系图匹配
Local Mapping 点三角化 + 局部 BA 线三角化 + 线位置优化
Loop Closing 检测 + 校正 不使用线(全局线匹配代价太高)

重定位:EPnPL(EPnP + Line, Vakhitov 2016)替换原 EPnP,最小化检测线重投影误差。

3.2 线参数化

3D 线端点 P,QR3P, Q \in \mathbb{R}^3;图像检测线段端点 pd,qdR2p_d, q_d \in \mathbb{R}^2,齐次 pdh,qdhR3p_d^h, q_d^h \in \mathbb{R}^3。图像线系数(归一化法向量):

l=pdh×qdhpdh×qdh(1)\mathbf{l} = \frac{p_d^h \times q_d^h}{\|p_d^h \times q_d^h\|} \tag{1}

l\mathbf{l} 为归一化的图像直线方程系数(lTx=0\mathbf{l}^T \mathbf{x} = 0 对线上任意点 x\mathbf{x})。

3.3 线重投影误差

基础线重投影误差(端点到线距离之和):

Eline(P,Q,l,θ,K)=Epl2(P,l,θ,K)+Epl2(Q,l,θ,K)(2)E_\text{line}(P,Q,\mathbf{l},\theta,K) = E_{pl}^2(P,\mathbf{l},\theta,K) + E_{pl}^2(Q,\mathbf{l},\theta,K) \tag{2} Epl(P,l,θ,K)=lTπ(P,θ,K)(3)E_{pl}(P,\mathbf{l},\theta,K) = \mathbf{l}^T\pi(P,\theta,K) \tag{3}

KK:内参;θ={R,t}\theta=\{R,t\}:相机位姿;π\pi:投影函数。

检测线重投影误差(处理遮挡):由于线段部分遮挡,检测端点 pd,qdp_d, q_d 不与 3D 端点 P,QP, Q 对应,改用:

Epl,d=lTpd(4)E_{pl,d} = \mathbf{l}^T p_d \tag{4}

优化时对 Eline,dE_{\text{line},d} 做递归逼近 ElineE_\text{line}(论文 §IV-A 描述具体迭代策略)。

3.4 点线联合 BA

以第 jj 条地图线在第 ii 帧的误差向量:

ei,j=(l~i,j)T(K1pi,jh),ei,j=(l~i,j)T(K1qi,jh)(5)e'_{i,j} = (\tilde{\mathbf{l}}_{i,j})^T (K^{-1} p_{i,j}^h), \quad e''_{i,j} = (\tilde{\mathbf{l}}_{i,j})^T (K^{-1} q_{i,j}^h) \tag{5}

l~i,j\tilde{\mathbf{l}}_{i,j}:地图线 jj 在第 ii 帧的预测图像直线系数向量(由 3D 线端点 P,QP,Q 投影到图像得到,即式 (1) 中的 l\mathbf{l});pi,jh,qi,jhp_{i,j}^h, q_{i,j}^h:第 ii 帧中线段 jj 的检测端点齐次坐标。

总代价(点误差 + 线两端点误差,Huber 鲁棒核 ρ\rho):

C=i,jρ ⁣(ei,jTΩi,j1ei,j+ei,jTΩi,j1ei,j+ei,jTΩi,j1ei,j)(6)C = \sum_{i,j} \rho\!\left(e_{i,j}^T\Omega_{i,j}^{-1}e_{i,j} + e'^T_{i,j}\Omega'^{-1}_{i,j}e'_{i,j} + e''^T_{i,j}\Omega''^{-1}_{i,j}e''_{i,j}\right) \tag{6}

Ω,Ω,Ω\Omega, \Omega', \Omega'':点/线端点各自的协方差(信息矩阵);鲁棒核见 RANSAC 与鲁棒估计

3.5 仅靠线的地图初始化

5 条线即可初始化。小旋转假设:3 连续帧旋转为 R1=RT,R2=I,R3=RR_1=R^T, R_2=I, R_3=R(恒定小旋转)。利用法向量约束:

l2T(RTl1×Rl3)=0(7)\mathbf{l}_2^T\bigl(R^T\mathbf{l}_1 \times R\mathbf{l}_3\bigr) = 0 \tag{7}

lk\mathbf{l}_k:同一条 3D 线在第 kk 帧图像中的直线系数向量(由式 (1) 定义,k{1,2,3}k\in\{1,2,3\});RR 为帧间恒定小旋转。

RR 为小量 → 仅 3 个未知数 r1,r2,r3r_1, r_2, r_3(小角度线性化,式 12 in paper)。对每 5 组线匹配建方程,多项式 solver (Kukelova et al.) 得 8 个解,取最小误差的。设 t2=0t_2=0(中间帧为参考)+ trifocal tensor 求平移。


4. Experiments & Results

平台:Intel Core i7-4790(4 核,3.6 GHz),8 GB RAM,ROS Hydro;TUM RGB-D 基准,每序列跑 5 次取中位数,7DoF Sim(3) 对齐后计算 ATE。

TUM RGB-D 定位精度——绝对关键帧轨迹 RMSE(cm)

序列 PL-SLAM(经典初始化) ORB-SLAM PTAM LSD-SLAM
f1_xyz 1.21 1.38 1.15 9.00
f2_xyz 0.43 0.54 0.20 2.15
f1_floor 7.59 8.71 38.07
f2_360_kidnap 3.92 4.99 2.63
f3_long_office 1.97 4.05 38.53
f3_nstr_tex_far 歧义失败† 37.60 34.74 18.31
f3_str_tex_far 0.89 0.98 0.93 7.95
f3_str_tex_near 1.25 1.55 1.04
f2_desk_person 1.99 5.95 31.73
f3_sit_xyz 0.066 0.08 0.83 7.73
f3_sit_halfsph 1.31 1.48 5.87
f3_walk_xyz 1.54 1.64 12.44
f3_walk_halfsph 1.60 2.09

†f3_nstr_tex_far:经典初始化检测到歧义无法启动;ORB-SLAM 同样失败;PL-SLAM 线初始化成功(Table I Line Init 列)。

PL-SLAM 在 12/14 序列优于或持平 ORB-SLAM;PTAM 在 f1_xyz、f2_xyz、f2_360_kidnap 略优,但 5/12 序列丢失跟踪;LSD-SLAM 丢失 3 序列;RGBD-SLAM 丢失 7 序列。

计算时间(TUM RGB-D,5 序列均值):

线程 PL-SLAM ORB-SLAM
Tracking 总计 20 Hz 50 Hz
Local Mapping 总计 3 Hz 7 Hz

加入线特征使帧率降低(主要来自 Local BA 218 ms vs 118.5 ms),但仍接近实时(20 fps,标准 PC 未优化)。


5. Ablation & Discussion

  • 线初始化 vs 经典初始化:在低纹理序列(f3_nstr_tex_far)经典初始化检测到歧义失败,线初始化成功恢复;在点丰富序列(f3_walk_xyz、f3_walk_halfsph)线初始化因大旋转导致假设失效
  • 为何回环不用线:全局线匹配需建 BoW 类型的线描述子索引,代价太高;点特征 BoW 已足够回环检测
  • 线匹配策略:LBD + 关系图(geometric graph)显著优于纯外观匹配,遮挡鲁棒性更好
  • 线剔除标准:< 3 视角 或 < 25% 预期可见帧 → 与点剔除标准对称

论文未报告的消融:无单独去掉线特征的 ablation;从 ORB-SLAM→PL-SLAM 的精度变化隐含线的贡献,但未量化线 vs 点各自贡献。


6. Strengths / Limitations / Future Work

优点

  • 低纹理场景(走廊、办公室、均匀墙面)显著提升 ORB-SLAM
  • 检测线误差处理遮挡,实用性强
  • 线初始化使纯线场景(无角点)也可初始化

局限

  • 线特征 Local Mapping 耗时增加近 2× → 帧率从 50 Hz 降到 20 Hz
  • 回环检测不使用线,低纹理场景回环能力有限
  • 依赖小旋转假设的线初始化在大旋转序列失效
  • 无官方开源代码

后续工作

  • 论文展望:结合平面特征,统一在类似点的框架
  • 后续系统:PL-VIO(点线 VIO)、PL-VINS(点线 VINS)等扩展至 VIO

References

类别 链接
论文 Pumarola A., Vakhitov A., Agudo A., Sanfeliu A., Moreno-Noguer F. (2017). PL-SLAM: Real-Time Monocular Visual SLAM with Points and Lines. ICRA. DOI
ORB-SLAM Mur-Artal R. et al. (2015). ORB-SLAM. IEEE T-RO. — 基础框架(见 ORB-SLAM2 笔记
EPnPL Vakhitov A. et al. (2016). Accurate and Linear Time Pose Estimation from Points and Lines (EPnPL). ECCV.
LSD Grompone von Gioi R. et al. (2010). LSD: A Fast Line Segment Detector. IEEE T-PAMI.
LBD Zhang L., Koch R. (2013). An Efficient and Robust Line Segment Matching (LBD). JVCIR.
相关 点线 SLAM 系列见 K2E-B-L2;BA 鲁棒核见 RANSAC 与鲁棒估计;EPnP 见 PnP