#pragma once #include "behaviortree_ros2/tree_execution_server.hpp" #include "behaviortree_cpp/loggers/bt_cout_logger.h" #include "tf2_ros/buffer.h" #include "tf2_ros/transform_listener.h" #include "glm/glm.hpp" namespace mg { class MgTreeExecutor : public BT::TreeExecutionServer { public: MgTreeExecutor(const rclcpp::NodeOptions opts); void onTreeCreated(BT::Tree& tree) override; void registerNodesIntoFactory(BT::BehaviorTreeFactory& factory) override; std::optional onTreeExecutionCompleted(BT::NodeStatus status, bool was_cancelled) override; std::pair position(); private: std::shared_ptr logger_cout_; tf2_ros::Buffer::SharedPtr tf_buffer_; std::shared_ptr tf_listener_; }; }