@@ -453,8 +453,8 @@ void ControllerManager::init_distributed_sub_controller_manager()
453453 distributed_pub_sub_node_ = std::make_shared<rclcpp_lifecycle::LifecycleNode>(
454454 std::string (get_name ()) + " _pub_sub_node" , get_namespace (), node_options, false );
455455 }
456- add_hardware_state_publishers ();
457- add_hardware_command_forwarders ();
456+ create_hardware_state_publishers ();
457+ create_hardware_command_forwarders ();
458458 register_sub_controller_manager ();
459459}
460460
@@ -557,15 +557,19 @@ void ControllerManager::register_sub_controller_manager_srv_cb(
557557 << sub_ctrl_mng_wrapper->get_name () << " >." );
558558}
559559
560- void ControllerManager::add_hardware_state_publishers ()
560+ void ControllerManager::create_hardware_state_publishers ()
561561{
562- std::vector<std::shared_ptr<distributed_control::StatePublisher>> state_publishers_vec;
563- state_publishers_vec.reserve (resource_manager_->available_state_interfaces ().size ());
564- state_publishers_vec = resource_manager_->create_hardware_state_publishers (
565- get_namespace (), distributed_interfaces_publish_period (), distributed_pub_sub_node_);
562+ auto available_state_interfaces = resource_manager_->available_state_interfaces ();
566563
567- for (auto const & state_publisher : state_publishers_vec )
564+ for (const auto & state_interface : available_state_interfaces )
568565 {
566+ auto state_publisher = std::make_shared<distributed_control::StatePublisher>(
567+ std::move (std::make_unique<hardware_interface::LoanedStateInterface>(
568+ resource_manager_->claim_state_interface (state_interface))),
569+ get_namespace (), distributed_interfaces_publish_period (), distributed_pub_sub_node_);
570+
571+ resource_manager_->add_hardware_state_publishers (state_publisher);
572+
569573 try
570574 {
571575 executor_->add_node (state_publisher->get_node ()->get_node_base_interface ());
@@ -579,15 +583,19 @@ void ControllerManager::add_hardware_state_publishers()
579583 }
580584}
581585
582- void ControllerManager::add_hardware_command_forwarders ()
586+ void ControllerManager::create_hardware_command_forwarders ()
583587{
584- std::vector<std::shared_ptr<distributed_control::CommandForwarder>> command_forwarder_vec;
585- command_forwarder_vec.reserve (resource_manager_->available_command_interfaces ().size ());
586- command_forwarder_vec = resource_manager_->create_hardware_command_forwarders (
587- get_namespace (), distributed_interfaces_publish_period (), distributed_pub_sub_node_);
588+ auto available_command_interfaces = resource_manager_->available_command_interfaces ();
588589
589- for (auto const & command_forwarder : command_forwarder_vec )
590+ for (auto const & command_interface : available_command_interfaces )
590591 {
592+ auto command_forwarder = std::make_shared<distributed_control::CommandForwarder>(
593+ std::move (std::make_unique<hardware_interface::LoanedCommandInterface>(
594+ resource_manager_->claim_command_interface (command_interface))),
595+ get_namespace (), distributed_interfaces_publish_period (), distributed_pub_sub_node_);
596+
597+ resource_manager_->add_hardware_command_forwarders (command_forwarder);
598+
591599 try
592600 {
593601 executor_->add_node (command_forwarder->get_node ()->get_node_base_interface ());
0 commit comments