Skip to content

Commit 5864456

Browse files
Fix parameter updates and tests after rebase
1 parent 74af177 commit 5864456

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

joint_trajectory_controller/src/joint_trajectory_controller.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,8 @@ controller_interface::return_type JointTrajectoryController::update(
127127
{
128128
params_ = param_listener_->get_params();
129129
default_tolerances_ = get_segment_tolerances(params_);
130-
131130
// update gains of controller
132-
// variable use_closed_loop_control_law_ is updated in on_configure only
133-
if (use_external_control_law_)
131+
if (traj_contr_)
134132
{
135133
if (traj_contr_->updateGainsRT() == false)
136134
{

joint_trajectory_controller/test/test_trajectory_controller.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -362,30 +362,38 @@ TEST_P(TrajectoryControllerTestParameterized, update_dynamic_parameters)
362362
{
363363
rclcpp::executors::MultiThreadedExecutor executor;
364364

365+
// with kp = 0.0
365366
SetUpAndActivateTrajectoryController(executor);
366367

367368
updateControllerAsync();
368-
auto pids = traj_controller_->get_pids();
369+
auto pids = traj_controller_->get_traj_contr();
369370

370371
if (traj_controller_->use_external_control_law())
371372
{
372-
EXPECT_EQ(pids.size(), 3);
373-
auto gain_0 = pids.at(0)->getGains();
374-
EXPECT_EQ(gain_0.p_gain_, 0.0);
373+
std::vector<double> tmp_command{0.0, 0.0, 0.0};
374+
trajectory_msgs::msg::JointTrajectoryPoint error;
375+
error.positions = {1.0, 0.0, 0.0};
376+
error.velocities = {0.0, 0.0, 0.0};
377+
trajectory_msgs::msg::JointTrajectoryPoint current;
378+
trajectory_msgs::msg::JointTrajectoryPoint desired;
379+
desired.velocities = {0.0, 0.0, 0.0};
380+
rclcpp::Duration duration_since_start(std::chrono::milliseconds(250));
381+
rclcpp::Duration period(std::chrono::milliseconds(100));
382+
383+
pids->computeCommands(tmp_command, current, error, desired, duration_since_start, period);
384+
EXPECT_EQ(tmp_command.at(0), 0.0);
375385

376386
double kp = 1.0;
377387
SetPidParameters(kp);
378388
updateControllerAsync();
379389

380-
pids = traj_controller_->get_pids();
381-
EXPECT_EQ(pids.size(), 3);
382-
gain_0 = pids.at(0)->getGains();
383-
EXPECT_EQ(gain_0.p_gain_, kp);
390+
pids->computeCommands(tmp_command, current, error, desired, duration_since_start, period);
391+
EXPECT_EQ(tmp_command.at(0), 1.0);
384392
}
385393
else
386394
{
387395
// nothing to check here, skip further test
388-
EXPECT_EQ(pids.size(), 0);
396+
EXPECT_EQ(pids, nullptr);
389397
}
390398

391399
executor.cancel();

joint_trajectory_controller/test/test_trajectory_controller_utils.hpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,11 @@ class TestableJointTrajectoryController
116116

117117
bool is_open_loop() const { return params_.open_loop_control; }
118118

119-
std::vector<PidPtr> get_pids() const { return pids_; }
119+
std::shared_ptr<joint_trajectory_controller_plugins::TrajectoryControllerBase> get_traj_contr()
120+
const
121+
{
122+
return traj_contr_;
123+
}
120124

121125
joint_trajectory_controller::SegmentTolerances get_tolerances() const
122126
{
@@ -208,7 +212,8 @@ class TrajectoryControllerTest : public ::testing::Test
208212
for (size_t i = 0; i < joint_names_.size(); ++i)
209213
{
210214
const std::string prefix = "gains." + joint_names_[i];
211-
const rclcpp::Parameter angle_wraparound(prefix + ".angle_wraparound", angle_wraparound_default);
215+
const rclcpp::Parameter angle_wraparound(
216+
prefix + ".angle_wraparound", angle_wraparound_default);
212217
node->set_parameters({angle_wraparound});
213218
}
214219
}

0 commit comments

Comments
 (0)