Capabilities
Capabilities are app-facing robot contracts. They describe what an application may ask a robot to do without exposing controller, gateway, device-channel, or vendor topology.
Each capability.* spec points to one backing api.* contract. Official
R2Kernel capabilities currently use the api.capability.* namespace. The
API owns the concrete endpoints and message types. The capability adds semantic
constraints that an app and provider must share.
Capability IDs always include an authority as their first namespace segment:
capability.<authority>.<domain>.<name>.vN. The r2kernel authority is reserved
for contracts published in the official dictionary. Vendors and packages use
their own stable authority, for example capability.acme.fire.suppression.v1
or capability.tutorial.robot_cleaner.trash_disposal.v1. An authority identifies
who owns the semantics. It does not make that capability portable by itself.
Boundary
- an app requires
capability.* - a compound subsystem normally provides
capability.* - the backing
api.*contract defines the callable surface - lower-level
component.*and gatewayapi.*interfaces remain behind the compound provider - vendor and package-specific capabilities use their own authority and package spec root. They do not enter the official dictionary automatically
Official Capabilities
| Capability | Meaning | Backing API |
|---|---|---|
capability.r2kernel.mobility.body_motion.v1 |
bounded body-frame motion and stop behavior | api.capability.mobility.body_motion.v1 |
capability.r2kernel.manipulation.reach.v1 |
extend, shrink, and stow a platform manipulator | api.capability.manipulation.reach.v1 |
capability.r2kernel.manipulation.gripper.control.v1 |
open, close, and observe a gripper | api.capability.manipulation.gripper.control.v1 |
capability.r2kernel.perception.object_detection.v1 |
query semantic object detections | api.capability.perception.object_detection.v1 |
body_motion uses periodic Control because continuous motion needs period,
deadline, validity, and late-command rejection. Reach and gripper requests use
Procedures because they are bounded semantic actions. Longer behaviors may use
Operations when feedback and cancellation are part of the contract.
Platform Declaration
The robot manifest maps each declared capability to a concrete provider.
capabilities:
mobility.body_motion:
capability: capability.r2kernel.mobility.body_motion.v1
implementation:
kind: compound_subsystem
subsystem: compound.cleaner
interface: mobility
contract: capability.r2kernel.mobility.body_motion.v1
compound_subsystem is the normal implementation when behavior coordinates
several lower-level interfaces, applies safety checks, or owns state. A
direct_binding may expose exactly one public Control, Procedure, or Operation
when that narrow low-level outlet is intentional.
Package-Local Example
Trash collection and incineration are specific to the cleaner tutorial. They
live under capability.tutorial.robot_cleaner.* in the tutorial package spec
root. The official dictionary does not standardize this behavior.
This separation preserves both goals. Portable applications can target official capabilities, while specialized products can define precise private behavior without weakening gateway and component conformance.