|
|
|
@@ -271,6 +271,7 @@ void move_base::MoveBase::initialize(robot::TFListenerPtr tf)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
std::string path_file_so = loader.findLibraryPath(global_planner);
|
|
|
|
std::string path_file_so = loader.findLibraryPath(global_planner);
|
|
|
|
|
|
|
|
robot::log_info("[%s:%d]\n INFO: global_planner library path: %s", __FILE__, __LINE__, path_file_so.c_str());
|
|
|
|
planner_loader_ = boost::dll::import_alias<robot_nav_core::BaseGlobalPlanner::Ptr()>(
|
|
|
|
planner_loader_ = boost::dll::import_alias<robot_nav_core::BaseGlobalPlanner::Ptr()>(
|
|
|
|
path_file_so, global_planner, boost::dll::load_mode::append_decorations);
|
|
|
|
path_file_so, global_planner, boost::dll::load_mode::append_decorations);
|
|
|
|
|
|
|
|
|
|
|
|
@@ -314,6 +315,7 @@ void move_base::MoveBase::initialize(robot::TFListenerPtr tf)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
std::string path_file_so = loader.findLibraryPath(local_planner);
|
|
|
|
std::string path_file_so = loader.findLibraryPath(local_planner);
|
|
|
|
|
|
|
|
robot::log_info("[%s:%d]\n INFO: local_planner library path: %s", __FILE__, __LINE__, path_file_so.c_str());
|
|
|
|
controller_loader_ =
|
|
|
|
controller_loader_ =
|
|
|
|
boost::dll::import_alias<robot_nav_core::BaseLocalPlanner::Ptr()>(
|
|
|
|
boost::dll::import_alias<robot_nav_core::BaseLocalPlanner::Ptr()>(
|
|
|
|
path_file_so, local_planner, boost::dll::load_mode::append_decorations);
|
|
|
|
path_file_so, local_planner, boost::dll::load_mode::append_decorations);
|
|
|
|
@@ -401,7 +403,7 @@ void move_base::MoveBase::swapPlanner(std::string base_global_planner)
|
|
|
|
boost::unique_lock<boost::recursive_mutex> lock(planner_mutex_);
|
|
|
|
boost::unique_lock<boost::recursive_mutex> lock(planner_mutex_);
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
std::string path_file_so = loader.findLibraryPath(base_global_planner);
|
|
|
|
std::string path_file_so = loader.findLibraryPath(base_global_planner);
|
|
|
|
|
|
|
|
robot::log_info("[%s:%d]\n INFO: global_planner library path: %s", __FILE__, __LINE__, path_file_so.c_str());
|
|
|
|
auto new_loader = boost::dll::import_alias<robot_nav_core::BaseGlobalPlanner::Ptr()>(
|
|
|
|
auto new_loader = boost::dll::import_alias<robot_nav_core::BaseGlobalPlanner::Ptr()>(
|
|
|
|
path_file_so, base_global_planner, boost::dll::load_mode::append_decorations);
|
|
|
|
path_file_so, base_global_planner, boost::dll::load_mode::append_decorations);
|
|
|
|
auto new_planner = new_loader();
|
|
|
|
auto new_planner = new_loader();
|
|
|
|
@@ -2005,6 +2007,7 @@ bool move_base::MoveBase::loadRecoveryBehaviors(const robot::NodeHandle &node)
|
|
|
|
std::string behavior_name = behavior["name"].as<std::string>();
|
|
|
|
std::string behavior_name = behavior["name"].as<std::string>();
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
robot::PluginLoaderHelper loader;
|
|
|
|
std::string path_file_so = loader.findLibraryPath(behavior_type);
|
|
|
|
std::string path_file_so = loader.findLibraryPath(behavior_type);
|
|
|
|
|
|
|
|
robot::log_info("Loading recovery behavior '%s' of type '%s' from '%s'", behavior_name.c_str(), behavior_type.c_str(), path_file_so.c_str());
|
|
|
|
// Load the factory function from the shared library
|
|
|
|
// Load the factory function from the shared library
|
|
|
|
recovery_loaders_[behavior_name] = boost::dll::import_alias<robot_nav_core::RecoveryBehavior::Ptr()>(
|
|
|
|
recovery_loaders_[behavior_name] = boost::dll::import_alias<robot_nav_core::RecoveryBehavior::Ptr()>(
|
|
|
|
path_file_so, behavior_type, boost::dll::load_mode::append_decorations);
|
|
|
|
path_file_so, behavior_type, boost::dll::load_mode::append_decorations);
|
|
|
|
|