Ask Your Question

actionlib sendgoal arguments

asked 2016-08-06 23:30:40 -0500

nico_lauda gravatar image

updated 2016-08-07 12:43:37 -0500

Hi everybody!

I'm following the ROS-I tutorial ( ), and I get stuck when I have to send a goal to the server using the sendGoal method. Reading the sendGoal reference ( ) I should provide the goal and three callback functions.

Do I have to manually define those callback functions?

However in line 32, I tried to insert those callback funcs as indicated in the reference but Eclipse says "Method 'sendGoal' could not be resolved". What should I do?

Thank you!

  #include <collision_avoidance_pick_and_place/pick_and_place.h>

      - Turn the vacuum gripper on or off.
      - Use the grasp action client to send an grasp request to the grasp server.
      - Confirm that the gripper was successfully opened or closed and exit on error
void collision_avoidance_pick_and_place::PickAndPlace::set_gripper(bool do_grasp)
//  ROS_ERROR_STREAM("set_gripper is not implemented yet.  Aborting."); exit(1);

  // task variables
  object_manipulation_msgs::GraspHandPostureExecutionGoal grasp_goal;
  bool success;

  // set the corresponding gripper action in the "grasp_goal" object.
  if (do_grasp)
    grasp_goal.goal = object_manipulation_msgs::GraspHandPostureExecutionGoal::GRASP;
    grasp_goal.goal = object_manipulation_msgs::GraspHandPostureExecutionGoal::RELEASE;

  /* Fill Code:
   * Goal:
   * - Send the grasp goal to the server.
   * Hints:
   * - Use the "sendGoal" method of the grasp client "grasp_action_client_ptr"
   * to make a call to the server.
  /* ========  ENTER CODE HERE ======== */
  grasp_action_client_ptr.sendGoal(grasp_goal.goal, SimpleDoneCallback, SimpleActiveCallback, SimpleFeedbackCallback) ;

  /* Fill Code:
   * Goal:
   * - Confirm that client service call succeeded.
   * Hints:
   * - Use the "waitForResult" method of the client to wait for completion.
   * - Give "waitForResult" a timeout value of 4 seconds
   * - Timeouts in ros can be created using "ros::Duration(4.0f)".
   * - Save returned boolean from waitForResult() in the "success" variable.
  /* ========  ENTER CODE HERE ======== */

    if (do_grasp)
      ROS_INFO_STREAM("Gripper closed");
      ROS_INFO_STREAM("Gripper opened");
    ROS_ERROR_STREAM("Gripper failure");
edit retag flag offensive close merge delete



You have a thing named grasp_action_client_ptr, which is probably a pointer, but you're trying to use the dot operator on it. Perhaps you want the deference -> instead?

ahendrix gravatar image ahendrix  ( 2016-08-07 15:01:56 -0500 )edit

Thank you for your comment!. I changed the operator like you said, and now sendGoal is recognized, but I get "Invalid arguments" error. It seems that it doesn't recognize the callback functions. I don't care of the callback fcns, but if I don't put them in the sendGoal I get the error as well.

nico_lauda gravatar image nico_lauda  ( 2016-08-07 15:29:22 -0500 )edit

The API docs you link to show defaults for the callbacks, so I don't think you need to provide those arguments. It looks like you're following a tutorial that is mostly pre-filled code, so I'd recommend that you read the examples again.

ahendrix gravatar image ahendrix  ( 2016-08-07 17:03:59 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2016-08-08 18:28:03 -0500

nico_lauda gravatar image

I write this answer in order to help someone else in the future that will find similar difficulties.

I have found here the same code already solved. On line 38 just write grasp_action_client_ptr.sendGoal(grasp_goal); and It works.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2016-08-06 23:30:40 -0500

Seen: 394 times

Last updated: Aug 08 '16