20 #include "lifecycle_msgs/msg/transition.hpp"
22 #include "nav2_util/lifecycle_service_client.hpp"
27 #define RETRY(fn, retries) \
34 } catch (const std::runtime_error & e) { \
36 if (count > (retries)) { \
42 static void startupLifecycleNode(
43 const std::string & node_name,
44 const std::chrono::seconds service_call_timeout,
47 LifecycleServiceClient sc(node_name);
53 sc.change_state(lifecycle_msgs::msg::Transition::TRANSITION_CONFIGURE, service_call_timeout),
56 sc.change_state(lifecycle_msgs::msg::Transition::TRANSITION_ACTIVATE, service_call_timeout),
60 void startup_lifecycle_nodes(
61 const std::vector<std::string> & node_names,
62 const std::chrono::seconds service_call_timeout,
65 for (
const auto & node_name : node_names) {
66 startupLifecycleNode(node_name, service_call_timeout, retries);
70 static void resetLifecycleNode(
71 const std::string & node_name,
72 const std::chrono::seconds service_call_timeout,
75 LifecycleServiceClient sc(node_name);
81 sc.change_state(lifecycle_msgs::msg::Transition::TRANSITION_DEACTIVATE, service_call_timeout),
84 sc.change_state(lifecycle_msgs::msg::Transition::TRANSITION_CLEANUP, service_call_timeout),
88 void reset_lifecycle_nodes(
89 const std::vector<std::string> & node_names,
90 const std::chrono::seconds service_call_timeout,
93 for (
const auto & node_name : node_names) {
94 resetLifecycleNode(node_name, service_call_timeout, retries);