Type 1 · Directly applicable 证据 A 收录

PadLoc: Training-Free Floor-Plan Localization by Sparse Geometric Matching

Marian Bookhahn, Frank Neumann

发布 · 收录于 2026-11-05

定位“我在平面图的哪里”不需要学习型的稠密 (x, y, θ) 网格滤波器:用墙体主方向缩小朝向、用掩码相关打分、再用少量高斯假设跟踪,就能同样准甚至更准、更省。

任务
已知 2D 平面图下的全局定位(floor-plan localization)
数据
Gibson、Bonn LiLocBench、Hilti-Trimble 工地
传感器
单目/RGB-D/2D LiDAR/鱼眼相机 + 里程计,可换
代码
已开源(github.com/mbookhahn/padloc)
主结果
Bonn 池化 SR@1m 0.56/0.71/0.79 vs UnLoc 0.30/0.49/0.46

证据等级 A · 真机 + 多基准 + 消融 (A 真机 + 多基准 + 消融 / B 仿真充分 / C 单一基准或无代码)

动机

从左到右读六个格子:输入平面图和深度,拼窗口,猜朝向,相关打分找峰,高斯假设跟踪,最后共识得到整条轨迹(虚线为真值)。
原文图 · P.1 从左到右读六个格子:输入平面图和深度,拼窗口,猜朝向,相关打分找峰,高斯假设跟踪,最后共识得到整条轨迹(虚线为真值)。 图片来源:Bookhahn & Neumann, PadLoc: Training-Free Floor-Plan Localization by Sparse Geometric Matching (arXiv:2611.05172) · 查看原文

问题:机器人拿着一张现成的楼层平面图(只画了墙),要知道自己在图上哪里、朝哪个方向。平面图便宜、长期不变、不怕光照和外观变化,很适合做长期定位的地图。

现有方法卡在哪:F3Loc、UnLoc 这类方法先用网络从图像预测每一列的深度,再在整张图的 (x, y, θ) 稠密网格上做贝叶斯滤波(Bayes filter,按概率一步步更新“我可能在哪”)。这样很稳,但网格很大(UnLoc 在 GPU 上要 8–147 MB),换楼要重新预计算,而且后端和某一种深度网络绑在一起 → P.1、P.8。

为什么难:单帧看到的墙很少,很多位置都“长得像”;朝向又是连续的,要逐角度搜索,代价随地图面积线性增长。

方法

  1. 1攒窗口5 帧深度+里程计拼成局部扫描
  2. 2猜朝向墙体角度直方图对齐,约4个候选
  3. 3相关打分掩码 NCC 在全图上滑动打分
  4. 4多假设留前10个峰,高斯混合跟踪
  5. 5共识定锚所有窗口得分叠加选全局位置

比喻:像拿一张撕下的描图纸(你走过时看到的墙和空地)在整张平面图上滑来滑去找最吻合的位置。关键是:只比较你真正看到的部分,没看到的地方不算分。

模块 1:朝向只剩几个候选。室内墙大多互相垂直。PadLoc 把看到的墙段和平面图的墙段各做一个“墙角度直方图”,两者对齐就得到少数几个朝向候选(再加上各自 180° 的镜像),不再对 36 个角度逐个搜索 → P.3。

模块 2:掩码归一化互相关(masked NCC)。NCC 是衡量两张图相似度的标准方法。这里加了掩码:撞到的墙权重大(55),看到的空地如果和图上的墙重叠就扣分,没看到的格子直接不参与。全部用 FFT(快速傅里叶变换)一次算出整张图上每个平移的得分 → P.3 式 (1)。

模块 3:CONS 后端。每个窗口只保留得分图里前 K=10 个峰,作为一组高斯候选;一个移动的高斯混合贝叶斯滤波器(GM-BF)用里程计把它们往前推,并用马氏距离门限(gate)挡掉离当前主假设太远的峰。滤波器只负责“窗口之间的相对位置”,真正的绝对位置由“共识”决定:把所有窗口的原始得分图按相对位移对齐后加起来,最高点就是锚点 → P.3–P.5。状态只有一个 560 字节的混合和一个累加图,不随轨迹变长 → P.8。

每列是同一条轨迹的不同时刻,从上到下是窗口扫描、相关得分峰、假设个数、累计共识;看假设从 10 个收缩到 1 个。
原文图 · P.4 每列是同一条轨迹的不同时刻,从上到下是窗口扫描、相关得分峰、假设个数、累计共识;看假设从 10 个收缩到 1 个。 图片来源:Bookhahn & Neumann, PadLoc: Training-Free Floor-Plan Localization by Sparse Geometric Matching (arXiv:2611.05172) · 查看原文

实验

Bonn 真实数据:同一单目深度下只换后端(T=300 帧) pooled SR@1m · 越高越好 ↑
Bonn 真实数据:同一单目深度下只换后端(T=300 帧)(pooled SR@1m,越高越好 ↑):PadLoc(轮式里程计)(本文) 0.71;PadLoc(只用 16 条射线)(本文) 0.67;UnLoc(真值运动) 0.49 PadLoc(轮式里程计) · 本文 0.71 PadLoc(只用 16 条射线) · 本文 0.67 UnLoc(真值运动) 0.49 00.40.8

本文方法 对比方法 · 数据来源:Table 4, P.7

Gibson:同一 UnLoc 深度下的后端对比(T=20) last-10 SR@1m · 越高越好 ↑
Gibson:同一 UnLoc 深度下的后端对比(T=20)(last-10 SR@1m,越高越好 ↑):PadLoc frozen(在线)(本文) 0.84;PadLoc accum(离线)(本文) 0.86;UnLoc fwd(在线) 0.71;UnLoc refined(离线) 0.865 PadLoc frozen(在线) · 本文 0.84 PadLoc accum(离线) · 本文 0.86 UnLoc fwd(在线) 0.71 UnLoc refined(离线) 0.865 00.51

本文方法 对比方法 · 数据来源:Table 1, P.5

消融:强漂移 VO 下各组件的作用(Bonn,T=450) last-10 SR@1m · 越高越好 ↑
消融:强漂移 VO 下各组件的作用(Bonn,T=450)(last-10 SR@1m,越高越好 ↑):单帧 NCC 取最大 0.105;+ 整段累积(批处理) 0.789;+ 共识,无门限 0.368;+ GM-BF 门限与修复(完整)(本文) 0.842 单帧 NCC 取最大 0.105 + 整段累积(批处理) 0.789 + 共识,无门限 0.368 + GM-BF 门限与修复(完整) · 本文 0.842 00.51

本文方法 对比方法 · 数据来源:Table 3, P.6

指标:last-10 SR@1m(最后 10 帧都在 1 m 内才算成功,越高越好);工地数据用在线 SR@2m(全程每个输出位姿在 2 m 内的比例,越高越好);RMSE 误差越低越好。

Gibson(仿真照片场景,9 个场景):固定每个对手的深度输入,只换后端。用 UnLoc 的深度时,PadLoc 在线版在每个轨迹长度都不低于 UnLoc 在线滤波;离线版从 T=35 起不低于 UnLoc 的离线精修。作者还发现 UnLoc 报告的“精修提升”其实全部来自读出方式的变化 → P.5 表 1。但在 T≥35 时 UnLoc 更精确(全体中位误差 0.11–0.12 m vs 0.15–0.19 m)→ P.6 表 2。

Bonn(真实公寓,有家具变化和行人):同一单目结构深度、同一地图下,PadLoc(轮式里程计)池化 SR@1m 为 0.56/0.71/0.79,UnLoc(用真值运动)只有 0.30/0.49/0.46;只喂 UnLoc 用的 16 条射线也仍领先 → P.7 表 4。换成 270° LiDAR + 轮式里程计,静态序列达到 100% 成功、中位误差 9–10 cm → P.7。

Hilti 工地(几百米的楼层,只用鱼眼相机):5 个会话里 3 个达到 0.90–0.98;加上学习型墙体分割后 5 个全部在 0.67–0.92。把后端换成“每块独立找最大值”就崩到 0.05–0.11,说明跨窗口的多假设+共识才是关键 → P.8 表 5。

消融:在漂移很大的 VO 下关掉门限,T=450 的成功率从 0.842 掉到 0.368 → P.6 表 3。

代价:完整后端在 M1 Max CPU 上每窗约 40 ms(约 8 ms/帧),深度网络本身要 114 ms,定位不是瓶颈;商场尺度的单次匹配比 UnLoc 快约 15 倍,但在家庭尺度 UnLoc 更快 → P.8 图 3。

工地 floor_1 整圈:绿线是真值,紫点是在线估计,两者几乎贴合(SR@2m 0.98,中位误差 0.81 m)。
原文图 · P.16 工地 floor_1 整圈:绿线是真值,紫点是在线估计,两者几乎贴合(SR@2m 0.98,中位误差 0.81 m)。 图片来源:Bookhahn & Neumann, PadLoc: Training-Free Floor-Plan Localization by Sparse Geometric Matching (arXiv:2611.05172) · 查看原文
横轴是平面图面积(对数),纵轴是匹配耗时;红线 UnLoc 随面积陡增,蓝线 PadLoc 增长平缓,小户型时 UnLoc 反而更快。
原文图 · P.8 横轴是平面图面积(对数),纵轴是匹配耗时;红线 UnLoc 随面积陡增,蓝线 PadLoc 增长平缓,小户型时 UnLoc 反而更快。 图片来源:Bookhahn & Neumann, PadLoc: Training-Free Floor-Plan Localization by Sparse Geometric Matching (arXiv:2611.05172) · 查看原文

要点 Take-home

  1. 平面图定位不必用稠密 (x,y,θ) 网格,墙体朝向+掩码相关+少量假设就够
  2. 真实公寓数据上,同样深度输入时成功率比 UnLoc 高 23–32 个百分点
  3. 跨窗口的门限和共识是关键,关掉门限后强漂移下成功率减半
  4. 依赖墙体与图纸一致,家具多或墙未画进图纸时会失败

Claude 读完全文后的提炼。

更多:先读哪 · 值得看的理由 · 质疑

先读哪

先看第 1 页图 1 和第 4 页图 2,再看第 7 页表 4 与第 8 页表 5

值得看的理由

  1. 在同一深度输入下只换后端,Bonn 真实数据上池化 SR@1m 比 UnLoc 高 23–32 个百分点 → P.7 表 4
  2. 后端完全无训练、状态不随轨迹变长,笔记本 CPU 每窗约 40 ms,代码已开源 → P.8 第 4.6 节

质疑

  • 所有固定超参数都是在 Gibson 测试场景上选的(作者自己承认),且 T=15 时与 UnLoc 的 95% 区间仍重叠(P.21),Gibson 上的小幅领先要打折看 → P.11 第 C 节

审稿人笔记

所有真实数据都是离线回放录制好的序列,没有闭环上机,且领先主要出现在短轨迹和真实数据上,长轨迹仿真中对手更精确。