Capabilities
A robot advertises what it can do as a capabilities manifest. Rover Nexus matches missions and operations to robots by capability.
The manifest has five parts: actions the robot can be told to perform,
sensors it reports, settings it exposes, resource producers (spatial
feature channels it can publish), and events it may emit. The invokable
controls are called actions; on the wire each is an ActionDescriptor. The
robot configuration still declares them in a [[services]] array, so you will see
both words: "action" is the message-contract term, [[services]] is the config
section name.
Why capabilities matter
In a heterogeneous fleet, robots are operated by what they can do, not by make or model. When the cloud needs to run an operation, it selects robots whose advertised capabilities satisfy the requirement.
Example: a robot that advertises a Mow action can be targeted by any mowing mission,
regardless of vendor.
Declaring capabilities
Capabilities are declared in the robot configuration, and robot
software can add to them at runtime by publishing a
runtimeCapabilities
uplink. The runtime manifest is layered on top of the configured one.
| Field | Purpose |
|---|---|
| Action name | The action the robot advertises (e.g. Mow). |
| Action type | trigger (one-shot) or setBool (on/off). |
| Required role | The minimum role needed to invoke it. |
| Parameters / settings | Optional metadata or settings associated with the action. |
For the exact config keys, see
Robot Configuration → [[services]]. For the wire
structs, see
Uplink Messages → runtimeCapabilities.
How matching works
- The robot advertises its capabilities to the cloud (via the agent).
- A mission or operation specifies the capabilities it requires.
- The cloud matches the operation to robots whose capabilities satisfy the requirement.
- The matched robot receives the operation as a mission command on the downlink.
Mission commands carry an actions list and field rules carry a capabilities
list, both naming the actions to fire or enable. See
Mission Commands and
Field Rules.
Roles
An action may declare a required role governing who is allowed to invoke it. Detailed role definitions and how they are evaluated are coming soon.
Invoking an action
The cloud invokes an advertised action with the
invokeAction
command on the downlink, carrying an ActionCall (actionName plus an optional
setting for setBool actions). The robot software receives it via the
command topic.
Related
- Robot configuration
- Mission Commands
- Supported Platforms
- Client Libraries: Cap'n Proto command schema and bindings