44#include "lifecycle_msgs/msg/state.hpp"
45#include "lifecycle_msgs/msg/transition.hpp"
46#include "lifecycle_msgs/srv/change_state.hpp"
47#include "lifecycle_msgs/srv/get_state.hpp"
48#include "sensor_msgs/msg/joy.hpp"
49#include "ecat_msgs/msg/gui_button_data.hpp"
50#include "ecat_msgs/msg/data_received.hpp"
51#include "rclcpp/rclcpp.hpp"
52#include <std_srvs/srv/trigger.hpp>
53#include "std_msgs/msg/u_int16.hpp"
54#include "rcutils/logging_macros.h"
55#include "rclcpp/rclcpp.hpp"
58using namespace std::chrono_literals;
71template<
typename FutureT,
typename WaitTimeT>
75 WaitTimeT time_to_wait)
77 auto end = std::chrono::steady_clock::now() + time_to_wait;
78 std::chrono::milliseconds wait_period(100);
79 std::future_status status = std::future_status::timeout;
81 auto now = std::chrono::steady_clock::now();
82 auto time_left = end - now;
83 if (time_left <= std::chrono::milliseconds(0)) {
break;}
84 status = future.wait_for((time_left < wait_period) ? time_left : wait_period);
85 }
while (status != std::future_status::ready);
std::future_status wait_for_result(FutureT &future, WaitTimeT time_to_wait)
Definition: safety_node.hpp:73
static constexpr char const * node_change_state_topic
Definition: safety_node.hpp:68
SafetyInfo
Definition: safety_node.hpp:89
@ kSafe
Definition: safety_node.hpp:90
@ kErrorInDrive
Definition: safety_node.hpp:94
@ kEmergencyStop
Definition: safety_node.hpp:95
@ kOverPositionLimit
Definition: safety_node.hpp:93
@ kOverSpeed
Definition: safety_node.hpp:92
@ kOverForce
Definition: safety_node.hpp:91
static constexpr char const * lifecycle_node
Definition: safety_node.hpp:61
static constexpr char const * node_get_state_topic
Definition: safety_node.hpp:67