Skip to content

Choose and validate assets

Apps use versioned assets for the robots, worlds, and props in a scene. Start with the Simulo global catalog, or publish your own assets to your organization’s catalog.

The global catalog is Simulo’s read-only collection of validated assets. Its references start with simulo/, which keeps them apart from assets your organization owns.

List the robots in it:

Terminal window
simulo asset list --global --kind robot

Search the global catalog and your organization’s catalog together:

Terminal window
simulo asset search cartpole --kind robot

Inspect one version before you use it:

Terminal window
simulo asset inspect simulo/robot/cartpole:v1

The output shows the asset’s description, entry file, package digest, where it came from, each validation it passed, and facts measured from the model, such as its joints, collision meshes, units, and total mass. To keep the full validation report:

Terminal window
simulo asset inspect simulo/robot/cartpole:v1 \
--report cartpole-validation.json

Use the same reference in Python:

import simulo
cartpole = simulo.Asset.from_registry("simulo/robot/cartpole:v1")

The simulo create starter already declares this handle in task.py. You don’t download the asset or copy it into your app.

Your organization’s catalog holds the robots, worlds, and props you publish. Their references have no simulo/ prefix, for example robot/my-arm:v1.

To run the cloud validation without publishing anything:

Terminal window
simulo asset validate ./my-arm \
--kind robot \
--entry robot.urdf \
--report my-arm-validation.json

When it passes, publish it:

Terminal window
simulo asset publish ./my-arm \
--kind robot \
--name my-arm \
--entry robot.urdf

simulo asset publish checks the package on your computer, uploads it with the files it references, and runs the same cloud validation. The new version becomes usable only when validation passes; a version that fails validation is never published. Then inspect it and use it like a global asset:

Terminal window
simulo asset inspect robot/my-arm:v1
my_arm = simulo.Asset.from_registry("robot/my-arm:v1")

For a robot, validation checks the package’s structure, then drops the robot into a simulation to check that it settles and that its joints move. A URDF robot is converted to USD first. A URDF can’t say whether the robot is bolted down, so URDF robots are treated as fixed-base unless you pass --base floating. Asset validation explains the report and common fixes.

Name an exact version, such as :v1, so the app uses the same asset every time you run it. To make simulo run enforce that:

Terminal window
simulo run train.py --frozen --strict-assets

--frozen refuses to submit if any asset has no exact version. --strict-assets refuses to submit if any asset is deprecated or hasn’t been validated on the job’s runtime.

Change the asset reference in your app’s task.py, then update the task for the new robot. See Create your first app.