-
Notifications
You must be signed in to change notification settings - Fork 665
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using a ReactiveSequence with asynch condition #875
Comments
I think it must be something related to
CheckJointVelocityMonitor1 inherits from
I'll work on getting a minimal example. |
ReactiveSequence
& BT::RosServiceNode
gets halted unexpectedly
With some more print statement debugging, I see the trouble is that the RosServiceNode is getting halted with every other call to
|
Well, I can achieve the result I want by hacking the source code of It would be nice if the BT could block while the service node is running but I don't see a way to do that. |
I can make a PR to check the node is synchronous during parsing, if you want. Or maybe just add a parameter to make |
You know what, it doesn't matter for my immediate application. I'll use a topic listener instead and check the timestamp of the latest message. Still curious if there was a better way to do this, though. |
ReactiveSequence
& BT::RosServiceNode
gets halted unexpectedlyReactiveSequence
& BT::RosServiceNode
gets halted unexpectedly
Yes, in ReactiveSequence, when a child node of the current tick returns RUNNING, it halt the other child nodes BehaviorTree.CPP/src/controls/reactive_sequence.cpp Lines 45 to 53 in 1fcb624
|
Yeah, the root cause was using an asynch node for the condition. It was dumb now that I think about it, but also not really clear in the docs. |
ReactiveSequence
& BT::RosServiceNode
gets halted unexpectedly
TLDR: don't use an asynch action for the condition in a ReactiveSequence.
I have a simple ReactiveSequence like this. It's very similar to the example here:
The prints when this BT is executing are:
CheckJointVelocityMonitor1
always returns SUCCESS. I've verified with print statements.DummyStatefulAction
appears to be ticked once and returns RUNNING, then it gets halted. I don't understand why it gets halted. (Edit: it gets halted because it returns RUNNING.)Here's the declaration for
DummyStatefulAction
, which inherits fromBT::StatefulActionNode
.Here's the definition for
DummyStatefulAction
. It only returns RUNNING, never SUCCESS or FAILURE.The text was updated successfully, but these errors were encountered: