一句话定位
让视觉语言模型(VLM,看图+读懂文字的大模型)在导航里只做「在图上点一下下一步该去哪」,深度与 SLAM 控制器负责变成 3D 路点并走过去;只在岔路口等关键处思考,中间路程压成轻量时空标记;再用双层 GRPO 强化学习把「想不想」和「走得好不好」对齐。主结果:R2R-CE Val-Unseen SR 66.2% ,仅约 90k 条轨迹。
关键词框架 / 模块
- TAMP-Nav(本文方法总称,又名 Embodied-Navigator)
- Pixel-to-3D 动作空间(Point)
- 选择性按需推理(Think)
- 锚点-轨迹记忆 AT-Mem(Memorize)
- 时空指示器 STI
- 双层 GRPO(Align)
- MultiNav-CoT 数据集
任务 / 底座 / 指标
- VLN · VLN-CE · Qwen2.5-VL
- Pixel Goal · Visual Grounding · Hierarchical VLN
- SR · SPL · NE · OSR · nDTW
- R2R · 长时记忆 · Sim-to-Real
1. 背景概念
这篇论文站在 视觉语言导航(Vision-and-Language Navigation,VLN):机器人听自然语言指令,在陌生室内/室外走过去。评测常用连续环境版 VLN-CE(如 R2R-CE、RxR-CE),机器人一步步真的移动,而不是在导航图节点上「瞬移」。
近年做法是拿大 视觉语言模型(Vision-Language Model,VLM)当大脑。底座这里是 Qwen2.5-VL-7B。但直接部署有三块硬伤:
- 动作空间别扭:逼 VLM 输出「左转 30°」或直接回归 3D 坐标------而它预训练主要看 2D 图文,容易「几何幻觉」。
- 推理太死板:每步都做思维链(Chain-of-Thought,CoT,把思考过程写出来)又慢又贵;固定间隔触发又不够聪明。
- 长程记忆两难:全留历史 → 上下文爆、注意力稀释;乱丢 → 关键路口信息没了,也缺清晰时空坐标。
生活类比:让一个只练过「在照片上圈地点」的人去开真车------你若逼他说「方向盘转几度、油门多大」,他会慌;若让他「指挡风玻璃上该开向的点」,再由自动驾驶底层去执行,就顺得多。
2. 论文在干什么
- 问题:如何让 VLM 导航既准又快、又省训练数据?
- 设定:仿真主战场是 Habitat 上的 R2R-CE / RxR-CE Val-Unseen;真机零样本部署(Unitree Go2 等),深度相机 + SLAM 底层。
- 输入:自然语言指令 + 当前四周四路 RGB(约 360°)+ 锚点-轨迹记忆。
- 输出:可选 CoT;选中某一路相机视图;在该图上点一个像素路点;可选 STOP。像素经深度与相机内参投到 3D,交给底层 SLAM 控制器走到该点。
- 训练:先在 MultiNav-CoT(约 90k 轨迹)上做监督微调(SFT)冷启动,再跑 双层 GRPO。
3. 核心创新点
- Point · Pixel-to-3D :VLM 只做 2D 视觉提示(选视角 + 点像素),几何投影与运动交给确定性模块 → 对齐 VLM 预训练先验,消融里比 NavFoM 式度量路点 SR 高约 25 个点(SFT-only)。
- Think + Memorize · 选择性推理 × 锚点-轨迹记忆 :只在关键拓扑节点深度思考并存高保真锚点;普通路段不推理,压成 STI 时空 token → 自动推理密度约 26%,SR 几乎贴齐 Dense CoT。
- Align · 双层 GRPO :轨迹级结果奖励(成功 / SPL / 推理密度)+ 步骤级过程奖励(靠近目标、避障、停、推理价值、格式),再加退火引导采样 → SFT 55.7% → 完整 66.2% SR,样本效率高(90k 轨迹)。
4. 方法细节
4.1 MultiNav-CoT 数据(冷启动)
从 VLN-CE 筛掉坏渲染与低质指令,约 90k 条。用「时空关键节点挖掘」决定何时该写 CoT:
- 重要性 S ( t ) = S s e m ( t ) + S v i s ( t ) S(t)=S_{sem}(t)+S_{vis}(t) S(t)=Ssem(t)+Svis(t):CLIP 图文相似度 + 相邻帧视觉变化(各自轨迹内 Min-Max 到 0 , 1 0,1 0,1)。
- 距离贪心过滤( D m i n = 2 D_{min}=2 Dmin=2)保证稀疏;间距过大则填最高分中间帧( D m a x = 6 D_{max}=6 Dmax=6)。关键节点约占轨迹 30%。
- Gemini 2.5 Flash 分三阶段写 CoT(任务阶段定位 / 当前观察 / 未来动作)再融合,降低一次生成幻觉。
4.2 Pixel-to-3D(Point)
四路自心视角 V t = { v t , 1 , ... , v t , 4 } V_t=\{v_{t,1},\ldots,v_{t,4}\} Vt={vt,1,...,vt,4} → 选最优视图 v t , i v_{t,i} vt,i → 预测像素 a t = ( u , v ) a_t=(u,v) at=(u,v) →
P t = D t , i ( u , v ) ⋅ K − 1 u , v , 1 T P_t = D_{t,i}(u,v)\cdot K^{-1}u,v,1^{T} Pt=Dt,i(u,v)⋅K−1u,v,1T
变换到世界系后交给底层 SLAM。仿真用真值深度;真机用深度相机。闭环中后续观测可部分纠正单步深度噪声。
4.3 Anchor-Trajectory Memory(Memorize)
两类记忆:
| 组件 | 内容 | 作用 |
|---|---|---|
| Explicit Anchor A k A_k Ak | STI + 高保真视觉 v t k v_{t_k} vtk + CoT 状态摘要 | 关键决策节点「灯塔」 |
| Space-Time Indicators T k T_k Tk | 仅 STI 流( t , x , y , y a w t,x,y,yaw t,x,y,yaw) | 普通路段保留轨迹拓扑,不占视觉 token |
STI 用 2D/1D RoPE 编码位置、时间与 ( sin y a w , cos y a w ) (\sin yaw,\cos yaw) (sinyaw,cosyaw),再 MLP 成一个 token,避免 yaw 在 0°/360° 跳变。
每步上下文 = 工作记忆 (当前与最近锚点间均匀抽 2 帧)+ 长期拓扑记忆 { A 1 , T 1 , ... , A m , T m } \{A_1,T_1,\ldots,A_m,T_m\} {A1,T1,...,Am,Tm}。
4.4 Selective Reasoning(Think)
SFT 阶段由关键节点标签教「何时想」;RL 阶段用推理价值奖励 + 全局推理密度奖励,让模型学会 按需触发。热图显示:走廊上的推理占比从 SFT 的 38% 降到 RL 后的 11%,推理集中在十字路口、门口、目标附近。
4.5 Two-Level GRPO(Align)
- 局部 R l o c a l R_{local} Rlocal:靠近目标、避障、STOP、推理价值、JSON/像素格式(权重示例 λ \lambda λ: 0.5 / 0.2 / 0.8 / 0.5 / 0.2)。
- 全局 R g l o b a l R_{global} Rglobal:成功(含 oracle 半成功)、SPL、推理密度奖励(CoT 比 >0.4 开始衰减,>0.6 归零; ω \omega ω: 3 / 1 / 1)。
- 每指令采 G = 8 G=8 G=8 条完整轨迹;每步温度采样 M = 4 M=4 M=4 候选动作;早期用 β k = β 0 α k \beta_k=\beta_0\alpha^k βk=β0αk 按局部奖励加权选动作,后期趋近均匀探索。
- 优势: A S ( t ) = A g l o b a l + A l o c a l ( t ) A_S^{(t)}=A_{global}+A_{local}^{(t)} AS(t)=Aglobal+Alocal(t)(各自组内 Z-score),再按标准 GRPO token 级损失更新。
5. 整体框架(Mermaid)
#mermaid-svg-NJDv3EregbwMLMMj{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-NJDv3EregbwMLMMj .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-NJDv3EregbwMLMMj .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-NJDv3EregbwMLMMj .error-icon{fill:#552222;}#mermaid-svg-NJDv3EregbwMLMMj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NJDv3EregbwMLMMj .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-NJDv3EregbwMLMMj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NJDv3EregbwMLMMj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NJDv3EregbwMLMMj .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-NJDv3EregbwMLMMj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NJDv3EregbwMLMMj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NJDv3EregbwMLMMj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NJDv3EregbwMLMMj .marker.cross{stroke:#333333;}#mermaid-svg-NJDv3EregbwMLMMj svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NJDv3EregbwMLMMj p{margin:0;}#mermaid-svg-NJDv3EregbwMLMMj .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-NJDv3EregbwMLMMj .cluster-label text{fill:#333;}#mermaid-svg-NJDv3EregbwMLMMj .cluster-label span{color:#333;}#mermaid-svg-NJDv3EregbwMLMMj .cluster-label span p{background-color:transparent;}#mermaid-svg-NJDv3EregbwMLMMj .label text,#mermaid-svg-NJDv3EregbwMLMMj span{fill:#333;color:#333;}#mermaid-svg-NJDv3EregbwMLMMj .node rect,#mermaid-svg-NJDv3EregbwMLMMj .node circle,#mermaid-svg-NJDv3EregbwMLMMj .node ellipse,#mermaid-svg-NJDv3EregbwMLMMj .node polygon,#mermaid-svg-NJDv3EregbwMLMMj .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NJDv3EregbwMLMMj .rough-node .label text,#mermaid-svg-NJDv3EregbwMLMMj .node .label text,#mermaid-svg-NJDv3EregbwMLMMj .image-shape .label,#mermaid-svg-NJDv3EregbwMLMMj .icon-shape .label{text-anchor:middle;}#mermaid-svg-NJDv3EregbwMLMMj .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-NJDv3EregbwMLMMj .rough-node .label,#mermaid-svg-NJDv3EregbwMLMMj .node .label,#mermaid-svg-NJDv3EregbwMLMMj .image-shape .label,#mermaid-svg-NJDv3EregbwMLMMj .icon-shape .label{text-align:center;}#mermaid-svg-NJDv3EregbwMLMMj .node.clickable{cursor:pointer;}#mermaid-svg-NJDv3EregbwMLMMj .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-NJDv3EregbwMLMMj .arrowheadPath{fill:#333333;}#mermaid-svg-NJDv3EregbwMLMMj .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NJDv3EregbwMLMMj .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NJDv3EregbwMLMMj .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NJDv3EregbwMLMMj .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-NJDv3EregbwMLMMj .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NJDv3EregbwMLMMj .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-NJDv3EregbwMLMMj .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NJDv3EregbwMLMMj .cluster text{fill:#333;}#mermaid-svg-NJDv3EregbwMLMMj .cluster span{color:#333;}#mermaid-svg-NJDv3EregbwMLMMj div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NJDv3EregbwMLMMj .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-NJDv3EregbwMLMMj rect.text{fill:none;stroke-width:0;}#mermaid-svg-NJDv3EregbwMLMMj .icon-shape,#mermaid-svg-NJDv3EregbwMLMMj .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NJDv3EregbwMLMMj .icon-shape p,#mermaid-svg-NJDv3EregbwMLMMj .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-NJDv3EregbwMLMMj .icon-shape .label rect,#mermaid-svg-NJDv3EregbwMLMMj .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NJDv3EregbwMLMMj .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-NJDv3EregbwMLMMj .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-NJDv3EregbwMLMMj :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 关键节点
普通
轨迹/步骤奖励
语言指令
拼接上下文
四路 RGB
AT-Mem 锚点+STI
Qwen2.5-VL 策略
触发 CoT?
思维链
跳过推理
选视图+像素/STOP
深度+内参→3D
底层 SLAM 控制器
环境移动
双层 GRPO
SLAM控制器 VLM策略 AT-Mem 环境 SLAM控制器 VLM策略 AT-Mem 环境 #mermaid-svg-wcsWohmgDK1tSV4o{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wcsWohmgDK1tSV4o .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wcsWohmgDK1tSV4o .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wcsWohmgDK1tSV4o .error-icon{fill:#552222;}#mermaid-svg-wcsWohmgDK1tSV4o .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wcsWohmgDK1tSV4o .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wcsWohmgDK1tSV4o .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wcsWohmgDK1tSV4o .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wcsWohmgDK1tSV4o .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wcsWohmgDK1tSV4o .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wcsWohmgDK1tSV4o .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wcsWohmgDK1tSV4o .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wcsWohmgDK1tSV4o .marker.cross{stroke:#333333;}#mermaid-svg-wcsWohmgDK1tSV4o svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wcsWohmgDK1tSV4o p{margin:0;}#mermaid-svg-wcsWohmgDK1tSV4o .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-wcsWohmgDK1tSV4o text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-wcsWohmgDK1tSV4o .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-wcsWohmgDK1tSV4o .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-wcsWohmgDK1tSV4o .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-wcsWohmgDK1tSV4o .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-wcsWohmgDK1tSV4o #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-wcsWohmgDK1tSV4o .sequenceNumber{fill:white;}#mermaid-svg-wcsWohmgDK1tSV4o #sequencenumber{fill:#333;}#mermaid-svg-wcsWohmgDK1tSV4o #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-wcsWohmgDK1tSV4o .messageText{fill:#333;stroke:none;}#mermaid-svg-wcsWohmgDK1tSV4o .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-wcsWohmgDK1tSV4o .labelText,#mermaid-svg-wcsWohmgDK1tSV4o .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-wcsWohmgDK1tSV4o .loopText,#mermaid-svg-wcsWohmgDK1tSV4o .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-wcsWohmgDK1tSV4o .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-wcsWohmgDK1tSV4o .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-wcsWohmgDK1tSV4o .noteText,#mermaid-svg-wcsWohmgDK1tSV4o .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-wcsWohmgDK1tSV4o .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-wcsWohmgDK1tSV4o .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-wcsWohmgDK1tSV4o .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-wcsWohmgDK1tSV4o .actorPopupMenu{position:absolute;}#mermaid-svg-wcsWohmgDK1tSV4o .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-wcsWohmgDK1tSV4o .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-wcsWohmgDK1tSV4o .actor-man circle,#mermaid-svg-wcsWohmgDK1tSV4o line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-wcsWohmgDK1tSV4o :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} alt 关键节点 普通路段 四路图+指令 锚点+STI+工作记忆 写 CoT 存高保真锚点 只追加 STI 像素路点 走到 3D 点
6. 实验与结论
主结果(Val-Unseen)
| 方法 | R2R-CE SR | R2R-CE SPL | RxR-CE SR | RxR-CE nDTW |
|---|---|---|---|---|
| DualVLN | 64.3 | 58.5 | 61.4 | 70.0 |
| NavFoM | 61.7 | 55.3 | 64.4 | 65.8 |
| TAMP-Nav (SFT only) | 55.7 | 50.3 | 52.4 | 62.1 |
| TAMP-Nav | 66.2 | 58.8 | 65.7 | 72.4 |
- 平均约 9 次高层交互/轨迹(对比 DualVLN / StreamVLN ~30 步);单 A800 约 16.6s/任务。
- 长程子集(专家路径 >12.5m):AT-Mem SR 49.8% > DualVLN 41.9% > StreamVLN 30.9%。
- 真机零样本 100 试/方法:TAMP-Nav 60% > DualVLN 53% > StreamVLN 49%。
消融要点
- Pixel-to-3D vs 度量路点:SFT-only SR +24.8(R2R)。
- 双层 GRPO vs 仅轨迹优势:+4.1 ;再加退火引导 +2.8。
- 完整 AT-Mem vs 全历史:+4.3 ;去掉 STI:-2.6。
- Auto CoT(26.3%)vs Dense(100%):SR 仅差 0.6。
- 深度乘性噪声 σ = 0.2 \sigma=0.2 σ=0.2:SR 66.2→63.4(-2.8)。
局限
- 强依赖深度 + 可靠 SLAM;大漂移/动态场景会伤性能。
- GRPO 用仿真特权信号,不能真机在线 RL,真机仅冻结策略零样本。
- 关键节点挖掘偏视觉显著变化,隐蔽决策点可能漏选;STI 目前平面 ( x , y , y a w ) (x,y,yaw) (x,y,yaw),不含层高。
要点总结
- VLM 导航可以「只点像素」,几何与控制交给确定性模块(和 InternVLA-N1 的 Pixel Goal 同一哲学,本文再加四视图选择 + 显式投影公式)。
- 长程不是「全留或全丢」,而是 关键处高清锚点 + 中间 STI 轨迹线。
- 「何时思考」可以靠 RL 涌现,不必每步 CoT。
- 过程奖励 + 结果奖励叠在一起,对长程 credit assignment 很关键。
- 引用数字时注明 R2R-CE Val-Unseen SR 66.2% / 90k 轨迹。
开放问题
- STI 扩展到完整 3D 位姿后,多层楼表现能涨多少?
- MultiNav-CoT 的 Gemini 标注能否用开源强模型接近(文中 GLM-4.5V 已接近)?
- 与 InternVLA-N1 的「像素→扩散轨迹」双系统,谁更适合人形底盘?