导航能力让机器人将感知与运动转化为有目的的自主行为。与仅产生稳定移动的运动控制不同,导航需要持续定位机器人位置、解读动态环境、规划路径并规避障碍,最终安全抵达目标。

将这一能力迁移到新机器人或新场景,往往需要重新采集数据、构建仿真资产、配置机器人接口、执行训练、诊断问题并完成评估。针对每一个机器人与场景的组合重复上述工作,成本高昂且难以复现。

智能体驱动的工作流可以有效降低这一负担。开发者只需定义机器人、场景来源和导航目标,编码智能体便会调用仓库技能来验证依赖项、准备资产、执行冒烟测试、启动训练、诊断故障并比较检查点。场景验收、单环境冒烟测试和检查点晋升均设有人工审批关卡。

本文以Spot为参考机器人,将智能体驱动的COMPASS工作流应用于内置场景和SAGE-10K场景,同时展示NVIDIA Omniverse NuRec如何支持真实环境重建。文章将完整呈现从冒烟测试、残差训练、检查点评估到运行时集成(含可选里程计)的策略开发全流程。

COMPASS简介

COMPASS(基于残差强化学习与技能合成的跨机器人移动策略)是一个统一框架,能够利用单一机器人的专家演示实现可扩展的跨机器人移动能力。它复用了预训练NVIDIA X-Mobility策略中的导航行为,并训练一个残差专家——即一个强化学习(RL)策略,用于针对特定机器人和环境对基础动作进行修正,而非从头学习导航。多个专家的数据可进一步蒸馏为共享的跨机器人策略。

图1展示了该智能体驱动工作流所训练和评估的COMPASS策略架构。

COMPASS将上述开发工作流封装为仓库技能。本教程在开发阶段使用Codex,训练完成的策略和机器人控制器在运行时执行导航,无需编码智能体参与。

参考工作流与硬件要求

参考工作流使用波士顿动力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兼容性检查工具。

Docker Engine 24或更高版本,并安装NVIDIA Container Toolkit。

Hugging Face账号及读取Token,需具备对gated仓库nvidia/COMPASS和nvidia/X-Mobility的访问权限。

经测试的教程软件栈:NVIDIA Isaac Lab 3.0与NVIDIA Isaac Sim 6.0。

准备仓库与配置编码智能体

首先准备仓库,并在开始场景工作前为编码智能体提供清晰的工作流契约。需完成以下步骤:下载gated资产、使COMPASS技能对Codex可见、运行环境检查,并在单环境审批关卡处暂停。所有$compass代码块均为可复制的Codex聊天提示词(在COMPASS仓库根目录使用),而非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

```

编码智能体可以克隆仓库、构建镜像、下载非敏感资产并验证软件栈。开发者必须在聊天界面之外自行接受gated仓库条款并输入Hugging Face Token,智能体不得请求、显示或在日志中存储该Token。

克隆仓库并下载资产

克隆COMPASS仓库,按照COMPASS手册快速入门指南使用仓库固定版本的容器。首次运行前,请接受gated仓库nvidia/COMPASS和nvidia/X-Mobility的访问条款,创建Hugging Face读取Token,并确认其能够读取账号下可访问的公开gated仓库。Token仅在当前Shell中暴露,不得粘贴至智能体提示词或提交至源代码管理。

```

export HF_TOKEN=hf_xxx

./docker/run.sh assets

./docker/run.sh build

source ./docker/activate

```

资产步骤会将已注册的仿真资产下载至./assets/usd/,并将预训练的X-Mobility检查点下载至./assets/x_mobility.ckpt。若出现401或403响应,通常表示仓库访问权限不完整或Token权限范围不足,请在调试Isaac Lab之前先解决认证问题。

每个阶段均会在进入下一阶段前生成可审查的证据:

验证:软件与资产清单、环境报告、冒烟测试日志

场景准备:已注册的场景配置、占用地图、视觉检查证据

训练:固定的命令与配置、日志、遥测数据、周期性检查点

评估:匹配的评估协议、标准COMPASS指标、视频、晋升建议

打包:已审批的检查点、配置、评估记录、制品清单

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

启动验证工作流

容器激活后,在仓库根目录打开编码智能体,描述机器人、场景、导航目标和审批关卡。对于基线工作流,将以下提示词复制到智能体聊天中:

```

$compass Validate the COMPASS environment for Spot. Confirm the pinned

repository revision, container, GPU, Isaac Lab and Isaac Sim versions,

simulation assets, and pretrained X-Mobility checkpoint. Run a one-environment

smoke test, save the validation report, and stop for approval.

```

$compass技能会根据仓库检查所请求的工作流,并执行相关验证步骤。若运行失败,$compass-doctor将执行只读健康检查并报告可能原因,不会静默修改环境。

场景来源选择与准备

本节介绍如何选择和准备三种场景来源之一:COMPASS内置仓库、生成的SAGE-10K场景,或通过Omniverse NuRec渲染的真实采集环境。

内置仓库场景

从已注册的combined_multi_rack仓库场景开始,可获得最快的可复现基线。机器人、场景和占用地图均已注册,是在引入新场景前验证安装环境的最佳路径。

将以下提示词复制到编码智能体中,运行基线并在冒烟测试后暂停:

```

$compass Train and evaluate Spot in the built-in combined_multi_rack warehouse.

Stop after the one-environment smoke test for approval.

```

SAGE-10K生成场景

SAGE-10K数据集包含10,000个生成的室内场景,涵盖50种房间类型。它是一个场景数据集,而非策略或仿真器。每个场景提供几何体、材质、布局元数据和预览图。客厅和仓库场景遵循相同的准备流程,因此只需选择一个合适的候选场景,无需下载整个数据集。

SAGE-10K路径包含两个人工审批关卡。首先,在NVIDIA Isaac Sim中检查转换后的USD文件,确认几何体、材质、比例和碰撞网格无误后再进行注册。注册和占用地图生成完成后,在正式训练前审批单环境预览。占用地图用于标识自由空间和障碍空间,以确定机器人的有效起始位置和导航目标。

将以下提示词复制到编码智能体中,筛选场景并在两个关卡处暂停:

```

$compass Find suitable SAGE-10K living-room or warehouse scenes for Spot and show the best candidates.

After I approve a scene, convert and register it, generate and verify its occupancy map, and stop for inspection.

After I approve the scene and map, run a one-environment smoke test and stop again before full training.

```

Omniverse NuRec真实环境重建

当目标是在预期部署环境的重建场景中微调和评估COMPASS时,可使用Omniverse NuRec。NuRec将双目RGB采集数据转换为Isaac Sim就绪的重建场景,包含对齐的视觉几何体、碰撞网格和可选的场景增强。COMPASS文档中的NuRec路径会注册渲染后的场景、验证其占用地图和原点约定、检查机器人间隙,并在训练前运行单环境冒烟测试。

NuRec在本文中为可选路径,实际训练流程将继续使用SAGE-10K场景,以便从准备到评估完整跟踪一个场景。如需使用真实采集环境,请参阅COMPASS NuRec工作流和NVIDIA Isaac Sim NuRec指南(含客厅示例),了解场景准备、训练、评估、导出和ROS 2部署的完整流程。

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

```

$compass Prepare the registered NuRec Real2Sim scene <scene_name> for <supported_robot>.

Verify the supplied occupancy map and origin convention, inspect collisions and robot clearance,

run a one-environment smoke test, and stop for approval before training.

```

单环境预览与审批

选定场景后,在扩大训练规模前先运行单环境预览。对于SAGE-10K场景,需先完成前述视觉检查和场景注册审批关卡。确认Isaac Sim正常启动、场景加载成功、Spot在有效位置生成、相机观测数据可用,且机器人能够响应策略指令而不出现穿模、跌倒或未解决的仿真错误。

指示编码智能体汇总预览日志和视觉证据,识别任何阻塞问题,并暂停等待人工审批。仅在场景、机器人、观测数据和动作接口协同工作符合预期后,才可推进至残差训练阶段。

残差训练

本节介绍COMPASS如何将预训练的X-Mobility策略适配到所选机器人和场景。

启动残差强化学习

单环境冒烟测试审批通过后,编码智能体可启动标准残差RL工作流。以下命令使用Spot和内置仓库场景,使用生成场景路径时请将环境键替换为已注册的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内存。

保存周期性检查点并在匹配条件下进行评估,而非假设最终迭代为最优。COMPASS还支持分布式多GPU训练以应对更大规模的训练任务。训练时间因硬件、场景复杂度、环境数量和停止条件而异。

故障诊断

在修改环境或训练配置之前,先使用COMPASS诊断工作流排查故障。将认证错误路由至Hugging Face访问检查,将场景加载或碰撞错误路由至场景准备阶段,将相机或动作接口错误路由至冒烟测试阶段,将内存错误路由至环境数量或多GPU配置。

保留训练配置、命令、仓库版本、场景注册信息、占用地图、冒烟测试证据、日志、检查点和制品清单。在修改依赖项、场景资产、奖励函数或训练设置之前,需获得开发者审批。

检查点评估与晋升

本节介绍如何判断残差检查点是否已准备好晋升。

评估标准

同时审查任务性能和安全性。标准COMPASS评估报告目标到达率、跌倒率和行驶时间。其他证据(如目标进度、接触行为、超时或指令稳定性)应标注为派生分析或自定义仪表数据。仅在匹配证据满足项目导航和安全关卡要求,且人工审批打包后,才可晋升检查点。

以下提示词为示例,请根据实际工作流的机器人、场景、检查点和证据进行调整:

```

$compass Compare the pretrained X-Mobility base policy with the available Spot

residual checkpoints in the selected scene under matched seeds, goals, initial states,

rollout length, and active terminations. Report the standard COMPASS evaluation metrics,

save matched videos and the exact evaluation command, clearly label any derived evidence,

and stop for human approval before promoting or packaging a checkpoint.

```

运行时集成

本节介绍训练完成后策略如何连接到机器人运行时。编码智能体负责协调开发和验证工作,不在运行时控制机器人。

策略输入输出

COMPASS资产步骤会下载用于冒烟测试和残差训练的预训练X-Mobility检查点。训练会为所选机器人和场景创建残差检查点。导出和部署将训练好的策略打包用于推理,不会将基础策略和残差策略作为两个独立的ROS 2组件暴露给开发者手动连接。

在参考ROS 2集成中,compass_inference将前置摄像头图像、导航目标或路线,以及从里程计派生的机器人速度转换为导出策略的输入,并在/cmd_vel上发布前向线速度和角速度指令。循环状态和上一步动作是推理实现的内部状态,不是外部ROS集成输入。在目标部署环境中,需验证坐标系、更新频率、归一化、指令限制、停止行为和物理机器人控制器。

可选:cuVSLAM里程计

当部署的机器人需要在无GPS或GPS信号不稳定的环境中进行基于相机的状态估计,且自身不提供兼容的、经过验证的里程计和坐标变换时,可使用cuVSLAM库。其里程计可支持COMPASS导航器,但其地图不作为导航策略的输入。

cuVSLAM不是COMPASS策略训练的一部分,也不需要智能体技能。将其作为独立的、版本匹配的ROS 2组件运行,将其里程计输出连接或重映射至/chassis/odom,提供所需的odom到base_link坐标变换,并验证标定参数、时间戳、话题名称和坐标系约定。可选的$cuvslam-onboard和$cuvslam-troubleshoot技能可在开发阶段帮助配置和诊断该状态估计组件。

示例提示词:

```

$cuvslam-onboard Configure cuVSLAM as the odometry source for the COMPASS

navigator on <robot and camera rig>. Select a compatible release and tracking mode,

validate calibration and timestamps, connect odometry and TF to the expected COMPASS

interfaces, and stop for approval before enabling navigation.

```

新机器人接入

对于未注册的机器人,$compass-newembodiment可引导开发者完成机器人配置、环境注册、动作映射和单环境视觉冒烟测试。接入新机器人是独立于为现有机器人训练专家策略的工程任务,但使用相同的验证和审批模式。

本教程止步于检查点评估。导出为ONNX、JIT或TensorRT格式、ROS 2集成以及物理硬件部署,需针对目标机器人和运行时进行单独验证。场景质量、训练时长和检查点性能因机器人、环境、奖励设计和可用算力而异,因此工作流不定义通用的成功阈值。

推荐工作流步骤

从参考路径开始,逐步扩展单个组件:

配置参考环境:克隆COMPASS仓库,按照COMPASS手册快速入门,接受gated模型条款,下载COMPASS仿真资产和X-Mobility检查点。

运行智能体工作流:在Codex中使用支持的机器人和内置场景调用$compass,在冒烟测试后保留审批,并在匹配条件下训练和评估专家策略。

有序扩展与打包:对未注册的机器人使用$compass-newembodiment。保存配置、检查点、日志、匹配的评估结果和视频,为下一步工程决策提供依据。

如需复现和扩展该工作流,可参考以下资源:

SAGE-10K数据集(生成室内场景)

Omniverse NuRec开发者页面、COMPASS NuRec工作流和Isaac Lab NuRec指南(真实场景重建与导航策略训练)

NVIDIA Isaac Sim和NVIDIA Isaac Lab文档(仿真与机器人学习软件栈)

Isaac ROS Visual SLAM文档(可选的基于cuVSLAM的部署里程计)

Q&A

Q1:COMPASS框架是什么?它解决了什么问题?

A:COMPASS是一个跨机器人移动策略框架,全称为"基于残差强化学习与技能合成的跨机器人移动策略"。它的核心价值在于解决导航能力迁移成本高的问题——传统方式每换一个机器人或场景就需要重新采集数据、训练模型,而COMPASS通过复用预训练的X-Mobility策略,只训练一个残差修正策略,大幅降低了开发成本。多个专家策略的数据还可以蒸馏为共享的跨机器人策略。

Q2:SAGE-10K场景和内置仓库场景有什么区别,该如何选择?

A:内置仓库场景(combined_multi_rack)是最快的可复现基线,机器人、场景和占用地图均已预先注册,适合首次验证安装环境时使用。SAGE-10K则是包含10,000个生成室内场景的数据集,涵盖50种房间类型,适合需要在多样化环境中测试策略的场景。SAGE-10K路径需要额外的两个人工审批关卡,包括在Isaac Sim中检查转换后的USD文件和审批占用地图,流程相对复杂,建议在内置场景验证通过后再使用。

Q3:cuVSLAM在COMPASS部署中起什么作用?什么情况下需要用到它?

A:cuVSLAM是NVIDIA提供的CUDA加速视觉里程计与即时定位与地图构建库,在COMPASS部署中作为可选的里程计来源。当机器人部署在无GPS或GPS信号不稳定的环境中,且机器人自身不提供兼容的里程计和坐标变换数据时,才需要使用cuVSLAM。需要注意的是,cuVSLAM不参与COMPASS策略训练,其地图也不作为导航策略的输入,它仅作为独立的ROS 2组件提供里程计支持,需要单独配置和验证。

NVIDIA