> ## Documentation Index
> Fetch the complete documentation index at: https://kensou.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Davio dense monocular inertial slam with feed forw dissection

[//]: # "<!-- ontology-5axis
problem: VSLAM
representation: pointmap
sensor: multi-modal
paradigm: hybrid
time: filter-streaming
ref: ../../cheat-sheet/ontology.md §5
\-->"

# DAVIO：前馈初始化与位姿条件化稠密建图的单目-惯性 SLAM (DAVIO: Dense Monocular–Inertial SLAM with Feed-Forward Initialization and Pose-Conditioned Mapping)

> **发布时间**：2026-09-23（arXiv:2609.27702v1 \[cs.RO]）
> **论文 / 模型名**：DAVIO（Dense monocular-inertial SLAM with feed-forward initialization and pose-conditioned mapping）
> **核心定位**：用**同一个**前馈多视图深度模型（Depth Anything 3, DA3）既做 VIO 冷启动、又做稠密建图；相比纯前馈 SLAM（MASt3R-Fusion / VGGT-SLAM2 / ScaRF-SLAM）在同等位姿下建图更准、启动更早，且对里程计漂移的容忍度高得多。

经典 VIO 滤波器（OpenVINS 等）必须等视差累积才能初始化，且只保留稀疏路标；前馈几何模型（DA3 / VGGT）能从少数图像直接吐出稠密结构，却没有度量尺度、重力方向、速度和 IMU 零偏。DAVIO 的判断是：**这两者恰好互补**——惯性量补上学不到物理量，前馈深度补上视差还没攒够的结构。

***

**X-Ray（非专家 3 句版）**：问题——单目+IMU 是最小传感器配置，但滤波器要等视差、且地图稀疏；前馈深度模型有稠密结构但没尺度。做法——DAVIO 把"五帧图像 + IMU 预积分"写成一个关于 `x=[尺度 s, 初速度 v₀, 重力 g]` 的**线性方程组**（无特征、共 7 个未知量），鲁棒解出后回放缓冲的 IMU 去引导一个**未改动的 OpenVINS 滤波器**；跟踪阶段反过来，用滤波器的度量位姿去条件化 DA3 生成重叠子图。意义——对 spatial AI 研究者，这是一条"**把前馈几何当初始化器和建图器的共用底座、把滤波器当度量锚**"的干净范式，且关键设计是**尺度修正只沿视线方向施加，绝不缩放 VIO 的度量基线**。

***

## 📍 研究全景时间线

```
滤波式 VIO           优化式 VIO           学习式稠密几何          前馈 SLAM                DAVIO
(MSCKF/OpenVINS)    (VINS/ORB-SLAM3)   (DUSt3R→MASt3R→VGGT   (MASt3R-Fusion/VGGT-   (本文)
                                          →π³/MapAnything→DA3)  SLAM2/ScaRF-SLAM)
   │                    │                    │                     │                     │
   ├─ 稀疏路标           ├─ 滑窗优化           ├─ 单次前向出稠密点图   ├─ 用前馈子图做 SLAM    ├─ DA3 一模型两用
   ├─ 需视差才初始化     ├─ 需视差才初始化     ├─ 无度量尺度/重力     ├─ 单体 Sim(3) 对齐     ├─ 特征-free 5帧线性系统
   ├─ 度量、重力、速度   ├─ 度量、重力         ├─ 强泛化、视觉鲁棒    ├─ 每子图重估尺度       ├─ OpenVINS 缓冲回放接力
   └─ 地图太稀疏         └─ 地图太稀疏         └─ 严格 uncalibrated   └─ 对位姿漂移敏感       └─ 尺度只沿视线修正
                                                                                              + 重力保持子图图
   ↓ 本文局限：依赖 DA3 深度质量（DA3-Large 仍能再降误差）；静止/恒速启动退化；重访约束可能带入不精确尺度；
     仅优化 translation + yaw（roll/pitch 完全信任滤波器）；滤波器状态永不修改，漂移只能靠 T_MO 修正。
```

***

## 1 · 核心架构 / 方法总览

DAVIO 是三段流水线（Fig. 2）：

1. **前馈视觉-惯性求解**（五帧窗口）→ 提出度量状态 → 缓冲回放引导一个全新 OpenVINS 滤波器；
2. **滤波器持续跟踪** → 输出度量相机位姿与内参；
3. **位姿条件化 DA3 窗口** → 形成重叠子图；窗口内匹配修正逐帧深度尺度；共享图像比值 + 验证对应约束一个**重力保持子图图**，重访只有在漂移超过约束不确定度时才允许移动位姿。

### 1.1 系统 / 组件对比表

| 模块 | 输入 | 输出 | 训练/推理差异 | 关键约束 | | |
| - | - | - | - | - | - | - |
| 前馈初始化器（§IV） | 5 帧图像（间隔 0.2 s）+ IMU 预积分 | `x=[s, v₀ᵀ, gᵀ]ᵀ∈ℝ⁷` → 精化状态 | 纯推理，DA3 冻结 | 每图最多 3 个独立方程；≥4 图；SVD 比 ≥10⁻³；baseline/depth ≥0.02 | | |
| 鲁棒估计（§IV-B） | 每图 ≤100 点（置信度 >25 分位，4×4 网格采样） | 接受/拒绝的尺度假设 | 推理 | LMedS 100 假设；内点率 ≥0.4；中位残差 ≤0.05 | | |
| 滤波器接力（§IV-C） | 精化状态 + 缓冲 IMU | 全新 OpenVINS 实例 | 推理（未改动 OpenVINS 初始化入口） | 回放 ≤8 s；连续 5 个状态落在 0.15 s 内；候选 3 s 失败则弃，最多 5 个候选 | | |
| 条件化子图（§V-A） | 图像 + 校正内参 K + 滤波器度量位姿 | 子图位姿 `Q_j=T_{MS_j}`、残差对数深度尺度 `λ_j` | 推理 | 度量基线 >5 cm；拟合 RMSE ≤15 cm；\` | log ŝ\_j | ≤0.3\` |
| 帧尺度 & 共享图像（§V-B） | XFeat/LighterGlue 匹配（相邻 1–2 位） | 逐帧尺度 `s_ji` | 推理 | 8 轮深度归一化重加权 LS；每轮投影到 `Σ log s_ji = 0` | | |
| 子图图（§V-C） | 相邻 + 重访（\<8 m 且 ≥5 s）对应 | 图位姿 + `λ_j` | 推理 | PnP RANSAC（≥50 匹配、≥30 内点、内点率 ≥0.25、2 px）；漂移门控 | | |
| 融合 & 实时轨迹（§V-D） | 子图归档 | 4 cm 体素地图 + `T^{live}_{MI}(t)` | 推理 | 最 24 个常驻子图；10% 相对深度重观测；修正变化 >5 cm 或 2° 时按 1 传感器秒插值 | | |

### 1.2 关键机制

**⚡ Eureka Moment：残差尺度只作用在"深度"上（`e^{λ_j}·d` 沿视线方向），VIO 的度量相机基线 `T_{S_j C_i}` 的平移**永不**被重缩放——因此不需要对整个窗口做 Sim(3) 对齐，也就不会把非中心帧全部推移错位。**

次级洞见：**一个模型两用**——DA3 既产初始化窗口的 up-to-scale 点云/相对位姿，又产跟踪阶段的稠密深度子图。滤波器状态从头到尾**不被修改**，地图帧修正反过来降低最终轨迹误差。

另一个独立设计：**尺度约束与位姿约束走两道不同的门**。每次验证过的重访都把中位深度比加入 `ℰ_s`（每加即生效）；但它的点群只有在"里程计漂移 > 重访约束的不确定度"时才进入 `ℰ_p`（才能动位姿）。

### 1.3 信息流 / 架构 ASCII

```
 [图像 5 帧@0.2s]  [IMU 预积分]
        │                │
        └──────┬─────────┘
               ▼
   DA3: depth / conf / K / 相对位姿
               ▼
 ┌────────────────────────────────┐
 │ 无特征线性系统  A_ik x = b_ik   │  x = [s, v0, g] ∈ R^7
 │ 每图 ≤3 方程 ⇒ 至少 4 图        │
 └────────────────────────────────┘
               ▼  LMedS 100 假设 / 条件数门 / 物理合理性门
        精化 θ=[η, v0, δγ, δb_g, b_a]  (softplus 尺度, 重力切平面)
               ▼
   ┌───────────────────────────┐
   │ 全新 OpenVINS + 缓冲回放   │  ≤8s 重放, 5 连续状态 <0.15s 即选
   └───────────────────────────┘
               ▼ 滤波器度量位姿 T_{OC}
   ┌────────────────────────────────────────────┐
   │  位姿条件化 DA3 窗口(5 帧@0.5s, 共享 2 帧)   │
   │  → 深度 d = ŝ_j · s_ji · d^DA3               │
   │  → 点 = T_{MS_j} T_{S_j C_i} (e^{λ_j} d K⁻¹u)│ ← 尺度只动深度
   └────────────────────────────────────────────┘
               ▼
   重力保持子图图: 只优化 translation + yaw + λ_j
   ┌──────────────┬───────────────────────────┐
   │ ℰ_s 尺度约束  │ ℰ_p 点群（过漂移门才生效）  │
   └──────────────┴───────────────────────────┘
               ▼
   T_MO = T_{MS_j} T_{S_j O}  → 实时位姿 T^{live}_{MI}(t)
```

***

## 2 · 数学核心

📌 **Napkin Formula**：

> 射线约束 `H_ik·y_ik = 0`，其中 `y_ik` 对 `x=[s, v₀ᵀ, gᵀ]ᵀ∈ℝ⁷` **线性** ⇒ `A_ik x = b_ik`；
> 但每张图**至多贡献 3 个独立方程**（`H_ik` 秩为 2，且 `w₀=0`），密集点只提升鲁棒性、不提升秩。

**目标**：从"图像 + IMU"里解出度量尺度 `s`、初速度 `v₀`、重力 `g`，且不需要任何特征跟踪。

**公式（式 1–5）**：

* 反投影（up-to-scale）：`p̄_ik = R_{C₀C_i} d̄_ik z̃_ik + p̄_{C₀C_i}`（式 1）
* 视线零空间：`H_ik = [[1,0,-z_x],[0,1,-z_y]]`，使 `H_ik y = 0` 对所有落在 `z_ik` 视线上的点成立（式 2）
* IMU 预积分位移：`p_{I₀I_i} = Δt_i v₀ − ½ Δt_i² g + Δp_i`（式 3）
* 链式 `C₀→I₀→I_i→C_i` 把点变到相机 i 系，代入后得 `A_ik x = b_ik`，其中
  `B_ik = H_ik R_{CI} R_{I_iI₀}`，
  `A_ik = [ B_ik R_{IC} p̄_ik,  −Δt_i B_ik,  ½Δt_i² B_ik ]`（式 5）

**变量说明**：`s` 度量尺度（softplus 保正：`s=ε+log(1+e^η), ε=10⁻⁵`）；`v₀` 参考帧速度（I₀ 系）；`g` 重力向量，满足 `‖g‖=g₀`，斜对称切平面参数化 `g(δγ)=g₀ Exp(Nδγ) ĝ, N∈ℝ^{3×2}, Nᵀĝ=0`（式 8）；`p_{IC}` 杆臂（显式出现在式 5，按给定值固定，未给时为 0）。

**直觉**：整张图的点其实只在检验**同一句话**——"DA3 的相机中心按尺度放大后，是否等于 IMU 积分出的位置"。所以点再多也压不进更多尺度信息；`w_i` 对 `x` 是仿射的 3×7 块，一图一块，最多 3 行。

**退化运动（式 7）**：若 up-to-scale 轨迹至多关于时间二次，`p̄_{C₀C_i}=Δt_i a + Δt_i² c`，则 `s` 的变化可被 `v₀` 与 `g` 完全吸收——**常量速度运动（c=0，启动时常见）是最典型实例**。

**尺度只沿视线**：地图点 `p_M = T_{MS_j} T_{S_j C_i} ( e^{λ_j} d_ji(u) K⁻¹u )`（式 12）——`e^{λ_j}` 只乘深度，`T_{S_j C_i}` 的平移是固定度量值。

**子图图能量（式 16）**：

```
E = Σ_{ℰo} ρ(‖W_o r^o_ab‖) + Σ_{ℰp} (1/N_ab) Σ_k ρ(‖W_abk r^p_abk‖)
  + Σ_{j>0} ρ(|λ_j − λ_0| / 0.10) + Σ_{ℰs} ρ(|r^s_ab| / σ_ab)
```

ρ 为阈值 2 的 Huber。噪声模型：`W_o` 平移 `max(2cm, 0.005‖t_ab‖)`、旋转 `max(0.5°, 0.5°m⁻¹‖t_ab‖)`；`W_abk` 沿视线 10% 深度、横向 1%，均地板 10 cm。共享图像尺度残差 `r^s_ab = λ_b − λ_a − κ_ab`，`κ_ab = −(1/|ℐ_ab|)Σ m_i`（式 14）。

***

## 3 · 带数字走一遍（玩具设定，非论文数字）

**设定**：中心图 + 一张邻居图。DA3 给的 up-to-scale 相机中心位移 = **0.60**（任意单位），VIO/OpenVINS 给的度量基线 = **0.48 m**。某个像素 DA3 预测深度 `d^DA3 = 2.5`（up-to-scale），该像素归一化坐标 `u`，内参 K 已知。

**Step 1 — 相似拟合**：`ŝ_j = 0.48 / 0.60 = 0.8`。检查门：`|log 0.8| = 0.223 ≤ 0.3` ✅，基线 0.48 m > 5 cm ✅（RMSE 需 ≤15 cm）。

**Step 2 — 两种缩放策略对比**（这是本文的核心差异）：

| 策略 | 深度 | 相机基线 | 后果 |
| - | - | - | - |
| 整窗 Sim(3) 对齐 | 2.5 → 2.0 m | 0.48 m → **0.384 m** ❌ | 基线被错误缩放，非中心帧全部被推移 |
| DAVIO 深度-only（`e^{λ_j}`） | 2.5 → 2.0 m | 保持 **0.48 m** ✅ | 度量基线不动，只修深度 |

**Step 3 — 地图点**：`p_M = T_{MS_j} · T_{S_j C_i} · (2.0 · K⁻¹u)`。若之后子图图把 `λ_j` 从 0 调到 `−0.05`，则 `e^{−0.05}≈0.951`，深度 2.0 → 1.902 m，而 `T_{S_j C_i}` 的 0.48 m 平移**依旧不变**。

**Step 4 — 重访的级联效应**（呼应 §7-D 消融）：若把子图图位姿固定，MH\_03 的最终 ATE 从 **0.101 m** 退回到 **0.158 m**（即未修正里程计的值）；去掉重访得到**同样的 0.158 m**——说明**全部修正都来自重访**。

***

## 4 · 工程视角

**论文明确给出的部署约束**（逐字）：

| 项 | 论文值 |
| - | - |
| 计算平台 | "i7-12700H laptop with an RTX 3060 Laptop GPU (6 GB)" |
| 模型/分辨率 | "DA3-Base at 504 px" |
| 节奏 | "paced at sensor rate on EuRoC and on ORI" |
| 启动窗口 | 5 帧，间隔 0.2 s |
| 跟踪窗口 | 5 帧，关键帧间隔 0.5 s，相邻窗口共享 2 帧 |
| 缓冲回放 | "up to 8 s of buffered measurements" |
| 候选滤波器 | "A candidate that fails to do so within 3 s is abandoned, and at most five candidates are attempted" |
| 常驻子图 | "at most 24 resident submaps" |
| 地图分辨率 | ORI 2 cm 导出；EuRoC 4 cm；融合体素 4 cm |
| 鲁棒估计规模 | LMedS 100 假设；每图最多 100 点，4×4 网格 |
| 求解迭代 | 图求解每加约束最多 8 次 LM；逐帧尺度 8 轮 LS |

**延迟 / FPS / VRAM 占用 / 吞吐**：**「论文未报告」**——论文只声明"paced at sensor rate"，未给任何单帧延迟、FPS、显存峰值或 CPU/GPU 占用数字。6 GB 显存是硬件规格而非占用测量。

**Trade-off 分析**：

* **DA3-Base\@504px 是显存受限的折中**：论文自己用 DA3-Large 做上界实验（ORI 在线全局误差 0.080→0.061 m，F\@10 0.75→0.81），说明**深度质量是主要剩余误差源**，但更大模型意味着更慢/更吃显存。
* **8 s 缓冲 + ≤5 候选**：这是"启动不丢测量"的代价——回放必须在墙钟上跑得比实时快，否则 3 s 超时门会不断弃候选。对高采样率 IMU 而言这条时间约束很硬（论文未给 IMU 频率，标注 `UNVERIFIED`）。
* **≤24 常驻子图**：0.5 s/子图 ⇒ 约 12 s 地图常驻；超限即驱逐，驱逐后"first retained node is fixed at its current state"（gauge 重置）。
* **只优化 translation + yaw + λ\_j**：计算量小、且保留滤波器观测到的 roll/pitch，代价是 roll/pitch 误差无法被图修正。
* **重访检索引擎门**：\<8 m 且 ≥5 s，配合 PnP RANSAC + 多项一致性测试，抑制了错误回环，代价是短/慢序列可能一个重访都不触发。

***

## 5 · 数据与评测

**数据集（逐字）**：

* **EuRoC**：11 条序列，Machine Hall（MH）+ 两个 Vicon 房间；带 OpenVINS 参考轨迹（含修正后的 V1\_01 参考）与六个 Vicon 房间序列的 **Leica** 扫描。
* **ORI**：5 条建筑尺度序列（R01–R05），带 survey-grade **LiDAR** 参考。
* 评测平台：i7-12700H + RTX 3060 Laptop GPU (6 GB)，DA3-Base\@504 px，EuRoC 与 ORI 均按传感器速率走。

**对比设置（讲条件）**：

* **Native**：OpenVINS 单独跑（自带初始化器、关闭建图，3 次取中位）。
* **causal**：DAVIO 在发布时间点能拿到的最新地图修正；**final**：最后一次图更新后重导出的轨迹。
* **匹配位姿类**（隔离建图层）：ScaRF-SLAM 的已释出 mapper 离线跑在 DAVIO 的 OpenVINS 位姿上、同一 DA3-Base checkpoint。
* **端到端类**：ORB-SLAM3（单目-惯性，EuRoC 官方配置，3 次）；MASt3R-Fusion（EuRoC 单目-惯性配置，隔帧）；VGGT-SLAM2（默认参数/关键帧，并额外给一个全局 Sim(3) 拟合到参考——"which favors it"）。
* **指标**：启动沿用 \[13]——132 个十秒窗口/初始化器（MH 67、Vicon 65）；窗口内发布的轨迹 ATE \<0.5 m 记为成功；`T_f` 为首次发布状态的传感器时刻（无则记 10 s），`T_q` 额外把每次失败罚 10 s。ATE 为一次无尺度刚体对齐后的平移 RMSE。Coverage 为发布位姿覆盖比例（每位姿最多计 0.1 s）。表面度量只评参考相机路径可见的参考点；precision/recall/F\@10 用 10 cm 阈值。地图在 ORI 上 2 cm 导出、EuRoC 上 4 cm；ScaRF 的 EuRoC 点云体素化到一致；ScaRF chunk evaluator 用 10 m chunk + 3 cm 阈值。

**关键数值（逐字抄录）**：

*Table II — 启动（132 个十秒窗口）*

| Initializer | Success | T\_f (s) | T\_q (s) | Grav (°) | Vel (m/s) | ATE (m) |
| - | - | - | - | - | - | - |
| OpenVINS | 111/132 | 3.65 | 3.87 | 0.85 | 0.07 | 0.042 |
| DAVIO | 109/132 | **2.43** | **2.66** | 0.99 | 0.07 | 0.044 |
| MH: OpenVINS 54/67, T\_q 4.68 | MH: DAVIO 56/67, T\_q **2.30** | | | | | |
| Vicon: OpenVINS 57/65, T\_q 3.15 | Vicon: DAVIO 53/65, T\_q 4.50 | | | | | |

*Table III — EuRoC ATE (m)*

| Seq. | Native | Causal | Final | Cov. | T\_f (s) |
| - | - | - | - | - | - |
| MH\_01 | 0.099 | 0.119 | 0.065 | 0.99 | 2.2 |
| MH\_02 | 0.092 | 0.098 | 0.062 | 0.99 | 2.3 |
| MH\_03 | 0.158 | 0.143 | 0.101 | 0.98 | 2.5 |
| MH\_04 | 0.278 | 0.212 | 0.153 | 0.97 | 2.8 |
| MH\_05 | 0.281 | 0.254 | 0.200 | 0.97 | 3.9 |

*Table IV — 端到端（MH，ATE m，SE(3) 对齐）*

| Seq. | OpenVINS native | DAVIO final | ORB-SLAM3 | MASt3R-Fusion | VGGT-SLAM2† |
| - | - | - | - | - | - |
| MH\_01 | 0.099 | 0.065 | 0.058 | 0.419 | 0.188 |
| MH\_03 | 0.158 | 0.101 | 0.053 | 0.447 | 0.337 |
| MH\_05 | 0.281 | 0.200 | 0.060 | 0.555 | 0.989 |

*Table V — EuRoC Vicon 房间，匹配位姿（F\@10 / Mean\[m]）*

| Seq. | DAVIO F\@10 | ScaRF F\@10 | DAVIO Mean | ScaRF Mean |
| - | - | - | - | - |
| V1\_01 | 0.64 | 0.42 | 0.125 | 0.242 |
| V1\_02 | 0.68 | 0.50 | 0.115 | 0.204 |
| V1\_03 | 0.52 | 0.41 | 0.205 | 0.288 |
| V2\_01 | 0.61 | 0.48 | 0.167 | 0.210 |
| V2\_02 | 0.55 | 0.35 | 0.177 | 0.276 |
| V2\_03 | 0.48 | 0.49 | 0.188 | 0.211 |
| **Median** | **0.58** | 0.45 | **0.172** | 0.227 |

*Table I — ORI（中位）*

| Method | Poses | Mean↓ | F\@10↑ | Err.↓ | P\@3↑ | R\@3↑ |
| - | - | - | - | - | - | - |
| Unconditioned reference | VIO | 0.219 | 0.38 | 0.157 | 20.1 | 13.9 |
| DAVIO online | VIO | **0.080** | **0.75** | 0.044 | 60.8 | 38.8 |
| ScaRF mapper (offline) | VIO | 0.084 | 0.69 | 0.043 | 61.6 | 43.9 |
| MASt3R-Fusion | Own | 0.194 | 0.67 | 0.123 | 49.6 | 61.4 |
| VGGT-SLAM2† | Own | 0.161 | 0.50 | 0.110 | 34.0 | 14.3 |
| DAVIO online, DA3-Large | VIO | 0.061 | 0.81 | 0.033 | 71.9 | 38.3 |
| DAVIO mapper (offline) | GT | 0.069 | 0.88 | 0.041 | 67.8 | 54.7 |
| ScaRF mapper (offline) | GT | 0.040 | 0.89 | 0.029 | 70.6 | 47.7 |

*Table VI — 建图消融（EuRoC）*

| Variant | F\@10 V1\_02 | F\@10 V1\_03 | F\@10 V2\_02 | Compl.\[mm] | ATE MH\_03 |
| - | - | - | - | - | - |
| Unconditioned reference | 0.514 | 0.432 | 0.493 | 42/67/38 | 0.158 |
| DAVIO (complete) | 0.685 | 0.520 | 0.550 | 30/44/31 | 0.101 |
| w/o pose conditioning | 0.539 | 0.423 | 0.469 | 41/65/37 | 0.139 |
| graph poses fixed† | 0.682 | 0.519 | 0.547 | 30/44/31 | 0.158 |
| w/o revisits† | 0.575 | 0.529 | 0.599 | 31/40/28 | 0.158 |

**其他结论（逐字方向）**：final 轨迹在全部 5 条 MH 序列上相对 native 降 ATE **29–45%**；DAVIO 位姿覆盖 97–99%，ORB-SLAM3 为 74–82%；从参考位姿换到 OpenVINS 位姿，DAVIO 离线 mapper 全局误差升 **26%**（0.069→0.080），ScaRF 升 **110%**（0.040→0.084）；固定图位姿后误差升至 **0.105 m**；DA3-Large 在同一固定 OpenVINS 位姿的离线臂上，全局误差 0.105→0.093 m，chunk precision 62.3→73.0%。

***

## 6 · 能力与失败模式

**能做**：

* 在视差尚未累积时提前给出**度量**状态（MH 中位 `T_q` 2.30 s vs 4.68 s）。
* 在**相同位姿 / 相同 checkpoint / 相同密度**下建出更准的稠密图（Vicon 中位 F\@10 0.45→0.58）。
* 对里程计漂移容忍度高：换到估计位姿后性能退化远小于 ScaRF（+26% vs +110%）。
* 覆盖率高（97–99% 每个序列都发布位姿），且全部 11 次运行完成。

**不能做 / 失败模式**：

1. **DA3 深度本身质量是主要误差源**：论文原话——DA3 深度在物体边界、反光/无纹理表面、运动物体上不可靠；换 DA3-Large 仍能进一步降误差（"Depth quality is therefore a major remaining error source"）。
2. **恒速/静止启动退化**：up-to-scale 轨迹至多二次时，尺度变化被 `v₀`/`g` 吸收（式 7），常量速度是典型实例。
3. **DA3 与 IMU 旋转不一致时**，增加的行反映的是旋转误差而非尺度信息（§IV-B 明确说"the added rows reflect rotation error, not scale information"）。
4. **重访可能带入不精确尺度约束**：去掉重访反而在 V1\_03、V2\_02 上小幅提升 F\@10（+0.009、+0.049）——"possibly because some admitted revisits impose imprecise scale constraints"。
5. **相关尺度拟合不是独立证据**："Since DA3's default interface returns the input poses, this fit serves as a consistency check rather than as independent evidence of depth accuracy."（式 §V-A）
6. **roll/pitch 无法被图修正**：图中每节点只优化 translation、yaw、`λ_j`，roll/pitch 完全信任滤波器。
7. **Vicon 房间启动反而不占优**：DAVIO T\_q 4.50 vs OpenVINS 3.15，成功数 53/65 vs 57/65——说明该优势主要由"等视差"场景驱动。

### 隐含假设 (Hidden Assumptions)

* **静态场景**：鲁棒估计用 LMedS（100 假设）处理外点，但论文把"运动物体"列为 DA3 深度不可靠的来源，隐含假设场景主体静止。
* **启动窗口内有非退化运动**：需要 baseline-to-depth ≥0.02，否则被拒。
* **`‖g‖ = g₀` 固定**：重力模长被硬约束；且 `g` 需落在平均比力方向 30° 内才接受。
* **DA3 旋转与预积分旋转大致一致**：否则线性系统的秩会被旋转误差"假性"抬升。
* **窗口内的度量平移可信**：`T_{S_j C_i}` 的平移直接当真值用，只对深度做残差修正——依赖滤波器位姿的局部精度。
* **主模式下相机-IMU 外参与时偏已知**：第二模式虽可在线估计 `R_IC` 与 `b_g`，但杆臂 `p_IC` 与时偏初始化为 0，交给 OpenVINS 从先验精化。
* **首次发布的姿态在 5 帧内可接受**：接受门为内点率 ≥0.4、中位残差 ≤0.05、`‖v₀‖≤5 m/s`。
* **滤波器状态永不修改**：DAVIO 只发布 `T_MO T_OI(t)`，滤波器内部的 velocity/bias/校准保持原样——隐含假设滤波器本身足够稳。

***

## 7 · 与相关工作对比

| 系统 | 是否用前馈几何做初始化 | 稠密建图锚定方式 | 尺度处理 | 对估计位姿漂移的鲁棒性 | 滤波器状态 |
| - | - | - | - | - | - |
| OpenVINS \[4] | 否（经典初始化器） | 若开建图则稀疏 | 滤波器内 | — | 自身 |
| ORB-SLAM3 \[5] | 否 | 稀疏/半稠密 | 优化 | — | — |
| MASt3R-Fusion \[27] | 否（MASt3R 对齐 + IMU/GNSS 因子） | 学习对齐 + 因子图 | 每子图 | 较弱（MH 端到端 ATE 0.419/0.447/0.555） | — |
| VGGT-SLAM2 \[22] | 否 | 增量对齐前馈子图 | 全局 Sim(3)（论文额外给参考拟合） | 较弱 | — |
| ScaRF-SLAM \[29] | 否 | DA3 条件化在经典跟踪位姿上 | 固定位姿优化帧/子图尺度 | 差（换估计位姿 +110%） | 不动 |
| **DAVIO（本文）** | **是，同一 DA3 模型** | 位姿条件化 DA3 + 重力保持子图图 | **只沿视线修深度，保度量基线** | **强（+26%）** | **不动** |

**面试 Tip**：被问"DAVIO 和 ScaRF-SLAM 都条件化 DA3，差别在哪？"——答两点：(1) **DAVIO 用同一个前馈模型去 bootstrap 滤波器本身**（ScaRF 不参与初始化）；(2) **DAVIO 有重力保持子图图，且回环只在"累积里程计漂移 > 约束不确定度"时才允许移动位姿**。补一句关键工程细节：尺度修正只作用在**深度**上，因为整窗 Sim(3) 会缩放 VIO 的度量基线、把非中心帧全部推移错位。

***

## 8 · GitHub-validated pitfalls (atlas 联动, 2026-09-24)

**仓库状态（诚实声明）**：论文正文/脚注只给出项目页 `https://be2rlab.github.io/DAVIO/`，**全文未出现任何 `github.com` 仓库地址、commit hash 或 issue 编号**。因此本节**没有任何 issue 级证据**，以下 pitfall 全部由 §6 失败模式 + §4 方法约束**机械推导**，**未经 issue 验证**：

1. **【DA3 接口"回显输入位姿"的隐式耦合 → 换 checkpoint 即失效】**
   * 依据 §6 失败模式 5 + §V-A 方法约束：验收门依赖"相似拟合只是自洽性检查"。若换成**不**回显输入位姿的 DA3 变体/新版（或自己包一层 Sim(3)），`ŝ_j` 就从"自洽性检查"变成真正的 Sim(3) 对齐，`|log ŝ_j|≤0.3` 这道门会**误杀合法窗口**，或在尺度真值偏离时**误收错误尺度**。
   * 机械链条：`DA3 default interface returns input poses`（论文原话）→ 拟合退化为自洽检查 → 任何改变该接口行为的封装都会让门的行为不可预测。

2. **【"尺度只沿视线"不可被等价改写成整窗 Sim(3) → 度量基线必坏】**
   * 依据 §V-A 方法约束：`p_M = T_{MS_j} T_{S_j C_i}(e^{λ_j} d K⁻¹u)`，`T_{S_j C_i}` 平移固定。
   * 机械链条：§3 玩具例已量化——整窗 Sim(3) 会把 0.48 m 基线改成 0.384 m；任何"为了简化把 λ\_j 折进子图位姿 Q\_j"的重构都会**破坏非中心帧的度量一致性**，且这种错误在单目视觉上**看不出来**（它恰好被整窗尺度吸收），只在有 IMU/真值基线时才暴露。

3. **【缓冲回放的墙钟时间硬约束 → 高采样率 IMU 下 3 s 候选超时门可能持续触发】**
   * 依据 §IV-C 方法约束："replays up to 8 s of buffered measurements"、"selected once it has produced five consecutive states within 0.15 s of the live stream"、"fails to do so within 3 s is abandoned, and at most five candidates are attempted"。
   * 机械链条：要在一个 3 s 墙钟窗内回放 8 s 的 IMU（意味着 ≥2.67× 实时），再加 DA3 前向 + 5 个连续状态的收敛检查。IMU 采样率越高（论文未给，标注 `UNVERIFIED`），滤波器单步越多，3 s 门越紧张；一旦 5 个候选全部超时，系统会**回退到内置 OpenVINS 初始化器**——表现为"在高速/高采样设备上 DAVIO 启动优势消失"，与 §6 失败模式 7（Vicon 房间反而不占优）方向一致。

4. **【重访门控导致短/慢序列"零修正"】**
   * 依据 §V-C："revisits retrieved within 8 m and at least 5 s apart"，且点群只有在"drift > 约束不确定度"时才移动位姿；§7-D 消融显示"去掉重访 = 固定图位姿 = ATE 0.158 m"。
   * 机械链条：\<8 m 且 ≥5 s 的空间-时间门 + PnP RANSAC ≥50 匹配/≥30 内点/≥0.25 内点率/2 px + 三一致性测试 → 在**短序列或慢速手持**场景下可能一个重访都不被接纳，此时子图图**退化为纯尺度图**，最终 ATE 与未修正里程计相同——用户在短录制上会观察到"图没起作用"。

5. **【常驻子图驱逐会重置 gauge】**
   * 依据 §V-C："at most 24 resident submaps"、"after eviction the first retained node is fixed at its current state"，以及 §V-C 的 `Σ_{j>0} ρ(|λ_j−λ_0|/0.10)` 尺度锚在 `λ_0` 上。
   * 机械链条：0.5 s/子图 ⇒ 24 子图 ≈ 12 s 地图窗口；一旦驱逐首个节点，`λ_0` 的物理含义变化，后续所有 `λ_j` 相对锚点漂移。这在**长序列**上表现为尺度缓慢漂移，且因为"滤波器状态永不修改"，该漂移**不会被 VIO 反向纠正**。

***

[← Back to slam-vio-migration README](./README.md)

> **Status**：v0.1 · 基于 arXiv 全文（arXiv:2609.27702v1，已截断）· 未在真机复现的数字标 `UNVERIFIED`
> 反捏造声明：§4 的延迟/FPS/VRAM 占用/吞吐均\*\*「论文未报告」\*\*；§5 全部数据集名与指标数值逐字来自全文；§8 无 `github.com` 仓库信号，全部 pitfall 为推导、未经 issue 验证。

[//]: # "<!-- source: https://arxiv.org/abs/2609.27702 -->"


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.