Skip to content

Components

component means one public compatibility contract for a component-role subsystem. A component is composed from one or more API contracts. Component IDs are what component-role subsystems expose to other subsystems and compound robots.

The canonical component roots are these.

Root Role Meaning
component.* component semantic components such as mobile-base, manipulator, gripper, and perception subsystems

This is intentionally narrower than robot and narrower than capability. A robot contains gateway, component, compound, and app subsystems. A component.* ID names the public compatibility promise of a component subsystem, not the whole robot and not an app-facing capability.

Public Rule

Use component.* when a component-role subsystem provides a component.

provides:
  manipulator:
    contract: component.manipulator.v1

API Contracts such as api.motion.manipulator.state.v1 remain the validation unit behind the component. Gateways still provide api.* contracts directly, and compound subsystems provide capability.* contracts to apps.

The conformance_apis field in a component spec is not the same thing as a manifest requires block. It lists the API contracts that define the component's public behavior. The runtime binding direction is still decided by the subsystem manifest. A provides entry claims a provider of that component, and a requires entry asks for a provider of that component.

Summary Table

Canonical contract Role Backing API contracts
component.articulated.trajectory.v1 component articulated state
articulated trajectory
component.articulated.velocity.v1 component articulated state
articulated velocity
component.manipulator.v1 component articulated state
articulated velocity
articulated trajectory
manipulator state
manipulator cartesian
manipulator tooling
component.gripper.v1 component api.end_effector.gripper.v1
component.mobile_base.v1 component locomotion velocity
mobile-base state
component.mobile_base.localized.v1 component locomotion velocity
mobile-base state
localization
component.mobile_base.autonomous.v1 component locomotion velocity
mobile-base state
localization
navigation
component.perception.v1 component api.perception.query.v1

Component Subsystems

Component subsystems expose semantic control contracts. They should not own fieldbus resources such as NICs, CAN, RS-485, or SPI directly. CPU and scheduling claims are allowed when a controller needs deterministic execution, but hardware interface resources belong behind a gateway subsystem.

Components here are intentionally closed compatibility promises.

  • no optional API contract set
  • no basic/standard/advanced ladder unless the API surface is actually distinct
  • if two component bundles differ semantically, give them different component IDs

Gateway Contracts

Gateway subsystems aggregate one or more physical hardware channels and expose them as api.* contracts. This is the standard place to hide EtherCAT, CAN/CANopen, serial, I2C, SPI, or vendor-specific SDKs.

The public contract describes the semantic gateway role, not the underlying bus.

Compound Contracts

Compound subsystems aggregate component and gateway interfaces into application-facing capability.* contracts. A compound subsystem may require component.* contracts when it is coordinating standard controllers, and it may also require api.* contracts when a robot-specific capability needs direct gateway access such as a digital output or custom actuator channel.

Applications should bind to the compound capability surface instead of binding to the lower-level component or gateway topology.