diff --git a/nav2_lifecycle_manager/include/nav2_lifecycle_manager/lifecycle_manager.hpp b/nav2_lifecycle_manager/include/nav2_lifecycle_manager/lifecycle_manager.hpp index 9ec0a05e56a6501e8ea3daad5aa0fdf7d62d8b1b..563775dff348e9466d31c32361493b0835cd1ee0 100644 --- a/nav2_lifecycle_manager/include/nav2_lifecycle_manager/lifecycle_manager.hpp +++ b/nav2_lifecycle_manager/include/nav2_lifecycle_manager/lifecycle_manager.hpp @@ -88,6 +88,9 @@ protected: // The names of the nodes to be managed, in the order of desired bring-up std::vector<std::string> node_names_; + + // Whether to automatically start up the system + bool autostart_; }; } // namespace nav2_lifecycle_manager diff --git a/nav2_lifecycle_manager/src/lifecycle_manager.cpp b/nav2_lifecycle_manager/src/lifecycle_manager.cpp index c85b425dadf5693b25f3506bf01b061e20b85071..436bd7ac52dbfd124d8d6845ddc246ad5d33f76f 100644 --- a/nav2_lifecycle_manager/src/lifecycle_manager.cpp +++ b/nav2_lifecycle_manager/src/lifecycle_manager.cpp @@ -39,9 +39,12 @@ LifecycleManager::LifecycleManager() std::vector<std::string> default_node_names{"map_server", "amcl", "world_model", "dwb_controller", "navfn_planner", "bt_navigator"}; - // However, it is parameterized, allowing this module to be used with a different set of nodes + // The list of names is parameterized, allowing this module to be used with a different set of nodes declare_parameter("node_names", rclcpp::ParameterValue(default_node_names)); + declare_parameter("autostart", rclcpp::ParameterValue(false)); + get_parameter("node_names", node_names_); + get_parameter("autostart", autostart_); startup_srv_ = create_service<std_srvs::srv::Empty>("lifecycle_manager/startup", std::bind(&LifecycleManager::startupCallback, this, _1, _2, _3)); @@ -56,6 +59,10 @@ LifecycleManager::LifecycleManager() std::bind(&LifecycleManager::resumeCallback, this, _1, _2, _3)); service_client_node_ = std::make_shared<rclcpp::Node>("lifecycle_manager_service_client"); + + if (autostart_) { + startup(); + } } LifecycleManager::~LifecycleManager()