@@ -920,11 +920,11 @@ TEST_P(TestControllerManagerWithUpdateRates, per_controller_equal_and_higher_upd
920
920
EXPECT_THAT (
921
921
cm_->get_loaded_controllers ()[0 ].periodicity_statistics ->get_average (),
922
922
testing::AllOf (
923
- testing::Ge (0.90 * cm_->get_update_rate ()), testing::Lt ((1.05 * cm_->get_update_rate ()))));
923
+ testing::Ge (0.9 * cm_->get_update_rate ()), testing::Lt ((1.05 * cm_->get_update_rate ()))));
924
924
EXPECT_THAT (
925
925
cm_->get_loaded_controllers ()[0 ].periodicity_statistics ->get_min (),
926
926
testing::AllOf (
927
- testing::Ge (0.70 * cm_->get_update_rate ()), testing::Lt ((1.2 * cm_->get_update_rate ()))));
927
+ testing::Ge (0.5 * cm_->get_update_rate ()), testing::Lt ((1.2 * cm_->get_update_rate ()))));
928
928
EXPECT_THAT (
929
929
cm_->get_loaded_controllers ()[0 ].periodicity_statistics ->get_max (),
930
930
testing::AllOf (
@@ -1031,12 +1031,14 @@ TEST_P(TestControllerUpdateRates, check_the_controller_update_rate)
1031
1031
const auto cm_update_rate = cm_->get_update_rate ();
1032
1032
const auto controller_update_rate = test_controller->get_update_rate ();
1033
1033
const double controller_period = 1.0 / controller_update_rate;
1034
+ const double exp_controller_period =
1035
+ std::round ((static_cast <double >(cm_update_rate) / controller_update_rate) - 0.01 ) /
1036
+ cm_update_rate;
1034
1037
1035
1038
const auto initial_counter = test_controller->internal_counter ;
1036
1039
// don't start with zero to check if the period is correct if controller is activated anytime
1037
1040
rclcpp::Time time = time_;
1038
- const auto exp_periodicity =
1039
- cm_update_rate / std::ceil (static_cast <double >(cm_update_rate) / controller_update_rate);
1041
+ const auto exp_periodicity = 1.0 / exp_controller_period;
1040
1042
for (size_t update_counter = 0 ; update_counter <= 10 * cm_update_rate; ++update_counter)
1041
1043
{
1042
1044
rclcpp::Time old_time = time;
@@ -1053,10 +1055,11 @@ TEST_P(TestControllerUpdateRates, check_the_controller_update_rate)
1053
1055
EXPECT_THAT (
1054
1056
test_controller->update_period_ .seconds (),
1055
1057
testing::AllOf (
1056
- testing::Gt (0.99 * controller_period ),
1057
- testing::Lt ((1.2 * controller_period ) + PERIOD.seconds ())))
1058
+ testing::Gt (0.99 * exp_controller_period ),
1059
+ testing::Lt ((1.2 * exp_controller_period ) + PERIOD.seconds ())))
1058
1060
<< " update_counter: " << update_counter
1059
1061
<< " desired controller period: " << controller_period
1062
+ << " expected controller period: " << exp_controller_period
1060
1063
<< " actual controller period: " << test_controller->update_period_ .seconds ();
1061
1064
}
1062
1065
else
@@ -1092,10 +1095,10 @@ TEST_P(TestControllerUpdateRates, check_the_controller_update_rate)
1092
1095
<< " The first update is not counted in periodicity statistics" ;
1093
1096
EXPECT_THAT (
1094
1097
cm_->get_loaded_controllers ()[0 ].periodicity_statistics ->get_average (),
1095
- testing::AllOf (testing::Ge (0.92 * exp_periodicity), testing::Lt ((1.05 * exp_periodicity))));
1098
+ testing::AllOf (testing::Ge (0.9 * exp_periodicity), testing::Lt ((1.05 * exp_periodicity))));
1096
1099
EXPECT_THAT (
1097
1100
cm_->get_loaded_controllers ()[0 ].periodicity_statistics ->get_min (),
1098
- testing::AllOf (testing::Ge (0.75 * exp_periodicity), testing::Lt ((1.2 * exp_periodicity))));
1101
+ testing::AllOf (testing::Ge (0.5 * exp_periodicity), testing::Lt ((1.2 * exp_periodicity))));
1099
1102
EXPECT_THAT (
1100
1103
cm_->get_loaded_controllers ()[0 ].periodicity_statistics ->get_max (),
1101
1104
testing::AllOf (testing::Ge (0.75 * exp_periodicity), testing::Lt ((2.0 * exp_periodicity))));
@@ -1178,12 +1181,14 @@ TEST_F(TestAsyncControllerUpdateRates, check_the_async_controller_update_rate_an
1178
1181
const auto cm_update_rate = cm_->get_update_rate ();
1179
1182
const auto controller_update_rate = test_controller->get_update_rate ();
1180
1183
const double controller_period = 1.0 / controller_update_rate;
1184
+ const double exp_controller_period =
1185
+ std::round ((static_cast <double >(cm_update_rate) / controller_update_rate) - 0.01 ) /
1186
+ cm_update_rate;
1181
1187
1182
1188
const auto initial_counter = test_controller->internal_counter ;
1183
1189
// don't start with zero to check if the period is correct if controller is activated anytime
1184
1190
rclcpp::Time time = time_;
1185
- const auto exp_periodicity =
1186
- cm_update_rate / std::ceil (static_cast <double >(cm_update_rate) / controller_update_rate);
1191
+ const auto exp_periodicity = 1.0 / exp_controller_period;
1187
1192
for (size_t update_counter = 0 ; update_counter <= 10 * cm_update_rate; ++update_counter)
1188
1193
{
1189
1194
rclcpp::Time old_time = time;
@@ -1200,10 +1205,11 @@ TEST_F(TestAsyncControllerUpdateRates, check_the_async_controller_update_rate_an
1200
1205
EXPECT_THAT (
1201
1206
test_controller->update_period_ .seconds (),
1202
1207
testing::AllOf (
1203
- testing::Gt (0.99 * controller_period ),
1204
- testing::Lt ((1.05 * controller_period ) + PERIOD.seconds ())))
1208
+ testing::Gt (0.99 * exp_controller_period ),
1209
+ testing::Lt ((1.05 * exp_controller_period ) + PERIOD.seconds ())))
1205
1210
<< " update_counter: " << update_counter
1206
1211
<< " desired controller period: " << controller_period
1212
+ << " expected controller period: " << exp_controller_period
1207
1213
<< " actual controller period: " << test_controller->update_period_ .seconds ();
1208
1214
}
1209
1215
// else
0 commit comments