diff --git a/controller_manager/include/controller_manager/controller_manager.hpp b/controller_manager/include/controller_manager/controller_manager.hpp index 537f0447be..abe952abcf 100644 --- a/controller_manager/include/controller_manager/controller_manager.hpp +++ b/controller_manager/include/controller_manager/controller_manager.hpp @@ -388,9 +388,8 @@ class ControllerManager : public rclcpp::Node std::shared_ptr executor_; - std::shared_ptr> loader_; - std::shared_ptr> - chainable_loader_; + pluginlib::ClassLoader loader_; + pluginlib::ClassLoader chainable_loader_; /// Best effort (non real-time safe) callback group, e.g., service callbacks. /** diff --git a/controller_manager/src/controller_manager.cpp b/controller_manager/src/controller_manager.cpp index b912b622e2..1fda25ba26 100644 --- a/controller_manager/src/controller_manager.cpp +++ b/controller_manager/src/controller_manager.cpp @@ -138,11 +138,8 @@ ControllerManager::ControllerManager( resource_manager_(std::make_unique()), diagnostics_updater_(this), executor_(executor), - loader_(std::make_shared>( - kControllerInterfaceNamespace, kControllerInterfaceClassName)), - chainable_loader_( - std::make_shared>( - kControllerInterfaceNamespace, kChainableControllerInterfaceClassName)) + loader_(kControllerInterfaceNamespace, kControllerInterfaceClassName), + chainable_loader_(kControllerInterfaceNamespace, kChainableControllerInterfaceClassName) { if (!get_parameter("update_rate", update_rate_)) { @@ -172,11 +169,8 @@ ControllerManager::ControllerManager( resource_manager_(std::move(resource_manager)), diagnostics_updater_(this), executor_(executor), - loader_(std::make_shared>( - kControllerInterfaceNamespace, kControllerInterfaceClassName)), - chainable_loader_( - std::make_shared>( - kControllerInterfaceNamespace, kChainableControllerInterfaceClassName)) + loader_(kControllerInterfaceNamespace, kControllerInterfaceClassName), + chainable_loader_(kControllerInterfaceNamespace, kChainableControllerInterfaceClassName) { if (!get_parameter("update_rate", update_rate_)) { @@ -296,18 +290,18 @@ controller_interface::ControllerInterfaceBaseSharedPtr ControllerManager::load_c RCLCPP_INFO(get_logger(), "Loading controller '%s'", controller_name.c_str()); if ( - !loader_->isClassAvailable(controller_type) && - !chainable_loader_->isClassAvailable(controller_type)) + !loader_.isClassAvailable(controller_type) && + !chainable_loader_.isClassAvailable(controller_type)) { RCLCPP_ERROR( get_logger(), "Loader for controller '%s' (type '%s') not found.", controller_name.c_str(), controller_type.c_str()); RCLCPP_INFO(get_logger(), "Available classes:"); - for (const auto & available_class : loader_->getDeclaredClasses()) + for (const auto & available_class : loader_.getDeclaredClasses()) { RCLCPP_INFO(get_logger(), " %s", available_class.c_str()); } - for (const auto & available_class : chainable_loader_->getDeclaredClasses()) + for (const auto & available_class : chainable_loader_.getDeclaredClasses()) { RCLCPP_INFO(get_logger(), " %s", available_class.c_str()); } @@ -319,13 +313,13 @@ controller_interface::ControllerInterfaceBaseSharedPtr ControllerManager::load_c try { - if (loader_->isClassAvailable(controller_type)) + if (loader_.isClassAvailable(controller_type)) { - controller = loader_->createSharedInstance(controller_type); + controller = loader_.createSharedInstance(controller_type); } - if (chainable_loader_->isClassAvailable(controller_type)) + if (chainable_loader_.isClassAvailable(controller_type)) { - controller = chainable_loader_->createSharedInstance(controller_type); + controller = chainable_loader_.createSharedInstance(controller_type); } } catch (const pluginlib::CreateClassException & e) @@ -1415,14 +1409,14 @@ void ControllerManager::list_controller_types_srv_cb( std::lock_guard guard(services_lock_); RCLCPP_DEBUG(get_logger(), "list types service locked"); - auto cur_types = loader_->getDeclaredClasses(); + auto cur_types = loader_.getDeclaredClasses(); for (const auto & cur_type : cur_types) { response->types.push_back(cur_type); response->base_classes.push_back(kControllerInterfaceClassName); RCLCPP_DEBUG(get_logger(), "%s", cur_type.c_str()); } - cur_types = chainable_loader_->getDeclaredClasses(); + cur_types = chainable_loader_.getDeclaredClasses(); for (const auto & cur_type : cur_types) { response->types.push_back(cur_type); @@ -1534,11 +1528,10 @@ void ControllerManager::reload_controller_libraries_service_cb( assert(loaded_controllers.empty()); // Force a reload on all the PluginLoaders (internally, this recreates the plugin loaders) - loader_ = std::make_shared>( + loader_ = pluginlib::ClassLoader( kControllerInterfaceNamespace, kControllerInterfaceClassName); - chainable_loader_ = - std::make_shared>( - kControllerInterfaceNamespace, kChainableControllerInterfaceClassName); + chainable_loader_ = pluginlib::ClassLoader( + kControllerInterfaceNamespace, kChainableControllerInterfaceClassName); RCLCPP_INFO( get_logger(), "Controller manager: reloaded controller libraries for '%s'", kControllerInterfaceNamespace);