建议先跑通完整的真实世界闭环(采集 → 训练 → 评估,第 9–11 章)。仿真数据 不占用真机,能以低成本扩展场景与光照多样性,适合在真实链路验证之后作为 补充。
12.1 学习目标与数据链路
12.1 学习目标与数据链路
- 了解 NVIDIA Isaac Sim 仿真工具;
- 了解孪生的相机布局:腕部
front相机与俯视external相机——与真实 数据集相同的两路流; - 在孪生里生成一份完整的 VLA 训练数据集。
SO-ARM101 项目的数据链路如下:
SO-101 主臂(或键盘 IK)
| USB 串口
▼
LeRobot Python 桥 -- UDP 127.0.0.1:5015 --> Isaac Sim 白色 SO-ARM101
|
+--------------------+--------------------+
| |
▼ ▼
action/state front + external 相机
| |
+--------------------+--------------------+
|
▼
LeRobot Dataset v3
主臂只提供人工控制指令,仿真臂不会自主执行抓取。系统同步记录:
action:六维主臂关节指令;observation.state:主臂空间的六维仿真关节值;observation.images.front:随腕部移动的相机;observation.images.external:工作区上方的俯视相机;- 任务文本(
Put the three vials into the vial rack)、随机化参数与任务 成功状态。
默认采集频率 30 FPS,两路相机均为 640 × 480——与第 9 章的真实数据集完全 一致。
12.2 相机视角
12.2 相机视角
按 R 重置场景后,两路相机视角与真实机器人一致:front 是随臂移动的腕部
流,external 是固定的俯视流——两路都会写入数据集。
front 视图下半部分可见的夹爪和相机支架是预期行为——腕部相机位于镜头前端、
沿臂方向看出去,与第 8 章的真实腕部支架完全一致。用
./run_so101.sh --single-viewport 只保留主视口并隐藏浮动相机窗口;录制不受
影响。
12.3 环境要求
12.3 环境要求
- Ubuntu 22.04;
- NVIDIA RTX GPU——NVIDIA 建议 Isaac Sim 工作使用 12 GB+ 显存;
- Isaac Sim 6.1 独立版已安装并能启动。
安装一次 Isaac Sim:
# 从 NVIDIA 下载 Isaac Sim 6.1 Linux 独立版压缩包,
# 解压后先启动一次:
mkdir -p ~/isaacsim && cd ~/isaacsim
unzip ~/Downloads/isaac-sim-standalone-6.1.0-linux-x86_64.zip
./python.sh -c "print('isaac ok')"
- 第 7 章的 LeRobot 环境(
~/rebot_lerobot/.venv),带数据集扩展以便 转换录制数据:uv pip install -e "./lerobot[dataset,viz]"。缺少它时录制数据转换失败, 终端会打印[dataset-error]; - 已安装
git-lfs——项目的 USD 资产用 Git LFS 存储。
在 8 GB GPU(多数笔记本)上,渲染负载可能抢占桌面合成器导致死机,即使开了 项目自带的缓解(Real-Time 渲染、640×360、30 Hz 上限)。使用项目的缓解参数, 或改用无头采集。
12.4 下载源码
12.4 下载源码
sudo apt update
sudo apt install -y git-lfs
cd ~
git clone https://github.com/yuyoujiang/rebot-arm-dli-isaacsim.git
cd rebot-arm-dli-isaacsim
git lfs install
git lfs pull
不执行 git lfs pull,克隆里只有小的指针文件,Isaac Sim 打不开场景。
12.5 启动 Isaac Sim 遥操作
12.5 启动 Isaac Sim 遥操作
cd ~/rebot-arm-dli-isaacsim
./run_so101.sh --leader-port /dev/ttyACM0
如果只有一个串口设备,程序可以自动检测:
./run_so101.sh
Isaac Sim 装在别的目录时:
ISAACSIM_ROOT=/path/to/isaacsim ./run_so101.sh --leader-port /dev/ttyACM0
首次启动会构建 scenes/so101_vials_sorting.usda 并编译着色器,需要几分钟,
属正常现象。
没有主臂硬件?键盘 IK 模式可以直接驱动末端:
- 点一下 3D 视口(获得键盘焦点);
- 按
Y——终端打印[teleop] Control source: KEYBOARD (IK: WASD ...); W/S/A/D在桌面平面移动,方向键上下,Z/C俯仰工具,G开合夹爪。
12.6 录制一个 episode
12.6 录制一个 episode
确认 Isaac Sim 视口获得键盘焦点,然后:
- 按
R重置场景。三支试管重新摆位,物体与光照随机化生效; - 检查两路相机视角和试管初始位置;
- 按
S(主臂模式)或T(键盘模式)开始录制:
[record] Episode started at 30 FPS -> .../datasets/so101_vials_front_side
- 操作主臂把三支试管依次放进机架;夹爪靠近试管合拢时抓取辅助会吸附
(终端打印
[GRASP]),在机架上方张开即释放([RELEASE]); - 再按
S/T结束并保存; - 等待后台编码完成:
[dataset] Episode saved; total completed: 1
系统在后台把临时 JPEG、动作和状态转换为 LeRobot Dataset v3;编码期间可以 直接开始下一条。
键盘快捷键:
| 按键 | 功能 |
|---|---|
R | 重置三支试管并重新随机化 |
S / T | 开始录制;录制中再按一次结束并保存 |
C | 取消当前 episode,不写入数据集 |
Y | 主臂模式 / 键盘 IK 模式切换 |
B | 键盘步长慢速/快速切换 |
如果试管倒了、抓取失败或动作质量差,按 C 丢弃,再按 R 重录。
12.7 检查与可视化数据集
12.7 检查与可视化数据集
cd ~/rebot_lerobot
source .venv/bin/activate
lerobot-dataset-viz \
--repo-id local/so101_vials_front_side \
--root ~/rebot-arm-dli-isaacsim/datasets/so101_vials_front_side \
--episode-index 0 \
--display-compressed-images true
依次检查各 episode:动作、状态与两路视频流必须同步,无黑帧、冻帧或严重 遮挡。
12.8 在 Isaac Sim 中回放动作
12.8 在 Isaac Sim 中回放动作
先启动一个不连主臂、不录制、关闭随机化的 Isaac Sim 接收器:
cd ~/rebot-arm-dli-isaacsim
./run_so101.sh --headless --no-start-bridge --no-recording --no-dr &
然后在第二个终端回放第 0 条:
cd ~/rebot-arm-dli-isaacsim
PYTHONPATH=scripts ~/rebot_lerobot/.venv/bin/python \
scripts/replay_episode_so101.py --episode 0
循环回放:加 --loop。回放脚本发送数据集里的 action 列,用来检查机械臂
轨迹;它不是视频播放器——相机内容用上面的数据集可视化工具检查。终端在动作
流传输时打印 [teleop:LIVE],三支试管在机架内稳定 0.35 s 后打印
[SUCCESS]。
12.9 没有主臂也能验证(可选)
12.9 没有主臂也能验证(可选)
主臂还没到货时,内置的脚本录制器可以无头验证物理、相机与数据集写入:
cd ~/rebot-arm-dli-isaacsim
./run_so101.sh --headless --auto-record 2
它会向 datasets/so101_vials_front_side 录两条短 episode 后退出。最后的
[dataset] Episode saved 表示整条链——场景构建、物理、相机、数据集转换——
在无硬件情况下正常。
12.10 配置与参考资料
12.10 配置与参考资料
SO-ARM101 项目的主要配置文件:
config/teleop_config_so101.json:串口、UDP、关节映射与抓取辅助;config/domain_randomization_so101.json:物体、光照、相机与数据集参数;config/grasp_config_so101.json:场景物体、物理参数与任务成功条件。
继续第 13 章 —— 数据增强(可选),或回到真机路线 第 14 章 —— 准备 Jetson 边缘设备。