[ros-users] trigger goal from inside actionlib server

Axelrod, Benjamin baxelrod at irobot.com
Mon Oct 18 19:27:03 UTC 2010


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 at code.ros.org
[mailto:ros-users-bounces at 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
<blaise at willowgarage.com> wrote:

Hi Ben,


On Mon, Oct 18, 2010 at 9:06 AM, Axelrod, Benjamin <baxelrod at irobot.com>
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_1SimpleAction
Client.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 at code.ros.org
https://code.ros.org/mailman/listinfo/ros-users




-- 
Vijay Pradeep
Systems Engineer
Willow Garage, Inc.
vpradeep at willowgarage.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20101018/c05b577e/attachment-0003.html>


More information about the ros-users mailing list