Skip to content

Commit be681a0

Browse files
committed
fixup! RateLimiter: Don't update parameters before input checks #437
1 parent 8f8b22e commit be681a0

File tree

1 file changed

+25
-36
lines changed

1 file changed

+25
-36
lines changed

control_toolbox/include/control_toolbox/rate_limiter.hpp

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -171,83 +171,72 @@ void RateLimiter<T>::set_params(
171171
T min_first_derivative_pos, T max_first_derivative_neg, T min_second_derivative,
172172
T max_second_derivative)
173173
{
174-
T tmp_min_value = min_value;
175-
T tmp_max_value = max_value;
176-
T tmp_min_first_derivative_neg = min_first_derivative_neg;
177-
T tmp_max_first_derivative_pos = max_first_derivative_pos;
178-
T tmp_min_first_derivative_pos = min_first_derivative_pos;
179-
T tmp_max_first_derivative_neg = max_first_derivative_neg;
180-
T tmp_min_second_derivative = min_second_derivative;
181-
T tmp_max_second_derivative = max_second_derivative;
182174
auto tmp_has_value_limits = has_value_limits_;
183175
auto tmp_has_first_derivative_limits = has_first_derivative_limits_;
184176
auto tmp_has_second_derivative_limits = has_second_derivative_limits_;
185177

186-
if (std::isnan(tmp_max_value))
178+
if (std::isnan(max_value))
187179
{
188180
tmp_has_value_limits = false;
189181
}
190-
if (std::isnan(tmp_min_value))
182+
if (std::isnan(min_value))
191183
{
192-
tmp_min_value = -tmp_max_value;
184+
min_value = -max_value;
193185
}
194-
if (tmp_has_value_limits && tmp_min_value > tmp_max_value)
186+
if (tmp_has_value_limits && min_value > max_value)
195187
{
196188
throw std::invalid_argument("Invalid value limits");
197189
}
198190

199-
if (std::isnan(tmp_max_first_derivative_pos))
191+
if (std::isnan(max_first_derivative_pos))
200192
{
201193
tmp_has_first_derivative_limits = false;
202194
}
203-
if (std::isnan(tmp_min_first_derivative_neg))
195+
if (std::isnan(min_first_derivative_neg))
204196
{
205-
tmp_min_first_derivative_neg = -tmp_max_first_derivative_pos;
197+
min_first_derivative_neg = -max_first_derivative_pos;
206198
}
207-
if (
208-
tmp_has_first_derivative_limits && tmp_min_first_derivative_neg > tmp_max_first_derivative_pos)
199+
if (tmp_has_first_derivative_limits && min_first_derivative_neg > max_first_derivative_pos)
209200
{
210201
throw std::invalid_argument("Invalid first derivative limits");
211202
}
212203
if (tmp_has_first_derivative_limits)
213204
{
214-
if (std::isnan(tmp_max_first_derivative_neg))
205+
if (std::isnan(max_first_derivative_neg))
215206
{
216-
tmp_max_first_derivative_neg = tmp_max_first_derivative_pos;
207+
max_first_derivative_neg = max_first_derivative_pos;
217208
}
218-
if (std::isnan(tmp_min_first_derivative_pos))
209+
if (std::isnan(min_first_derivative_pos))
219210
{
220-
tmp_min_first_derivative_pos = tmp_min_first_derivative_neg;
211+
min_first_derivative_pos = min_first_derivative_neg;
221212
}
222-
if (
223-
tmp_has_first_derivative_limits &&
224-
tmp_min_first_derivative_pos > tmp_max_first_derivative_neg)
213+
if (tmp_has_first_derivative_limits && min_first_derivative_pos > max_first_derivative_neg)
225214
{
226215
throw std::invalid_argument("Invalid first derivative limits");
227216
}
228217
}
229218

230-
if (std::isnan(tmp_max_second_derivative))
219+
if (std::isnan(max_second_derivative))
231220
{
232221
tmp_has_second_derivative_limits = false;
233222
}
234-
if (std::isnan(tmp_min_second_derivative))
223+
if (std::isnan(min_second_derivative))
235224
{
236-
tmp_min_second_derivative = -tmp_max_second_derivative;
225+
min_second_derivative = -max_second_derivative;
237226
}
238-
if (tmp_has_second_derivative_limits && tmp_min_second_derivative > tmp_max_second_derivative)
227+
if (tmp_has_second_derivative_limits && min_second_derivative > max_second_derivative)
239228
{
240229
throw std::invalid_argument("Invalid second derivative limits");
241230
}
242231

243-
min_value_ = tmp_min_value;
244-
max_value_ = tmp_max_value;
245-
min_first_derivative_neg_ = tmp_min_first_derivative_neg;
246-
max_first_derivative_pos_ = tmp_max_first_derivative_pos;
247-
min_first_derivative_pos_ = tmp_min_first_derivative_pos;
248-
max_first_derivative_neg_ = tmp_max_first_derivative_neg;
249-
min_second_derivative_ = tmp_min_second_derivative;
250-
max_second_derivative_ = tmp_max_second_derivative;
232+
min_value_ = min_value;
233+
max_value_ = max_value;
234+
min_first_derivative_neg_ = min_first_derivative_neg;
235+
max_first_derivative_pos_ = max_first_derivative_pos;
236+
min_first_derivative_pos_ = min_first_derivative_pos;
237+
max_first_derivative_neg_ = max_first_derivative_neg;
238+
min_second_derivative_ = min_second_derivative;
239+
max_second_derivative_ = max_second_derivative;
251240
has_value_limits_ = tmp_has_value_limits;
252241
has_first_derivative_limits_ = tmp_has_first_derivative_limits;
253242
has_second_derivative_limits_ = tmp_has_second_derivative_limits;

0 commit comments

Comments
 (0)