BehaviorTree/BehaviorTree.ROS

AsyncActionNodes

Opened this issue · 1 comments

Hi,

First of all, thank you for the ROS examples!

I would like to create a reactiveSequence with the action node being a ROS action. I have created a behavior that just includes the ReactiveSequence with its children being a condition node that always returns true and prints a warning statement (to check whether it is being ticked) and an action node that works fine with my robot. The action node returns RUNNING as long as the action is active or pending which is exactly what I want, but the reactiveSequence does not tick the condition node anymore.

So, the following happens:

first_tick:
- condition.tick() -> returns SUCCESS
- action.tick() -> returns RUNNING

following_ticks:
- action.tick() -> returns RUNNING until action server returns result, then return SUCCESS

However, with the reactiveSequence I would expect the following:

first_tick:
- condition.tick() -> returns SUCCESS
- action.tick() -> returns RUNNING

following_ticks:
-  **condition.tick() -> returns SUCCESS**
-  action.tick() -> returns RUNNING until action server returns result, then return SUCCESS

One thing I can think of is that the action node is not an async action, could this be the case? I want the ros action goal to be cancelled as soon as the condition node returns FAILURE.

Hi @SDBonhof, I'm trying to write a wrapper for a Condition Node but I'm not managing to get it to work. Have you written a wrapper or how are you able to have conditions with BehaviorTree.ROS?

Thank you!