Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <pr2_wrappers/tuck_arms_client.h>
00033
00034 namespace pr2_wrappers {
00035
00036 TuckArmsClient::TuckArmsClient(ros::NodeHandle &nh, const ros::Duration &timeout) :
00037 nh_(nh),
00038 timeout_(timeout),
00039 tuck_arms_action_client_("tuck_arms", true)
00040 {}
00041
00042 TuckArmsClient::~TuckArmsClient(){
00043 }
00044
00045 bool TuckArmsClient::tuckArms( bool tuck_right, bool tuck_left, bool wait)
00046 {
00047 std::string right_action = (tuck_right)?("tucking"):("untucking");
00048 std::string left_action = (tuck_left)?("tucking"):("untucking");
00049 ROS_INFO_STREAM("Calling tuck arms action: " << right_action << " right arm, " << left_action << " left arm.");
00050
00051 pr2_common_action_msgs::TuckArmsGoal goal;
00052 goal.tuck_left = tuck_left;
00053 goal.tuck_right = tuck_right;
00054 if(wait)
00055 {
00056 actionlib::SimpleClientGoalState state = tuck_arms_action_client_.sendGoalAndWait(goal, timeout_, ros::Duration(5.0));
00057 if(state.state_ != state.SUCCEEDED)
00058 {
00059 if(! state.isDone()) ROS_WARN("Tuck arms action timed out with result %d!", state.state_);
00060 else ROS_WARN("Tuck arms action returned with result %d!", state.state_);
00061 return false;
00062 }
00063 }
00064 else
00065 {
00066 tuck_arms_action_client_.sendGoal(goal);
00067 }
00068 return true;
00069 }
00070
00071 }