Describe the bug
Hello,
It seems like subtrees inputs that are boolean are interpreted as strings in the subtree scripts.
How to Reproduce
With this code :
#include <behaviortree_cpp/behavior_tree.h>
#include <behaviortree_cpp/bt_factory.h>
#include <print>
constexpr auto print_hello(const BT::TreeNode &node) {
std::println("hello world");
return BT::NodeStatus::SUCCESS;
}
int main(int argc, char *argv[]) {
auto tree = [] {
BT::BehaviorTreeFactory factory;
factory.registerSimpleAction("PrintHello", print_hello);
factory.registerBehaviorTreeFromFile("./scripting.xml");
return factory.createTree("Main");
}();
auto bb = tree.rootBlackboard();
tree.tickWhileRunning();
return 0;
}
And this tree :
<?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4">
<BehaviorTree ID="Main">
<SubTree ID="MaybePrintHello"
do_print="true"/>
</BehaviorTree>
<BehaviorTree ID="MaybePrintHello">
<PrintHello _skipIf="!do_print"/>
</BehaviorTree>
<!-- Description of Node Models (used by Groot) -->
<TreeNodesModel>
<SubTree ID="MaybePrintHello"
editable="true">
<input_port name="do_print"
type="bool"/>
</SubTree>
<Action ID="PrintHello"
editable="true"/>
</TreeNodesModel>
</root>
We get the following exception :
Exception in node 'MaybePrintHello::1' [SubTree]: Error in script [!do_print]
Invalid operator for std::string
I tried with do_print == true and I don't get the exception, but "hello world" is not printed.
Describe the bug
Hello,
It seems like subtrees inputs that are boolean are interpreted as strings in the subtree scripts.
How to Reproduce
With this code :
And this tree :
We get the following exception :
I tried with
do_print == trueand I don't get the exception, but "hello world" is not printed.