Skip to main content
模块 3 · 第 11 章 · Get Your Own VLA Model

11. 真实环境评估

在真实世界部署微调后的 GR00T N1.7:策略服务端跑模型,机器人客户端驱动 SO-101 从臂闭环执行。

11.1 部署架构​

解耦设计

11.1 部署架构

Isaac GR00T 的部署架构把推理侧与控制侧解耦:

  • 推理侧(服务端):只负责执行模型推理;
  • 控制侧(客户端):负责采集机械臂状态并协调运动控制。

服务端和客户端可以跑在两台设备上(例如 GPU 工作站为一台装在 Jetson 上的 机器人提供策略——第 18 章),也可以像本章演示的那样在同一台电脑上运行。

显存

单机评估需要能装下 3B GR00T 模型的 NVIDIA GPU——与微调它(第 10 章)同级。

评估使用 NVIDIA workshop 的 SO-101 真机客户端,它处理完整闭环:观测输入, 返回 16 步动作块,客户端对重叠预测做时间对齐与融合,再以 30 Hz 向从臂连续 下发电机命令。

11.2 终端 1:启动推理服务端​

策略服务

11.2 终端 1:启动推理服务端

NVIDIA 的真机容器会挂载 GR00T 评估脚本和你的 checkpoint 目录。带上你的输出 目录启动:

cd ~/Sim-to-Real-SO-101-Workshop
docker run -it --rm --name real-robot --network host --privileged --gpus all \
-e DISPLAY \
-v /dev:/dev \
-v /run/udev:/run/udev:ro \
-v $HOME/.Xauthority:/root/.Xauthority \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.cache/huggingface/lerobot/calibration:/root/.cache/huggingface/lerobot/calibration \
-v $HOME/groot_so101_real:/workspace/models/so101 \
-v $(pwd)/docker/real/scripts:/Isaac-GR00T/gr00t/eval/real_robot/SO100 \
real-robot \
/bin/bash

在容器里启动服务端,指向你的 checkpoint:

python Isaac-GR00T/gr00t/eval/run_gr00t_server.py \
--model-path /workspace/models/so101/checkpoint-5000

服务端监听 5555 端口,并且在多次 rollout 之间保持运行——两次尝试之间只需要 停客户端。

11.3 终端 2:启动机器人客户端​

闭环

11.3 终端 2:启动机器人客户端

给容器再开一个终端:

docker exec -it real-robot /bin/bash

运行评估脚本。注意相机键名:推理时运行时键名是 wrist 和 front——与第 10 章 modality 文件产出的名字一致。物理相机不变:wrist 是夹爪相机, front 是俯视相机。

python Isaac-GR00T/gr00t/eval/real_robot/SO100/so101_eval.py \
--robot.type=so101_follower \
--robot.port=$ROBOT_PORT \
--robot.id=$ROBOT_ID \
--robot.cameras="{
wrist: {type: opencv, index_or_path: $CAMERA_GRIPPER, width: 640, height: 480, fps: 30},
front: {type: opencv, index_or_path: $CAMERA_EXTERNAL, width: 640, height: 480, fps: 30}
}" \
--policy_host=localhost \
--policy_port=5555 \
--lang_instruction="Put the three vials into the vial rack" \
--rerun True

预期行为:

  1. 从臂缓慢升到起始位姿;
  2. 进入推理模式开始任务;
  3. 终端 2 里 Ctrl+C 停止并回零;
  4. 终端 1 的服务端保持存活,可反复 rollout。
评估多个 checkpoint

换 checkpoint 编号重跑客户端(停两个终端、改 --model-path、重启),保留 任务成功率最高的那个——而不一定是最后一个。

11.4 安全​

按下回车之前

11.4 安全

策略的动作可能比人预期的快:

  • rollout 期间手、头发、袖口远离试管区;
  • 相机线与电源线避开从臂工作区;
  • 从臂电源开关伸手可及——切断电机电源就是急停;
  • 每次 rollout 之间把试管放回起始区,并确认机架没有挪动。

11.5 根据观察迭代​

失败 → 修复

11.5 根据观察迭代

第一次真机 rollout 很少次次成功。常见现象与修法:

现象可能原因修法
抓取偏差几厘米相机构图与训练时不一致复查第 8 章的相机位姿
抓住了又掉接触/摩擦差距补录成功抓取的真实 episode
方向对但慢慢漂移校准偏差重跑 lerobot-calibrate 和检查脚本
无视语言指令任务文本不一致--lang_instruction 用录制时的原句
服务端拒绝观测相机键名不匹配评估命令里保持 wrist 和 front
中途停滞episode 停在保持状态录制更长、完整的演示

按这个顺序迭代:先修摄影棚和相机,再补 5–10 条真实数据(第 9 章),再重新 微调(第 10 章)。先改模型后修数据通常会掩盖真正的问题。

症状原因修法
5555 端口 address already in use旧服务端还在停掉旧容器或进程
服务端起了但 rollout 无动作checkpoint 路径失效确认挂载与 --model-path 指向同一 checkpoint
机器人立即回零策略或观测报错看服务端日志;检查相机流和关节名
容器里 Cannot find calibration校准目录没挂载挂 ~/.cache/huggingface/lerobot/calibration(上面的 docker run 已包含)

边缘部署——在 Jetson 而非工作站 GPU 上跑策略——继续看 第 14 章 —— 准备 Jetson 边缘设备;或先用可选的 第 12 章和第 13 章 扩充数据集。

返回课程概览:SO-ARM101 Sim-to-Real VLA 课程。

Loading Comments...