|
14 | 14 |
|
15 | 15 | #include "autonomous_emergency_braking/node.hpp"
|
16 | 16 |
|
| 17 | +#include <tier4_autoware_utils/tier4_autoware_utils.hpp> |
| 18 | + |
17 | 19 | #include <pcl/filters/voxel_grid.h>
|
18 | 20 | #include <tf2/utils.h>
|
19 | 21 |
|
@@ -355,25 +357,29 @@ bool AEB::hasCollision(
|
355 | 357 | const double current_v, const Path & ego_path, const std::vector<ObjectData> & objects)
|
356 | 358 | {
|
357 | 359 | // 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); |
359 | 362 | const double & t = t_response_;
|
360 | 363 | for (const auto & obj : objects) {
|
361 | 364 | const double & obj_v = obj.velocity;
|
362 | 365 | const double rss_dist = current_v * t + (current_v * current_v) / (2 * std::fabs(a_ego_min_)) -
|
363 | 366 | 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 | + } |
374 | 381 | }
|
375 | 382 | }
|
376 |
| - |
377 | 383 | return false;
|
378 | 384 | }
|
379 | 385 |
|
|
0 commit comments