35 #ifndef ROS_CLIENT_HPP    36 #define ROS_CLIENT_HPP    39 #include <control_msgs/FollowJointTrajectoryAction.h>    40 #include <control_msgs/FollowJointTrajectoryActionGoal.h>    41 #include <control_msgs/FollowJointTrajectoryGoal.h>    42 #include <trajectory_msgs/JointTrajectoryPoint.h>    67   control_msgs::FollowJointTrajectoryGoal 
goal;
    71           "Your report to https://github.com/start-jsk/rtmros_hironx/issues "    72           "about the issue you are seeing is appreciated.")
    76   explicit ROS_Client(std::vector<std::string> joingroups) :
    78           "Your report to https://github.com/start-jsk/rtmros_hironx/issues "    79           "about the issue you are seeing is appreciated.")
   107     static TrajClient aclient_larm(
"/larm_controller/joint_trajectory_action", 
true);
   108     static TrajClient aclient_rarm(
"/rarm_controller/joint_trajectory_action", 
true);
   109     static TrajClient aclient_head(
"/head_controller/joint_trajectory_action", 
true);
   110     static TrajClient aclient_torso(
"/torso_controller/joint_trajectory_action", 
true);
   114     goal_larm = control_msgs::FollowJointTrajectoryGoal();
   116     goal_larm.trajectory.joint_names.push_back(
"LARM_JOINT0");
   117     goal_larm.trajectory.joint_names.push_back(
"LARM_JOINT1");
   118     goal_larm.trajectory.joint_names.push_back(
"LARM_JOINT2");
   119     goal_larm.trajectory.joint_names.push_back(
"LARM_JOINT3");
   120     goal_larm.trajectory.joint_names.push_back(
"LARM_JOINT4");
   121     goal_larm.trajectory.joint_names.push_back(
"LARM_JOINT5");
   125     goal_rarm = control_msgs::FollowJointTrajectoryGoal();
   126     goal_rarm.trajectory.joint_names.push_back(
"RARM_JOINT0");
   127     goal_rarm.trajectory.joint_names.push_back(
"RARM_JOINT1");
   128     goal_rarm.trajectory.joint_names.push_back(
"RARM_JOINT2");
   129     goal_rarm.trajectory.joint_names.push_back(
"RARM_JOINT3");
   130     goal_rarm.trajectory.joint_names.push_back(
"RARM_JOINT4");
   131     goal_rarm.trajectory.joint_names.push_back(
"RARM_JOINT5");
   134     goal_head = control_msgs::FollowJointTrajectoryGoal();
   135     goal_head.trajectory.joint_names.push_back(
"HEAD_JOINT0");
   136     goal_head.trajectory.joint_names.push_back(
"HEAD_JOINT1");
   139     goal_torso = control_msgs::FollowJointTrajectoryGoal();
   140     goal_torso.trajectory.joint_names.push_back(
"CHEST_JOINT0");
   144     std::cout << 
"Torso: [";
   145     for (std::vector<std::string>::iterator 
name = 
goal_torso.trajectory.joint_names.begin();
   147       std::cout << *
name << 
" ";
   148     std::cout << 
"]\nHead: [";
   149     for (std::vector<std::string>::iterator 
name = 
goal_head.trajectory.joint_names.begin();
   151       std::cout << *
name << 
" ";
   152     std::cout << 
"]\nL-Arm: [";
   153     for (std::vector<std::string>::iterator 
name = 
goal_larm.trajectory.joint_names.begin();
   155       std::cout << *
name << 
" ";
   156     std::cout << 
"]\nR-Arm: [";
   157     for (std::vector<std::string>::iterator 
name = 
goal_rarm.trajectory.joint_names.begin();
   159       std::cout << *
name << 
" ";
   160     std::cout << 
"]" << std::endl;
   169     std::vector<double> POSITIONS_TORSO_DEG(1, 0.0);
   172     std::vector<double> POSITIONS_HEAD_DEG(2, 0.0);
   175     std::vector<double> POSITIONS_LARM_DEG(6);
   176     POSITIONS_LARM_DEG[0] = 0.6;
   177     POSITIONS_LARM_DEG[1] = 0.0;
   178     POSITIONS_LARM_DEG[2] = -100;
   179     POSITIONS_LARM_DEG[3] = -15.2;
   180     POSITIONS_LARM_DEG[4] = 9.4;
   181     POSITIONS_LARM_DEG[5] = -3.2;
   184     std::vector<double> POSITIONS_RARM_DEG(6);
   185     POSITIONS_RARM_DEG[0] = -0.6;
   186     POSITIONS_RARM_DEG[1] = 0;
   187     POSITIONS_RARM_DEG[2] = -100;
   188     POSITIONS_RARM_DEG[3] = 15.2;
   189     POSITIONS_RARM_DEG[4] = 9.4;
   190     POSITIONS_RARM_DEG[5] = 3.2;
   201     TrajClient* action_client;
   205       action_client = 
new TrajClient(
"torso_controller/joint_trajectory_action", 
true);
   210       action_client = 
new TrajClient(
"head_controller/joint_trajectory_action", 
true);
   215       action_client = 
new TrajClient(
"larm_controller/joint_trajectory_action", 
true);
   220       action_client = 
new TrajClient(
"rarm_controller/joint_trajectory_action", 
true);
   226       trajectory_msgs::JointTrajectoryPoint pt;
   227       pt.positions = positions_radian;
   229       goal.trajectory.points.clear();
   230       goal.trajectory.points.push_back(pt);
   236         ROS_INFO(
"wait_for_result for the joint group %s = %d", groupname.c_str(), action_client->
waitForResult());
   247     delete action_client;
   251   void set_joint_angles_deg(std::string groupname, std::vector<double> positions_deg, 
double duration = 7.0, 
bool wait =
   283     for (std::vector<std::string>::iterator 
name = groupnames.begin(); 
name != groupnames.end(); ++
name)
   284       std::cout << *
name << 
" ";
   285     std::cout << std::endl;
   287     GR_TORSO = groupnames[0];
   288     GR_HEAD = groupnames[1];
   289     GR_RARM = groupnames[2];
   290     GR_LARM = groupnames[3];
   297     std::vector<double> list_rad;
   298     list_rad.reserve(list_degree.size());
   299     for (std::vector<double>::iterator deg = list_degree.begin(); deg != list_degree.end(); ++deg)
   301       double rad = *deg * 
M_PI / 180.0;
   302       list_rad.push_back(rad);
   303       ROS_INFO(
"Position deg=%lf rad=%lf", *deg, rad);
 std::vector< double > to_rad_list(std::vector< double > list_degree)
bool waitForServer(const ros::Duration &timeout=ros::Duration(0, 0)) const 
ROS_Client(const ROS_Client &obj)
bool waitForResult(const ros::Duration &timeout=ros::Duration(0, 0))
actionlib::SimpleActionClient< control_msgs::FollowJointTrajectoryAction > TrajClient
void go_init(double task_duration=7.0)
control_msgs::FollowJointTrajectoryGoal goal_head
control_msgs::FollowJointTrajectoryGoal goal_rarm
void set_joint_angles_rad(std::string groupname, std::vector< double > positions_radian, double duration=7.0, bool wait=false)
ROS_Client & operator=(const ROS_Client &obj)
void sendGoal(const Goal &goal, SimpleDoneCallback done_cb=SimpleDoneCallback(), SimpleActiveCallback active_cb=SimpleActiveCallback(), SimpleFeedbackCallback feedback_cb=SimpleFeedbackCallback())
void set_groupnames(std::vector< std::string > groupnames)
control_msgs::FollowJointTrajectoryGoal goal_torso
void set_joint_angles_deg(std::string groupname, std::vector< double > positions_deg, double duration=7.0, bool wait=false)
void init_action_clients()
control_msgs::FollowJointTrajectoryGoal goal
ROS_Client(std::vector< std::string > joingroups)
control_msgs::FollowJointTrajectoryGoal goal_larm
const std::string MSG_ASK_ISSUEREPORT