Skip to content

Commit 9764f8f

Browse files
committed
create publishers in cm and only add in rm
1 parent 7043187 commit 9764f8f

File tree

4 files changed

+35
-63
lines changed

4 files changed

+35
-63
lines changed

controller_manager/include/controller_manager/controller_manager.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,10 +236,10 @@ class ControllerManager : public rclcpp::Node
236236
std::shared_ptr<controller_manager_msgs::srv::RegisterSubControllerManager::Response> response);
237237

238238
CONTROLLER_MANAGER_PUBLIC
239-
void add_hardware_state_publishers();
239+
void create_hardware_state_publishers();
240240

241241
CONTROLLER_MANAGER_PUBLIC
242-
void add_hardware_command_forwarders();
242+
void create_hardware_command_forwarders();
243243

244244
CONTROLLER_MANAGER_PUBLIC
245245
void register_sub_controller_manager();

controller_manager/src/controller_manager.cpp

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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());

hardware_interface/include/hardware_interface/resource_manager.hpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,11 @@ class HARDWARE_INTERFACE_PUBLIC ResourceManager
142142
std::shared_ptr<distributed_control::SubControllerManagerWrapper> sub_controller_manager,
143143
const std::string & ns, std::shared_ptr<rclcpp_lifecycle::LifecycleNode> node);
144144

145-
std::vector<std::shared_ptr<distributed_control::StatePublisher>>
146-
create_hardware_state_publishers(
147-
const std::string & ns, std::chrono::milliseconds update_period,
148-
std::shared_ptr<rclcpp_lifecycle::LifecycleNode> node);
149-
150-
std::vector<std::shared_ptr<distributed_control::CommandForwarder>>
151-
create_hardware_command_forwarders(
152-
const std::string & ns, std::chrono::milliseconds update_period,
153-
std::shared_ptr<rclcpp_lifecycle::LifecycleNode> node);
145+
void add_hardware_state_publishers(
146+
std::shared_ptr<distributed_control::StatePublisher> state_publisher);
147+
148+
void add_hardware_command_forwarders(
149+
std::shared_ptr<distributed_control::CommandForwarder> command_forwarder);
154150

155151
std::pair<bool, std::shared_ptr<distributed_control::CommandForwarder>> find_command_forwarder(
156152
const std::string & key);

hardware_interface/src/resource_manager.cpp

Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -957,50 +957,18 @@ ResourceManager::import_command_interfaces_of_sub_controller_manager(
957957
return resource_storage_->import_distributed_command_interfaces(sub_controller_manager, ns, node);
958958
}
959959

960-
std::vector<std::shared_ptr<distributed_control::StatePublisher>>
961-
ResourceManager::create_hardware_state_publishers(
962-
const std::string & ns, std::chrono::milliseconds update_period,
963-
std::shared_ptr<rclcpp_lifecycle::LifecycleNode> node)
960+
void ResourceManager::add_hardware_state_publishers(
961+
std::shared_ptr<distributed_control::StatePublisher> state_publisher)
964962
{
965963
std::lock_guard<std::recursive_mutex> guard(resource_interfaces_lock_);
966-
std::vector<std::shared_ptr<distributed_control::StatePublisher>> state_publishers_vec;
967-
state_publishers_vec.reserve(available_state_interfaces().size());
968-
969-
for (const auto & state_interface : available_state_interfaces())
970-
{
971-
auto state_publisher = std::make_shared<distributed_control::StatePublisher>(
972-
std::move(std::make_unique<hardware_interface::LoanedStateInterface>(
973-
claim_state_interface(state_interface))),
974-
ns, update_period, node);
975-
976-
resource_storage_->add_state_publisher(state_publisher);
977-
state_publishers_vec.push_back(state_publisher);
978-
}
979-
980-
return state_publishers_vec;
964+
resource_storage_->add_state_publisher(state_publisher);
981965
}
982966

983-
std::vector<std::shared_ptr<distributed_control::CommandForwarder>>
984-
ResourceManager::create_hardware_command_forwarders(
985-
const std::string & ns, std::chrono::milliseconds update_period,
986-
std::shared_ptr<rclcpp_lifecycle::LifecycleNode> node)
967+
void ResourceManager::add_hardware_command_forwarders(
968+
std::shared_ptr<distributed_control::CommandForwarder> command_forwarder)
987969
{
988970
std::lock_guard<std::recursive_mutex> guard(resource_interfaces_lock_);
989-
std::vector<std::shared_ptr<distributed_control::CommandForwarder>> command_forwarders_vec;
990-
command_forwarders_vec.reserve(available_command_interfaces().size());
991-
992-
for (const auto & command_interface : available_command_interfaces())
993-
{
994-
auto command_forwarder = std::make_shared<distributed_control::CommandForwarder>(
995-
std::move(std::make_unique<hardware_interface::LoanedCommandInterface>(
996-
claim_command_interface(command_interface))),
997-
ns, update_period, node);
998-
999-
resource_storage_->add_command_forwarder(command_forwarder);
1000-
command_forwarders_vec.push_back(command_forwarder);
1001-
}
1002-
1003-
return command_forwarders_vec;
971+
resource_storage_->add_command_forwarder(command_forwarder);
1004972
}
1005973

1006974
std::vector<std::shared_ptr<distributed_control::StatePublisher>>

0 commit comments

Comments
 (0)