Skip to content

SimEngine

Generated from strands_robots.core.contracts.SimEngine at build.

A physics world with reset, step and render. Knows nothing of policies or runners.

Shape: structural Protocol (runtime checkable): implement the members, import nothing.

Members

signature contract
joint_names -> tuple[str, ...] property Actuated joint keys, in ctrl order.
reset() -> Observation Return the world to its keyframe; return the first observation (radians).
observe() -> Observation Read the current state without advancing physics.
step(ctrl: Action, n_steps: int = 1) -> Observation Apply ctrl (radians) for n_steps physics steps; return the observation.
render(camera: str | None = None) -> np.ndarray[Any, Any] Render one named camera, or the free camera, to an HxWx3 uint8 array.
is_alive() -> bool Whether the world still exists; False after close().
close() -> None Free the world and any GL context; idempotent.

Where it is used

Contracts return typed values and raise strands_robots.core.errors; the agent envelope is built in tools/. The types they exchange are in strands_robots.core.types; the frame they agree on is UnitFrame. Why the shapes are what they are: VISION.md.