← 文章 / AI技术
NVIDIA 开发者博客 4小时前 · 2026-08-31 18:42:49 · 2 阅读

如何利用 AI Agent 训练跨形态机器人导航策略

导航让机器人能够将感知与运动结合起来,实现有目标的自主行动。与只能产生稳定运动的 locomotion 不同,导航需要机器人持续定位自身、理解不断变化的周围环境、选择路径,并避开障碍物,安全抵达目标。

将这项能力迁移到新的机器人或场景,往往需要重新准备数据、仿真资产和机器人接口,并进行训练、故障诊断与评估。对每一组机器人和场景重复这些工作,成本高昂,也难以复现。

由 agent 驱动的工作流可以减轻这一负担。开发者只需定义机器人、场景来源和导航目标,coding agent 便可利用代码仓库中的相关技能,验证依赖、准备资产、运行 smoke test、启动训练、诊断故障并比较 checkpoints。人工审批则作为关键关卡,用于确认场景、批准单环境 smoke test,以及决定是否晋级 checkpoint。

本文以 Spot 为参考机器人,使用由 agent 驱动的 COMPASS 工作流,在内置场景和 SAGE-10K 场景中完成实践,同时介绍 NVIDIA Omniverse NuRec 如何支持采集环境。全文将依次讲解策略工作流中的 smoke test、残差训练、checkpoint 评估和运行时集成,并涵盖可选的里程计功能。

什么是 COMPASS?

COMPASS(Cross-Embodiment Mobility Policy via Residual RL and Skill Synthesis,基于残差 RL 与技能合成的跨形态移动策略)是一个统一框架,能够利用单一机器人形态的专家示范,实现可扩展的跨形态移动。它复用了预训练 NVIDIA X-Mobility 策略中的导航行为,并训练一个残差专用策略——也就是针对指定机器人和环境,对基础动作进行修正的 强化学习(RL)策略,而不是从头重新学习导航。之后,还可以将多个专用策略中的数据蒸馏为一个共享的跨形态策略。

图 1 展示了本文 agent 驱动工作流所训练和评估的 COMPASS 策略架构。

Three-stage COMPASS pipeline showing demonstration learning, residual RL specialists, and cross-embodiment policy distillation.
图 1. COMPASS 将 X-Mobility 基础策略适配为不同机器人形态的专用策略,并将其蒸馏为跨形态策略

COMPASS 将这套开发流程封装为仓库技能。本教程在开发过程中使用 Codex。训练完成的策略和机器人控制器会在运行时执行导航,无需编码代理参与。

参考工作流概览

参考工作流使用 Boston Dynamics Spot 四足机器人。内置仓库场景是主要的可复现路径,SAGE-10K 可将其扩展到生成式场景;NVIDIA Omniverse NuRec 则提供了一条可选路径,用于在重建的目标环境中运行。NVIDIA cuVSLAM 是一个基于 CUDA 加速的视觉里程计与同步定位和建图库。当机器人无法提供兼容的里程计和坐标变换时,可使用它在部署阶段提供里程计数据。

如果要使用其他环境,请采用仓库锁定的 COMPASS 软件栈,并参考以下硬件要求:

  • Ubuntu 22.04 或 24.04 系统,至少 32 GB 内存;配备支持 RTX 的 NVIDIA GPU,显存至少 16 GB;安装 Linux 驱动 580.95.05。这是针对 Isaac Sim 6.0 测试的驱动版本。Isaac Sim 6.0 的最低参考 GPU 为 GeForce RTX 4080。安装前请运行 Isaac Sim Compatibility Checker
  • Docker Engine 24 或更高版本,并安装 NVIDIA Container Toolkit。
  • 一个 Hugging Face 账号,以及拥有以下受限仓库访问权限的 read token:nvidia/COMPASSnvidia/X-Mobility
  • 本文测试使用的技术栈:NVIDIA Isaac Lab 3.0 和 NVIDIA Isaac Sim 6.0。

步骤 1:搭建 COMPASS Agent 工作流

首先,准备好代码仓库,并在开始搭建场景前,为编码 Agent 明确工作流规范。你需要下载受限资源,让 Codex 能发现 COMPASS 技能,运行技术栈检查,并在单环境验收节点暂停。所有 $compass 代码块都是可复制到 COMPASS 仓库根目录 Codex 聊天窗口中的提示词,而不是 Shell 命令。在 Claude Code 中,则使用 /compass 执行相同的工作流。

对于 Codex,先将仓库技能暴露到 .agents/skills 目录下,再通过 /skills 选择 COMPASS,或在提示词中提及 $compass。Codex 支持使用符号链接的技能目录,因此当前仓库中的技能仍可保留在其维护目录中。对于 Claude Code,使用 /compass 调用相同的工作流。

mkdir -p .agents/skills
ln -s ../../.claude/skills/compass .agents/skills/compass
ln -s ../../.claude/skills/compass-doctor .agents/skills/compass-doctor
ln -s ../../.claude/skills/compass-newembodiment .agents/skills/compass-newembodiment

编码 Agent 可以完成代码仓库克隆、构建、非机密资源下载和技术栈验证。开发者必须在受限仓库页面接受相关条款,并在聊天窗口之外输入 Hugging Face token。Agent 不应索取、显示或将 token 写入日志。

安装 COMPASS 并下载资源

克隆 COMPASS 仓库,并按照 COMPASS Handbook 快速入门,使用仓库锁定版本的容器完成配置。首次运行前,请先申请访问受限的 Hugging Face 仓库 nvidia/COMPASSnvidia/X-Mobility,创建一个 Hugging Face 只读 Token,并确认该 Token 能读取账号可访问的公开受限仓库。Token 只应暴露在当前 Shell 会话中,不要粘贴到智能体提示词里,也不要提交到源代码管理系统。

export HF_TOKEN=hf_xxx
./docker/run.sh assets
./docker/run.sh build
source ./docker/activate

assets 步骤会将已注册的仿真资源下载到 ./assets/usd/,并将预训练的 X-Mobility checkpoint 下载到 ./assets/x_mobility.ckpt。如果收到 401 或 403 响应,通常说明仓库访问权限尚未完成,或 Token 权限范围不正确。请先解决身份验证问题,再排查 Isaac Lab。

每个阶段都必须先产出可审核的证据,才能进入下一阶段:

  • 验证:软件和资源清单、环境报告、冒烟测试日志
  • 准备场景:已注册的场景配置、占用地图、可视化检查证据
  • 训练:锁定版本的命令和配置、日志、遥测数据、定期 checkpoint
  • 评估:一致的评估协议、标准 COMPASS 指标、视频和晋级建议
  • 打包:获批的 checkpoint、配置、评估记录和产物清单

具体的审批标准因项目而异,但每个关卡都应回答同一组问题:所需输入是否齐全?预期输出是否生成?是否存在未解决的错误?现有证据是否足以继续?

调用 COMPASS skill

容器启动后,在仓库根目录打开 coding agent,并说明机器人、场景、导航结果和审批关卡。对于基线流程,可将以下提示词复制到 agent 聊天窗口中:

$compass 验证 Spot 的 COMPASS 环境。确认固定的仓库版本、容器、GPU、Isaac Lab 和 Isaac Sim 版本、仿真资源,以及预训练的 X-Mobility checkpoint。运行单环境冒烟测试,保存验证报告,然后暂停等待批准。

$compass skill 会根据仓库内容检查请求的工作流,并执行相关验证步骤。如果运行失败,$compass-doctor 会进行只读健康检查,报告可能的原因,不会擅自修改环境。

Screenshot GIF showing a coding agent invoking COMPASS skills to validate the environment, prepare the scene, run smoke tests, and stop at human approval gates.
图 2。coding agent 调用 COMPASS skills 验证环境、准备场景、运行冒烟测试,并在需要人工批准时暂停

第 2 步:选择并准备导航场景

本节介绍如何从三种场景来源中选择并准备一种:COMPASS 内置仓库、生成的 SAGE-10K 场景,或使用 Omniverse NuRec 渲染的采集环境。你将了解每种方案的适用场景,以及开始训练前必须完成的注册、占用地图和审批检查。

方案 1:使用内置仓库

如需快速建立可复现的基线,可先使用已注册的 combined_multi_rack 仓库。机器人、场景和占用地图都已完成注册,因此在引入新场景前,这是验证安装是否正确的最佳方案。

将以下提示词复制到 coding agent 中,运行基线并在冒烟测试后暂停:

$compass 在内置的 combined_multi_rack 仓库中训练并评估 Spot。单环境冒烟测试结束后暂停,等待批准。
A GIF showing Spot quadruped navigating between warehouse racks, pallets, boxes, and a mobile cart in the COMPASS simulation scene.
图 3. Spot 四足机器人在已注册的 COMPASS combined_multi_rack 仓库场景中导航

路径 2:使用 SAGE-10K 场景

SAGE-10K 数据集包含 50 种房间类型、共 10,000 个生成的室内场景。它是场景数据集,而不是策略或模拟器。每个场景都提供几何结构、材质、布局元数据和预览图。客厅和仓库场景采用相同的准备流程,因此请选择一个合适的候选场景,无需下载整个数据集。

A GIF showing a yellow Spot quadruped standing in a simulated indoor scene with a dining table, blue chairs, and wall-mounted fans.
图 4. 转换后的 SAGE-10K 室内场景中的 Spot 四足机器人,该场景已准备好用于 COMPASS 验证

SAGE-10K 流程包含两个人工审批环节。首先,在 NVIDIA Isaac Sim 中检查转换后的 USD,确认几何结构、材质、比例和碰撞网格无误后再进行注册。完成注册并生成占用地图后,先审批单环境预览,再开始完整训练。占用地图用于标识可通行区域和障碍区域,从而确定有效的机器人起点与导航目标。

将以下提示词复制到 coding agent 中,让它筛选场景,并在两个审批环节暂停:

$compass 为 Spot 筛选合适的 SAGE-10K 客厅或仓库场景,并展示最佳候选。
我批准场景后,将其转换并注册,生成并验证占用栅格地图,然后暂停以便检查。
我批准场景和地图后,先运行单环境冒烟测试,再次暂停,之后才开始完整训练。
Terminal output lists compatible SAGE-10K living room and warehouse scenes with layout IDs, styles, and object counts, then pauses for the developer to select a scene before conversion and registration.
图 5。Codex 筛选出兼容的 SAGE-10K 场景,并暂停等待开发者批准

路径 3:使用 NuRec 引入实景采集环境

如果目标是在实际部署环境的重建场景中微调和评估 COMPASS,可以使用 Omniverse NuRec。NuRec 会将立体 RGB 采集数据转换为可在 Isaac Sim 中使用的重建环境,其中包含对齐的视觉几何体、碰撞网格,以及可选的场景增强内容。文档中的 COMPASS 流程会注册渲染场景,验证随附的占用栅格地图和原点约定,检查机器人通行空间,并在训练前运行单环境冒烟测试。

Side-by-side GIFs showing robot navigation rollouts around a conference table.
图 6。NuRec Real2Sim 策略(右)能够绕过桌子驶向目标,相比之下,合成策略位于左侧

NuRec 是本文提供的一条可选路径。为让教程完整覆盖从准备到评估的流程,动手训练部分将继续使用 SAGE-10K,并贯穿同一个场景。对于捕获的环境,请参考 COMPASS NuRec 工作流NVIDIA Isaac Sim NuRec 指南,其中包括客厅示例,了解场景准备、训练、评估、导出以及 ROS 2 部署。

将以下提示词复制到 coding agent 中,准备已注册的 NuRec 场景,并在训练前暂停:

$compass 为 <supported_robot> 准备已注册的 NuRec Real2Sim 场景 <scene_name>。
验证提供的占用地图及原点约定,检查碰撞情况和机器人周围的净空,
运行单环境冒烟测试,并在训练前暂停,等待批准。

第 3 步:验证机器人与场景的集成

选定场景并在 COMPASS 中准备就绪后,先运行单环境预览,再扩大训练规模。对于 SAGE-10K 场景,务必先完成前面的目视检查和场景注册审批。确认 Isaac Sim 能够正常启动、场景成功加载、Spot 在有效位置生成、摄像头观测数据可用,并且机器人能够响应策略指令,不会发生穿模、跌倒或产生未解决的仿真错误。

让编码代理汇总预览日志和视觉证据,找出可能的阻塞问题,然后暂停等待人工批准。只有确认场景、机器人、观测数据和动作接口能够按预期协同工作后,才能继续进行残差训练。

第 4 步:训练残差专用策略

本节介绍 COMPASS 如何将预训练的 X-Mobility策略适配到选定的机器人和场景。你将启动残差强化学习、监控训练过程、保存候选检查点,并保留评估所需的证据。

启动残差训练

单环境冒烟测试获批后,编码代理即可启动标准残差 RL 工作流。下面的命令使用 Spot 和内置仓库场景。如果采用生成场景流程,请将环境键替换为已注册的 SAGE-10K 场景。

冒烟测试获批后,编码代理即可启动标准残差 RL 工作流。下面的示例运行内置仓库基线。如果继续采用生成场景流程,请将环境键替换为已注册的 SAGE-10K 场景。

python run.py \
  -c configs/train_config.gin \
  -o ./outputs/spot_combined_multi_rack \
  -b ./assets/x_mobility.ckpt \
  --enable_cameras \
  --embodiment spot \
  --environment combined_multi_rack

管理训练任务

残差训练通常会持续很长时间。编码代理应在持久会话或受管调度器中运行训练,将日志和检查点写入配置的输出目录,并定期报告进度,而不是一直占用交互式会话。

训练前,记录所用命令、仓库版本、场景键、配置、检查点保存间隔和停止条件。如果训练中断,应确认最新检查点已完整保存,并核实支持的恢复训练选项后再继续。

监控训练并保存检查点

根据可用 GPU 显存设置 --num_envs;冒烟测试阶段只使用一个环境。训练期间应监控各项奖励、目标进展、碰撞与摔倒情况、回合终止、吞吐量以及 GPU 显存占用。

定期保存 checkpoint,并在条件匹配的情况下进行评估,不要想当然地认为最后一次迭代效果最好。COMPASS 还支持分布式多 GPU 训练,以应对更大规模的任务。训练时长取决于硬件、场景复杂度、环境数量和停止条件。

诊断故障并保留证据

遇到故障时,先使用 COMPASS 诊断流程进行排查,再修改环境或训练配置。认证错误应转交 Hugging Face 访问检查;场景加载或碰撞错误应检查场景准备流程;相机或动作接口错误应回到冒烟测试阶段;内存错误则应检查环境数量或多 GPU 配置。

保留训练配置、命令、代码仓库版本、场景注册信息、占用地图、冒烟测试证据、日志、checkpoint 和产物清单。修改依赖、场景资源、奖励函数或训练设置前,必须获得开发人员批准。

第 5 步:在晋级 checkpoint 前进行评估

本节介绍如何判断残差 checkpoint 是否已经具备晋级条件。你将学习如何在匹配条件下对比预训练基础策略和候选残差策略,解读 COMPASS 的标准指标,标注派生证据,并在打包前保留人工审批环节。

同时关注任务表现与安全性。COMPASS 的标准评估会报告目标到达率、跌倒率和行进时间。目标进度、接触行为、超时情况或命令稳定性等额外证据,应标注为派生分析或自定义检测数据。只有在匹配条件下收集的证据满足项目的导航与安全门槛,并获得人工批准后,才能晋级 checkpoint 并进行打包。

下面是一条示例提示词。请根据工作流所需的机器人、场景、checkpoint 和证据进行调整:

$compass 对预训练的 X-Mobility 基础策略与所选场景中的可用 Spot 
残差 checkpoint 进行对比,确保使用匹配的随机种子、目标、初始状态、运行时长和启用的终止条件。
报告 COMPASS 标准评估指标,保存匹配条件下的视频和完整的评估命令,明确标注所有派生证据,
并在晋级或打包 checkpoint 前暂停,等待人工批准。

第 6 步:将策略接入机器人运行时

本节介绍训练完成后,如何将策略接入机器人运行时环境。你将了解参考策略的输入与输出、cuVSLAM 何时可以提供部署所需的里程计数据,以及未注册机器人何时需要使用新具身工作流。编码代理负责协调开发与验证,但不会在运行时控制机器人。

了解策略的输入与输出

COMPASS 的资源步骤会下载预训练的 X-Mobility checkpoint,用于冒烟测试和残差训练。训练过程会针对选定的机器人和场景生成残差 checkpoint。导出与部署会将训练好的策略打包用于推理;它们不会把基础策略和残差策略暴露为两个需要开发者手动连接的 ROS 2 组件。

参考 ROS 2 集成中,compass_inference 会将前置摄像头图像、导航目标或路线,以及根据里程计数据计算出的机器人速度,转换为导出策略所需的输入。它会通过 /cmd_vel 发布前向线速度和角速度指令。循环状态和上一动作都由推理实现内部维护,不属于外部 ROS 集成的输入。针对目标部署环境,请验证坐标系、更新频率、归一化方式、指令限制、停止行为以及实体机器人控制器。

部署流程:摄像头、里程计、目标点和可选路线输入策略,策略输出速度指令,用于仿真或机器人部署。
图 7. 推理时,COMPASS 策略以 RGB 输入、里程计和目标点为基础,并可选地结合地图和路线数据,为机器人控制器生成线速度和角速度指令

按需添加 cuVSLAM 里程计

如果部署的机器人处于 GPS 不可用或信号间歇性中断的环境中,需要基于摄像头进行状态估计,且自身尚未提供兼容并经过验证的里程计和坐标变换数据,则可以使用 cuVSLAM 库。cuVSLAM 提供的里程计可供 COMPASS 导航器使用,但其地图不会作为导航策略的输入。

cuVSLAM 不参与 COMPASS 策略训练,也不需要 agent skill。请将其作为独立的、版本匹配的 ROS 2 组件运行,把里程计输出连接或重映射到 /chassis/odom,提供所需的 odom-to-base_link 变换,并验证标定、时间戳、话题名称和坐标系约定。开发过程中,可选的 $cuvslam-onboard$cuvslam-troubleshoot skill 能帮助你配置和诊断这一状态估计组件。

示例提示词:

$cuvslam-onboard 将 cuVSLAM 配置为 <机器人和摄像头组合> 上 COMPASS 
导航器的里程计来源。选择兼容的版本和跟踪模式,验证标定与时间戳,将里程计和 TF 
连接到 COMPASS 所需的接口,并在启用导航前暂停,等待批准。

将工作流扩展到另一台机器人

对于尚未注册的机器人,$compass-newembodiment 会引导开发者完成机器人配置、环境注册、动作映射,以及在单个环境中进行视觉冒烟测试。为新的机器人本体完成接入,与针对已有机器人训练专用策略是两项不同的工程任务,但二者采用相同的验证和审批流程。

本教程到检查点评估为止。导出为 ONNX、JIT 或 TensorRT,集成 ROS 2,以及部署到实体硬件,都需要针对目标机器人和运行时环境进行单独验证。场景质量、训练时长和检查点表现会因机器人形态、环境、奖励设计及可用算力而异,因此这套流程并不设定统一的成功标准。

开始使用 COMPASS

先跑通参考流程,再逐步扩展各个组件:

  • 搭建参考环境。克隆 COMPASS 仓库,按照 COMPASS Handbook 快速入门操作,接受受限模型的使用条款,并下载 COMPASS 仿真资源X-Mobility 检查点
  • 运行智能体工作流。在 Codex 中对支持的机器人和内置场景调用 $compass,通过冒烟测试后保留审批结果,然后在一致条件下训练并评估专用策略。
  • 有计划地扩展和打包。对于未注册的机器人,使用 $compass-newembodiment。保存配置、检查点、日志、条件一致的评估结果,以及下一步工程决策所需的视频。

如需复现和扩展这套流程,可参考以下资源:

  • Isaac ROS Visual SLAM 文档,用于部署时采用可选的基于 cuVSLAM 的里程计
  • 原始来源: NVIDIA 开发者博客

    评论 (0)