Skip to main content
Every robot implements three methods:
This contract is the seam between policy code and the world. A policy that works against a MockRobot works against a SimRobot works against a RealRobot — no changes to the policy.

Built-in robots

Contract guarantees

observe()

Returns a Dict[str, Tensor]. Keys are stable — state, images, and any sensor keys declared in the robot config. Shapes and dtypes follow the config.

act(action)

Accepts a Tensor in the action space declared by the robot config. Indexing by name (via MotorCommands) is supported for readable code.

reset()

Returns the robot to a known-safe home state. Called once per episode.

disconnect()

Releases hardware resources. Always call during cleanup, or use a context manager.

Custom robots

Implement observe() / act() / reset() directly, or supply a YAML config that declares joints, sensors, and control rate. Hardware adapters handle the transport layer; the contract stays the same.