Skip to content

Commit ff8db06

Browse files
Do not skip gains by setting them NaN
1 parent d58134f commit ff8db06

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

pid_controller/src/pid_controller.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ controller_interface::return_type PidController::update_and_write_commands(
525525
size_t gains_start_index = dof_reference_size;
526526
for (size_t i = 0; i < dof_; ++i)
527527
{
528-
const auto current_antiwindup_strat = pids_[i]->get_gains().antiwindup_strat_;
528+
auto current_pid_gains = pids_[i]->get_gains();
529529
for (size_t j = 0; j < GAIN_INTERFACES.size(); ++j)
530530
{
531531
const size_t buffer_index = gains_start_index + i + j * dof_;
@@ -536,22 +536,16 @@ controller_interface::return_type PidController::update_and_write_commands(
536536
switch (gain_type)
537537
{
538538
case 0: // P gain
539-
pids_[i]->set_gains(
540-
new_gain_value, std::numeric_limits<double>::quiet_NaN(),
541-
std::numeric_limits<double>::quiet_NaN(), std::numeric_limits<double>::quiet_NaN(),
542-
std::numeric_limits<double>::quiet_NaN(), current_antiwindup_strat);
539+
current_pid_gains.p_gain_ = new_gain_value;
540+
pids_[i]->set_gains(current_pid_gains);
543541
break;
544542
case 1: // I gain
545-
pids_[i]->set_gains(
546-
std::numeric_limits<double>::quiet_NaN(), new_gain_value,
547-
std::numeric_limits<double>::quiet_NaN(), std::numeric_limits<double>::quiet_NaN(),
548-
std::numeric_limits<double>::quiet_NaN(), current_antiwindup_strat);
543+
current_pid_gains.i_gain_ = new_gain_value;
544+
pids_[i]->set_gains(current_pid_gains);
549545
break;
550546
case 2: // D gain
551-
pids_[i]->set_gains(
552-
std::numeric_limits<double>::quiet_NaN(), std::numeric_limits<double>::quiet_NaN(),
553-
new_gain_value, std::numeric_limits<double>::quiet_NaN(),
554-
std::numeric_limits<double>::quiet_NaN(), current_antiwindup_strat);
547+
current_pid_gains.d_gain_ = new_gain_value;
548+
pids_[i]->set_gains(current_pid_gains);
555549
break;
556550
}
557551
reference_interfaces_[buffer_index] = std::numeric_limits<double>::quiet_NaN();

0 commit comments

Comments
 (0)