From b91734bbab7eb01e1e77e42965d2edeecdc28588 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo <michael.jeronimo@intel.com> Date: Thu, 9 May 2019 13:05:11 -0700 Subject: [PATCH] Add parameter to the lifecycle manager to enable autostarting the stack --- .../include/nav2_lifecycle_manager/lifecycle_manager.hpp | 3 +++ nav2_lifecycle_manager/src/lifecycle_manager.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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 9ec0a05e..563775df 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 c85b425d..436bd7ac 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() -- GitLab