17
17
18
18
#include " test_pid_controller.hpp"
19
19
20
- #include < limits>
21
20
#include < memory>
22
21
#include < string>
23
22
#include < vector>
@@ -246,15 +245,7 @@ TEST_F(PidControllerTest, test_update_logic_feedforward_off)
246
245
EXPECT_TRUE (std::isnan (interface));
247
246
}
248
247
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_);
258
249
259
250
for (size_t i = 0 ; i < dof_command_values_.size (); ++i)
260
251
{
@@ -308,15 +299,7 @@ TEST_F(PidControllerTest, test_update_logic_feedforward_on_with_zero_feedforward
308
299
EXPECT_TRUE (std::isnan (interface));
309
300
}
310
301
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_);
320
303
321
304
controller_->control_mode_ .writeFromNonRT (feedforward_mode_type::ON);
322
305
EXPECT_EQ (*(controller_->control_mode_ .readFromRT ()), feedforward_mode_type::ON);
@@ -588,15 +571,7 @@ TEST_F(PidControllerTest, test_update_chained_feedforward_with_gain)
588
571
ASSERT_EQ (*(controller_->control_mode_ .readFromRT ()), feedforward_mode_type::ON);
589
572
590
573
// 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});
600
575
ASSERT_EQ (
601
576
controller_->update_reference_from_subscribers (
602
577
rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -654,15 +629,7 @@ TEST_F(PidControllerTest, test_update_chained_feedforward_off_with_gain)
654
629
ASSERT_EQ (*(controller_->control_mode_ .readFromRT ()), feedforward_mode_type::OFF);
655
630
656
631
// 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});
666
633
ASSERT_EQ (
667
634
controller_->update_reference_from_subscribers (
668
635
rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -698,15 +665,7 @@ TEST_F(PidControllerTest, test_save_i_term_off)
698
665
ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
699
666
ASSERT_FALSE (controller_->is_in_chained_mode ());
700
667
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_);
710
669
711
670
ASSERT_EQ (
712
671
controller_->update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -723,16 +682,7 @@ TEST_F(PidControllerTest, test_save_i_term_off)
723
682
724
683
// deactivate the controller and set command=state
725
684
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_);
736
686
737
687
// reactivate the controller, the integral term should NOT be saved
738
688
ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
@@ -765,15 +715,7 @@ TEST_F(PidControllerTest, test_save_i_term_on)
765
715
ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
766
716
ASSERT_FALSE (controller_->is_in_chained_mode ());
767
717
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_);
777
719
778
720
ASSERT_EQ (
779
721
controller_->update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
@@ -790,16 +732,7 @@ TEST_F(PidControllerTest, test_save_i_term_on)
790
732
791
733
// deactivate the controller and set command=state
792
734
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_);
803
736
804
737
// reactivate the controller, the integral term should be saved
805
738
ASSERT_EQ (controller_->on_activate (rclcpp_lifecycle::State ()), NODE_SUCCESS);
0 commit comments