面向读者

验证等级

本案例明确分为两层:

  • 配置验证通过: main.py 验证两个 Manifest,并检查启用的 Cloth 与可单独选择的 Water 记录,不启动仿真器。
  • 可见 Isaac 柔性体运行: python verify_runtime.py 打开 Isaac,读取全部 144 个 布料节点,推进物理并验证布料在重力下移动。
  • 可见 Isaac 流体运行: fastsim run fluid.yaml --duration 5 运行单独启用的粒子流体。

FastSim 已能把程序化表面柔性体与粒子流体 Lower 到 UniRoboSim,并提供两类按需状态查询。 Isaac Lab 3.0 当前不能在同一个原生 World 中混合本适配器的 USD 回读粒子路径与张量柔性体 路径,因此两个已验证配置每次只启用一种软物质。

文件说明

  • run.yaml 启用布料、关闭水,用于可见柔性体检查。
  • fluid.yaml 关闭布料、启用水,用于可见流体检查。
  • main.py 仅使用公开配置 API 编译,并检查类型、启用状态、能力和程序化源类型。
  • verify_runtime.py 在物理推进前后通过 FastSimApplication.deformable() 读取不可变节点快照。
  • ../catalog/deformable_cloth.yaml 定义可复用的柔性体组件。
  • ../catalog/fluid_water.yaml 定义可复用的流体组件。
  • ../catalog/index.yaml 把这两个版本发布为稳定版本。

理解 Manifest

布料 Manifest 使用 deformable:// 标识和 kind: deformable。其中 defaults.params.source 描述表面网格;材料密度是所有实例默认共享的数据,除非 Run 明确覆盖。

水组件使用 fluid://kind: fluid。它的盒状网格源固定粒子区域和间距, material 保存密度、黏度和表面张力。

它有意不写 capabilities: [fluid]。组件 capability 是 FastSim 已建立映射的契约, 不是随意填写的标签,也不是直接照抄 UniRoboSim Provider capability。对于这个程序化 实体,kind: fluidsemantics.model: particle_fluid 和类型化参数会选择流体 Lowering;FastSim 随后会自动给 World 添加版本化要求 state.fluid.particles@1

理解 Run

yaml
scenario:
  scene:
    deformables:
      cloth:
        use: deformable://fastsim/component-demo-cloth
        enabled: true
        pose:
          xyz_m: [0.0, 0.0, 1.2]
          quat_xyzw: [0.0, 0.0, 0.0, 1.0]
    fluids:
      water:
        use: fluid://fastsim/component-demo-water
        enabled: false
        pose:
          xyz_m: [0.0, 0.0, 0.8]
          quat_xyzw: [0.0, 0.0, 0.0, 1.0]

clothwater 是 Scenario 内部别名。use 让 Project Registry 选择稳定版本, pose 则仍是每个实例自己的物理布局。enabled: false 的实体仍保留在 Scenario、 ExecutionPlan 和 Lock 中供编写阶段检查,但不会进入 Runtime 投影。fluid.yaml 会反转 两个开关,以遵守上述 Isaac 混合软物质限制。

运行

在本目录执行:

bash
fastsim config validate run.yaml --json
fastsim config expand run.yaml
python main.py
python verify_runtime.py
fastsim run fluid.yaml --duration 5 --json

前三条配置命令的预期输出包括 isaaclab 后端、surface_gridbox_grid、各自启用/ 关闭状态,以及一个 64 位 Plan 摘要。Runtime 验证器会打印节点数、generation、tick 与 重力前后的布料质心。最后一条命令会打开可见 Isaac,让粒子流体运行五秒并正常关闭。

这个 CLI 生命周期运行证明原生构建、推进和正常关闭。若要进一步读取 125 个粒子、 精确推进 60 个物理 Tick 并验证质心发生移动,请继续运行 fundamentals/17_liquid

常见错误

  • capabilities: [fluid] 当作描述性标签会触发 FastSim capabilities are not mapped by the procedural projection。应删除它;本流体由 kindsemantics 驱动 Runtime 投影。
  • 同时启用 Cloth 与 Water 会被 Isaac Adapter 拒绝,因为两种原生状态路径不能共用一个 World。请分别使用已提供的两个 Run 文件。
  • 把水写进 objects:Scenario 分组必须与 Manifest 类型一致。
  • 因为行为文本写了空间关系就省略物理位姿:语义不能替代场景布局。

上一节:06 — 传感器与灯光 · 下一节:08 — Scenario 组件