:::writing{variant=“document” id=“73164” title=“NERO 单臂 π0.5 VLA / DreamZero WAM + Isaac Lab + RLinf + LeRobot v3:SFT、RL、Sim-to-Real 完整闭环实施方案”}
第1章 项目目标与最终闭环
1.1 项目目标
步骤属性:非操作步骤(方案/知识点)。
本文目标是围绕单臂NERO 7 自由度机械臂(NERO 7-DoF Robotic Arm)+AgileX 两指夹爪(AgileX Gripper),建立一套可以持续循环迭代的具身智能实验平台。
你的计算架构定义为:
- RTX 6000 PRO 96GB:私有“云端”;
- NERO:真实机器人执行端;
- Isaac Sim / Isaac Lab:数字孪生与仿真训练端;
- RLinf:统一的 SFT / RL 训练基础设施;
- LeRobotDataset v3:统一数据格式;
- π0.5:第一条 VLA 主线;
- DreamZero + Wan2.2-TI2V-5B:第一条 WAM 主线。
最终必须实现:
Base Model→Sim Eval→Real Eval→Data→SFT→RL→Sim Eval→Real Eval→New Data→Retrain\text{Base Model}\rightarrow\text{Sim Eval}\rightarrow\text{Real Eval}\rightarrow\text{Data}\rightarrow\text{SFT}\rightarrow\text{RL}\rightarrow\text{Sim Eval}\rightarrow\text{Real Eval}\rightarrow\text{New Data}\rightarrow\text{Retrain}Base Model→Sim Eval→Real Eval→Data→SFT→RL→Sim Eval→Real Eval→New Data→Retrain
即真正的数据飞轮(Data Flywheel)。
1.2 第一阶段与第二阶段
步骤属性:非操作步骤(方案/知识点)。
第一阶段:
不更新模型参数。
即:
θ=θbase\theta=\theta_{base}θ=θbase
先测试 π0.5 Base:
- Isaac Lab 仿真表现;
- NERO 真机 Shadow Mode;
- NERO 真机低速执行表现。
得到基线:
SRsimbaseSR_{sim}^{base}SRsimbase
和:
SRrealbaseSR_{real}^{base}SRrealbase
第二阶段:
利用:
DsimD_{sim}Dsim
和:
DrealD_{real}Dreal
进行:
- 监督微调(Supervised Fine-Tuning, SFT);
- 数据集聚合(Dataset Aggregation, DAgger);
- 强化学习(Reinforcement Learning, RL);
- 仿真-真机协同训练(Sim-Real Co-Training)。
1.3 RTX 6000 PRO 的角色
步骤属性:非操作步骤(方案/知识点)。
RTX 6000 PRO 96GB 是你的私有:
训练服务器(Training Server)
推理服务器(Inference Server)
仿真服务器(Simulation Server)。
其职责为:
RTX 6000 PRO 96GB │ ├── Isaac Sim ├── Isaac Lab ├── RLinf ├── LeRobot v3 ├── π0.5 SFT ├── π0.5 PPO ├── DAgger ├── Sim-Real Co-Training ├── DreamZero SFT └── Policy Inference Service所以第一阶段完全可以不使用 Jetson Orin。
第2章 模型选型
2.1 VLA 选择 π0.5
步骤属性:非操作步骤(方案/知识点)。
推荐:
π0.5(Pi Zero Point Five)。
原因:
- RLinf 已支持 π0 / π0.5 的SFT;
- RLinf 已支持 π0.5 的PPO(Proximal Policy Optimization);
- RLinf 已支持 Isaac Lab + π0.5;
- RLinf 已支持 π0 / π0.5 的 DAgger;
- RLinf 已支持 π0.5 的 Sim-Real Co-Training;
- OpenPI 原生提供远程推理服务;
- NERO 已出现 π0.5 社区 checkpoint / 数据 / RoboTwin 接入案例。
RLinf 官方当前已经提供 Isaac Lab + π0.5 + PPO 示例,并使用 7 维动作:
[x,y,z,roll,pitch,yaw,gripper][x,y,z,roll,pitch,yaw,gripper][x,y,z,roll,pitch,yaw,gripper]
。
2.2 WAM 选择 DreamZero 5B
步骤属性:非操作步骤(方案/知识点)。
推荐:
DreamZero(DreamZero)
Wan2.2-TI2V-5B。
DreamZero 当前在 RLinf 中已经有完整:
- SFT;
- Mixture SFT;
- LeRobot v2 / v3;
- Franka Pick-and-Place;
- DROID;
- LIBERO;
路径。
但是当前 RLinf 没有现成:
nero_pnp因此 DreamZero + NERO 需要增加一次本体注册(Embodiment Registration)。
2.3 WAM 的 RL 边界
步骤属性:非操作步骤(重要知识点)。
目前可以直接可靠落地的:
DreamZero + RLinf
主线是:
DreamZero Base→SFT→Evaluation\text{DreamZero Base}\rightarrow\text{SFT}\rightarrow\text{Evaluation}DreamZero Base→SFT→Evaluation
目前没有我能确认的 RLinf 官方:
DreamZero + NERO + PPO完整现成 recipe。
所以本文:
强化学习主线放在 π0.5 上。
DreamZero 先用于:
- WAM SFT;
- Sim / Real 对比;
- 世界模型能力实验。
不要自行臆造 DreamZero PPO 配置。
第3章 最终系统架构
3.1 总体架构
步骤属性:非操作步骤(方案/知识点)。
RTX 6000 PRO 96GB ┌───────────────────────────────────────────────────────────────┐ │ │ │ Isaac Sim / Isaac Lab │ │ │ │ │ ├── NERO Digital Twin │ │ ├── Red Cube │ │ ├── Green Tray │ │ ├── Front Camera │ │ ├── Wrist Camera │ │ ├── Teleoperation │ │ ├── RL Rollout │ │ └── Sim Evaluation │ │ │ │ │ ▼ │ │ LeRobotDataset v3 │ │ │ │ │ ┌────────┴────────┐ │ │ ▼ ▼ │ │ RLinf + π0.5 RLinf + DreamZero │ │ SFT / PPO WAM SFT │ │ │ │ │ │ └────────┬────────┘ │ │ ▼ │ │ Policy Server │ └─────────────────────────┬─────────────────────────────────────┘ │ Ethernet / Wi-Fi │ NERO Client │ Safety Adapter │ IK │ pyAgxArm │ ▼ NERO + Gripper │ ▼ Real Dataset │ └──────────────→ RLinf第4章 本体契约 Embodiment Contract
4.1 为什么必须存在 Embodiment Contract
步骤属性:非操作步骤(知识点)。
无论使用 π0.5、DreamZero、GR00T、OpenVLA,模型与机器人之间都必须解决:
- 本体适配层(Embodiment Adapter)
- 状态/动作定义(State/Action Schema)
- 归一化统计(Normalization Statistics)
- 相机键映射(Camera Mapping)
- 安全适配器(Safety Adapter)
所谓某机器人“官方支持”,只意味着这些代码已经有人写好。
4.2 固定状态空间
步骤属性:需要操作的步骤。
统一定义:
st=[q1,q2,q3,q4,q5,q6,q7,g]s_t=[q_1,q_2,q_3,q_4,q_5,q_6,q_7,g]st=[q1,q2,q3,q4,q5,q6,q7,g]
因此:
dim(st)=8\dim(s_t)=8dim(st)=8
其中:
- q1∼q7q_1\sim q_7q1∼q7:NERO 七关节;
- ggg:夹爪状态。
仿真和真机必须完全一致。
4.3 固定动作空间
步骤属性:需要操作的步骤。
第一版建议使用:
at=[Δx,Δy,Δz,Δrx,Δry,Δrz,g]a_t=[\Delta x,\Delta y,\Delta z,\Delta r_x,\Delta r_y,\Delta r_z,g]at=[Δx,Δy,Δz,Δrx,Δry,Δrz,g]
即:
dim(at)=7\dim(a_t)=7dim(at)=7
这是末端增量动作空间(End-Effector Delta Action Space)。
理由:
- RLinf IsaacLab π0.5 官方示例也是 7 维 Cartesian + Gripper;
- NERO Isaac Lab 自动采集示例已经使用相同 7 维结构;
- NERO 官方社区代码明确返回:
[Δx,Δy,Δz,Δrx,Δry,Δrz,gripper][\Delta x,\Delta y,\Delta z,\Delta r_x,\Delta r_y,\Delta r_z,gripper][Δx,Δy,Δz,Δrx,Δry,Δrz,gripper]
。
最终:
at→Differential IK→qtargeta_t\rightarrow\text{Differential IK}\rightarrow q_{target}at→Differential IK→qtarget
4.4 固定相机
步骤属性:需要操作的步骤。
只使用:
observation.images.front observation.images.wrist即:
前视相机(Front Camera)
腕部相机(Wrist Camera)。
第一阶段不把 Depth 输入 VLA。
4.5 固定语言 Prompt
步骤属性:需要操作的步骤。
统一:
Pick up the red cube and place it in the green tray.仿真和真机必须一模一样。
4.6 建立归一化统计
步骤属性:需要操作的步骤。
RLinf 明确要求对新的 LeRobot dataset 计算 state / action normalization statistics。
使用:
python toolkits/lerobot/calculate_norm_stats.py\--config-name pi05_nero_cartesian\--repo-id /data/nero_redcube_sim_v001正式 Real SFT 前对真实数据也重新计算。
4.7 建立 Safety Adapter
步骤属性:需要操作的步骤。
禁止:
π0.5 → NERO必须:
π0.5 ↓ Action Chunk ↓ Safety Adapter ↓ IK ↓ Interpolation ↓ pyAgxArm ↓ NERO至少实现:
∣Δx∣<Δxmax|\Delta x|<\Delta x_{max}∣Δx∣<Δxmax
∣Δy∣<Δymax|\Delta y|<\Delta y_{max}∣Δy∣<Δymax
∣Δz∣<Δzmax|\Delta z|<\Delta z_{max}∣Δz∣<Δzmax
∣Δr∣<Δrmax|\Delta r|<\Delta r_{max}∣Δr∣<Δrmax
以及:
qimin≤qi≤qimaxq_i^{min}\le q_i\le q_i^{max}qimin≤qi≤qimax
还必须有:
- Workspace Limit;
- Joint Velocity Limit;
- NaN / Inf;
- Self Collision;
- Table Collision;
- Network Timeout;
- Command Timeout;
- Watchdog;
- Physical E-Stop。
第5章 软件版本与环境
5.1 版本策略
步骤属性:需要操作的步骤。
不要长期跟随main不固定版本。
建议第一次实验:
- Ubuntu 22.04;
- RLinf 固定一个 git SHA;
- Isaac Sim 5.1.0;
- Isaac Lab 与 RLinf 当前 IsaacLab recipe 对齐;
- LeRobot >= 0.4;
- CUDA Driver 满足 Isaac Sim / RLinf 要求。
RLinf 当前 IsaacLab 官方教程明确使用 Isaac Sim 5.1.0。
第一次部署后记录:
gitrev-parse HEAD pip freeze>requirements.lock.txt nvidia-smi>gpu_env.txt5.2 推荐环境拆分
步骤属性:需要操作的步骤。
建议:
env 1: nero_isaac_teleop env 2: rlinf_openpi env 3: rlinf_dreamzero env 4: nero_real不要全部 pip 到一起。
第6章 代码库
6.1 必须下载的仓库
步骤属性:需要操作的步骤。
RLinf:
urlRLinf GitHubhttps://github.com/RLinf/RLinf
OpenPI:
urlPhysical Intelligence OpenPIhttps://github.com/Physical-Intelligence/openpi
Isaac Lab:
urlIsaac Labhttps://github.com/isaac-sim/IsaacLab
NERO Isaac Lab 数据采集:
urlNERO IsaacLab Data Collectionhttps://github.com/szyzp/IsaacLab_Data_Collection
NERO SDK:
urlpyAgxArmhttps://github.com/agilexrobotics/pyAgxArm
NERO ROS2:
urlagx_arm_roshttps://github.com/agilexrobotics/agx_arm_ros
DreamZero:
urlDreamZerohttps://github.com/dreamzero0/dreamzero
RLinf DreamZero:
urlRLinf DreamZero Forkhttps://github.com/RLinf/dreamzero
LeRobot:
urlLeRobothttps://github.com/huggingface/lerobot
第7章 搭建 NERO Isaac Lab 仿真
7.1 使用现有 NERO Isaac Lab 工程
步骤属性:需要操作的步骤。
不要从零写 NERO。
现有 NERO 社区工程已经支持:
- NERO 7DoF;
- Gripper;
- URDF → USD;
- Differential IK;
- Keyboard;
- SpaceMouse;
- HDF5;
- Replay;
- Block stacking。
7.2 URDF 转 USD
步骤属性:需要操作的步骤。
示例:
python../IsaacLab/scripts/tools/convert_urdf.py\/path/to/nero_gripper.urdf\/path/to/nero.usd\--fix-base该路径已被 NERO Isaac Lab 项目验证。
7.3 验证机械臂模型
步骤属性:需要操作的步骤。
必须确认:
- 7 个关节正确;
- Gripper 正确;
- Joint Limit 正确;
- Collision Mesh 正确;
- Mass / Inertia 正常;
- 无剧烈抖动;
- 无 physics explosion。
如发生抖动,NERO 教程建议:
- 增大 solver iteration;
- 降低 stiffness;
- 增加 damping;
- 必要时关闭相邻 link self collision。
第8章 创建红色方块 Pick-and-Place
8.1 任务环境
步骤属性:需要操作的步骤。
建立:
Table │ ├── Red Cube ├── Green Tray ├── Front Camera ├── NERO │ └── Wrist Camera └── Gripper红方块:
4∼5 cm4\sim5\text{ cm}4