@startuml plugin_connectivity skinparam fixCircleLabelOverlapping true skinparam SequenceLifeLineBorderColor #B0B0B0 skinparam SequenceDividerBorderColor Gray skinparam SequenceGroupBorderColor Gray skinparam sequenceMessageAlign Center skinparam ArrowColor #404040 participant "ROS ActionClient" as client participant ActorServer as server participant ActorPlugin as plugin note left of client: Protocol: /note left of server: ros_action /note left of plugin: MessageQueue ==Goal== activate server activate plugin [-> client: create ActionClient activate client client -> server: goal request server -->> client: goal response alt goal accepted server ->> plugin: set state and target plugin -->> server: state change == Feedback== group opt par [abort of current action] client->server: abort request server->plugin: set state to Idle server-->>client: abort response end loop until action is completed or aborted plugin -->> server: feedback server -->> client: feedback callback end ==Result== plugin -->> server: state change server -->> client: result callback end destroy client @enduml