3 资产本地化
2026/4/7大约 3 分钟
Isaac Sim资产本地化教程
1. 为什么要进行资产本地化?
- 离线支持:官方资产通常托管在云端,本地化后可脱离网络运行。
2. 核心操作流程
第一步:导入资产
- 打开 Content Browser,找到目标资产(如 UR10e)。
- 右键点击资产 -> Import,或者在弹出的窗口中选择 Load as Reference。
- 注意:此时资产名字旁边会有一个蓝色弯箭头图标,表示它仍是一个外部引用。
第二步:参数调优(可选)
在本地化之前,建议先完成以下调整:
- 使用 Gain Tuner 调整 Stiffness 和 Damping。
- 配置 PhysX 属性或添加末端执行器(Gripper)。
第三步:执行“压实” (Flattening) —— 关键步骤
这一步是为了斩断资产与云端服务器的链接,将数据真正“抓”到本地内存中。
方法 A:使用脚本
- 选中机器人根节点。
- 点击顶部菜单 File > Save Flattened As...。
方法 B:使用 UI 菜单
打开 Script Editor,运行以下代码:
import omni.kit.commands
# 请根据 Stage 面板中的实际路径修改 path_list
omni.kit.commands.execute("FlattenSelectedReferences", path_list=["/World/ur10e"])第四步:清理场景冗余
为了让机器人资产成为一个纯净的“积木”,我们需要删掉环境干扰:
- 在 Stage 面板中,删除
Environment、Lights和多余的地面。 - 将机器人节点拖出
World节点(如果存在多层嵌套),使其处于层级最顶端。 - 删除空的
World节点。
第五步:设置默认根节点 (Set Default Prim)
这一步是为强化学习代码(如 Isaac Lab)准备的:
- 右键点击机器人的根节点(如
ur10e)。 - 选择 Set as Default Prim。
- 标志:节点名字会变粗,或旁边出现一个小房子图标。
3. 最终导出与验证
导出文件
- 点击 File > Save As...。
- 选择你的本地研究目录,命名为
ur10e_standalone.usd。
成功验证清单 (Checklist)
| 检查项 | 成功标志 | 失败标志 |
|---|---|---|
| 文件大小 | ?MB (包含数据) | ?KB (仅是引用) |
| 图标显示 | 无蓝色小箭头 | 带有蓝色弯箭头 |
| 层级结构 | 只有机器人本身 | 嵌套了 World 或 Environment |
| 物理参数 | Stiffness 值为白色(可编辑) | Stiffness 值为灰色(受限) |
4. 常见问题排查:修复末端 Link (ee_link) 在代码中消失的问题
如果在运行 Isaac Lab 脚本时出现 ValueError: Not all regular expressions are matched! ee_link: [],说明你的 ee_link 没被物理引擎识别为有效刚体。请按以下步骤彻底修复:
4.1 赋予“刚体身份” (Rigid Body API)
由于 ee_link 通常只是一个空坐标系(Xform),Flatten 导出后它可能丢失了物理属性。
- 在 Stage 中选中
ee_link。 - 在 Property 面板点击 + Add > Physics > Rigid Body。
- 确保 Rigid Body Enabled 已勾选。
4.2 配置核心物理参数 (消除 "Ignore" 陷阱)
物理引擎(PhysX)会过滤掉任何没有惯性或质量的刚体。
- Mass(质量):点击 + Add > Physics > Mass,手动设置
Mass = 0.001(不要设为 0)。 - Diagonal Inertia(对角惯性):关键步骤! 不要选择
Ignore。手动输入三个极小值,例如0.0001, 0.0001, 0.0001。这能强行让物理引擎承认它是一个可旋转的实体。
4.3 勾选关节使能 (Joint Enabled) —— 致命错误排查
如果 ee_link 没有“焊”在机械臂上,它会被代码忽略。
- 在 Stage 的
joints文件夹下找到连接ee_link的关节(通常是ee_joint或PhysicsFixedJoint)。 - 在 Property 面板的 Joint 栏目下,务必勾选 Joint Enabled。
- 确认 Body 0 指向
wrist_3_link,Body 1 指向ee_link。
4.4 检查根节点 API (Articulation Root)
所有 Link(包括 ee_link)必须属于一个完整的 Articulation 树才能被代码通过正则表达式搜到。
- 选中机器人的最顶层节点(如
/ur10e)。 - 确保它拥有 Articulation Root 属性。
- 如果没有,点击 + Add > Physics > Articulation Root。
