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 abc421cbc197cc838d380f2e5e5c1df71f57e592..3dd4e9b26d398d1b80bbe0ea52c9f6c255dd4a19 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 af4b70b5e73b84ffc740692a86b9d437e7c883e6..e069794f104af7780c20630f48822bcf10bcc424 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 2310c865eb419529f65927c106da70144999eb40..76fbdcdfb11235ac192cc63b8d947a7dc9f4beff 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 91e8bc488274641e1dd8dece446c97dcbeb93cf4..b967fee3116df7b254e852f2b98ad475fd46e791 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 0ddcb3bb0900dc5e26110cfca5ca79e4920679c6..28e4084b90a20db82d8bcd74620599c640b01b5e 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 e3dca52f37c773cb67548144fe8da15899b8431b..8868b5c5c27394e288a2280c9be25e28195feda1 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 38c11dc3619d2bb4dcf70544f4e1ba4b3daa193f..f7da51f4a4c091e0238c9406104444c8ee661ad1 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 f31a8c28bf1e60935e0f9d0282968f8b95e54d08..deb7688556b624153f32ea3923b58cd11bc9770b 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") - }; + }); } };