Fuse the robot pose measured by all the available cameras and use it to compute the velocity commands that need to be sent to the robot in order to execute a given task.
This service depends on the following services:
- is-broker-events: Used to check which cameras are available.
- is-frame-transformation: Used grab the transformations from the robot frame to the world frame using the available cameras. Note that the transformations should be available somehow, this may imply a dependency on other services like is-aruco-detector, for instance.
- is-robots: This service expects the robot to have a gateway compliant with the standard API. Particularly, it expects the robot to have RobotGateway.{robot_id}.SetConfig implemented.
⇒ Triggered By | Triggers ⇒ | Description |
---|---|---|
📨 topic: RobotController.{robot_id}.SetTask 💎 schema: RobotTaskRequest |
📨 topic: {request.reply_to} 💎 schema: RobotTaskReply |
[RPC] Configure the current task to be executed. |
🕔 interval: {RobotTask.rate} |
📨 topic: RobotController.{robot_id}.Progress 💎 schema: RobotControllerProgress |
[Stream] Periodically publishes the progress of the current task being executed. The period is determined by the task sampling rate. |
{robot_id} = robot id passed in the configuration file.
{RobotTask.rate} = rate configured by the user when making a SetTask RPC.
The behavior of the service can be customized by passing a JSON configuration file as the first argument, e.g: ./service config.json
. The schema and documentation for this file can be found in src/is/robot-controller/conf/options.proto
. An example configuration file can be found in etc/conf/options.json
.
An example on how to configure a task and then watch its progress is provided by the python script in examples/client.py
.