diff --git a/nav2_amcl/src/amcl_node.cpp b/nav2_amcl/src/amcl_node.cpp index ac6fd314ce63e86096080f282ed6d9d673b74363..17d1fc9ec7aeaab4126c967431b491c1dfccf37d 100644 --- a/nav2_amcl/src/amcl_node.cpp +++ b/nav2_amcl/src/amcl_node.cpp @@ -591,9 +591,9 @@ bool AmclNode::addNewScanner( tf_buffer_->transform(ident, laser_pose, base_frame_id_); } catch (tf2::TransformException & e) { RCLCPP_ERROR(get_logger(), "Couldn't transform from %s to %s, " - "even though the message notifier is in use", + "even though the message notifier is in use: (%s)", laser_scan->header.frame_id.c_str(), - base_frame_id_.c_str()); + base_frame_id_.c_str(), e.what()); return false; } @@ -833,8 +833,8 @@ AmclNode::calculateMaptoOdomTransform( tf2::toMsg(tmp_tf.inverse(), tmp_tf_stamped.pose); tf_buffer_->transform(tmp_tf_stamped, odom_to_map, odom_frame_id_); - } catch (tf2::TransformException &) { - RCLCPP_DEBUG(get_logger(), "Failed to subtract base to odom transform"); + } catch (tf2::TransformException & e) { + RCLCPP_DEBUG(get_logger(), "Failed to subtract base to odom transform: (%s)", e.what()); return; } diff --git a/nav2_map_server/src/occ_grid_loader.cpp b/nav2_map_server/src/occ_grid_loader.cpp index 924e0e70b2c57f05ed9f3e10c924e7ec9b25ca66..0743673994e2c7fd3b92ba96704707c81073e02d 100644 --- a/nav2_map_server/src/occ_grid_loader.cpp +++ b/nav2_map_server/src/occ_grid_loader.cpp @@ -84,34 +84,41 @@ OccGridLoader::on_configure(const rclcpp_lifecycle::State & /*state*/) map_filename = std::string(dirname(fname_copy)) + '/' + map_filename; free(fname_copy); } - } catch (YAML::Exception &) { - throw std::runtime_error("The map does not contain an image tag or it is invalid"); + } catch (YAML::Exception & e) { + std::string err("'" + yaml_filename_ + + "' does not contain an image tag or it is invalid: " + e.what()); + throw std::runtime_error(err); } try { loadParameters.resolution = doc["resolution"].as<double>(); - } catch (YAML::Exception &) { - throw std::runtime_error("The map does not contain a resolution tag or it is invalid"); + } catch (YAML::Exception & e) { + std::string err("The map does not contain a resolution tag or it is invalid: %s", e.what()); + throw std::runtime_error(err); } try { loadParameters.origin[0] = doc["origin"][0].as<double>(); loadParameters.origin[1] = doc["origin"][1].as<double>(); loadParameters.origin[2] = doc["origin"][2].as<double>(); - } catch (YAML::Exception &) { - throw std::runtime_error("The map does not contain an origin tag or it is invalid"); + } catch (YAML::Exception & e) { + std::string err("The map does not contain an origin tag or it is invalid: %s", e.what()); + throw std::runtime_error(err); } try { loadParameters.free_thresh = doc["free_thresh"].as<double>(); - } catch (YAML::Exception &) { - throw std::runtime_error("The map does not contain a free_thresh tag or it is invalid"); + } catch (YAML::Exception & e) { + std::string err("The map does not contain a free_thresh tag or it is invalid: %s", e.what()); + throw std::runtime_error(err); } try { loadParameters.occupied_thresh = doc["occupied_thresh"].as<double>(); - } catch (YAML::Exception &) { - throw std::runtime_error("The map does not contain an occupied_thresh tag or it is invalid"); + } catch (YAML::Exception & e) { + std::string err("The map does not contain an " + "occupied_thresh tag or it is invalid: %s", e.what()); + throw std::runtime_error(err); } std::string mode_str; @@ -131,15 +138,17 @@ OccGridLoader::on_configure(const rclcpp_lifecycle::State & /*state*/) mode_str.c_str()); loadParameters.mode = TRINARY; } - } catch (YAML::Exception &) { - RCLCPP_WARN(node_->get_logger(), "Mode parameter not set, using default value (trinary)"); + } catch (YAML::Exception & e) { + RCLCPP_WARN(node_->get_logger(), + "Mode parameter not set, using default value (trinary): %s", e.what()); loadParameters.mode = TRINARY; } try { loadParameters.negate = doc["negate"].as<int>(); - } catch (YAML::Exception &) { - throw std::runtime_error("The map does not contain a negate tag or it is invalid"); + } catch (YAML::Exception & e) { + std::string err("The map does not contain a negate tag or it is invalid: %s", e.what()); + throw std::runtime_error(err); } RCLCPP_DEBUG(node_->get_logger(), "resolution: %f", loadParameters.resolution);