Skip to content

Commit 8b9a223

Browse files
Fix upstream Pid class deprecation warnings (#1959)
1 parent 8287413 commit 8b9a223

File tree

7 files changed

+31
-19
lines changed

7 files changed

+31
-19
lines changed

joint_trajectory_controller/src/joint_trajectory_controller.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1764,8 +1764,9 @@ void JointTrajectoryController::update_pids()
17641764
const auto & gains = params_.gains.joints_map.at(params_.joints.at(map_cmd_to_joints_[i]));
17651765
control_toolbox::AntiWindupStrategy antiwindup_strat;
17661766
antiwindup_strat.set_type(gains.antiwindup_strategy);
1767-
antiwindup_strat.i_max = gains.i_clamp;
1768-
antiwindup_strat.i_min = -gains.i_clamp;
1767+
// deprecated parameter i_clamp: i_clamp_max and i_clamp_min have precedence over i_clamp
1768+
antiwindup_strat.i_max = std::isfinite(gains.i_clamp_max) ? gains.i_clamp_max : gains.i_clamp;
1769+
antiwindup_strat.i_min = std::isfinite(gains.i_clamp_min) ? gains.i_clamp_min : -gains.i_clamp;
17691770
antiwindup_strat.error_deadband = gains.error_deadband;
17701771
antiwindup_strat.tracking_time_constant = gains.tracking_time_constant;
17711772
if (pids_[i])

joint_trajectory_controller/src/joint_trajectory_controller_parameters.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,18 @@ joint_trajectory_controller:
132132
}
133133
i_clamp: {
134134
type: double,
135-
default_value: 0.0,
136-
description: "Integral clamp. Symmetrical in both positive and negative direction."
135+
default_value: .inf,
136+
description: "[Deprecated, use i_clamp_max/i_clamp_min] Integral clamp. Symmetrical in both positive and negative direction."
137+
}
138+
i_clamp_max: {
139+
type: double,
140+
default_value: .inf,
141+
description: "Upper integral clamp."
142+
}
143+
i_clamp_min: {
144+
type: double,
145+
default_value: -.inf,
146+
description: "Lower integral clamp."
137147
}
138148
ff_velocity_scale: {
139149
type: double,
@@ -150,16 +160,6 @@ joint_trajectory_controller:
150160
default_value: -.inf,
151161
description: "Lower output clamp."
152162
}
153-
i_clamp_max: {
154-
type: double,
155-
default_value: 0.0,
156-
description: "[Deprecated, see antiwindup_strategy] Upper integral clamp."
157-
}
158-
i_clamp_min: {
159-
type: double,
160-
default_value: 0.0,
161-
description: "[Deprecated, see antiwindup_strategy] Lower integral clamp."
162-
}
163163
antiwindup_strategy: {
164164
type: string,
165165
default_value: "legacy",

joint_trajectory_controller/test/test_trajectory_controller.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ TEST_P(TrajectoryControllerTestParameterized, correct_initialization_using_param
191191
{
192192
rclcpp::executors::MultiThreadedExecutor executor;
193193
SetUpTrajectoryController(executor);
194+
SetPidParameters(0.0, 1.0);
194195
traj_controller_->get_node()->set_parameter(
195196
rclcpp::Parameter("allow_nonzero_velocity_at_trajectory_end", true));
196197
traj_controller_->get_node()->set_parameter(rclcpp::Parameter("update_rate", 10));

joint_trajectory_controller/test/test_trajectory_controller_utils.hpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,11 +279,18 @@ class TrajectoryControllerTest : public ::testing::Test
279279
traj_controller_ = std::make_shared<TestableJointTrajectoryController>();
280280

281281
auto node_options = rclcpp::NodeOptions();
282+
// read-only parameters have to be set before init
282283
std::vector<rclcpp::Parameter> parameter_overrides;
283284
parameter_overrides.push_back(rclcpp::Parameter("joints", joint_names_));
284285
parameter_overrides.push_back(
285286
rclcpp::Parameter("command_interfaces", command_interface_types_));
286287
parameter_overrides.push_back(rclcpp::Parameter("state_interfaces", state_interface_types_));
288+
// avoid deprecation warning for legacy (default) antiwindup strategy
289+
for (const auto & joint : joint_names_)
290+
{
291+
parameter_overrides.push_back(
292+
rclcpp::Parameter("gains." + joint + ".antiwindup_strategy", "none"));
293+
}
287294
parameter_overrides.insert(parameter_overrides.end(), parameters.begin(), parameters.end());
288295
node_options.parameter_overrides(parameter_overrides);
289296
traj_controller_->set_node_options(node_options);
@@ -303,7 +310,7 @@ class TrajectoryControllerTest : public ::testing::Test
303310
const rclcpp::Parameter k_p(prefix + ".p", p_value);
304311
const rclcpp::Parameter k_i(prefix + ".i", 0.0);
305312
const rclcpp::Parameter k_d(prefix + ".d", 0.0);
306-
const rclcpp::Parameter i_clamp(prefix + ".i_clamp", 0.0);
313+
const rclcpp::Parameter i_clamp(prefix + ".i_clamp", 1000.0);
307314
const rclcpp::Parameter ff_velocity_scale(prefix + ".ff_velocity_scale", ff_value);
308315
node->set_parameters({k_p, k_i, k_d, i_clamp, ff_velocity_scale});
309316
}

pid_controller/src/pid_controller.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ pid_controller:
8585
}
8686
i_clamp_max: {
8787
type: double,
88-
default_value: 0.0,
88+
default_value: .inf,
8989
description: "[Deprecated, see antiwindup_strategy] Upper integral clamp."
9090
}
9191
i_clamp_min: {
9292
type: double,
93-
default_value: 0.0,
93+
default_value: -.inf,
9494
description: "[Deprecated, see antiwindup_strategy] Lower integral clamp."
9595
}
9696
antiwindup_strategy: {

pid_controller/test/pid_controller_params.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
ros__parameters:
33
# TODO(christohfroehlich): Remove this global parameters once the deprecated antiwindup parameters are removed.
44
gains:
5-
joint1: {antiwindup_strategy: "none", i_clamp_max: .inf, i_clamp_min: -.inf}
6-
joint2: {antiwindup_strategy: "none", i_clamp_max: .inf, i_clamp_min: -.inf}
5+
joint1: {antiwindup_strategy: "none",}
6+
joint2: {antiwindup_strategy: "none",}
77

88
test_pid_controller:
99
ros__parameters:

pid_controller/test/pid_controller_preceding_params.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ test_pid_controller:
99

1010
reference_and_state_dof_names:
1111
- joint1state
12+
13+
gains:
14+
joint1: {antiwindup_strategy: "none"}

0 commit comments

Comments
 (0)