BehaviorTree.CPP: Issue with ports not being remapped with subtreeplus on v3.8
Here’s my code.
I have the outermost tree passing down values to a subtree which is then passing down values to another subtree which ticks a navigation tree. Everything with the __autoremap
flag set to true. Very simple.
<root main_tree_to_execute="Tree1">
<include path="./navigation_tree.xml"/>
<BehaviorTree ID="Tree1">
<Sequence>
<SubTreePlus ID="Tree2" __autoremap="true"/>
</Sequence>
</BehaviorTree>
<BehaviorTree ID="Tree2">
<Sequence>
<SubTreePlus ID="Tree3" __autoremap="true"/>
</Sequence>
</BehaviorTree>
<BehaviorTree ID="Tree3">
<Sequence>
<SubTreePlus ID="NavigateTree" __autoremap="true"/>
</Sequence>
</BehaviorTree>
</root>
I expect there not to be any issues, however for some reason I’m getting an error
[bt_navigator]: Exception when loading BT: Blackboard::get() error. Missing key [node]
I found that the issue lies specifically in the switch from Tree2 to Tree3. Every other subtree node does successfully remap everything.
If I change one line
<SubTreePlus ID="Tree3" __autoremap="true"/>
To
<SubTreePlus ID="Tree3" goal="{goal}" node="{node}" bt_loop_duration="{bt_loop_duration}" tf_buffer="{tf_buffer}" server_timeout="{server_timeout}" />
It all works fine.
What’s up here?
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 36 (11 by maintainers)
Commits related to this issue
- fix issue #563 — committed to BehaviorTree/BehaviorTree.CPP by facontidavide a year ago
- fix issue #563 — committed to BehaviorTree/BehaviorTree.CPP by facontidavide a year ago
@Rid0n to be clear: I am grateful for the time you spent so far. I was able to correct some issues and improve the library thanks to your error report.
But I need more information to help you further.
I have no idea how it could possibly work before
Hi, problem fixed in branch issue563.
Would you be so kind to test it?
Once you confirm, I will merge and release a new version