Skip to content

Commit eb9e1e9

Browse files
authored
fix(AEB): ego to object distance calculation logic with predicted path (#5930)
init commit Signed-off-by: ismetatabay <ismet@leodrive.ai>
1 parent 1c5f38a commit eb9e1e9

File tree

1 file changed

+16
-12
lines changed
  • control/autonomous_emergency_braking/src

1 file changed

+16
-12
lines changed

control/autonomous_emergency_braking/src/node.cpp

+16-12
Original file line numberDiff line numberDiff line change
@@ -358,25 +358,29 @@ bool AEB::hasCollision(
358358
const double current_v, const Path & ego_path, const std::vector<ObjectData> & objects)
359359
{
360360
// calculate RSS
361-
const auto current_p = tier4_autoware_utils::createPoint(0.0, 0.0, 0.0);
361+
const auto current_p = tier4_autoware_utils::createPoint(
362+
ego_path[0].position.x, ego_path[0].position.y, ego_path[0].position.z);
362363
const double & t = t_response_;
363364
for (const auto & obj : objects) {
364365
const double & obj_v = obj.velocity;
365366
const double rss_dist = current_v * t + (current_v * current_v) / (2 * std::fabs(a_ego_min_)) -
366367
obj_v * obj_v / (2 * std::fabs(a_obj_min_)) + longitudinal_offset_;
367-
const double dist_ego_to_object =
368-
motion_utils::calcSignedArcLength(ego_path, current_p, obj.position) -
369-
vehicle_info_.max_longitudinal_offset_m;
370-
if (dist_ego_to_object < rss_dist) {
371-
// collision happens
372-
ObjectData collision_data = obj;
373-
collision_data.rss = rss_dist;
374-
collision_data.distance_to_object = dist_ego_to_object;
375-
collision_data_keeper_.update(collision_data);
376-
return true;
368+
369+
// check the object is front the ego or not
370+
if ((obj.position.x - ego_path[0].position.x) > 0) {
371+
const double dist_ego_to_object =
372+
motion_utils::calcSignedArcLength(ego_path, current_p, obj.position) -
373+
vehicle_info_.max_longitudinal_offset_m;
374+
if (dist_ego_to_object < rss_dist) {
375+
// collision happens
376+
ObjectData collision_data = obj;
377+
collision_data.rss = rss_dist;
378+
collision_data.distance_to_object = dist_ego_to_object;
379+
collision_data_keeper_.update(collision_data);
380+
return true;
381+
}
377382
}
378383
}
379-
380384
return false;
381385
}
382386

0 commit comments

Comments
 (0)