@@ -35,6 +35,7 @@ using hardware_interface::lifecycle_state_names::ACTIVE;
3535using hardware_interface::lifecycle_state_names::FINALIZED;
3636using hardware_interface::lifecycle_state_names::INACTIVE;
3737using hardware_interface::lifecycle_state_names::UNCONFIGURED;
38+ using hardware_interface::lifecycle_state_names::UNKNOWN;
3839
3940using ros2_control_test_assets::TEST_ACTUATOR_HARDWARE_COMMAND_INTERFACES;
4041using ros2_control_test_assets::TEST_ACTUATOR_HARDWARE_NAME;
@@ -69,9 +70,11 @@ class TestControllerManagerHWManagementSrvs : public TestControllerManagerSrvs
6970 cm_->set_parameter (
7071 rclcpp::Parameter (" robot_description" , ros2_control_test_assets::minimal_robot_urdf));
7172 cm_->set_parameter (rclcpp::Parameter (
72- " activate_components_on_start" , std::vector<std::string>({TEST_ACTUATOR_HARDWARE_NAME})));
73+ " hardware_components_initial_state.unconfigured" ,
74+ std::vector<std::string>({TEST_SYSTEM_HARDWARE_NAME})));
7375 cm_->set_parameter (rclcpp::Parameter (
74- " configure_components_on_start" , std::vector<std::string>({TEST_SENSOR_HARDWARE_NAME})));
76+ " hardware_components_initial_state.inactive" ,
77+ std::vector<std::string>({TEST_SENSOR_HARDWARE_NAME})));
7578
7679 std::string robot_description = " " ;
7780 cm_->get_parameter (" robot_description" , robot_description);
@@ -199,36 +202,6 @@ class TestControllerManagerHWManagementSrvs : public TestControllerManagerSrvs
199202 }
200203};
201204
202- class TestControllerManagerHWManagementSrvsWithoutParams
203- : public TestControllerManagerHWManagementSrvs
204- {
205- public:
206- void SetUp () override
207- {
208- executor_ = std::make_shared<rclcpp::executors::SingleThreadedExecutor>();
209- cm_ = std::make_shared<controller_manager::ControllerManager>(
210- std::make_unique<hardware_interface::ResourceManager>(), executor_, TEST_CM_NAME);
211- run_updater_ = false ;
212-
213- // TODO(destogl): separate this to init_tests method where parameter can be set for each test
214- // separately
215- cm_->set_parameter (
216- rclcpp::Parameter (" robot_description" , ros2_control_test_assets::minimal_robot_urdf));
217-
218- std::string robot_description = " " ;
219- cm_->get_parameter (" robot_description" , robot_description);
220- if (robot_description.empty ())
221- {
222- throw std::runtime_error (
223- " Unable to initialize resource manager, no robot description found." );
224- }
225-
226- cm_->init_resource_manager (robot_description);
227-
228- SetUpSrvsCMExecutor ();
229- }
230- };
231-
232205TEST_F (TestControllerManagerHWManagementSrvs, list_hardware_components)
233206{
234207 // Default status after start:
@@ -386,6 +359,36 @@ TEST_F(TestControllerManagerHWManagementSrvs, selective_activate_deactivate_comp
386359 }));
387360}
388361
362+ class TestControllerManagerHWManagementSrvsWithoutParams
363+ : public TestControllerManagerHWManagementSrvs
364+ {
365+ public:
366+ void SetUp () override
367+ {
368+ executor_ = std::make_shared<rclcpp::executors::SingleThreadedExecutor>();
369+ cm_ = std::make_shared<controller_manager::ControllerManager>(
370+ std::make_unique<hardware_interface::ResourceManager>(), executor_, TEST_CM_NAME);
371+ run_updater_ = false ;
372+
373+ // TODO(destogl): separate this to init_tests method where parameter can be set for each test
374+ // separately
375+ cm_->set_parameter (
376+ rclcpp::Parameter (" robot_description" , ros2_control_test_assets::minimal_robot_urdf));
377+
378+ std::string robot_description = " " ;
379+ cm_->get_parameter (" robot_description" , robot_description);
380+ if (robot_description.empty ())
381+ {
382+ throw std::runtime_error (
383+ " Unable to initialize resource manager, no robot description found." );
384+ }
385+
386+ cm_->init_resource_manager (robot_description);
387+
388+ SetUpSrvsCMExecutor ();
389+ }
390+ };
391+
389392TEST_F (TestControllerManagerHWManagementSrvsWithoutParams, test_default_activation_of_all_hardware)
390393{
391394 // "configure_components_on_start" and "activate_components_on_start" are not set (empty)
@@ -409,3 +412,62 @@ TEST_F(TestControllerManagerHWManagementSrvsWithoutParams, test_default_activati
409412 {{false , false , false , false }, {false , false , false , false , false , false , false }}, // system
410413 }));
411414}
415+
416+ // BEGIN: Remove at the end of 2023
417+ class TestControllerManagerHWManagementSrvsOldParameters
418+ : public TestControllerManagerHWManagementSrvs
419+ {
420+ public:
421+ void SetUp () override
422+ {
423+ executor_ = std::make_shared<rclcpp::executors::SingleThreadedExecutor>();
424+ cm_ = std::make_shared<controller_manager::ControllerManager>(
425+ std::make_unique<hardware_interface::ResourceManager>(), executor_, TEST_CM_NAME);
426+ run_updater_ = false ;
427+
428+ cm_->set_parameter (
429+ rclcpp::Parameter (" robot_description" , ros2_control_test_assets::minimal_robot_urdf));
430+ cm_->set_parameter (rclcpp::Parameter (
431+ " activate_components_on_start" , std::vector<std::string>({TEST_ACTUATOR_HARDWARE_NAME})));
432+ cm_->set_parameter (rclcpp::Parameter (
433+ " configure_components_on_start" , std::vector<std::string>({TEST_SENSOR_HARDWARE_NAME})));
434+
435+ std::string robot_description = " " ;
436+ cm_->get_parameter (" robot_description" , robot_description);
437+ if (robot_description.empty ())
438+ {
439+ throw std::runtime_error (
440+ " Unable to initialize resource manager, no robot description found." );
441+ }
442+
443+ cm_->init_resource_manager (robot_description);
444+
445+ SetUpSrvsCMExecutor ();
446+ }
447+ };
448+
449+ TEST_F (TestControllerManagerHWManagementSrvsOldParameters, list_hardware_components)
450+ {
451+ // Default status after start:
452+ // checks if "configure_components_on_start" and "activate_components_on_start" are correctly read
453+
454+ list_hardware_components_and_check (
455+ // actuator, sensor, system
456+ std::vector<uint8_t >(
457+ {LFC_STATE::PRIMARY_STATE_ACTIVE, LFC_STATE::PRIMARY_STATE_INACTIVE,
458+ LFC_STATE::PRIMARY_STATE_UNCONFIGURED}),
459+ std::vector<std::string>({ACTIVE, INACTIVE, UNCONFIGURED}),
460+ std::vector<std::vector<std::vector<bool >>>({
461+ // is available
462+ {{true , true }, {true , true , true }}, // actuator
463+ {{}, {true }}, // sensor
464+ {{false , false , false , false }, {false , false , false , false , false , false , false }}, // system
465+ }),
466+ std::vector<std::vector<std::vector<bool >>>({
467+ // is claimed
468+ {{false , false }, {false , false , false }}, // actuator
469+ {{}, {false }}, // sensor
470+ {{false , false , false , false }, {false , false , false , false , false , false , false }}, // system
471+ }));
472+ }
473+ // END: Remove at the end of 2023
0 commit comments