move_arm_pose_goal.cpp
Go to the documentation of this file.
00001 #include <ros/ros.h>
00002 #include <actionlib/client/simple_action_client.h>
00003 #include <arm_navigation_msgs/MoveArmAction.h>
00004 
00005 int main(int argc, char **argv){
00006   ros::init (argc, argv, "move_arm_joint_goal_test");
00007   ros::NodeHandle nh;
00008   actionlib::SimpleActionClient<arm_navigation_msgs::MoveArmAction> move_arm("move_right_arm",true);
00009 
00010   move_arm.waitForServer();
00011   ROS_INFO("Connected to server");
00012 
00013   arm_navigation_msgs::MoveArmGoal goalA;
00014 
00015   goalA.motion_plan_request.group_name = "right_arm";
00016   goalA.motion_plan_request.num_planning_attempts = 1;
00017   goalA.motion_plan_request.allowed_planning_time = ros::Duration(5.0);
00018 
00019   nh.param<std::string>("planner_id",goalA.motion_plan_request.planner_id,std::string(""));
00020   nh.param<std::string>("planner_service_name",goalA.planner_service_name,std::string("ompl_planning/plan_kinematic_path"));
00021   goalA.motion_plan_request.goal_constraints.position_constraints.resize(1);
00022   goalA.motion_plan_request.goal_constraints.position_constraints[0].header.stamp = ros::Time::now();
00023   goalA.motion_plan_request.goal_constraints.position_constraints[0].header.frame_id = "torso_lift_link";
00024     
00025   goalA.motion_plan_request.goal_constraints.position_constraints[0].link_name = "r_wrist_roll_link";
00026   goalA.motion_plan_request.goal_constraints.position_constraints[0].position.x = 0.75;
00027   goalA.motion_plan_request.goal_constraints.position_constraints[0].position.y = -0.188;
00028   goalA.motion_plan_request.goal_constraints.position_constraints[0].position.z = 0;
00029     
00030   goalA.motion_plan_request.goal_constraints.position_constraints[0].constraint_region_shape.type = arm_navigation_msgs::Shape::BOX;
00031   goalA.motion_plan_request.goal_constraints.position_constraints[0].constraint_region_shape.dimensions.push_back(0.02);
00032   goalA.motion_plan_request.goal_constraints.position_constraints[0].constraint_region_shape.dimensions.push_back(0.02);
00033   goalA.motion_plan_request.goal_constraints.position_constraints[0].constraint_region_shape.dimensions.push_back(0.02);
00034 
00035   goalA.motion_plan_request.goal_constraints.position_constraints[0].constraint_region_orientation.w = 1.0;
00036   goalA.motion_plan_request.goal_constraints.position_constraints[0].weight = 1.0;
00037 
00038   goalA.motion_plan_request.goal_constraints.orientation_constraints.resize(1);
00039   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].header.stamp = ros::Time::now();
00040   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].header.frame_id = "torso_lift_link";    
00041   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].link_name = "r_wrist_roll_link";
00042   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].orientation.x = 0.0;
00043   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].orientation.y = 0.0;
00044   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].orientation.z = 0.0;
00045   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].orientation.w = 1.0;
00046     
00047   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].absolute_roll_tolerance = 0.04;
00048   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].absolute_pitch_tolerance = 0.04;
00049   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].absolute_yaw_tolerance = 0.04;
00050 
00051   goalA.motion_plan_request.goal_constraints.orientation_constraints[0].weight = 1.0;
00052 
00053   if (nh.ok())
00054   {
00055     bool finished_within_time = false;
00056     move_arm.sendGoal(goalA);
00057     finished_within_time = move_arm.waitForResult(ros::Duration(200.0));
00058     if (!finished_within_time)
00059     {
00060       move_arm.cancelGoal();
00061       ROS_INFO("Timed out achieving goal A");
00062     }
00063     else
00064     {
00065       actionlib::SimpleClientGoalState state = move_arm.getState();
00066       bool success = (state == actionlib::SimpleClientGoalState::SUCCEEDED);
00067       if(success)
00068         ROS_INFO("Action finished: %s",state.toString().c_str());
00069       else
00070         ROS_INFO("Action failed: %s",state.toString().c_str());
00071     }
00072   }
00073   ros::shutdown();
00074 }


pr2_arm_navigation_tutorials
Author(s): Sachin Chitta
autogenerated on Tue Apr 22 2014 19:29:47