From fc86eddb2d9a8ff9512a3d36d20756d46786ce30 Mon Sep 17 00:00:00 2001 From: matt-chen <chenbo@yunji.ai> Date: Thu, 24 Oct 2019 20:24:42 +0800 Subject: [PATCH] fix the unexpected override --- .../include/nav2_behavior_tree/back_up_action.hpp | 4 ++-- .../include/nav2_behavior_tree/bt_action_node.hpp | 15 ++++++++++++--- .../nav2_behavior_tree/bt_service_node.hpp | 15 ++++++++++++--- .../compute_path_to_pose_action.hpp | 4 ++-- .../nav2_behavior_tree/follow_path_action.hpp | 4 ++-- .../navigate_to_pose_action.hpp | 4 ++-- .../include/nav2_behavior_tree/spin_action.hpp | 4 ++-- .../include/nav2_behavior_tree/wait_action.hpp | 4 ++-- 8 files changed, 36 insertions(+), 18 deletions(-) diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/back_up_action.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/back_up_action.hpp index abc421cb..3dd4e9b2 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/back_up_action.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/back_up_action.hpp @@ -52,10 +52,10 @@ public: static BT::PortsList providedPorts() { - return { + return providedBasicPorts({ BT::InputPort<double>("backup_dist", -0.15, "Distance to backup"), BT::InputPort<double>("backup_speed", 0.025, "Speed at which to backup") - }; + }); } }; diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/bt_action_node.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/bt_action_node.hpp index af4b70b5..e069794f 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/bt_action_node.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/bt_action_node.hpp @@ -62,12 +62,21 @@ public: { } - // Any BT node that accepts parameters must provide a requiredNodeParameters method - static BT::PortsList providedPorts() + // Any subclass of BtActionNode that accepts parameters must provide a providedPorts method + // and call providedBasicPorts in it. + static BT::PortsList providedBasicPorts(BT::PortsList addition) { - return { + BT::PortsList basic = { BT::InputPort<std::chrono::milliseconds>("server_timeout") }; + basic.insert(addition.begin(), addition.end()); + + return basic; + } + + static BT::PortsList providedPorts() + { + return providedBasicPorts({}); } // Derived classes can override any of the following methods to hook into the diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp index 2310c865..76fbdcdf 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp @@ -60,13 +60,22 @@ public: { } - // Any BT node that accepts parameters must provide a requiredNodeParameters method - static BT::PortsList providedPorts() + // Any subclass of BtServiceNode that accepts parameters must provide a providedPorts method + // and call providedBasicPorts in it. + static BT::PortsList providedBasicPorts(BT::PortsList addition) { - return { + BT::PortsList basic = { BT::InputPort<std::string>("service_name", "please_set_service_name_in_BT_Node"), BT::InputPort<std::chrono::milliseconds>("server_timeout") }; + basic.insert(addition.begin(), addition.end()); + + return basic; + } + + static BT::PortsList providedPorts() + { + return providedBasicPorts({}); } // The main override required by a BT service diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/compute_path_to_pose_action.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/compute_path_to_pose_action.hpp index 91e8bc48..b967fee3 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/compute_path_to_pose_action.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/compute_path_to_pose_action.hpp @@ -53,10 +53,10 @@ public: static BT::PortsList providedPorts() { - return { + return providedBasicPorts({ BT::OutputPort<nav_msgs::msg::Path>("path", "Path created by ComputePathToPose node"), BT::InputPort<geometry_msgs::msg::PoseStamped>("goal", "Destination to plan to") - }; + }); } private: diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/follow_path_action.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/follow_path_action.hpp index 0ddcb3bb..28e4084b 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/follow_path_action.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/follow_path_action.hpp @@ -56,9 +56,9 @@ public: static BT::PortsList providedPorts() { - return { + return providedBasicPorts({ BT::InputPort<nav_msgs::msg::Path>("path", "Path to follow"), - }; + }); } }; diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/navigate_to_pose_action.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/navigate_to_pose_action.hpp index e3dca52f..8868b5c5 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/navigate_to_pose_action.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/navigate_to_pose_action.hpp @@ -58,10 +58,10 @@ public: // Any BT node that accepts parameters must provide a requiredNodeParameters method static BT::PortsList providedPorts() { - return { + return providedBasicPorts({ BT::InputPort<geometry_msgs::msg::Point>("position", "0;0;0", "Position"), BT::InputPort<geometry_msgs::msg::Quaternion>("orientation", "0;0;0;0", "Orientation") - }; + }); } }; diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/spin_action.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/spin_action.hpp index 38c11dc3..f7da51f4 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/spin_action.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/spin_action.hpp @@ -43,9 +43,9 @@ public: static BT::PortsList providedPorts() { - return { + return providedBasicPorts({ BT::InputPort<double>("spin_dist", 1.57, "Spin distance") - }; + }); } }; diff --git a/nav2_behavior_tree/include/nav2_behavior_tree/wait_action.hpp b/nav2_behavior_tree/include/nav2_behavior_tree/wait_action.hpp index f31a8c28..deb76885 100644 --- a/nav2_behavior_tree/include/nav2_behavior_tree/wait_action.hpp +++ b/nav2_behavior_tree/include/nav2_behavior_tree/wait_action.hpp @@ -47,9 +47,9 @@ public: // Any BT node that accepts parameters must provide a requiredNodeParameters method static BT::PortsList providedPorts() { - return { + return providedBasicPorts({ BT::InputPort<int>("wait_duration", 1, "Wait time") - }; + }); } }; -- GitLab