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

Most upvoted comments

@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