面向读者
验证等级
本案例明确分为两层:
- 配置验证通过:
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: fluid、semantics.model: particle_fluid 和类型化参数会选择流体
Lowering;FastSim 随后会自动给 World 添加版本化要求 state.fluid.particles@1。
理解 Run
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]
cloth 和 water 是 Scenario 内部别名。use 让 Project Registry 选择稳定版本,
pose 则仍是每个实例自己的物理布局。enabled: false 的实体仍保留在 Scenario、
ExecutionPlan 和 Lock 中供编写阶段检查,但不会进入 Runtime 投影。fluid.yaml 会反转
两个开关,以遵守上述 Isaac 混合软物质限制。
运行
在本目录执行:
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_grid 与 box_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。应删除它;本流体由kind和semantics驱动 Runtime 投影。 - 同时启用 Cloth 与 Water 会被 Isaac Adapter 拒绝,因为两种原生状态路径不能共用一个 World。请分别使用已提供的两个 Run 文件。
- 把水写进
objects:Scenario 分组必须与 Manifest 类型一致。 - 因为行为文本写了空间关系就省略物理位姿:语义不能替代场景布局。