Docs / Domain mappings / ros
ROS 2
A ROS 2 host is Rig when it emits entities with POD components keyed by schema ids it supports (honors). rmw, DDS, launch files, and bags are fulfillment - not this catalog.
Unlike OpenBIM, there is no rig.ros2.* layer. Portable meaning is spatial / I/O / sensor / SUDE. Product protocol names stay out of schema ids (same rule as rig.music.clock). ROS-only fields travel as x.ros2.* until a second speaker needs the same meaning in the catalog.
Design, physical simulation, tests, and training are robot.md. This page stays the middleware map.
Map
| ROS 2 idea | Rig |
|---|---|
| TF frame | Entity with rig.meta.named + rig.spatial.transform |
| Parent frame | rig.spatial.relationship parent |
| URDF link | Same as TF; mesh / material compose as usual. The robot root is rig.sim.articulation |
| URDF inertial | rig.sim.rigidbody mass, centerOfMass, inertia |
| Joint | rig.sim.joint. Mimic is mimic / mimicMultiplier / mimicOffset on that joint. position and velocity are the joint state at save |
| Wrench | rig.sensor.wrench |
| Range (one beam) | rig.sensor.range |
| NavSat | rig.sensor.gnss plus rig.place.geo |
| Joint command | rig.sim.actuator target at save. A series is rig.anim.track on target |
| Depth image | rig.sensor.depth plus rig.spatial.camera. The buffer stays in the host |
| Laser scan | rig.sensor.lidar. The cloud stays in the host |
| Imu | rig.sensor.imu. Orientation is the entity transform |
| Recorded take | rig.sim.episode names the clip, the action tracks, the observation tracks, and whether the task finished |
| Graph member (ROS node) | Entity + rig.meta.named. Namespace, domainId, FQN stay x.ros2.*. Do not call this a "host" (Rig host = live program) |
| Topic / service / action | Named bus, like rig.io.osc. Message type strings and QoS stay x.ros2.* |
| Message payload | Land on existing fields in Update (transform, rig.sim.rigidbody.velocity, rig.sensor.*, rig.pixel.source) - do not catalog Twist / Image as schemas |
/clock |
SUDE dt. Do not reuse rig.music.clock |
| Camera stream | rig.pixel.source when it is capture; frames stay in the host |
| GPIO / occupancy | rig.sensor.gpio / presence; device may point at the node entity |
World pose / TF lookup caches stay in the host - rebuild from local transform + parent, same as any scene graph.
Do not map ROS nodes onto rig.node.*. That catalog is an artist patcher (typeId = host behaviour). Different graph - see Grouping graphs (do not merge).
TF sketch
Two frames, existing schemas only:
{
"entities": [
{
"id": "base_link",
"components": {
"rig.meta.named": { "name": "base_link", "stableId": "base_link" },
"rig.spatial.transform": {
"position": [0, 0, 0],
"rotation": [0, 0, 0, 1],
"scale": [1, 1, 1]
}
}
},
{
"id": "camera_link",
"components": {
"rig.meta.named": { "name": "camera_link", "stableId": "camera_link" },
"rig.spatial.transform": {
"position": [0.1, 0, 0.2],
"rotation": [0, 0, 0, 1],
"scale": [1, 1, 1]
},
"rig.spatial.relationship": { "parent": "base_link" }
}
}
]
}
(Wrap in a full document with "rig" set to the current VERSION before validating.)
Stay out
| Stay out | Why |
|---|---|
DDS discovery / ros2 node list |
Who is alive is a host cache - same class as a LAN scan table |
| QoS, last message, in-flight goals | Runtime state - do not serialize |
| Launch, bags, rmw vendor | Process graph and middleware are fulfillment |
| Point clouds, depth buffers, IMU covariance | Samples and matrices are host cache |
| Policy weights | Fulfillment. The take is rig.sim.episode; the solver is not |
rig.ros2.* |
Product protocol names stay out of schema ids |
A scan of who is up is not Contract meaning. RigKit's x.rigkit.net_scan / x.rigkit.net_host stay host extensions.
Encodings (fulfillment)
| Surface | Role |
|---|---|
| TF2 / URDF | Map frames and links into spatial transform + relationship; joints into rig.sim.joint; a drive into rig.sim.actuator |
| Topics / services / actions | Pub/sub and RPC in Update; write portable fields from payloads |
x.ros2.* |
Namespace, domain, message type, QoS - travel; do not port |
| Bags / launch | Replay and process graph stay in the host |
Honest limit
Two hosts that speak transform + relationship + the joints, drives, and sensors they share can exchange a robot pose tree and a recorded take as .rig. Round-tripping every ROS message type, QoS profile, discovery snapshot, and bag is not required. A host that needs the rest keeps it in ROS and maps what it understands.