LAYERED INTEROPERABILITY
Different systems own different truths.
URDF can describe robot topology. OpenUSD can describe rich scene and physics information. ros2_control owns hardware abstraction and control lifecycle. A physical runtime owns execution. Treating one of those layers as if it silently owns all the others creates hidden assumptions.
OPENRGD ROLE
Bridge semantics without swallowing the stack.
Import
Extract source-supported evidence from supported description formats.
Normalize
Represent facts and semantics under explicit units, domains and provenance.
Validate
Verify integrity and selected modules before building derived artifacts.
Compile
Produce deterministic machine-readable context from the selected graph.
Export
Generate static interoperability configuration for supported targets.
Stop
Do not silently cross from configuration into actuation.
ROS 2
Static export is configuration, not runtime ownership.
The current OpenRGD ROS 2 export produces deterministic configuration artifacts and an export manifest. Hardware Xacro is emitted only when required HAL evidence is complete. Otherwise the export is explicitly configuration-only.
ros2_control remains responsible for its own hardware components, command/state interfaces and lifecycle. OpenRGD does not launch the controller manager or write to device buses from the canonical repository.
FAIL CLOSED
Interoperability should preserve uncertainty.
Imported robot descriptions cannot inherit hardware bindings merely because joint names happen to match a seed. Missing evidence is reported as missing evidence. Unsupported OpenUSD composition semantics are not approximated silently. This makes interoperability narrower, but auditable.
DESIGN PRINCIPLE
Connect systems by contract, not by implication.
OpenRGD is useful when the boundaries are visible: what came from a source file, what was enriched, what was validated, what was exported, and which downstream component is responsible for physical execution.