15 #ifndef NAV2_UTIL__LIFECYCLE_SERVICE_CLIENT_HPP_
16 #define NAV2_UTIL__LIFECYCLE_SERVICE_CLIENT_HPP_
22 #include "lifecycle_msgs/srv/change_state.hpp"
23 #include "lifecycle_msgs/srv/get_state.hpp"
24 #include "nav2_ros_common/service_client.hpp"
25 #include "nav2_ros_common/node_utils.hpp"
31 using namespace std::chrono_literals;
38 const std::string & lifecycle_node_name);
40 template<
typename NodeT>
43 const string & lifecycle_node_name,
45 : change_state_(lifecycle_node_name +
"/change_state", parent_node,
47 get_state_(lifecycle_node_name +
"/get_state", parent_node,
52 while (!get_state_.wait_for_service(2s)) {
54 parent_node->get_logger(),
55 "Waiting for service %s...", get_state_.getServiceName().c_str());
65 const uint8_t transition,
66 const std::chrono::milliseconds transition_timeout = std::chrono::milliseconds(-1),
67 const std::chrono::milliseconds wait_for_service_timeout = std::chrono::milliseconds(5000));
73 uint8_t get_state(
const std::chrono::milliseconds timeout = std::chrono::milliseconds(2000));
76 rclcpp::Node::SharedPtr node_;
Helper functions to interact with a lifecycle node.