What is the recommended way
to handle multiple goal types with actionlib?
1) Put flags in the .action file such that it can handle
multiple goal types? This means always have a single action file for each
server/client pair.
2) Make two different .action files:
a.
Can a single server/client
pair handle multiple .action files?
b.
Should you have 2
actionlib servers and 2 actionlib clients? And if so, how can they interact?
For example, suppose you have
a node which drives a simple differential drive robot base. You want this
server to take either a drive straight distance, or the number of degrees to
rotate in place. Both actions can’t be going at the same
time. A new goal of one type should preempt the other. And the goal
specification, feedback, and result are different enough that it might make a
single .action file rather awkward.
I could imagine a single .action
file such as:
float32 driveStraightDistance
float32 rotateDegrees
bool driveStraight
#true to drive straight, false to rotate
---
float32 metersTraveled
float32 degreesRotated
bool driveStraight
#true if this goal was for a drive straight command
---
float32 metersTraveled
float32 degreesRotated
bool driveStraight #true
if this goal was for a drive straight command
Of course there are some
redundant fields there. This isn’t my exact use case, but you get
the idea…
Thanks,
-Ben
--
Ben Axelrod
Research Scientist
iRobot Corporation
8 Crosby Drive, Mail Stop 8-1
Bedford, MA 01730
(781) 430-3315 (Tel)
(781) 960-2628 (Fax)