|
130 | 130 | StaticLayer::getParameters()
|
131 | 131 | {
|
132 | 132 | int temp_lethal_threshold = 0;
|
133 |
| - double temp_tf_tol = 0.0; |
134 | 133 |
|
135 | 134 | declareParameter("enabled", rclcpp::ParameterValue(true));
|
136 | 135 | declareParameter("subscribe_to_updates", rclcpp::ParameterValue(false));
|
@@ -159,15 +158,14 @@ StaticLayer::getParameters()
|
159 | 158 | node->get_parameter("lethal_cost_threshold", temp_lethal_threshold);
|
160 | 159 | node->get_parameter("unknown_cost_value", unknown_cost_value_);
|
161 | 160 | node->get_parameter("trinary_costmap", trinary_costmap_);
|
162 |
| - node->get_parameter("transform_tolerance", temp_tf_tol); |
| 161 | + node->get_parameter("transform_tolerance", transform_tolerance_); |
| 162 | + node->get_parameter("robot_base_frame", robot_base_frame_); |
163 | 163 |
|
164 | 164 | // Enforce bounds
|
165 | 165 | lethal_threshold_ = std::max(std::min(temp_lethal_threshold, 100), 0);
|
166 | 166 | map_received_ = false;
|
167 | 167 | map_received_in_update_bounds_ = false;
|
168 | 168 |
|
169 |
| - transform_tolerance_ = tf2::durationFromSec(temp_tf_tol); |
170 |
| - |
171 | 169 | // Add callback for dynamic parameters
|
172 | 170 | dyn_params_handler_ = node->add_on_set_parameters_callback(
|
173 | 171 | std::bind(
|
@@ -387,6 +385,18 @@ StaticLayer::updateFootprint(
|
387 | 385 | {
|
388 | 386 | if (!footprint_clearing_enabled_) {return;}
|
389 | 387 |
|
| 388 | + if (map_frame_.empty()) {return;} |
| 389 | + if (map_frame != global_frame_) { |
| 390 | + geometry_msgs::msg::PoseStamped robot_pose; |
| 391 | + nav2_util::getCurrentPose( |
| 392 | + robot_pose, *tf_, |
| 393 | + map_frame_, robot_base_frame_, transform_tolerance_ |
| 394 | + ); |
| 395 | + robot_x = robot_pose.pose.position.x; |
| 396 | + robot_y = robot_pose.pose.position.y; |
| 397 | + robot_yaw = tf2::getYaw(robot_pose.pose.orientation); |
| 398 | + } |
| 399 | + |
390 | 400 | transformFootprint(robot_x, robot_y, robot_yaw, getFootprint(), transformed_footprint_);
|
391 | 401 |
|
392 | 402 | for (unsigned int i = 0; i < transformed_footprint_.size(); i++) {
|
@@ -436,7 +446,7 @@ StaticLayer::updateCosts(
|
436 | 446 | try {
|
437 | 447 | transform = tf_->lookupTransform(
|
438 | 448 | map_frame_, global_frame_, tf2::TimePointZero,
|
439 |
| - transform_tolerance_); |
| 449 | + tf2::durationFromSec(transform_tolerance_)); |
440 | 450 | } catch (tf2::TransformException & ex) {
|
441 | 451 | RCLCPP_ERROR(logger_, "StaticLayer: %s", ex.what());
|
442 | 452 | return;
|
@@ -495,7 +505,7 @@ StaticLayer::dynamicParametersCallback(
|
495 | 505 | "cannot be changed while running. Rejecting parameter update.", param_name.c_str());
|
496 | 506 | } else if (param_type == ParameterType::PARAMETER_DOUBLE) {
|
497 | 507 | if (param_name == name_ + "." + "transform_tolerance") {
|
498 |
| - transform_tolerance_ = tf2::durationFromSec(parameter.as_double()); |
| 508 | + transform_tolerance_ = parameter.as_double(); |
499 | 509 | }
|
500 | 510 | } else if (param_type == ParameterType::PARAMETER_BOOL) {
|
501 | 511 | if (param_name == name_ + "." + "enabled" && enabled_ != parameter.as_bool()) {
|
|
0 commit comments