Why when a fleetadapter is launched, although the susbcriber to task_api_request is the rmf_dispatcher, the fleet_adapter_node also appears as subscriber? (#332)

Posted by @TheConstructAi:

ros2 topic info /task_api_requests --verbose
Type: rmf_task_msgs/msg/ApiRequest

Publisher count: 1

Node name: simple_api_server
Node namespace: /
Topic type: rmf_task_msgs/msg/ApiRequest
Endpoint type: PUBLISHER
GID: 01.10.4e.dc.74.ad.03.f2.f8.3f.39.46.00.00.15.03.00.00.00.00.00.00.00.00
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: TRANSIENT_LOCAL
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite

Subscription count: 2

Node name: rmf_dispatcher_node
Node namespace: /
Topic type: rmf_task_msgs/msg/ApiRequest
Endpoint type: SUBSCRIPTION
GID: 01.10.25.5c.75.a2.6b.74.b8.8c.e7.05.00.00.17.04.00.00.00.00.00.00.00.00
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: TRANSIENT_LOCAL
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite

Node name: ecobot_fleet_adapter
Node namespace: /
Topic type: rmf_task_msgs/msg/ApiRequest
Endpoint type: SUBSCRIPTION
GID: 01.10.75.da.27.4c.a7.1e.29.98.30.a6.00.00.23.04.00.00.00.00.00.00.00.00
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: TRANSIENT_LOCAL
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite

Chosen answer

Answer chosen by @TheConstructAi at 2023-04-06T10:11:56Z.
Answered by @mxgrey:

Some API requests are handled directly by the fleet adapters and not by dispatcher, especially what we call “direct task requests” which use the robot_task_request.json schema.

If a deployment chooses to only use direct task requests then it doesn’t even need to launch the task dispatcher node.

Posted by @mxgrey:

Some API requests are handled directly by the fleet adapters and not by dispatcher, especially what we call “direct task requests” which use the robot_task_request.json schema.

If a deployment chooses to only use direct task requests then it doesn’t even need to launch the task dispatcher node.


This is the chosen answer.