BTW, to solve this you probably want whatever is calling triggerGoalInternallyCallback to be on a different queue. Or you could spin up a thread to do the action triggering, and return immediately. On Mon, Oct 18, 2010 at 12:35 PM, Blaise Gassend wrote: > Where is your triggerGoalInternallyCallback being called from? If it > is being called from ROS on the same queue that your ActionServer is > using then I would expect this code to deadlock. Indeed, ROS would be > waiting for triggerGoalInternallyCallback to return before calling > subsequent callbacks, and those callbacks are necessary for the action > to get carried out. > > Blaise > > On Mon, Oct 18, 2010 at 12:27 PM, Axelrod, Benjamin wrote: >> Thanks.  I did try to create a client inside the server.  For some reason I >> thought it didn’t work. But maybe I messed something up.  I think it would >> hang when I called tempclient.waitForServer(). >> >> >> >> Vijay: I don’t want the server to be active on a null goal.  I do want a >> goal.  I want to provide the goal from inside the client.  This is to >> simplify testing and debugging. >> >> >> >> This is the pattern I am looking for: >> >> >> >> void MyActionServer::goalCallback() >> >> { >> >>     // accept goal from client >> >>     goal_ = *server_.acceptNewGoal(); >> >>     this->performAction(goal_); >> >> } >> >> >> >> void MyActionServer::triggerGoalInternallyCallback() >> >> { >> >>     // create a goal for internal testing >> >>     MyActionServerGoal tempGoal; >> >>     tempGoal.foo = “bar”; >> >>     this->performAction(tempGoal); >> >> } >> >> >> >> However, I have no performAction() method.  And because the service routine >> uses a timer, and relies on the server being active, it is not so easy to >> split out. >> >> >> >> So, ideally, I would have this: >> >> >> >> void MyActionServer::triggerGoalInternallyCallback() >> >> { >> >>     // create a goal for internal testing >> >>     MyActionServerGoal tempGoal; >> >>     tempGoal.foo = “bar”; >> >>     this->server_->setGoal(tempGoal); >> >> } >> >> >> >> Which would then trigger the MyActionServer::goalCallback(). >> >> >> >> >> >> >> >> From: ros-users-bounces@code.ros.org [mailto:ros-users-bounces@code.ros.org] >> On Behalf Of Vijay Pradeep >> Sent: Monday, October 18, 2010 1:21 PM >> To: User discussions >> Subject: Re: [ros-users] trigger goal from inside actionlib server >> >> >> >> Hi Ben, >> >> If this is what you want to do, I would go with Blaise's suggestion and send >> a goal using the action client with no callbacks registered. >> >> However, I'm not really sure why you would want to have the >> SimpleActionServer be active on null goal.  Understanding your use case >> would help us get a feel for exactly what functionality you need. >> >> Vijay >> >> On Mon, Oct 18, 2010 at 9:44 AM, Blaise Gassend >> wrote: >> >> Hi Ben, >> >> On Mon, Oct 18, 2010 at 9:06 AM, Axelrod, Benjamin >> wrote: >>> I have an actionlib server and I would like to be able to trigger its own >>> goal.  I don’t need any callbacks for goal accepted, feedback, or even >>> result.  I just want to manually set the server to be active.  Is this >>> possible?  I can’t figure out a way to do this. >> >> Why don't you use a SimpleActionClient to set the goal? If you don't >> specify the callbacks when setting you call sendGoal, those callbacks >> default to being null. Is that not what you want? >> >> http://www.ros.org/doc/api/actionlib/html/classactionlib_1_1SimpleActionClient.html#ae6a2e6904495e7c20c59e96af0d86801 >> >>> It might be nice if  actionlib::SimpleActionServer::acceptNewGoal() was >>> overloaded to accept a goal parameter.  That would set the server active, >>> but with NULL callbacks. >> >> Is there a strong reason for wanting to do this without explicitly >> having a client? >> >> Blaise >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users >> >> >> -- >> Vijay Pradeep >> Systems Engineer >> Willow Garage, Inc. >> vpradeep@willowgarage.com >> >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users >> >> >