# Option 1: Using the isaaclab.sh executable
# note: this works for both the bundled python and the virtual environment
./isaaclab.sh -p scripts/tutorials/00_sim/create_empty.py
# Option 2: Using python in your virtual environment
python scripts/tutorials/00_sim/create_empty.py
./isaaclab.sh -p ./Isaccsim-test/b2_vlm_nav.py \
--scene=hospital \
--quality=ultra \
--mode=vlm \
--policy=rough \
--load_run=2026-06-14_14-16-54 \
--checkpoint=model_2999.pt \
--speed=0.8 \
--instruction="Walked past the water dispenser and the chairs, and finally stopped by the table"
./isaaclab.sh -p ./Isaccsim-test/b2_vlm_nav.py \
--scene=hospital \
--quality=ultra \
--mode=vlm \
--policy=rough \
--load_run=2026-06-14_14-16-54 \
--checkpoint=model_2999.pt \
--speed=0.8 \
--instruction="Walked past the water dispenser and the chairs, and finally stopped by the table"
VerifyNav-World — 面向长程视觉语言导航的预测式世界推演、动作结果核验与因果恢复演化的韧性增强系统
方法总览与流程设计
📺 演示视频:知行验航.mp4 — 完整系统效果展示(VLN-CE + Isaac Sim B2 机械狗)
VerifyNav-World 是一个面向长程视觉语言导航(VLN)的韧性增强系统,由两个互补子系统构成:
1.训练环境安装
快速复现(推荐)
使用我们导出的完整 conda 环境,一键复现所有依赖:
环境包含 180+ 个精确版本依赖:PyTorch 2.7.1+cu128、Transformers 4.37.2、Habitat-Sim/Lab 0.1.7、Flash-Attention 2.8、DeepSpeed 0.14.5 等。
手动构建
要手动构建训练环境,请运行:
数据集下载与仿真模拟器安装
1.1 VLN-CE数据集 与 Habitat-Sim模拟器
推理训练标注由我们的自动数据引擎生成,该引擎会在关键节点标注稀疏的自感知推理。请从 Dataset 下载数据,并在每个子文件夹中解压
videos.tar.gz。yt-dlp下载视频,并使用 NaVILA repo 中的scripts/extract_rawframes.py提取视频帧。数据目录结构应如下所示:
1.2 医院、工厂、城市等开放复杂场景数据 与 Isaac Sim模拟器 + Isaac Lab 强化学习动作框架安装
请确保你的计算机上已经安装 Isaac Sim。否则,请按照此指南完成安装。
如果通过 Omniverse Launcher 进行安装,请确保选择并安装 Isaac Sim 5.1.0。在 Ubuntu 22.04 或更高版本中,也可以通过 pip 进行安装:
克隆Isaac Lab并链接扩展。
安装验证,请从存储库的顶部运行以下命令:
下载Isaac Sim资产包和场景文件,请按照此指南完成安装:
把包解压到文件夹里:
2. 训练
2.1 多模态编码器调优
我们以 NaVILA 风格的 VILA 为基础模型,其由 Llama-3 8B、SigLIP 和
mm_projector组成,并采用 8 帧视觉输入。随后,使用我们的推理数据进行微调,使模型学习自感知推理能力。预训练模型以及我们训练得到的 模型权重 可从这里下载。2.2 World-VLN 训练(NavWorld 世界模型)
NavWorld 采用两阶段训练策略,在冻结的 VLM 骨架上逐步训练世界模型模块:
阶段 1:世界模型预训练(冻结 VLM 骨架)
训练目标:在世界模型模块(EventGraphEncoder、WorldStateModule、CounterfactualDynamicsModule)中建立从当前状态预测动作后果的能力。VLM 骨架(SigLIP + MM Projector + LLM)完全冻结。
navworld_num_slotsnavworld_num_candidatesnavworld_max_eventslambda_trans阶段 1 等效命令:
阶段 2:完整 NavWorld 训练(部分解冻 VLM)
在阶段 1 基础上,启用后果评分器(ConsequenceScorer)和后验校准模块(PosteriorCalibrationModule),并部分解冻 LLM 层进行联合优化。
lambda_translambda_cflambda_cal损失函数
NavWorld 使用三个核心训练目标:
总损失:
L_NavWorld = L_trans + λ_cf · L_cf + λ_cal · L_cal2.3 VerifyNav 训练(动作-结果核验与因果恢复)
VerifyNav 采用三阶段渐进式训练策略,逐阶段引入更复杂的恢复与演化能力:
阶段 1:证据编译 + 时序验证
训练 Module A(TransitionParser + EvidenceCompiler)和 Module B(TemporalVerifier),VLM 骨架完全冻结:
阶段 2:因果恢复
在阶段 1 基础上,解冻 LLM 最后 4 层,训练 Module C(CausalRecoveryModule):
阶段 3:证伪驱动演化
训练 Module D(FalsificationStrategyModule),引入闭环恢复控制器:
损失函数
2.4 Isaac Lab 强化学习动作训练
B2 机械狗的运动控制策略采用 Isaac Lab + RSL-RL PPO 进行训练,分为两个阶段:
阶段 1:平地训练(~15 分钟,300 轮)— 学习基本站立和速度跟踪:
阶段 2:崎岖地形训练(~2 小时,1500 轮)— 学会上下坡、越障、复杂地形:
完整训练流程(平地 → 崎岖 → 导出 policy.jit):
训练完成后,导出的
policy.pt可直接部署:3. 评估
3.1 VLN-CE 评估
本仓库基于 VLN-CE 构建,而 VLN-CE 依赖较早版本的 Habitat-Lab 和 Habitat-Sim。
awarevln-eval(Python 3.10)请按照 VLN-CE 配置指南进行配置。
为解决 NumPy 兼容性问题,请应用以下热修复:
数据准备
请按照 VLN-CE 的说明,将 R2R / RxR 标注文件和 MP3D 场景数据下载至
evaluation/data/目录下。本项目使用 Val-Unseen 数据划分和单目 RGB 输入。反事实训练数据生成(NavWorld)
NavWorld 需要同状态多动作分支数据来训练反事实动力学模块。使用自动数据引擎生成:
VerifyNav 训练数据生成
运行评估
使用己训练生成的
outputs/。使用以下命令在 R2R-CE 上运行评估:
示例:
单 GPU:
多 GPU,例如使用 8 张 GPU:
evaluation/eval_awarevln/<CKPT_NAME>/目录下。各项指标会自动汇总;如需重新汇总,请运行:3.2 Isaac Sim 动态评估
加载模型并部署 VLM 服务
加载 B2 机械狗和强化学习动作模型
加载 RL 运动策略
model_2999.pt,输入自然语言指令--instruction即可开始自主导航:4. 可视化演示
4.1 VLN-CE 演示
4.2 Isaac Sim 演示
可随意更改自然语言指令,在复杂场景(医院、工厂、城市)中测试自主导航:
5. 项目结构
6. 核心技术特点
6.1 事件驱动的反事实世界模型(NavWorld)
问题:传统 VLN 方法直接从当前上下文解码动作,缺乏对不同动作后果的比较能力。”在当前状态下,前进、转弯和停止分别会带来什么后果?哪个后果更有利于推进任务?”
方案:NavWorld 构建一个从共享当前世界状态出发的反事实推演系统:
关键设计决策:
通用隐变量槽(而非预分割 Token):M 个通用槽自动学会编码环境的不同方面(空间布局、任务进度、可通过性、不确定性),无需手动定义语义类别。从转移和校准监督中功能分化自然涌现。
策略引导的候选构造(而非独立提议网络):复用基础 VLM 策略的 Top-K 输出 + 扰动,保留了预训练的语言和动作知识。性能提升归因于未来预测与比较,而非新训练的动作生成器。
H=1 一步反事实前瞻:单个中层动作的直接后果避免了多步误差累积,在扩展到更长前瞻之前建立了可验证的核心。
软分支效用(而非二值标签):连续的效用分数允许任务后果相似的多个动作获得相似的监督,避免了将合理的替代路径标记为负样本的问题。
6.2 证据驱动的”验证后提交”机制(VerifyNav)
问题:语言模型驱动的 VLN 智能体可能基于表面视觉线索声明任务完成。”看到门框”≠”已离开房间”。”接近路标”≠”已通过路标”。”发现目标”≠”已到达目标”。一旦未经验证的进度被写入导航历史,后续动作就建立在错误的任务状态上,导致静默的、可传播的长程漂移。
方案:VerifyNav 将语言自评估视为需要验证的假设而非事实。任务进度只有在真实证据确认状态转移后才被提交。
三分类验证(而非二分类):
“证据不足”与”证据矛盾”是不同的情况。将它们混为一谈会导致过早失败或虚假进度。
6.3 干预可辨识的因果归因(VerifyNav)
问题:相似的执行后图像可能来自感知失败、规划错误、执行不完整或终止误判等不同原因。标准分类器学习表面相关性,无法区分因果变量。
方案:通过干预对(intervention pairs)训练模型识别哪个因果变量在被改变时能够解释证据矛盾。基于 Pearl 的 do-calculus:
do(cause=perception)→ 改变相机角度/光照 → 证据矛盾是否消除?do(cause=execution)→ 补偿执行距离 → 证据矛盾是否消除?do(cause=planning)→ 切换到备选路径 → 证据矛盾是否消除?5 类因果归因:
perception|execution|planning|termination|environment6.4 结构化恢复算子(VerifyNav)
问题:自由文本恢复方案不可执行。恢复必须是可通过标准动作接口调用的具体操作。
方案:10 个结构化恢复算子,全部通过标准 VLN 动作接口可执行:
6.5 证伪驱动的持续演化(VerifyNav)
问题:”执行了修复”≠”失败被解决”。只有重新验证能确认修复是否真实有效。
方案:闭环恢复控制器(ClosedLoopRecoveryController)最多 3 轮恢复-重验证。矛盾的重验证构成证伪(falsification)——比简单的失败计数更强的负信号,用于驱动策略原型的持续演化。
6.6 双系统协同:NavWorld + VerifyNav 联合框架
两个系统互补:NavWorld 在动作执行前预测最佳动作,VerifyNav 在动作执行后验证结果。预测与验证之间的残差驱动后验校准(NavWorld)和错误归因(VerifyNav),形成完整的”预测→执行→验证→学习”闭环。
7. ResilienceRuntime — 韧性运行时引擎(v2)
ResilienceRuntime 是 VerifyNav-World 的在线运行时引擎,将 NavWorld 的反事实推演与 VerifyNav 的证据驱动验证整合为统一的
Execute → Verify → Recover → Learn闭环流水线。它既可作为完整系统独立运行,也可按服务渐进接入已有导航系统。v1 与 v2 版本对比
torchrun训练脚本 /python run.py评估api.execute(action)单步调用navigation_demo.py5 种实时故障注入api.get_stats()实时统计 + ExperienceDB 聚合查询ResilienceAPI门面,可嵌入 ROS 2 / 仿真器两个版本的关系:v2 不是 v1 的替代,而是 v1 的运行时承载层。v1 的 NavWorld 和 VerifyNav 神经网络模块通过适配器(
VerifyNavAdapter,CausalRecoveryAdapter)接入 v2 的Execute → Verify → Recover流水线,形成完整的”训练→部署”闭环。7.1 三种运行模式
所有模式均可独立运行并报告对应指标。
7.2 架构总览
7.3 模块组成
7.4 快速开始
7.5 Execute → Verify → Recover → Learn 流水线
每个动作经过四个阶段的韧性处理:
状态机:
READY → ACTION_IN_PROGRESS → AWAITING_VERIFICATION → (RECOVERY_IN_PROGRESS) → TASK_COMPLETE / TASK_FAILED / FATAL7.6 验证模块
规则引擎模式(ActionVerifier)
零依赖,即开即用。与 VerifyNav Module B 完全对齐的六维残差验证:
三分类输出:
神经网络模式(VerifyNavAdapter)
加载训练好的 VerifyNav 权重(Module A+B),通过 VLM 特征进行端到端验证:
7.7 恢复模块
RecoveryManager — 10 个结构化恢复算子
与 VerifyNav Module C 的
RECOVERY_OPERATORS完全对齐,全部通过标准动作接口可执行:失败原因 → 恢复策略映射(优先级从高到低):
CausalRecoveryAdapter
加载 VerifyNav Module C+D 权重,实现端到端的神经网络因果归因与恢复:
7.8 因果记忆(ExperienceDB)
SQLite 驱动的轻量级经验数据库,支持 WAL 模式并发写入。记录每一次恢复的结果,并为 RecoveryManager 提供策略优先级调整:
策略自适应:RecoveryManager 查询过去 (cause, strategy) 的成功率,自动提升高成功率策略的优先级、抑制低成功率策略。
7.9 异常分级与自适应响应
7.10 完整演示
examples/navigation_demo.py包含 5 种故障注入的端到端演示:演示内容:
7.11 渐进接入路径
8. 评测指标
8.1 R2R-CE Val-Unseen
我们的方法在 R2R-CE Val-Unseen 上所有指标均达到最优,全面超越现有方法:
关键结论:
8.2 RxR-CE Val-Unseen
在更具挑战性的 RxR-CE(多语言指令)上,我们的方法同样全面领先:
关键结论:
8.3 跨基准分析
RxR 上提升幅度更大,说明 VerifyNav 的证据驱动验证机制在复杂多语言指令中发挥了更大作用——指令越复杂,假进度越容易出现,验证机制的价值越大。
8.4 NavWorld 特定指标
关键结论:
8.5 VerifyNav 特定指标
关键结论:
8.6 Isaac Sim 动态场景评估
在 Isaac Sim 医院/工厂/城市场景中,使用 B2 机械狗 + NaVILA VLM + RL 运动策略的联合评估:
关键结论:
9. 测试
单元测试(离线可跑,53 passed, 1 skipped)
ResilienceRuntime 测试(10 个测试文件)
集成评测(需 Habitat 环境 + GPU)
10. 文档索引
11. 引用与参考
本项目构建于以下开源工作之上: