Skip to content

Commit c0035db

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

File tree

1 file changed

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

1 file changed

+18
-12
lines changed

control/autonomous_emergency_braking/src/node.cpp

+18-12
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
#include "autonomous_emergency_braking/node.hpp"
1616

17+
#include <tier4_autoware_utils/tier4_autoware_utils.hpp>
18+
1719
#include <pcl/filters/voxel_grid.h>
1820
#include <tf2/utils.h>
1921

@@ -355,25 +357,29 @@ bool AEB::hasCollision(
355357
const double current_v, const Path & ego_path, const std::vector<ObjectData> & objects)
356358
{
357359
// calculate RSS
358-
const auto current_p = tier4_autoware_utils::createPoint(0.0, 0.0, 0.0);
360+
const auto current_p = tier4_autoware_utils::createPoint(
361+
ego_path[0].position.x, ego_path[0].position.y, ego_path[0].position.z);
359362
const double & t = t_response_;
360363
for (const auto & obj : objects) {
361364
const double & obj_v = obj.velocity;
362365
const double rss_dist = current_v * t + (current_v * current_v) / (2 * std::fabs(a_ego_min_)) -
363366
obj_v * obj_v / (2 * std::fabs(a_obj_min_)) + longitudinal_offset_;
364-
const double dist_ego_to_object =
365-
tier4_autoware_utils::calcSignedArcLength(ego_path, current_p, obj.position) -
366-
vehicle_info_.max_longitudinal_offset_m;
367-
if (dist_ego_to_object < rss_dist) {
368-
// collision happens
369-
ObjectData collision_data = obj;
370-
collision_data.rss = rss_dist;
371-
collision_data.distance_to_object = dist_ego_to_object;
372-
collision_data_keeper_.update(collision_data);
373-
return true;
367+
368+
// check the object is front the ego or not
369+
if ((obj.position.x - ego_path[0].position.x) > 0) {
370+
const double dist_ego_to_object =
371+
tier4_autoware_utils::calcSignedArcLength(ego_path, current_p, obj.position) -
372+
vehicle_info_.max_longitudinal_offset_m;
373+
if (dist_ego_to_object < rss_dist) {
374+
// collision happens
375+
ObjectData collision_data = obj;
376+
collision_data.rss = rss_dist;
377+
collision_data.distance_to_object = dist_ego_to_object;
378+
collision_data_keeper_.update(collision_data);
379+
return true;
380+
}
374381
}
375382
}
376-
377383
return false;
378384
}
379385

0 commit comments

Comments
 (0)