Skip to content

Commit 1419f32

Browse files
authored
fix(dynamic_avoidance): ignore objects on LC target lane (autowarefoundation#4137)
* fix(dynamic_avoidance): ignore objects on LC target lane Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update config Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
1 parent b5de8a3 commit 1419f32

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

planning/behavior_path_planner/config/dynamic_avoidance/dynamic_avoidance.param.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
successive_num_to_entry_dynamic_avoidance_condition: 5
1818

19+
min_obj_lat_offset_to_ego_path: 0.3 # [m]
20+
1921
drivable_area_generation:
2022
lat_offset_from_obstacle: 0.8 # [m]
2123
max_lat_offset_to_avoid: 0.5 # [m]

planning/behavior_path_planner/include/behavior_path_planner/scene_module/dynamic_avoidance/dynamic_avoidance_module.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ struct DynamicAvoidanceParameters
4848
bool avoid_pedestrian{false};
4949
double min_obstacle_vel{0.0};
5050
int successive_num_to_entry_dynamic_avoidance_condition{0};
51+
double min_obj_lat_offset_to_ego_path{0.0};
5152

5253
// drivable area generation
5354
double lat_offset_from_obstacle{0.0};

planning/behavior_path_planner/src/scene_module/dynamic_avoidance/dynamic_avoidance_module.cpp

+11-1
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,8 @@ DynamicAvoidanceModule::calcTargetObjectsCandidate() const
325325
const auto objects_in_right_lanes = getObjectsInLanes(input_objects, right_lanes);
326326
const auto objects_in_left_lanes = getObjectsInLanes(input_objects, left_lanes);
327327

328-
// 4. check if object will cut into the ego lane or cut out to the next lane.
328+
// 4. check if object will not cut into the ego lane or cut out to the next lane,
329+
// or close to the ego's path considering ego's lane change.
329330
// NOTE: The oncoming object will be ignored.
330331
constexpr double epsilon_path_lat_diff = 0.3;
331332
std::vector<DynamicAvoidanceObjectCandidate> output_objects_candidate;
@@ -380,6 +381,15 @@ DynamicAvoidanceModule::calcTargetObjectsCandidate() const
380381
continue;
381382
}
382383

384+
// Ignore object that is close to the ego's path.
385+
const double lat_offset_to_path =
386+
motion_utils::calcLateralOffset(prev_module_path->points, object.pose.position);
387+
if (
388+
std::abs(lat_offset_to_path) < planner_data_->parameters.vehicle_width / 2.0 +
389+
parameters_->min_obj_lat_offset_to_ego_path) {
390+
continue;
391+
}
392+
383393
// get previous object if it exists
384394
const auto prev_target_object_candidate = DynamicAvoidanceObjectCandidate::getObjectFromUuid(
385395
prev_target_objects_candidate_, object.uuid);

planning/behavior_path_planner/src/scene_module/dynamic_avoidance/manager.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ DynamicAvoidanceModuleManager::DynamicAvoidanceModuleManager(
4242
p.min_obstacle_vel = node->declare_parameter<double>(ns + "min_obstacle_vel");
4343
p.successive_num_to_entry_dynamic_avoidance_condition =
4444
node->declare_parameter<int>(ns + "successive_num_to_entry_dynamic_avoidance_condition");
45+
p.min_obj_lat_offset_to_ego_path =
46+
node->declare_parameter<double>(ns + "min_obj_lat_offset_to_ego_path");
4547
}
4648

4749
{ // drivable_area_generation
@@ -92,6 +94,8 @@ void DynamicAvoidanceModuleManager::updateModuleParams(
9294
updateParam<int>(
9395
parameters, ns + "successive_num_to_entry_dynamic_avoidance_condition",
9496
p->successive_num_to_entry_dynamic_avoidance_condition);
97+
updateParam<double>(
98+
parameters, ns + "min_obj_lat_offset_to_ego_path", p->min_obj_lat_offset_to_ego_path);
9599
}
96100

97101
{ // drivable_area_generation

0 commit comments

Comments
 (0)