Skip to content

Commit 55dffe7

Browse files
committed
disable the sleep with overrun disabled
1 parent b3e52d9 commit 55dffe7

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

controller_manager/src/ros2_control_node.cpp

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -151,34 +151,31 @@ int main(int argc, char ** argv)
151151
{
152152
cm->get_clock()->sleep_until(current_time + period);
153153
}
154-
else
154+
else if(enable_overrun)
155155
{
156156
next_iteration_time += period;
157157

158-
if (enable_overrun)
158+
const auto time_now = std::chrono::steady_clock::now();
159+
if (next_iteration_time < time_now)
159160
{
160-
const auto time_now = std::chrono::steady_clock::now();
161-
if (next_iteration_time < time_now)
162-
{
163-
const double time_diff =
164-
static_cast<double>(std::chrono::duration_cast<std::chrono::nanoseconds>(
165-
time_now - next_iteration_time)
166-
.count()) /
167-
1.e6;
168-
const double cm_period = 1.e3 / static_cast<double>(cm->get_update_rate());
169-
const int overrun_count = static_cast<int>(std::ceil(time_diff / cm_period));
170-
171-
RCLCPP_WARN_THROTTLE(
172-
cm->get_logger(), *cm->get_clock(), 1000,
173-
"Overrun detected! The controller manager missed its desired rate of %d Hz. The "
174-
"loop "
175-
"took %f ms (missed cycles : %d).",
176-
cm->get_update_rate(), time_diff + cm_period, overrun_count + 1);
177-
178-
next_iteration_time += (overrun_count * period);
179-
}
161+
const double time_diff =
162+
static_cast<double>(std::chrono::duration_cast<std::chrono::nanoseconds>(
163+
time_now - next_iteration_time)
164+
.count()) /
165+
1.e6;
166+
const double cm_period = 1.e3 / static_cast<double>(cm->get_update_rate());
167+
const int overrun_count = static_cast<int>(std::ceil(time_diff / cm_period));
168+
169+
RCLCPP_WARN_THROTTLE(
170+
cm->get_logger(), *cm->get_clock(), 1000,
171+
"Overrun detected! The controller manager missed its desired rate of %d Hz. The "
172+
"loop "
173+
"took %f ms (missed cycles : %d).",
174+
cm->get_update_rate(), time_diff + cm_period, overrun_count + 1);
175+
176+
next_iteration_time += (overrun_count * period);
180177
}
181-
178+
182179
std::this_thread::sleep_until(next_iteration_time);
183180
}
184181
}

0 commit comments

Comments
 (0)