Skip to content

Commit 696a393

Browse files
authored
Fix calculation of tracking time constant (#511) (#525)
1 parent 69bab29 commit 696a393

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

control_toolbox/src/pid.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,16 @@ bool Pid::set_gains(const Gains & gains_in)
161161

162162
if (gains.antiwindup_strat_.type == AntiWindupStrategy::BACK_CALCULATION)
163163
{
164-
if (is_zero(gains.antiwindup_strat_.tracking_time_constant) && !is_zero(gains.d_gain_))
164+
if (
165+
is_zero(gains.antiwindup_strat_.tracking_time_constant) && !is_zero(gains.d_gain_) &&
166+
!is_zero(gains.i_gain_))
165167
{
166168
// Default value for tracking time constant for back calculation technique
167169
gains.antiwindup_strat_.tracking_time_constant = std::sqrt(gains.d_gain_ / gains.i_gain_);
168170
}
169-
else if (is_zero(gains.antiwindup_strat_.tracking_time_constant) && is_zero(gains.d_gain_))
171+
else if (
172+
is_zero(gains.antiwindup_strat_.tracking_time_constant) && is_zero(gains.d_gain_) &&
173+
!is_zero(gains.i_gain_))
170174
{
171175
// Default value for tracking time constant for back calculation technique
172176
gains.antiwindup_strat_.tracking_time_constant = gains.p_gain_ / gains.i_gain_;

0 commit comments

Comments
 (0)