From 546bb968663a60390b3b209c7c2a6c2c9bd9ac76 Mon Sep 17 00:00:00 2001 From: Elvin <45923444+EGAlberts@users.noreply.github.com> Date: Fri, 14 Mar 2025 11:12:41 +0100 Subject: [PATCH 1/2] mini example of bug --- main.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/main.cpp b/main.cpp index 8a05caf..d32bfc0 100644 --- a/main.cpp +++ b/main.cpp @@ -63,14 +63,17 @@ class ThinkWhatToSay : public BT::SyncActionNode int main() { - BehaviorTreeFactory factory; + // BehaviorTreeFactory factory; - factory.registerNodeType("SaySomething"); - factory.registerNodeType("ThinkWhatToSay"); + // factory.registerNodeType("SaySomething"); + // factory.registerNodeType("ThinkWhatToSay"); - auto tree = factory.createTreeFromText(xml_text); + // auto tree = factory.createTreeFromText(xml_text); - tree.tickWhileRunning(); + // tree.tickWhileRunning(); + + std::cout << convertFromString("IDLE") << std::endl; + std::cout << convertFromString("ACTION") << std::endl; return 0; } From afc82a7aa1b0248ad394fcdc2ca5341b26388c38 Mon Sep 17 00:00:00 2001 From: Elvin <45923444+EGAlberts@users.noreply.github.com> Date: Fri, 14 Mar 2025 11:27:18 +0100 Subject: [PATCH 2/2] add in error --- main.cpp | 61 +++++++++++++++++++++++--------------------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/main.cpp b/main.cpp index d32bfc0..ed33b43 100644 --- a/main.cpp +++ b/main.cpp @@ -8,72 +8,61 @@ static const char* xml_text = R"( - - - - - - + )"; // clang-format on -class SaySomething : public BT::SyncActionNode +class ReceiveNodeEnums : public BT::SyncActionNode { public: - SaySomething(const std::string& name, const BT::NodeConfig& config) : + ReceiveNodeEnums(const std::string& name, const BT::NodeConfig& config) : BT::SyncActionNode(name, config) - {} - - BT::NodeStatus tick() override { - std::string msg; - getInput("message", msg); - std::cout << msg << std::endl; - return BT::NodeStatus::SUCCESS; + // NodeType another_node_type; + // getInput("input_node_type", another_node_type); Uncomment to trigger Seg fault. } - static BT::PortsList providedPorts() + BT::NodeStatus tick() override { - return {BT::InputPort("message")}; - } -}; + NodeStatus node_status; + NodeType node_type; + + getInput("input_node_status", node_status); + getInput("input_node_type", node_type); -class ThinkWhatToSay : public BT::SyncActionNode -{ - public: - ThinkWhatToSay(const std::string& name, const BT::NodeConfig& config) : - BT::SyncActionNode(name, config) - {} + std::cout << "Inside tick() with getInput:" << std::endl; + std::cout << node_status << std::endl; + std::cout << node_type << std::endl << std::endl; - BT::NodeStatus tick() override - { - setOutput("text", "The answer is 42"); return BT::NodeStatus::SUCCESS; } static BT::PortsList providedPorts() { - return {BT::OutputPort("text")}; + return { + BT::InputPort("input_node_status"), + BT::InputPort("input_node_type"), + }; } }; + int main() { - // BehaviorTreeFactory factory; - - // factory.registerNodeType("SaySomething"); - // factory.registerNodeType("ThinkWhatToSay"); + BehaviorTreeFactory factory; - // auto tree = factory.createTreeFromText(xml_text); + factory.registerNodeType("ReceiveNodeEnums"); - // tree.tickWhileRunning(); + auto tree = factory.createTreeFromText(xml_text); + tree.tickWhileRunning(); + std::cout << "Without getInput: " << std::endl; std::cout << convertFromString("IDLE") << std::endl; - std::cout << convertFromString("ACTION") << std::endl; + std::cout << convertFromString("Control") << std::endl << std::endl; return 0; }