1717
1818#include " test_pid_controller.hpp"
1919
20- #include < limits>
2120#include < memory>
2221#include < string>
2322#include < vector>
@@ -246,15 +245,7 @@ TEST_F(PidControllerTest, test_update_logic_feedforward_off)
246245 EXPECT_TRUE (std::isnan (interface));
247246 }
248247
249- std::shared_ptr<ControllerCommandMsg> msg = std::make_shared<ControllerCommandMsg>();
250- msg->dof_names = dof_names_;
251- msg->values .resize (dof_names_.size (), 0.0 );
252- for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
253- {
254- msg->values [i] = dof_command_values_[i];
255- }
256- msg->values_dot .resize (dof_names_.size (), std::numeric_limits<double >::quiet_NaN ());
257- controller_->input_ref_ .writeFromNonRT (msg);
248+ controller_->set_reference (dof_command_values_);
258249
259250 for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
260251 {
@@ -308,15 +299,7 @@ TEST_F(PidControllerTest, test_update_logic_feedforward_on_with_zero_feedforward
308299 EXPECT_TRUE (std::isnan (interface));
309300 }
310301
311- std::shared_ptr<ControllerCommandMsg> msg = std::make_shared<ControllerCommandMsg>();
312- msg->dof_names = dof_names_;
313- msg->values .resize (dof_names_.size (), 0.0 );
314- for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
315- {
316- msg->values [i] = dof_command_values_[i];
317- }
318- msg->values_dot .resize (dof_names_.size (), std::numeric_limits<double >::quiet_NaN ());
319- controller_->input_ref_ .writeFromNonRT (msg);
302+ controller_->set_reference (dof_command_values_);
320303
321304 controller_->control_mode_ .writeFromNonRT (feedforward_mode_type::ON);
322305 EXPECT_EQ (*(controller_->control_mode_ .readFromRT ()), feedforward_mode_type::ON);
@@ -588,15 +571,7 @@ TEST_F(PidControllerTest, test_update_chained_feedforward_with_gain)
588571 ASSERT_EQ (*(controller_->control_mode_ .readFromRT ()), feedforward_mode_type::ON);
589572
590573 // send a message to update reference interface
591- std::shared_ptr<ControllerCommandMsg> msg = std::make_shared<ControllerCommandMsg>();
592- msg->dof_names = controller_->params_ .dof_names ;
593- msg->values .resize (msg->dof_names .size (), 0.0 );
594- for (size_t i = 0 ; i < msg->dof_names .size (); ++i)
595- {
596- msg->values [i] = target_value;
597- }
598- msg->values_dot .resize (msg->dof_names .size (), std::numeric_limits<double >::quiet_NaN ());
599- controller_->input_ref_ .writeFromNonRT (msg);
574+ controller_->set_reference ({target_value});
600575 ASSERT_EQ (
601576 controller_->update_reference_from_subscribers (
602577 rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -654,15 +629,7 @@ TEST_F(PidControllerTest, test_update_chained_feedforward_off_with_gain)
654629 ASSERT_EQ (*(controller_->control_mode_ .readFromRT ()), feedforward_mode_type::OFF);
655630
656631 // send a message to update reference interface
657- std::shared_ptr<ControllerCommandMsg> msg = std::make_shared<ControllerCommandMsg>();
658- msg->dof_names = controller_->params_ .dof_names ;
659- msg->values .resize (msg->dof_names .size (), 0.0 );
660- for (size_t i = 0 ; i < msg->dof_names .size (); ++i)
661- {
662- msg->values [i] = target_value;
663- }
664- msg->values_dot .resize (msg->dof_names .size (), std::numeric_limits<double >::quiet_NaN ());
665- controller_->input_ref_ .writeFromNonRT (msg);
632+ controller_->set_reference ({target_value});
666633 ASSERT_EQ (
667634 controller_->update_reference_from_subscribers (
668635 rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -698,15 +665,7 @@ TEST_F(PidControllerTest, test_save_i_term_off)
698665 ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
699666 ASSERT_FALSE (controller_->is_in_chained_mode ());
700667
701- std::shared_ptr<ControllerCommandMsg> msg = std::make_shared<ControllerCommandMsg>();
702- msg->dof_names = dof_names_;
703- msg->values .resize (dof_names_.size (), 0.0 );
704- for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
705- {
706- msg->values [i] = dof_command_values_[i];
707- }
708- msg->values_dot .resize (dof_names_.size (), std::numeric_limits<double >::quiet_NaN ());
709- controller_->input_ref_ .writeFromNonRT (msg);
668+ controller_->set_reference (dof_command_values_);
710669
711670 ASSERT_EQ (
712671 controller_->update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -723,16 +682,7 @@ TEST_F(PidControllerTest, test_save_i_term_off)
723682
724683 // deactivate the controller and set command=state
725684 ASSERT_EQ (controller_->on_deactivate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
726-
727- msg = std::make_shared<ControllerCommandMsg>();
728- msg->dof_names = dof_names_;
729- msg->values .resize (dof_names_.size (), 0.0 );
730- for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
731- {
732- msg->values [i] = dof_state_values_[i];
733- }
734- msg->values_dot .resize (dof_names_.size (), std::numeric_limits<double >::quiet_NaN ());
735- controller_->input_ref_ .writeFromNonRT (msg);
685+ controller_->set_reference (dof_state_values_);
736686
737687 // reactivate the controller, the integral term should NOT be saved
738688 ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
@@ -765,15 +715,7 @@ TEST_F(PidControllerTest, test_save_i_term_on)
765715 ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
766716 ASSERT_FALSE (controller_->is_in_chained_mode ());
767717
768- std::shared_ptr<ControllerCommandMsg> msg = std::make_shared<ControllerCommandMsg>();
769- msg->dof_names = dof_names_;
770- msg->values .resize (dof_names_.size (), 0.0 );
771- for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
772- {
773- msg->values [i] = dof_command_values_[i];
774- }
775- msg->values_dot .resize (dof_names_.size (), std::numeric_limits<double >::quiet_NaN ());
776- controller_->input_ref_ .writeFromNonRT (msg);
718+ controller_->set_reference (dof_command_values_);
777719
778720 ASSERT_EQ (
779721 controller_->update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -790,16 +732,7 @@ TEST_F(PidControllerTest, test_save_i_term_on)
790732
791733 // deactivate the controller and set command=state
792734 ASSERT_EQ (controller_->on_deactivate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
793-
794- msg = std::make_shared<ControllerCommandMsg>();
795- msg->dof_names = dof_names_;
796- msg->values .resize (dof_names_.size (), 0.0 );
797- for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
798- {
799- msg->values [i] = dof_state_values_[i];
800- }
801- msg->values_dot .resize (dof_names_.size (), std::numeric_limits<double >::quiet_NaN ());
802- controller_->input_ref_ .writeFromNonRT (msg);
735+ controller_->set_reference (dof_state_values_);
803736
804737 // reactivate the controller, the integral term should be saved
805738 ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
0 commit comments