Docs / Domain mappings / robot
Robots
An app that designs, simulates, tests, or trains a robot is Rig when it emits entities with POD components keyed by schema ids it supports (honors). Isaac Sim, Gazebo, MuJoCo, Webots, and the rest are fulfillments. The solver, the trainer, and the renderer are not this catalog.
ROS 2 middleware stays ros.md. There is no rig.isaac.*, rig.gazebo.*, or rig.mujoco.*.
Design
A mechanism is an rig.sim.articulation on the root link. Each link is an entity:
| Fact | Rig |
|---|---|
| Name | rig.meta.named |
| Pose in the parent | rig.spatial.transform + rig.spatial.relationship |
| Mass, centre of mass, inertia | rig.sim.rigidbody |
| Collision | rig.sim.collider |
| Visual | rig.geometry.mesh and rig.render.material, or a rig.cad.* solid whose mesh is a bake |
| Joint | rig.sim.joint |
| Motor | rig.sim.actuator |
| Electronics | rig.circuit.* / rig.pcb.* - kicad.md |
| Printed parts | rig.print.* - print.md |
inertia is six numbers about the centre of mass, body frame: ixx, iyy, izz, ixy, ixz, iyz. Mass times scene length squared.
Simulate
Compose rig.sim.world on the scene vertex. Gravity is scene units per second squared (+Y up). A body may replace it.
Contact friction and restitution live on the collider, including how two materials combine. The contact manifold does not.
| Sensor | Rig |
|---|---|
| Colour camera | rig.spatial.camera. Frames stay in the host. A file is rig.pixel.source |
| Depth | rig.sensor.depth on that camera |
| Class image | rig.sensor.label on that camera. A mesh's class is rig.sensor.class |
| Lidar | rig.sensor.lidar. The cloud stays in the host |
| One beam | rig.sensor.range |
| IMU | rig.sensor.imu. Orientation is the transform |
| Force / torque | rig.sensor.wrench |
| GNSS | rig.sensor.gnss plus rig.place.geo |
| Bumper | rig.sim.collider sensor true. The contact list stays in the host |
A save writes the current pose, the body velocity, the joint position and velocity, and the latest sensor sample. Another host can continue from that file.
Test
rig.sim.episode is one attempt. task is the name. success is the judgement. Absent success means the attempt was not judged. Tracks on the episode are what was commanded and what was recorded. Several attempts are several episode entities.
Train
rig.ai.policy names the actuators it writes and the sensors it reads. A checkpoint file is rig.media.asset_ref kind other on weights. rig.sim.domain redraws a field from a range at each reset. The episode is the take and the score.
A behavior tree (rig.ai.behavior) can call the policy by action name. It does not store the network.
Stay out
| Stay out | Why |
|---|---|
| Solver, iteration counts, warm starts | Fulfillment. Two hosts need not reproduce one contact from the same coefficients |
| Contact manifolds, point clouds, images, depth buffers | Host cache. The sensor component names the device and the sample at save |
| Network shape, optimizer, replay buffer | The wiring and the checkpoint file travel. The trainer does not |
| Soft bodies, cloth, fluids | Not a shared field set yet |
rig.isaac.* / rig.gazebo.* / rig.mujoco.* / rig.webots.* |
Product names stay out of schema ids |
Example
examples/robot-lab.json — a bench with Earth gravity, a fixed-base arm, a wrist wrench, a range beam, a class camera, a GNSS fix, a mass range for reset, a policy, and a failed reach test.