点击下方卡片,关注【Xbotics具身智能实验室】公众号
更多具身干货,欢迎加入(戳我)
👉具身智能学习资料汇总:https://github.com/Xbotics-Embodied-AI-club/Xbotics-Embodied-Guide
👉具身智能求职/实习信息汇总:https://github.com/Xbotics-Embodied-AI-club/Xbotics-Embodied-AI-Job
你想要的这里都有~~

|
这篇文章面向刚装好 Isaac lab的入门选手,用SO-ARM Starter Workflow的脚本完成遥操作采集 → 回放验证 →(可选)训练 →(可选)仿真部署的完整闭环。 |
-
在 Isaac Sim 里搭一个最小可跑的 OR 场景(桌子/托盘/器械/光照/碰撞体) -
把“手术刀/器械”变成可被抓取的物理物体(刚体 + 碰撞体 + 合理质量) -
运行 SO-ARM Starter 的仿真脚本,用键盘遥操作完成“抓取→放置”,并录制数据 -
回放检查数据质量(这一步最关键) -
(可选)把数据转成训练集,微调 GR00T N1.5,让机器人在仿真里“听指令”自动抓取

先搞清楚 Isaac for Healthcare 的“三件套”
NVIDIA Isaac for Healthcare(I4H)可以理解为:在 Isaac Sim / Isaac Lab / Omniverse 的底座上,给你准备了一套医疗机器人方向的工程化工具链,核心由三块组成:
-
i4h-workflows:端到端参考工作流(仿真环境、采集脚本、训练入口、部署工具) -
i4h-asset-catalog:医疗场景/设备/道具资产(用来搭 OR、搭设备、搭传感器) -
i4h-sensor-simulation:医疗传感器仿真(更进阶再用)
你这次要做“仿真 OR + 抓手术刀”,最重要的是前两块:workflows + asset-catalog。
最小闭环跑通:
-
场景最小化(桌子 + 托盘 + 器械) -
物理正确(刚体/碰撞体/质量) -
采集脚本跑通(键盘遥操) -
回放能复现

环境准备:拿到 SO-ARM Starter Workflow(仿真)
你已经装好 Isaac 环境了,下面只做 workflow 部分。
3.1 Clone 仓库 + 创建环境
Bash
git clone https://github.com/isaac-for-healthcare/i4h-workflows.git
cd i4h-workflows
conda create -n so_arm_starter python=3.11 -y
conda activate so_arm_starter
3.2 一键安装依赖(官方脚本)
Bash
bash tools/env_setup_so_arm_starter.sh
3.3 必要环境变量(新手常见漏项)
你后面运行脚本前,确保这两个至少配置好:
Bash
export PYTHONPATH=/workflows/so_arm_starter/scripts
|
如果你走 DDS 通信那套(更偏部署链路),还会需要 RTI license;但你现在只是仿真采集/回放/训练,先不急着上 DDS。 |
在 Isaac Sim 里搭一个“最小 场景”
4.1 场景最低配置清单
-
地面(ground plane) -
一张桌(手术台/工作台) -
一个托盘(放置目标) -
一个器械(手术刀/镊子/针都行) -
灯光(顶光 + 柔和阴影)
|
你可以先用 i4h-asset-catalog 的现成资产;如果没有合适托盘,就用一个 Cube 先顶上。 |
4.2 两种获取 OR 资产的方法
方法 A:用 I4H Asset Catalog 的预制 OR 资产
你可以用官方提供的 asset helper 拉取一个 OR 场景子目录,比如公共 OR 场景:
Bash
i4h-asset-retrieve --sub-path Props/shared_OR_without_Mark
下载完成后,在 Isaac Sim 的 Content Browser 里把这段路径加入搜索路径,然后把 .usd 资产拖进 Stage。
方法 B:自己找模型(Sketchfab/TurboSquid/CAD 文件)
如果你想用“更像真实手术刀的模型”,大概率需要:
-
OBJ/FBX/GLTF:直接导入/转换 USD -
STEP/IGES/SolidWorks:用 CAD 转换器转 USD
新手建议先别在导入上卡太久:先用任意细长器械替代 scalpel(针/镊子)跑通抓取,再换模型。
让“手术刀”真的能被抓取:物理设置是成败关键
很多人以为“看到刀了就能抓”,其实不行。想抓取必须满足:
5.1 三件套:Rigid Body + Collider + 合理质量
在 Isaac Sim GUI 里选中“手术刀”这个 prim,然后:
-
Add Physics → Rigid Body(刚体) -
Add Physics → Collider(碰撞体) -
设置质量(mass):从 0.02kg ~ 0.2kg 先试(别夸张) -
碰撞体尽量用 Convex Hull / Convex Decomposition(薄片刀具尤其重要)
5.2 新手必看:薄片物体的碰撞体别用“原网格”
手术刀很薄,如果你用高面数网格当碰撞体,常见结果是:
-
抖动、卡住、穿模、飞出场景
用凸包/分解碰撞体会稳定很多(先稳定再追求精细)。
5.3 两个检查工具
-
Physics Inspector:看碰撞体是否生效、质量是否正常、是否穿模 -
(如果你自己做机器人 rigging)Gain Tuner:调关节驱动的刚度/阻尼,避免机器人抖成筛子
用 SO-ARM Starter 在仿真里“键盘遥操作采集数据”
这一步是整个工作流的灵魂:采集示范数据(行为克隆/模仿学习的起点)。
6.1 运行仿真采集脚本(键盘遥操)
在 i4h-workflows 根目录、激活 conda 环境后运行:
Bash
python -m simulation.environments.teleoperation_record
--enable_cameras
--record
--dataset_path=/path/to/save/scalpel_pickplace.hdf5
--teleop_device=keyboard
|
dataset_path 是一个 .hdf5 文件路径。 |
6.2 键位说明(照着练就行)
-
Joint1:Q / U -
Joint2:W / I -
Joint3:E / O -
Joint4:A / J -
Joint5:S / K -
夹爪:D / L -
R:重置并停止当前录制 -
N:标记成功并开始下一条 episode
6.3 新手录制“高质量数据”的方法(非常实用)
不要一上来就录整套动作。按 3 段练:
段 1:对准刀柄
-
只练把夹爪移动到刀柄正上方
段 2:抓起验证
-
闭合夹爪 → 轻轻上抬 -
验证刀离开桌面(不是“推着跑”)
段 3:放入托盘
-
移动到托盘上方 → 下放 → 松爪 → 退出 -
然后按 N 标记成功
|
一条高质量 episode 的价值 > 十条乱七八糟 episode。别偷懒跳过回放。 |
回放验证:这一步不做,后面训练全是浪费
录完马上回放检查:
Bash
python -m simulation.environments.replay_recording
--dataset_path=/path/to/save/scalpel_pickplace.hdf5
--enable_cameras
--teleop_device=keyboard
你要重点看 4 件事:
-
刀有没有穿模/抖动/飞出 -
夹爪是不是“真的夹住”(而不是视觉上碰到) -
相机是否拍清楚(器械在画面里够大、够清晰) -
成功 episode 是否一致(别“甩进托盘也算成功”)
(可选)训练:把 HDF5 转成 LeRobot 格式 → 微调 GR00T N1.5
如果你想让机器人“听指令自动抓取”,就做这一步。
8.1 数据转换:HDF5 → LeRobot
Bash
python -m training.hdf5_to_lerobot
--repo_id=/path/to/save/lerobot_scalpel_dataset
--hdf5_path=/path/to/save/scalpel_pickplace.hdf5
--task_description="Grip the scalpel and put it into the tray"
8.2 微调 GR00T N1.5
Bash
python -m training.gr00t_n1_5.train
--dataset_path /path/to/save/lerobot_scalpel_dataset
--output_dir /path/to/save/scalpel_checkpoints
--data_config so100_dualcam
|
小提醒:官方公开的预训练策略往往对 prompt、相机视角、场景布置非常敏感。你如果换了“刀的外观/摆放/相机”,想稳定运行,最稳的方法就是补数据微调。 |
仿真部署:让它在仿真里自己动起来
SO-ARM Starter 的典型形式是:
-
终端 1:跑 policy 推理(policy_runner) -
终端 2:跑仿真环境(有时会涉及 DDS 通信)
你当前是入门阶段,建议先把“采集→回放→训练”跑稳,再做部署链路(部署链路更工程,排错更花时间)。
新手最常见问题与排错清单(建议收藏)
10.1 抓不起来
-
手术刀没加 Rigid Body / Collider -
碰撞体太复杂(用 convex hull) -
质量离谱(0 或巨大) -
夹爪闭合方向/行程不对
10.2 一播放就抖/炸
-
机器人关节驱动参数不合适 -
碰撞体互相穿插 -
刀初始就穿桌面(给它抬高 1~2mm 再落下)
10.3 回放和录制不一致
-
录制过程中 reset/成功标记乱按 -
episode 质量参差不齐(建议每次只录“成功标准一致”的)
-END-