Skip to content

Commit 3ed7691

Browse files
xtk8532704mkquda
authored andcommitted
fix(control_evaluator, planning_evaluator): fix goal-related metrics calculation (autowarefoundation#11337)
* fix stop condition Signed-off-by: xtk8532704 <1041084556@qq.com> * fix include Signed-off-by: xtk8532704 <1041084556@qq.com> --------- Signed-off-by: xtk8532704 <1041084556@qq.com>
1 parent 97e120c commit 3ed7691

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

evaluator/autoware_control_evaluator/src/control_evaluator_node.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -437,18 +437,20 @@ void ControlEvaluatorNode::AddYawDeviationMetricMsg(const Trajectory & traj, con
437437
void ControlEvaluatorNode::AddGoalDeviationMetricMsg(const Odometry & odom)
438438
{
439439
const Pose ego_pose = odom.pose.pose;
440+
const auto & goal_pose = route_handler_.getGoalPose();
441+
440442
const double longitudinal_deviation_value =
441-
metrics::calcLongitudinalDeviation(route_handler_.getGoalPose(), ego_pose.position);
443+
metrics::calcLongitudinalDeviation(goal_pose, ego_pose.position);
442444
const double longitudinal_deviation_value_abs = std::abs(longitudinal_deviation_value);
443445
const double lateral_deviation_value =
444-
metrics::calcLateralDeviation(route_handler_.getGoalPose(), ego_pose.position);
446+
metrics::calcLateralDeviation(goal_pose, ego_pose.position);
445447
const double lateral_deviation_value_abs = std::abs(lateral_deviation_value);
446-
const double yaw_deviation_value =
447-
metrics::calcYawDeviation(route_handler_.getGoalPose(), ego_pose);
448+
const double yaw_deviation_value = metrics::calcYawDeviation(goal_pose, ego_pose);
448449
const double yaw_deviation_value_abs = std::abs(yaw_deviation_value);
449450

450451
const bool is_ego_stopped_near_goal =
451-
std::abs(longitudinal_deviation_value) < 3.0 && ego_speed_ < 0.001;
452+
autoware_utils::calc_distance2d(ego_pose.position, goal_pose.position) < 3.0 &&
453+
ego_speed_ < 0.001;
452454

453455
AddMetricMsg(
454456
Metric::goal_longitudinal_deviation, longitudinal_deviation_value, is_ego_stopped_near_goal);

evaluator/autoware_planning_evaluator/src/planning_evaluator_node.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include <autoware_lanelet2_extension/utility/query.hpp>
2121
#include <autoware_lanelet2_extension/utility/utilities.hpp>
22+
#include <autoware_utils/geometry/geometry.hpp>
2223
#include <nlohmann/json.hpp>
2324

2425
#include <diagnostic_msgs/msg/detail/diagnostic_status__struct.hpp>
@@ -380,6 +381,10 @@ void PlanningEvaluatorNode::onModifiedGoal(
380381
return;
381382
}
382383
auto start = now();
384+
const auto is_ego_stopped_near_goal =
385+
std::abs(ego_state_ptr->twist.twist.linear.x) < 0.001 &&
386+
autoware_utils::calc_distance2d(
387+
ego_state_ptr->pose.pose.position, modified_goal_msg->pose.position) < 3.0;
383388

384389
for (Metric metric : metrics_for_publish_) {
385390
const auto metric_stat = metrics_calculator_.calculate(
@@ -388,9 +393,8 @@ void PlanningEvaluatorNode::onModifiedGoal(
388393
continue;
389394
}
390395
AddMetricMsg(metric, *metric_stat);
391-
if (
392-
output_metrics_ && std::abs(ego_state_ptr->twist.twist.linear.x) < 0.001 &&
393-
metric_stat->mean() < 3.0) { // only record when ego stop close to the target in 3m
396+
if (output_metrics_ && is_ego_stopped_near_goal) { // only record when ego stop close to the
397+
// target in 3m
394398
const OutputMetric output_metric = str_to_output_metric.at(metric_to_str.at(metric));
395399
metrics_accumulator_.accumulate(output_metric, *metric_stat);
396400
}

0 commit comments

Comments
 (0)