From 5f237d3f5313f1f4ce094ed95bc732a592768ea9 Mon Sep 17 00:00:00 2001 From: Matthew Hansen <matthew.k.hansen@intel.com> Date: Thu, 6 Jun 2019 11:08:19 -0700 Subject: [PATCH] Add try/catch around loading critics --- .../dwb_core/src/dwb_local_planner.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/nav2_dwb_controller/dwb_core/src/dwb_local_planner.cpp b/nav2_dwb_controller/dwb_core/src/dwb_local_planner.cpp index c4a83bd5..5deecc79 100644 --- a/nav2_dwb_controller/dwb_core/src/dwb_local_planner.cpp +++ b/nav2_dwb_controller/dwb_core/src/dwb_local_planner.cpp @@ -94,7 +94,12 @@ DWBLocalPlanner::on_configure(const rclcpp_lifecycle::State & state) traj_generator_->initialize(node_); goal_checker_->initialize(node_); - loadCritics(); + try { + loadCritics(); + } catch (const std::exception & e) { + RCLCPP_ERROR(node_->get_logger(), "Couldn't load critics! Caught exception: %s", e.what()); + return nav2_util::CallbackReturn::FAILURE; + } return nav2_util::CallbackReturn::SUCCESS; } @@ -171,7 +176,13 @@ DWBLocalPlanner::loadCritics() RCLCPP_INFO(node_->get_logger(), "Using critic \"%s\" (%s)", plugin_name.c_str(), plugin_class.c_str()); critics_.push_back(plugin); - plugin->initialize(node_, plugin_name, costmap_ros_); + try { + plugin->initialize(node_, plugin_name, costmap_ros_); + } catch (const std::exception & e) { + RCLCPP_ERROR(node_->get_logger(), "Couldn't initialize critic plugin!"); + throw e; + } + RCLCPP_INFO(node_->get_logger(), "Critic plugin initialized"); } } -- GitLab