NaVILA 是首个在真实四足机器人(Unitree Go2)上完成 VLN 的系统。它把问题分为两层:上层 VLM 理解图像和语言指令,输出中间语义动作(如"前进 75cm");下层 RL locomotion policy 将语义动作转化为 12 个关节的物理控制。这种解耦设计让 VLM 的语义推理能力和 RL 的物理控制能力各自发挥所长。
| 属性 | 规格 |
|---|---|
| 上层模型 | VILA VLM(vision encoder + MLP projector + LLM) |
| 下层模型 | RL locomotion policy(actor-critic in IsaacLab) |
| 动作接口 | 中间语言动作(如 "move forward 75cm", "turn right 30°") |
| 机器人 | Unitree Go2(12-DoF 四足,4 腿 × 3 关节) |
| 传感器 | RGB(VLA 层)+ LiDAR height map + 本体感知(locomotion 层) |
| 新基准 | VLN-CE-Isaac(基于 IsaacLab 的高保真仿真环境) |
Vision-and-Language Navigation(VLN):给智能体一段自然语言指令(如"走出客厅,左转进厨房,停在冰箱旁边"),让它在未知的 3D 环境中导航到目标位置。智能体每一步需要:①观察当前环境的图像 ②理解指令语义 ③决定下一步走哪里。
传统 VLN 研究在仿真环境(如 Matterport3D)中进行,智能体是"抽象点"——在预定义的 viewpoint 之间跳转。但真实机器人不是"跳"的,它需要物理地行走,处理碰撞、地形、关节控制等物理问题。
Unitree Go2 有 12 个关节(4 条腿 × 3 个关节:髋侧摆/髋前后/膝)。要让机器人"往前走 1 米",需要协调 12 个关节的连续运动——这远比 VLN 中"选择下一个 viewpoint"复杂。
核心矛盾
VLM 擅长理解"走出客厅左转进厨房"这种语义级指令,但不擅长输出 12 个关节的物理控制信号。RL locomotion policy 擅长物理控制,但不懂语言。NaVILA 的核心创新:用中间语言动作作为两者的接口。
解耦后:VLA 只需处理高层语义→中间指令(VLN 社区已有很多数据),locomotion policy 只需处理中间指令→关节控制(RL 社区已有很多技术积累)。
NaVILA 的上层使用 VILA 模型(不是 VLA,是 VILA,一个类似 LLaVA 的视觉语言模型),包含:
| 组件 | 说明 |
|---|---|
| Vision Encoder | 处理输入图像序列(当前帧 + 历史帧采样)→ 视觉 token |
| MLP Projector | 将视觉特征投影到语言模型的嵌入空间 |
| LLM | 处理视觉 token + 语言指令 token → 生成中间动作文本 |
| 阶段 | 训练什么 | 数据 | 目标 |
|---|---|---|---|
| Stage 1:对齐 | 只训练 projector(MLP),冻结 vision encoder 和 LLM | 图文对齐数据 | 让 projector 学会把视觉特征"翻译"成 LLM 能理解的格式 |
| Stage 2:交错预训练 | 训练 projector + LLM,冻结 vision encoder | 图文交错语料(如 MMC4) | 让 LLM 学会在文本中"嵌入"图像理解 |
| Stage 3:指令微调 | 全模块训练(vision encoder + projector + LLM) | R2R 导航数据 + EnvDrop 增强 | 学会在导航场景中输出正确的中间动作 |
Stage 3 不只训练"看图选动作",还增加了一个辅助任务:给定一段导航轨迹的视频帧序列,要求 VLM 用自然语言总结已走过的路径。
# 输入:均匀采样的轨迹帧 [frame_0, frame_15, frame_30, ...]
# 标注:路径的文字描述 "从走廊出发,经过一扇门,进入客厅,右转..."
# 为什么有用?
# 1. 迫使 VLM 理解空间方位(不是只看当前帧)
# 2. 让 VLM 记住历史(导航需要知道"我从哪来")
# 3. 增强时序推理("前两步往左走了,现在应该右转")
VLA 输出的中间动作是自然语言文本,包含方向和距离信息:
"move forward 75cm" # 前进 75 厘米
"turn right 30 degrees" # 右转 30 度
"turn left 45 degrees" # 左转 45 度
"stop" # 到达目标,停止
这些文本被解析为速度指令(线速度 + 角速度),传给 locomotion policy。
| 属性 | 规格 |
|---|---|
| 类型 | 四足机器人(quadruped) |
| 自由度 | 12-DoF(4 腿 × 3 关节:髋侧摆/髋前后/膝) |
| 传感器 | RGB 摄像头 + LiDAR(360° 激光雷达) |
| 本体感知 | 关节角度、角速度、身体姿态(IMU) |
Locomotion policy 用 PPO(Proximal Policy Optimization)在 IsaacLab 中训练。关键设计:
| 角色 | 观测输入 | 作用 |
|---|---|---|
| Critic(训练时) | 本体感知 + 速度指令 + privileged height scan(上帝视角的地形高度图) | 评估当前状态的价值 |
| Actor(推理时) | 本体感知 + 速度指令 + LiDAR height map(真实传感器数据) | 输出关节目标位置 |
为什么 Critic 和 Actor 看到的东西不一样?
这是 asymmetric actor-critic 设计。训练时 Critic 用"上帝视角"的精确地形数据(privileged information)来更好地评估价值,加速训练收敛。推理时 Actor 只用真实机器人能获取的传感器数据。Critic 在推理时被丢弃——它只是训练辅助。
一个重要的工程发现:室内环境中大量使用玻璃隔断。RGB-D 深度摄像头无法看到玻璃(红外光穿透),但 LiDAR 可以检测到。因此 NaVILA 使用 LiDAR 生成的俯视高度图(top-down height map)作为地形感知输入,而非前向深度图。
Locomotion policy 在 IsaacLab 中训练时,通过 domain randomization 增强泛化性:
# 随机化的参数:
- 地面摩擦系数 (0.5 ~ 1.5)
- 机器人质量分布 (±10%)
- 关节阻尼 (±20%)
- 地形 roughness
- 外部扰动力 (随机推力)
这使得训练出的 policy 对真实世界的物理不确定性有鲁棒性,不需要在真机上微调。
传统 VLN 研究使用 Habitat 仿真器,存在明显局限:
| 维度 | VLN-CE (Habitat) | VLN-CE-Isaac |
|---|---|---|
| 渲染引擎 | Magnum(光栅化,低多边形) | PhysX 5(光线追踪) |
| 物理仿真 | 基础碰撞检测 | 完整刚体动力学 |
| 动作空间 | 6-DoF 速度指令 | 低层关节控制 |
| 机器人 | 抽象点(无物理形态) | 物理四足机器人 |
| 场景真实度 | 低(游戏引擎级别) | 高(照片级渲染) |
NaVILA 在 Unitree Go2 上完成的实验包括:
这是第一个端到端 VLN 系统(从自然语言到关节控制)在真四足机器人上的验证。
✓ 优势
• 真机验证——不是仿真,是实物 Go2 上跑的
• 解耦设计——两层可以独立升级和调试
• 中间语言接口——天然可解释,便于人机交互
• Sim-to-Real 成熟——locomotion 的 RL+domain randomization 方案已被广泛验证
✗ 代价
• 两层串联延迟——VLM 推理 + RL 执行,实时性受限
• 训练成本高——需要训练两个独立系统 + IsaacLab 仿真器
• 中间动作粒度有限——"前进 75cm" 比 6-DoF 速度指令粗
• VLM 推理成本——7B+ 模型在嵌入式设备上难以实时运行