@@ -704,6 +704,7 @@ void ControllerServer::computeAndPublishVelocity()
704
704
feedback->distance_to_goal = nav2_util::geometry_utils::calculate_path_length (current_path_,
705
705
closest_pose_idx);
706
706
action_server_->publish_feedback (feedback);
707
+ feedback->tracking_error = signed_distance_;
707
708
}
708
709
709
710
void ControllerServer::updateGlobalPath ()
@@ -786,9 +787,6 @@ void ControllerServer::publishTrackingState()
786
787
return ;
787
788
}
788
789
789
- const double distance_to_goal = nav2_util::geometry_utils::euclidean_distance (
790
- robot_pose, end_pose_in_robot_frame);
791
-
792
790
const auto path_search_result = nav2_util::distance_from_path (
793
791
current_path_, robot_pose_in_path_frame.pose , start_index_, search_window_);
794
792
@@ -802,16 +800,14 @@ void ControllerServer::publishTrackingState()
802
800
double cross_product = nav2_util::geometry_utils::cross_product_2d (
803
801
robot_pose_in_path_frame.pose .position , segment_start.pose , segment_end.pose );
804
802
805
- nav2_msgs::msg::TrackingError tracking_error_msg;
806
- tracking_error_msg.header .stamp = now ();
807
- tracking_error_msg.header .frame_id = robot_pose.header .frame_id ;
808
- tracking_error_msg.tracking_error = path_search_result.distance ;
809
- tracking_error_msg.last_index = closest_idx;
810
- tracking_error_msg.cross_product = cross_product;
811
- tracking_error_msg.distance_to_goal = distance_to_goal;
812
- tracking_error_msg.robot_pose = robot_pose;
813
-
814
- tracking_error_pub_->publish (tracking_error_msg);
803
+ signed_distance_ = path_search_result.distance * (cross_product >= 0.0 ? 1.0 : -1.0 );
804
+ auto tracking_error_msg = std::make_unique<nav2_msgs::msg::TrackingError>();
805
+ tracking_error_msg->header .stamp = now ();
806
+ tracking_error_msg->header .frame_id = robot_pose.header .frame_id ;
807
+ tracking_error_msg->tracking_error = signed_distance_;
808
+ tracking_error_msg->current_path_index = closest_idx;
809
+ tracking_error_msg->robot_pose = robot_pose;
810
+ tracking_error_pub_->publish (std::move (tracking_error_msg));
815
811
}
816
812
817
813
void ControllerServer::publishVelocity (const geometry_msgs::msg::TwistStamped & velocity)
0 commit comments