ワンクリックで
asset-discovery
Mandatory asset discovery protocol for project-local and Chrono built-in assets.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Mandatory asset discovery protocol for project-local and Chrono built-in assets.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Entry point for FSI-coupled hybrid plans (plan_type=fsi_in_scene) — any scene combining SPH fluid (water tanks, dam-break, wave channels) with multi-body dynamics, optionally with a wheeled vehicle. Pick this over mbs_in_scene whenever the plan involves a fluid domain (scene_objects with domain_type starting "sph_") or an FSI body registration (scene_objects with fsi_registration set). Routes to fsi/sph (always), veh/wheeled_vehicle (when vehicle present), and enforces FSI-specific invariants distinct from generic mbs_in_scene rigid scenes.
Entry point for rigid-body hybrid plans (plan_type=mbs_in_scene) combining a robot or vehicle with scene assets — NO fluid coupling. Routes to the correct domain skills and defines only high-level invariants. Use core/fsi_in_scene instead when the plan involves SPH fluid or FSI body registration.
Entry point for pure multi-body simulation plans (plan_type=mbs). Routes the agent to the correct mechanics, system, and camera skills and defines only high-level invariants.
Entry point for static scene plans (plan_type=scene). Routes the agent to the correct scene, system, and camera skills and defines only high-level invariants.
Set up SPH-based Fluid-Structure Interaction (FSI): create ChFsiFluidSystemSPH and ChFsiSystemSPH, configure fluid and SPH parameters, seed fluid particles with hydrostatic initialization, add container BCE boundary markers, register floating rigid bodies, optionally couple with a wheeled vehicle, and advance with sysFSI.DoStepDynamics(dT).
Translate a `geometry_relations` entry from the plan into correct PyChrono coordinate code. Read this whenever the plan declares a relation_name you have not previously encoded, and especially BEFORE writing SetPos / camera placement for any body that participates in a multi-body geometric constraint. Each subsection below is one canonical pattern named exactly as it appears in `plan.geometry_relations[i].relation_name`.
| name | asset_discovery |
| description | Mandatory asset discovery protocol for project-local and Chrono built-in assets. |
| compatibility | pychrono >= 8.0 |
| metadata | {"domain":"planning"} |
Defines the mandatory steps for discovering and selecting external assets before
writing a scene, mbs_in_scene, or sensor-rich plan. Assets are discovered from
two sources: the project-local data/ directory and the Chrono built-in data
directory. Do not confuse external assets with procedural primitives: simple
geometry, generated boundaries, terrain patches, and fluid domains belong in
scene_objects[], not assets[].
assets[] as long
as they have visible scene_objects[].data/)Custom assets stored in the repository:
data/scene/<asset_name>/<asset_name>.obj — scene furniture and propsdata/robot/<robot_name>/ — robot URDF and mesh filesAssets bundled with the PyChrono installation (accessed via
chrono.GetChronoDataFile()):
sensor/offroad/ — outdoor props (trees, bushes, rocks, cottage)models/ — generic models (teapot, bunny, forklift, chess table, traffic cone, etc.)sensor/geometries/ — basic shapes (box, sphere, cylinder, suzanne)sensor/cones/ — cone markersvehicle/ — vehicle chassis, tires, wheels (for reference scenes)find_assets("*.obj", source="project")list_directory("data/scene/") to see directory structurefind_assets("*.obj", source="chrono") for full listing, ORlist_chrono_assets() for a category overview, thenlist_chrono_assets("sensor/offroad") to drill into a specific categoryread_file_content("data/scene/assets.json") for project asset metadataBefore binding catalog rows, classify each user-mentioned object by construction source:
wrapper_or_vehicle_json / imported_mesh_asset: use this asset discovery
protocol and put the result in plan.assets[].procedural_primitive: simple rigid geometry that can be described by basic
dimensions and material properties. Put it in scene_objects[] with
dimensions and physical parameters.fluid_domain: SPH/FEA/fluid domains. Put it in scene_objects[].generated_boundary: FSI containers, BCE walls/floors, terrain patches, and
other generated support geometry. Put it in scene_objects[].If no matching catalog asset exists for a simple object, do not drop it and do not ask the user by default. Use a procedural primitive fallback. Ask only if the fallback would materially change the user's intent or visual requirements.
Asset discovery is only one part of planning. Before submitting a plan, compare
the concrete physical objects in the user request against the union of
plan.assets[] and plan.scene_objects[]. Every requested object must be
represented in one of those two places.
Use construction-source categories rather than scenario-specific examples:
scene_objects[] as procedural_primitivescene_objects[] as generated_boundaryscene_objects[] as fluid_domainassets[]Do not submit a plan where only the actuated/moving entity is present while the supporting topology named by the user is missing.
Asset filenames in plan.assets[].filename use source-appropriate relative
paths:
data/scene/...The chrono-relative format matches chrono.GetChronoDataFile() convention.
Code generation uses _resolve_asset_path() from chrono_code.utils.scene_assets
which automatically resolves both formats (project data_dir first, then
chrono.GetChronoDataPath() fallback).
find_assets/find_files/list_directory/list_chrono_assets (i.e. invented) → REJECTED.assets section for a scene plan is valid only when the visible
objects are all represented in scene_objects[] as procedural primitives,
generated boundaries, or domains.For scene/mbs_in_scene plans, implementation_steps must:
physical_predicates and
scene_predicates.assets[], a procedural entry in scene_objects[], or both
when they form one topology unit..obj files.Within implementation_steps (and the corresponding order of plan.assets[]):
Reason: the moving body needs the final scene geometry to choose a valid
spawn pose, and downstream code paths (camera follow, collision setup, control
loop) attach themselves to the moving body once the scene exists. Putting the
robot first forces re-derivation later and breaks camera_target_body look-up.
A mbs_in_scene plan that lists curiosity_rover / viper / hmmwv /
URDF robot as the FIRST implementation step (or first asset) is INVALID and
will be rejected.