@@ -113,8 +113,8 @@ void check_set_parameters(
113113 ASSERT_EQ (gains.p_gain_ , P);
114114 ASSERT_EQ (gains.i_gain_ , I);
115115 ASSERT_EQ (gains.d_gain_ , D);
116- ASSERT_EQ (gains.i_max_ , I_MAX);
117- ASSERT_EQ (gains.i_min_ , I_MIN);
116+ ASSERT_EQ (gains.antiwindup_strat_ . i_max , I_MAX);
117+ ASSERT_EQ (gains.antiwindup_strat_ . i_min , I_MIN);
118118 ASSERT_EQ (gains.u_max_ , U_MAX);
119119 ASSERT_EQ (gains.u_min_ , U_MIN);
120120 ASSERT_EQ (gains.antiwindup_strat_ .tracking_time_constant , TRK_TC);
@@ -156,7 +156,10 @@ TEST(PidParametersTest, InitPidTestBadParameter)
156156 ANTIWINDUP_STRAT.tracking_time_constant = TRK_TC;
157157 ANTIWINDUP_STRAT.legacy_antiwindup = false ;
158158
159- ASSERT_NO_THROW (pid.initialize_from_args (P, I, D, U_MAX_BAD, U_MIN_BAD, ANTIWINDUP_STRAT, false ));
159+ bool ret;
160+ ASSERT_NO_THROW (
161+ ret = pid.initialize_from_args (P, I, D, U_MAX_BAD, U_MIN_BAD, ANTIWINDUP_STRAT, false ));
162+ ASSERT_FALSE (ret);
160163
161164 rclcpp::Parameter param;
162165
@@ -178,13 +181,26 @@ TEST(PidParametersTest, InitPidTestBadParameter)
178181 ASSERT_EQ (gains.p_gain_ , 0.0 );
179182 ASSERT_EQ (gains.i_gain_ , 0.0 );
180183 ASSERT_EQ (gains.d_gain_ , 0.0 );
181- ASSERT_EQ (gains.i_max_ , std::numeric_limits<double >::infinity ());
182- ASSERT_EQ (gains.i_min_ , -std::numeric_limits<double >::infinity ());
184+ ASSERT_EQ (gains.antiwindup_strat_ . i_max , std::numeric_limits<double >::infinity ());
185+ ASSERT_EQ (gains.antiwindup_strat_ . i_min , -std::numeric_limits<double >::infinity ());
183186 ASSERT_EQ (gains.u_max_ , std::numeric_limits<double >::infinity ());
184187 ASSERT_EQ (gains.u_min_ , -std::numeric_limits<double >::infinity ());
185188 ASSERT_EQ (gains.antiwindup_strat_ .tracking_time_constant , 0.0 );
186189 ASSERT_FALSE (gains.antiwindup_ );
187190 ASSERT_EQ (gains.antiwindup_strat_ , AntiWindupStrategy::LEGACY);
191+
192+ // Try other invalid combinations
193+ ANTIWINDUP_STRAT.i_max = 10 .;
194+ ANTIWINDUP_STRAT.i_min = 5 .;
195+ ASSERT_NO_THROW (
196+ ret = pid.initialize_from_args (P, I, D, U_MAX_BAD, U_MIN_BAD, ANTIWINDUP_STRAT, false ));
197+ ASSERT_FALSE (ret);
198+
199+ ANTIWINDUP_STRAT.i_max = -5 .;
200+ ANTIWINDUP_STRAT.i_min = 10 .;
201+ ASSERT_NO_THROW (
202+ ret = pid.initialize_from_args (P, I, D, U_MAX_BAD, U_MIN_BAD, ANTIWINDUP_STRAT, false ));
203+ ASSERT_FALSE (ret);
188204}
189205
190206TEST (PidParametersTest, InitPid_param_prefix_only)
@@ -303,8 +319,8 @@ TEST(PidParametersTest, SetParametersTest)
303319 ASSERT_EQ (gains.p_gain_ , P);
304320 ASSERT_EQ (gains.i_gain_ , I);
305321 ASSERT_EQ (gains.d_gain_ , D);
306- ASSERT_EQ (gains.i_max_ , I_MAX);
307- ASSERT_EQ (gains.i_min_ , I_MIN);
322+ ASSERT_EQ (gains.antiwindup_strat_ . i_max , I_MAX);
323+ ASSERT_EQ (gains.antiwindup_strat_ . i_min , I_MIN);
308324 ASSERT_EQ (gains.u_max_ , U_MAX);
309325 ASSERT_EQ (gains.u_min_ , U_MIN);
310326 ASSERT_EQ (gains.antiwindup_strat_ .tracking_time_constant , TRK_TC);
@@ -383,8 +399,8 @@ TEST(PidParametersTest, SetBadParametersTest)
383399 ASSERT_EQ (gains.p_gain_ , P);
384400 ASSERT_EQ (gains.i_gain_ , I);
385401 ASSERT_EQ (gains.d_gain_ , D);
386- ASSERT_EQ (gains.i_max_ , I_MAX);
387- ASSERT_EQ (gains.i_min_ , I_MIN);
402+ ASSERT_EQ (gains.antiwindup_strat_ . i_max , I_MAX);
403+ ASSERT_EQ (gains.antiwindup_strat_ . i_min , I_MIN);
388404 ASSERT_EQ (gains.u_max_ , std::numeric_limits<double >::infinity ());
389405 ASSERT_EQ (gains.u_min_ , -std::numeric_limits<double >::infinity ());
390406 ASSERT_EQ (gains.antiwindup_strat_ .tracking_time_constant , TRK_TC);
@@ -406,8 +422,8 @@ TEST(PidParametersTest, SetBadParametersTest)
406422 ASSERT_EQ (gains.p_gain_ , P);
407423 ASSERT_EQ (gains.i_gain_ , I);
408424 ASSERT_EQ (gains.d_gain_ , D);
409- ASSERT_EQ (gains.i_max_ , I_MAX);
410- ASSERT_EQ (gains.i_min_ , I_MIN);
425+ ASSERT_EQ (gains.antiwindup_strat_ . i_max , I_MAX);
426+ ASSERT_EQ (gains.antiwindup_strat_ . i_min , I_MIN);
411427 ASSERT_EQ (gains.u_max_ , std::numeric_limits<double >::infinity ());
412428 ASSERT_EQ (gains.u_min_ , -std::numeric_limits<double >::infinity ());
413429 ASSERT_EQ (gains.antiwindup_strat_ .tracking_time_constant , TRK_TC);
@@ -426,8 +442,8 @@ TEST(PidParametersTest, SetBadParametersTest)
426442 ASSERT_EQ (updated_gains.p_gain_ , P);
427443 ASSERT_EQ (updated_gains.i_gain_ , I);
428444 ASSERT_EQ (updated_gains.d_gain_ , D);
429- ASSERT_EQ (updated_gains.i_max_ , I_MAX);
430- ASSERT_EQ (updated_gains.i_min_ , I_MIN);
445+ ASSERT_EQ (updated_gains.antiwindup_strat_ . i_max , I_MAX);
446+ ASSERT_EQ (updated_gains.antiwindup_strat_ . i_min , I_MIN);
431447 ASSERT_EQ (updated_gains.u_max_ , U_MAX);
432448 ASSERT_EQ (updated_gains.u_min_ , U_MIN);
433449 ASSERT_EQ (updated_gains.antiwindup_strat_ .tracking_time_constant , TRK_TC);
0 commit comments