This ROS package provides both the module and behavior tree layers to control the play motion feature of the TIAGo robot. The play motion feature allows the robot to execute a predefined motion including all the joints of the robot (arms, grippers, torso and head) but not the mobile platform.
For further information on the TIAGo native interface to the play motion feature see chapter 29 in the [robot's handbook](https://drive.google.com/file/d/1gX6Twci7MKl5pHaDE6Qt4hsYe9T1PET3/view?usp=sharing).
For further details on the concept of module check the [iri_ros_tools documentation](https://gitlab.iri.upc.edu/labrobotica/ros/iri_core/iri_ros_tools#iri-ros-modules).
For further details on the use of behavior trees at IRI check the [iri_behaviortree documentation](https://gitlab.iri.upc.edu/labrobotica/ros/iri_core/iri_behaviortree).
## Module layer
The main features provided by this module are:
* The desired motion is identified by its name.
* Since each robot can have different pre-defined motions, the existence of the desired motion is checked before trying to execute it.
* Interfaces with the TIAGO native play motion action server
* Handles all possible outcomes of the action.
### ROS interfaces
#### Action clients
***play_motion**<play_motion_msgs::PlayMotionAction>: Client of the play motion action of the TIAGo robot.
#### Parameters
***play_motion_module_rate_hz** (default=1.0):
***play_num_retries** (default=1): The maximum number of attempts to start the action before reporting and error.
***play_feedback_watchdog_time_s** (default=1.0): The maximum time between two consecutive feedback messages before reporting an error.
***play_enable_watchdog** (defaul=False): Whether to enable or disable the watchdog feature.
***play_timeout_s** (default=10.0): The maximum time allowed to complete the action before reporting an error.
***play_enable_timeout** (default=True=: Whether to enable or disable the timeout feature.
***play_enabled** (default=True): Whether to enable or disable the module. If disabled, all action will immediately finish successfully.
See the [action wrapper documentation](https://gitlab.iri.upc.edu/labrobotica/ros/iri_core/iri_ros_tools#action-client-wrapper) for more detailed description of these parameters.
***motions_param_path** (default=/play_motion/motions): parameter server namspace where all motions are defined.