Actions

A bunch of action servers for performing basic robocup actions.

The robocup @work domain is partitioned into 6 basic actions

  • move base

  • pick

  • perceive

  • place

  • stage

  • unstage

Each action is implemented as SMACH state machines which are wrapped with ActionServer. An ActionClient needs to send request using GenericExecuteGoal.

This request message contains a single dictionary kind of message called parameters of type diagnostic_msgs/KeyValue[].

# goal definition
diagnostic_msgs/KeyValue[] parameters
---
# result definition
diagnostic_msgs/KeyValue[] results
---
# feedback
string current_state
string text

Each server needs different information from this request message. Please see the following files for detailed info:

Additionally, Planner executor also sends next_action as one of the parameter. This can be used by action servers to have parallel execution of arm while the base is in motion to save som time. At the moment, only Move base safe is using this information.

This package also contains Utils.py which contains utility functions for action servers.

Usage

roscore
roslaunch mir_actions run_action_servers.launch

To execute an action, call the corresponding action client with appropriate arguments. For example, move base safe:

rosrun mir_move_base_safe move_base_safe_client_test.py WS01