4 #include <actionlib/client/action_client.h>
5 #include <ros/callback_queue.h>
12 template <
class ActionSpec,
class TimeoutDuration,
class PeriodDuration>
14 actionlib::ActionClient<ActionSpec>& actionClient,
15 ::ros::CallbackQueue& callbackQueue,
16 TimeoutDuration timeoutDuration,
17 PeriodDuration periodDuration)
19 using Clock = std::chrono::steady_clock;
21 const auto startTime = Clock::now();
22 const auto endTime = startTime + timeoutDuration;
23 auto currentTime = startTime;
25 while (currentTime < endTime)
27 callbackQueue.callAvailable();
30 if (actionClient.isServerConnected())
33 currentTime += periodDuration;
34 std::this_thread::sleep_until(currentTime);