Skip to content

Commit 491433a

Browse files
Fix pose timestamp when using transformPoseInTargetFrame (#5499)
* Fix pose timestamp when using transformPoseInTargetFrame Signed-off-by: mini-1235 <[email protected]> * Fix frame Signed-off-by: mini-1235 <[email protected]> * Update nav2_route/src/goal_intent_extractor.cpp Co-authored-by: Steve Macenski <[email protected]> Signed-off-by: mini-1235 <[email protected]> --------- Signed-off-by: mini-1235 <[email protected]> Co-authored-by: Steve Macenski <[email protected]>
1 parent 41bd110 commit 491433a

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

nav2_controller/src/controller_server.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,7 @@ bool ControllerServer::isGoalReached()
799799
geometry_msgs::msg::Twist velocity = getThresholdedTwist(odom_sub_->getRawTwist());
800800

801801
geometry_msgs::msg::PoseStamped transformed_end_pose;
802+
end_pose_.header.stamp = pose.header.stamp;
802803
nav2_util::transformPoseInTargetFrame(
803804
end_pose_, transformed_end_pose, *costmap_ros_->getTfBuffer(),
804805
costmap_ros_->getGlobalFrameID(), costmap_ros_->getTransformTolerance());

nav2_dwb_controller/dwb_core/src/dwb_local_planner.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ DWBLocalPlanner::prepareGlobalPlan(
290290
}
291291

292292
goal_pose.header.frame_id = global_plan_.header.frame_id;
293+
goal_pose.header.stamp = pose.header.stamp;
293294
goal_pose.pose = global_plan_.poses.back().pose;
294295
nav2_util::transformPoseInTargetFrame(
295296
goal_pose, goal_pose, *tf_,
@@ -535,10 +536,17 @@ DWBLocalPlanner::transformGlobalPlan(
535536
// Helper function for the transform below. Converts a pose2D from global
536537
// frame to local
537538
auto transformGlobalPoseToLocal = [&](const auto & global_plan_pose) {
538-
geometry_msgs::msg::PoseStamped transformed_pose;
539-
nav2_util::transformPoseInTargetFrame(
540-
global_plan_pose, transformed_pose, *tf_,
541-
transformed_plan.header.frame_id, transform_tolerance_);
539+
geometry_msgs::msg::PoseStamped stamped_pose, transformed_pose;
540+
stamped_pose.header.frame_id = global_plan_.header.frame_id;
541+
stamped_pose.header.stamp = robot_pose.header.stamp;
542+
stamped_pose.pose = global_plan_pose.pose;
543+
if (!nav2_util::transformPoseInTargetFrame(
544+
stamped_pose, transformed_pose, *tf_,
545+
transformed_plan.header.frame_id, transform_tolerance_))
546+
{
547+
throw nav2_core::ControllerTFError("Unable to transform plan pose into local frame");
548+
}
549+
transformed_pose.pose.position.z = 0.0;
542550
return transformed_pose;
543551
};
544552

nav2_route/src/goal_intent_extractor.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ GoalIntentExtractor::findStartandGoal(const std::shared_ptr<const GoalT> goal)
175175
node_pose.pose.position.x = node_data.coords.x;
176176
node_pose.pose.position.y = node_data.coords.y;
177177
node_pose.header.frame_id = node_data.coords.frame_id;
178+
node_pose.header.stamp = start_pose.header.stamp;
178179
candidate_nodes.push_back(transformPose(node_pose, costmap_frame_id));
179180
}
180181

@@ -202,6 +203,7 @@ GoalIntentExtractor::findStartandGoal(const std::shared_ptr<const GoalT> goal)
202203
node_pose.pose.position.x = node_data.coords.x;
203204
node_pose.pose.position.y = node_data.coords.y;
204205
node_pose.header.frame_id = node_data.coords.frame_id;
206+
node_pose.header.stamp = goal_pose.header.stamp;
205207
candidate_nodes.push_back(transformPose(node_pose, costmap_frame_id));
206208
}
207209

0 commit comments

Comments
 (0)