Capabilities2 server allows interaction with the capabilities2 API. It is a reimplementation of the capabilities package using C++ (original capabilities package was written in Python 2.7). In addition to C++ reimplementation being more resource efficient, this package extends the capabilities package features in following ways,
- Database support for storing capabilities.
- Capability registration through service calls.
- Abstracted providers through a runners API see capabilities2_runner
The capabilities2 server is implemented as a ROS2 Component. The server can be specialised by composing it with another Component that adds domain logic.
source install/setup.bash
ros2 launch capabilities2_server server.launch.pyRefer capabilities2_server/config/capabilities.yaml for launch arguments.
The capabilities2 server depends on the following bondcpp ROS2 package. See the package.xml for the full list of dependencies. Notably, the capabilities2 server depends on the following system dependencies:
sqlite3yaml-cpptinyxml2
The capabilities2 server provides the following ROS2 API:
The capabilities2 server exposes the following Service API (see capabilities2_msgs for data types):
| Topic | Service Message | Description |
|---|---|---|
~/get_interfaces |
GetInterfaces.srv |
Get the interfaces provided by the capabilities server |
~/get_semantic_interfaces |
GetSemanticInterfaces.srv |
Get the semantic interfaces provided by the capabilities server |
~/get_providers |
GetProviders.srv |
Get the providers available on the capabilities server |
~/get_remappings |
GetRemappings.srv |
Get the remappings for a capability |
~/get_capability_spec |
GetCapabilitySpec.srv |
Get a raw specifications for a capability |
~/get_capability_specs |
GetCapabilitySpecs.srv |
Get all raw specifications in the capabilities server |
~/get_running_capabilities |
GetRunningCapabilities.srv |
Get the currently running capabilities |
~/establish_bond |
EstablishBond.srv |
Establish a bond with the capabilities server to use capabilities |
~/use_capability |
UseCapability.srv |
Use a capability - must be bonded |
~/free_capability |
FreeCapability.srv |
Free a capability (when done using it, when all users are done the capability is freed) - must be bonded |
~/start_capability |
StartCapability.srv |
Start a capability (this is a forceful start, and ignores use and free logic) |
~/stop_capability |
StopCapability.srv |
Stop a capability (this is a forceful stop, and ignores use and free logic) |
~/register_capability |
RegisterCapability.srv |
Register a capability with the capabilities server |
~/trigger_capability |
TriggerCapability.srv |
Trigger a capability - must be bonded |
~/connect_capability |
ConnectCapability.srv |
Configure a capability with on_start, on_end, on_success, on_failure event connections - must be bonded |
The capabilities2 server exposes the following Topics API:
| Topic | Message | Description |
|---|---|---|
~/events |
CapabilityEventStamped.msg |
Publish capability events |
~/bonds |
bond/Status.msg |
Maintain bonds with capability users - Bond API |