Skip to content

Asset Validation

An asset receives a published version only after its validation run passes. The same report model applies to your organization’s catalog and the read-only Simulo global catalog, but checks depend on the asset kind and source format.

  • Every package is checked for a valid manifest, in-root files, entry presence, digest integrity, and supported source shape.
  • USD packages are opened and checked for resolvable in-package references, declared units/up-axis, and relevant physics schemas.
  • URDF robots are converted to USD and receive explicit physics-completion rules before probes run.
  • Robots run settle and actuation probes in the simulation runtime.
  • Worlds and props are structural/runtime content; they do not pretend to have robot joints, so settle and actuation do not apply.

Settle — does it reach a quiet physical state?

Section titled “Settle — does it reach a quiet physical state?”

The runtime places the robot into a physics world without commanding it. A healthy model should settle instead of jittering, sinking through the floor, or separating explosively. This catches common problems with collision shapes, masses, inertias, limits, and drives.

Actuation — do authored drives track targets?

Section titled “Actuation — do authored drives track targets?”

The runtime sends small position targets to joints with authored drives and measures whether they track. A missing, weak, unstable, or badly limited drive fails this probe. The result applies to drives the asset actually authored; it does not promise that an undriven joint will move.

Settle establishes physical stability. Actuation establishes that the model’s declared controls respond.

Terminal window
simulo asset inspect robot/my-arm:v1
simulo asset inspect simulo/robot/cartpole:v1

The human summary includes validation verdicts and a facts block. Save the complete record when you need measured data:

Terminal window
simulo asset inspect robot/my-arm:v1 --json > my-arm.record.json

The facts live under version.facts:

Field Meaning
articulation_root Root prim of the robot articulation.
joints, dof Joint records and total degrees of freedom.
collision_shape_count Collision meshes/shapes found.
units, up_axis Authored scale and orientation.
link_masses, total_mass_kg Per-link and total mass used by physics.
probe_outcomes settle and actuation pass/detail objects when applicable.
step_cost_indicator A coarse runtime cost signal when measured.

Write the report captured by the validator:

Terminal window
simulo asset inspect robot/my-arm:v1 --report my-arm.validation.json
# or validate without publishing:
simulo asset validate ./my-arm --kind robot --report my-arm.validation.json

The report is not a pair of top-level settle/actuation fields. It is a versioned sequence of stages and check rows. The following is a schema sketch, not a literal emitted report; angle-bracket values stand in for measured text:

{
"report_schema_version": "simulo.asset_validation_report.v1",
"verdict": "passed",
"runtime": "<runtime identifier>",
"kind": "robot",
"entry": "robot.usda",
"source_format": "usd",
"summary": "Validation passed.",
"stages": [
{
"stage": "engine",
"status": "passed",
"skip_reason": null,
"rows": [
{
"status": "pass",
"check": "probe_settle",
"title": "Robot settles to a quiet physical state",
"problem": null,
"fix": null,
"detail": "<measured result>"
},
{
"status": "pass",
"check": "probe_actuation",
"title": "Authored drives track commanded position targets",
"problem": null,
"fix": null,
"detail": "<measured result>"
}
]
}
]
}

A non-pass row leads with a practical problem and fix; measured detail is kept separately. A deliberately skipped engine stage is recorded as skipped, not misreported as a passed physics probe.

What you see Usually means First correction to try
Entry or reference check fails The entry is ambiguous/missing, or a dependency leaves the package root. Put every dependency under one root and pass --entry when needed.
Units/up-axis warning The USD layer relies on a fallback instead of authoring the metadata. Author metersPerUnit and upAxis explicitly.
Settle fails Collision, mass/inertia, limit, or drive configuration is unstable. Inspect collisions and inertial properties, then revalidate.
Actuation fails An authored drive is missing, too weak, unstable, or constrained by limits. Check drive stiffness/damping and joint limits.
URDF conversion fails A mesh reference is missing/unsafe or the URDF shape is unsupported. Keep meshes under the package root and fix the reported row.