Skip to content

Commit 537e497

Browse files
authored
Merge pull request #1280 from tier4/hotfix/v0.26.1/cherry-pick-avoidance-pr
fix(avoidance): cherry pick PRs
2 parents 954f522 + 2032dcf commit 537e497

File tree

19 files changed

+1632
-316
lines changed

19 files changed

+1632
-316
lines changed

common/tier4_logging_level_configure_rviz_plugin/config/logger_config.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ Planning:
3737
behavior_path_planner_avoidance:
3838
- node_name: /planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner
3939
logger_name: planning.scenario_planning.lane_driving.behavior_planning.behavior_path_planner.avoidance
40+
- node_name: /planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner
41+
logger_name: planning.scenario_planning.lane_driving.behavior_planning.behavior_path_planner.avoidance.utils
4042

4143
behavior_path_planner_goal_planner:
4244
- node_name: /planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner

planning/behavior_path_avoidance_module/README.md

+1-170
Large diffs are not rendered by default.

planning/behavior_path_avoidance_module/config/avoidance.param.yaml

+6-9
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
hard_margin_for_parked_vehicle: 0.7 # [m]
2929
max_expand_ratio: 0.0 # [-] FOR DEVELOPER
3030
envelope_buffer_margin: 0.5 # [m] FOR DEVELOPER
31-
use_conservative_buffer_longitudinal: true # [-] When set to true, the base_link2front is added to the longitudinal buffer before avoidance.
3231
truck:
3332
th_moving_speed: 1.0
3433
th_moving_time: 2.0
@@ -39,7 +38,6 @@
3938
hard_margin_for_parked_vehicle: 0.7
4039
max_expand_ratio: 0.0
4140
envelope_buffer_margin: 0.5
42-
use_conservative_buffer_longitudinal: true
4341
bus:
4442
th_moving_speed: 1.0
4543
th_moving_time: 2.0
@@ -50,7 +48,6 @@
5048
hard_margin_for_parked_vehicle: 0.7
5149
max_expand_ratio: 0.0
5250
envelope_buffer_margin: 0.5
53-
use_conservative_buffer_longitudinal: true
5451
trailer:
5552
th_moving_speed: 1.0
5653
th_moving_time: 2.0
@@ -61,7 +58,6 @@
6158
hard_margin_for_parked_vehicle: 0.7
6259
max_expand_ratio: 0.0
6360
envelope_buffer_margin: 0.5
64-
use_conservative_buffer_longitudinal: true
6561
unknown:
6662
th_moving_speed: 0.28
6763
th_moving_time: 1.0
@@ -72,7 +68,6 @@
7268
hard_margin_for_parked_vehicle: -0.2
7369
max_expand_ratio: 0.0
7470
envelope_buffer_margin: 0.1
75-
use_conservative_buffer_longitudinal: true
7671
bicycle:
7772
th_moving_speed: 0.28
7873
th_moving_time: 1.0
@@ -83,7 +78,6 @@
8378
hard_margin_for_parked_vehicle: 0.5
8479
max_expand_ratio: 0.0
8580
envelope_buffer_margin: 0.5
86-
use_conservative_buffer_longitudinal: true
8781
motorcycle:
8882
th_moving_speed: 1.0
8983
th_moving_time: 1.0
@@ -94,7 +88,6 @@
9488
hard_margin_for_parked_vehicle: 0.3
9589
max_expand_ratio: 0.0
9690
envelope_buffer_margin: 0.5
97-
use_conservative_buffer_longitudinal: true
9891
pedestrian:
9992
th_moving_speed: 0.28
10093
th_moving_time: 1.0
@@ -105,7 +98,6 @@
10598
hard_margin_for_parked_vehicle: 0.5
10699
max_expand_ratio: 0.0
107100
envelope_buffer_margin: 0.5
108-
use_conservative_buffer_longitudinal: true
109101
lower_distance_for_polygon_expansion: 30.0 # [m] FOR DEVELOPER
110102
upper_distance_for_polygon_expansion: 100.0 # [m] FOR DEVELOPER
111103

@@ -140,6 +132,10 @@
140132
th_shiftable_ratio: 0.8 # [-]
141133
min_road_shoulder_width: 0.5 # [m] FOR DEVELOPER
142134

135+
# for merging/deviating vehicle
136+
merging_vehicle:
137+
th_overhang_distance: 0.0 # [m]
138+
143139
# params for avoidance of vehicle type objects that are ambiguous as to whether they are parked.
144140
avoidance_for_ambiguous_vehicle:
145141
enable: true # [-]
@@ -222,6 +218,8 @@
222218
min_slow_down_speed: 1.38 # [m/s]
223219
buf_slow_down_speed: 0.56 # [m/s] FOR DEVELOPER
224220
nominal_avoidance_speed: 8.33 # [m/s] FOR DEVELOPER
221+
consider_front_overhang: true # [-]
222+
consider_rear_overhang: true # [-]
225223
# return dead line
226224
return_dead_line:
227225
goal:
@@ -296,4 +294,3 @@
296294
# for debug
297295
debug:
298296
marker: false
299-
console: false

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/data_structs.hpp

+5-10
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@ struct ObjectParameter
7676
double lateral_hard_margin_for_parked_vehicle{1.0};
7777

7878
double longitudinal_margin{0.0};
79-
80-
bool use_conservative_buffer_longitudinal{true};
8179
};
8280

8381
struct AvoidanceParameters
@@ -191,13 +189,8 @@ struct AvoidanceParameters
191189
double time_threshold_for_ambiguous_vehicle{0.0};
192190
double distance_threshold_for_ambiguous_vehicle{0.0};
193191

194-
// when complete avoidance motion, there is a distance margin with the object
195-
// for longitudinal direction
196-
double longitudinal_collision_margin_min_distance{0.0};
197-
198-
// when complete avoidance motion, there is a time margin with the object
199-
// for longitudinal direction
200-
double longitudinal_collision_margin_time{0.0};
192+
// for merging/deviating vehicle
193+
double th_overhang_distance{0.0};
201194

202195
// parameters for safety check area
203196
bool enable_safety_check{false};
@@ -219,6 +212,9 @@ struct AvoidanceParameters
219212
size_t hysteresis_factor_safe_count;
220213
double hysteresis_factor_expand_rate{0.0};
221214

215+
bool consider_front_overhang{true};
216+
bool consider_rear_overhang{true};
217+
222218
// maximum stop distance
223219
double stop_max_distance{0.0};
224220

@@ -329,7 +325,6 @@ struct AvoidanceParameters
329325

330326
// debug
331327
bool publish_debug_marker = false;
332-
bool print_debug_info = false;
333328
};
334329

335330
struct ObjectData // avoidance target

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/helper.hpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,19 @@ class AvoidanceHelper
148148
{
149149
const auto object_type = utils::getHighestProbLabel(object.object.classification);
150150
const auto object_parameter = parameters_->object_parameters.at(object_type);
151-
const auto & additional_buffer_longitudinal =
152-
object_parameter.use_conservative_buffer_longitudinal ? data_->parameters.base_link2front
153-
: 0.0;
154-
return object_parameter.longitudinal_margin + additional_buffer_longitudinal;
151+
if (!parameters_->consider_front_overhang) {
152+
return object_parameter.longitudinal_margin;
153+
}
154+
return object_parameter.longitudinal_margin + data_->parameters.base_link2front;
155155
}
156156

157157
double getRearConstantDistance(const ObjectData & object) const
158158
{
159159
const auto object_type = utils::getHighestProbLabel(object.object.classification);
160160
const auto object_parameter = parameters_->object_parameters.at(object_type);
161+
if (!parameters_->consider_rear_overhang) {
162+
return object_parameter.longitudinal_margin;
163+
}
161164
return object_parameter.longitudinal_margin + data_->parameters.base_link2rear + object.length;
162165
}
163166

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/parameter_helper.hpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ AvoidanceParameters getParameter(rclcpp::Node * node)
7070
param.lateral_hard_margin_for_parked_vehicle =
7171
getOrDeclareParameter<double>(*node, ns + "lateral_margin.hard_margin_for_parked_vehicle");
7272
param.longitudinal_margin = getOrDeclareParameter<double>(*node, ns + "longitudinal_margin");
73-
param.use_conservative_buffer_longitudinal =
74-
getOrDeclareParameter<bool>(*node, ns + "use_conservative_buffer_longitudinal");
7573
return param;
7674
};
7775

@@ -133,6 +131,11 @@ AvoidanceParameters getParameter(rclcpp::Node * node)
133131
getOrDeclareParameter<double>(*node, ns + "min_road_shoulder_width");
134132
}
135133

134+
{
135+
const std::string ns = "avoidance.target_filtering.merging_vehicle.";
136+
p.th_overhang_distance = getOrDeclareParameter<double>(*node, ns + "th_overhang_distance");
137+
}
138+
136139
{
137140
const std::string ns = "avoidance.target_filtering.avoidance_for_ambiguous_vehicle.";
138141
p.enable_avoidance_for_ambiguous_vehicle = getOrDeclareParameter<bool>(*node, ns + "enable");
@@ -270,6 +273,8 @@ AvoidanceParameters getParameter(rclcpp::Node * node)
270273
p.buf_slow_down_speed = getOrDeclareParameter<double>(*node, ns + "buf_slow_down_speed");
271274
p.nominal_avoidance_speed =
272275
getOrDeclareParameter<double>(*node, ns + "nominal_avoidance_speed");
276+
p.consider_front_overhang = getOrDeclareParameter<bool>(*node, ns + "consider_front_overhang");
277+
p.consider_rear_overhang = getOrDeclareParameter<bool>(*node, ns + "consider_rear_overhang");
273278
}
274279

275280
// avoidance maneuver (return shift dead line)
@@ -379,7 +384,6 @@ AvoidanceParameters getParameter(rclcpp::Node * node)
379384
{
380385
const std::string ns = "avoidance.debug.";
381386
p.publish_debug_marker = getOrDeclareParameter<bool>(*node, ns + "marker");
382-
p.print_debug_info = getOrDeclareParameter<bool>(*node, ns + "console");
383387
}
384388

385389
return p;

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/scene.hpp

-3
Original file line numberDiff line numberDiff line change
@@ -424,9 +424,6 @@ class AvoidanceModule : public SceneModuleInterface
424424
// TODO(Satoshi OTA) create detected object manager.
425425
ObjectDataArray registered_objects_;
426426

427-
// TODO(Satoshi OTA) remove mutable.
428-
mutable ObjectDataArray detected_objects_;
429-
430427
// TODO(Satoshi OTA) remove this variable.
431428
mutable ObjectDataArray ego_stopped_objects_;
432429

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/utils.hpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ using behavior_path_planner::utils::path_safety_checker::PoseWithVelocityAndPoly
3131
using behavior_path_planner::utils::path_safety_checker::PoseWithVelocityStamped;
3232
using behavior_path_planner::utils::path_safety_checker::PredictedPathWithPolygon;
3333

34+
static constexpr const char * logger_namespace =
35+
"planning.scenario_planning.lane_driving.behavior_planning.behavior_path_planner.avoidance.utils";
36+
3437
bool isOnRight(const ObjectData & obj);
3538

3639
double calcShiftLength(
@@ -112,8 +115,6 @@ void fillObjectStoppableJudge(
112115
ObjectData & object_data, const ObjectDataArray & registered_objects,
113116
const double feasible_stop_distance, const std::shared_ptr<AvoidanceParameters> & parameters);
114117

115-
void fillInitialPose(ObjectData & object_data, ObjectDataArray & detected_objects);
116-
117118
void updateRegisteredObject(
118119
ObjectDataArray & registered_objects, const ObjectDataArray & now_objects,
119120
const std::shared_ptr<AvoidanceParameters> & parameters);

0 commit comments

Comments
 (0)