如何利用 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 策略架构。
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/COMPASS 和 nvidia/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/COMPASS 和 nvidia/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 会进行只读健康检查,报告可能的原因,不会擅自修改环境。
第 2 步:选择并准备导航场景
本节介绍如何从三种场景来源中选择并准备一种:COMPASS 内置仓库、生成的 SAGE-10K 场景,或使用 Omniverse NuRec 渲染的采集环境。你将了解每种方案的适用场景,以及开始训练前必须完成的注册、占用地图和审批检查。
方案 1:使用内置仓库
如需快速建立可复现的基线,可先使用已注册的 combined_multi_rack 仓库。机器人、场景和占用地图都已完成注册,因此在引入新场景前,这是验证安装是否正确的最佳方案。
将以下提示词复制到 coding agent 中,运行基线并在冒烟测试后暂停:
$compass 在内置的 combined_multi_rack 仓库中训练并评估 Spot。单环境冒烟测试结束后暂停,等待批准。
combined_multi_rack 仓库场景中导航路径 2:使用 SAGE-10K 场景
SAGE-10K 数据集包含 50 种房间类型、共 10,000 个生成的室内场景。它是场景数据集,而不是策略或模拟器。每个场景都提供几何结构、材质、布局元数据和预览图。客厅和仓库场景采用相同的准备流程,因此请选择一个合适的候选场景,无需下载整个数据集。
SAGE-10K 流程包含两个人工审批环节。首先,在 NVIDIA Isaac Sim 中检查转换后的 USD,确认几何结构、材质、比例和碰撞网格无误后再进行注册。完成注册并生成占用地图后,先审批单环境预览,再开始完整训练。占用地图用于标识可通行区域和障碍区域,从而确定有效的机器人起点与导航目标。
将以下提示词复制到 coding agent 中,让它筛选场景,并在两个审批环节暂停:
$compass 为 Spot 筛选合适的 SAGE-10K 客厅或仓库场景,并展示最佳候选。 我批准场景后,将其转换并注册,生成并验证占用栅格地图,然后暂停以便检查。 我批准场景和地图后,先运行单环境冒烟测试,再次暂停,之后才开始完整训练。
路径 3:使用 NuRec 引入实景采集环境
如果目标是在实际部署环境的重建场景中微调和评估 COMPASS,可以使用 Omniverse NuRec。NuRec 会将立体 RGB 采集数据转换为可在 Isaac Sim 中使用的重建环境,其中包含对齐的视觉几何体、碰撞网格,以及可选的场景增强内容。文档中的 COMPASS 流程会注册渲染场景,验证随附的占用栅格地图和原点约定,检查机器人通行空间,并在训练前运行单环境冒烟测试。
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 集成的输入。针对目标部署环境,请验证坐标系、更新频率、归一化方式、指令限制、停止行为以及实体机器人控制器。
按需添加 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。保存配置、检查点、日志、条件一致的评估结果,以及下一步工程决策所需的视频。
如需复现和扩展这套流程,可参考以下资源:
- SAGE-10K 数据集:用于生成室内场景
- Omniverse NuRec 开发者页面、COMPASS NuRec 工作流和 Isaac Lab NuRec 指南:用于重建采集的场景并训练导航策略
- NVIDIA Isaac Sim和 NVIDIA Isaac Lab文档:了解仿真与机器人学习技术栈