Skip to content

Commit 6aabfaf

Browse files
fix(autoware_behavior_path_goal_planner_module): update max steer angle handling for parallel parking
Signed-off-by: Kyoichi Sugahara <kyoichi.sugahara@tier4.jp>
1 parent eca371f commit 6aabfaf

File tree

7 files changed

+22
-33
lines changed

7 files changed

+22
-33
lines changed

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,10 @@ See also [[1]](https://www.sciencedirect.com/science/article/pii/S14746670153474
267267

268268
#### Parameters geometric parallel parking
269269

270-
| Name | Unit | Type | Description | Default value |
271-
| :---------------------- | :---- | :----- | :---------------------------------------------------------------------------------------------------------------------------------- | :------------ |
272-
| arc_path_interval | [m] | double | interval between arc path points | 1.0 |
273-
| pull_over_max_steer_rad | [rad] | double | maximum steer angle for path generation. it may not be possible to control steer up to max_steer_angle in vehicle_info when stopped | 0.35 |
270+
| Name | Unit | Type | Description | Default value |
271+
| :--------------------------- | :---- | :----- | :------------------------------------------------------------------------------------------------------- | :------------ |
272+
| arc_path_interval | [m] | double | interval between arc path points | 1.0 |
273+
| max_steer_angle_margin_scale | [rad] | double | scaling factor applied to the maximum steering angle (max_steer_angle) defined in vehicle_info parameter | 0.72 |
274274

275275
#### arc forward parking
276276

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/config/goal_planner.param.yaml

+1-4
Original file line numberDiff line numberDiff line change
@@ -73,22 +73,19 @@
7373

7474
# parallel parking path
7575
parallel_parking:
76-
path_interval: 1.0
77-
max_steer_angle: 0.4 #22.9deg
76+
max_steer_angle_margin_scale: 0.72
7877
forward:
7978
enable_arc_forward_parking: true
8079
after_forward_parking_straight_distance: 2.0
8180
forward_parking_velocity: 1.38
8281
forward_parking_lane_departure_margin: 0.0
8382
forward_parking_path_interval: 1.0
84-
forward_parking_max_steer_angle: 0.4 # 22.9deg
8583
backward:
8684
enable_arc_backward_parking: true
8785
after_backward_parking_straight_distance: 2.0
8886
backward_parking_velocity: -1.38
8987
backward_parking_lane_departure_margin: 0.0
9088
backward_parking_path_interval: 1.0
91-
backward_parking_max_steer_angle: 0.4 # 22.9deg
9289

9390
# freespace parking
9491
freespace_parking:

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/manager.cpp

+7-10
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,11 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
168168

169169
// parallel parking common
170170
{
171+
const std::string ns = base_ns + "pull_over.parallel_parking.";
171172
p.parallel_parking_parameters.center_line_path_interval =
172173
p.center_line_path_interval; // for geometric parallel parking
174+
p.parallel_parking_parameters.max_steer_angle_margin_scale =
175+
node->declare_parameter<double>(ns + "max_steer_angle_margin_scale");
173176
}
174177

175178
// forward parallel parking forward
@@ -184,8 +187,6 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
184187
node->declare_parameter<double>(ns + "forward_parking_lane_departure_margin");
185188
p.parallel_parking_parameters.forward_parking_path_interval =
186189
node->declare_parameter<double>(ns + "forward_parking_path_interval");
187-
p.parallel_parking_parameters.forward_parking_max_steer_angle =
188-
node->declare_parameter<double>(ns + "forward_parking_max_steer_angle"); // 20deg
189190
}
190191

191192
// forward parallel parking backward
@@ -201,8 +202,6 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
201202
node->declare_parameter<double>(ns + "backward_parking_lane_departure_margin");
202203
p.parallel_parking_parameters.backward_parking_path_interval =
203204
node->declare_parameter<double>(ns + "backward_parking_path_interval");
204-
p.parallel_parking_parameters.backward_parking_max_steer_angle =
205-
node->declare_parameter<double>(ns + "backward_parking_max_steer_angle"); // 20deg
206205
}
207206

208207
// freespace parking general params
@@ -559,8 +558,12 @@ void GoalPlannerModuleManager::updateModuleParams(
559558

560559
// parallel parking common
561560
{
561+
const std::string ns = base_ns + "pull_over.parallel_parking.";
562562
p->parallel_parking_parameters.center_line_path_interval =
563563
p->center_line_path_interval; // for geometric parallel parking
564+
update_param<double>(
565+
parameters, ns + "max_steer_angle_margin_scale",
566+
p->parallel_parking_parameters.max_steer_angle_margin_scale);
564567
}
565568

566569
// forward parallel parking forward
@@ -580,9 +583,6 @@ void GoalPlannerModuleManager::updateModuleParams(
580583
update_param<double>(
581584
parameters, ns + "forward_parking_path_interval",
582585
p->parallel_parking_parameters.forward_parking_path_interval);
583-
update_param<double>(
584-
parameters, ns + "forward_parking_max_steer_angle",
585-
p->parallel_parking_parameters.forward_parking_max_steer_angle);
586586
}
587587

588588
// forward parallel parking backward
@@ -602,9 +602,6 @@ void GoalPlannerModuleManager::updateModuleParams(
602602
update_param<double>(
603603
parameters, ns + "backward_parking_path_interval",
604604
p->parallel_parking_parameters.backward_parking_path_interval);
605-
update_param<double>(
606-
parameters, ns + "backward_parking_max_steer_angle",
607-
p->parallel_parking_parameters.backward_parking_max_steer_angle);
608605
}
609606

610607
// freespace parking general params

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/pull_over_planner/geometric_pull_over.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,12 @@ std::optional<PullOverPath> GeometricPullOver::plan(
6262
}
6363

6464
const auto & p = parallel_parking_parameters_;
65-
const double max_steer_angle =
66-
is_forward_ ? p.forward_parking_max_steer_angle : p.backward_parking_max_steer_angle;
65+
const double max_steer_angle = vehicle_info_.max_steer_angle_rad * p.max_steer_angle_margin_scale;
6766
planner_.setTurningRadius(planner_data->parameters, max_steer_angle);
6867
planner_.setPlannerData(planner_data);
6968

70-
const bool found_valid_path =
71-
planner_.planPullOver(goal_pose, road_lanes, pull_over_lanes, is_forward_, left_side_parking_);
69+
const bool found_valid_path = planner_.planPullOver(
70+
goal_pose, road_lanes, pull_over_lanes, max_steer_angle, is_forward_, left_side_parking_);
7271
if (!found_valid_path) {
7372
return {};
7473
}

planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/parking_departure/geometric_parallel_parking.hpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,19 @@ struct ParallelParkingParameters
4242
{
4343
// common
4444
double center_line_path_interval{0.0};
45+
double max_steer_angle_margin_scale{0.0};
4546

4647
// forward parking
4748
double after_forward_parking_straight_distance{0.0};
4849
double forward_parking_velocity{0.0};
4950
double forward_parking_lane_departure_margin{0.0};
5051
double forward_parking_path_interval{0.0};
51-
double forward_parking_max_steer_angle{0.0};
5252

5353
// backward parking
5454
double after_backward_parking_straight_distance{0.0};
5555
double backward_parking_velocity{0.0};
5656
double backward_parking_lane_departure_margin{0.0};
5757
double backward_parking_path_interval{0.0};
58-
double backward_parking_max_steer_angle{0.0};
5958

6059
// pull_out
6160
double pull_out_velocity{0.0};
@@ -70,8 +69,8 @@ class GeometricParallelParking
7069
bool isParking() const;
7170
bool planPullOver(
7271
const Pose & goal_pose, const lanelet::ConstLanelets & road_lanes,
73-
const lanelet::ConstLanelets & pull_over_lanes, const bool is_forward,
74-
const bool left_side_parking);
72+
const lanelet::ConstLanelets & pull_over_lanes, const double max_steer_angle,
73+
const bool is_forward, const bool left_side_parking);
7574
bool planPullOut(
7675
const Pose & start_pose, const Pose & goal_pose, const lanelet::ConstLanelets & road_lanes,
7776
const lanelet::ConstLanelets & pull_over_lanes, const bool left_side_start,

planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/geometric_parallel_parking.cpp

+3-5
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ void GeometricParallelParking::clearPaths()
159159

160160
bool GeometricParallelParking::planPullOver(
161161
const Pose & goal_pose, const lanelet::ConstLanelets & road_lanes,
162-
const lanelet::ConstLanelets & pull_over_lanes, const bool is_forward,
163-
const bool left_side_parking)
162+
const lanelet::ConstLanelets & pull_over_lanes, const double max_steer_angle,
163+
const bool is_forward, const bool left_side_parking)
164164
{
165165
const auto & common_params = planner_data_->parameters;
166166
const double end_pose_offset = is_forward ? -parameters_.after_forward_parking_straight_distance
@@ -175,12 +175,10 @@ bool GeometricParallelParking::planPullOver(
175175
if (is_forward) {
176176
// When turning forward to the right, the front left goes out,
177177
// so reduce the steer angle at that time for seach no lane departure path.
178-
// TODO(Sugahara): define in the config
179178
constexpr double start_pose_offset = 0.0;
180179
constexpr double min_steer_rad = 0.05;
181180
constexpr double steer_interval = 0.1;
182-
for (double steer = parameters_.forward_parking_max_steer_angle; steer > min_steer_rad;
183-
steer -= steer_interval) {
181+
for (double steer = max_steer_angle; steer > min_steer_rad; steer -= steer_interval) {
184182
const double R_E_far = common_params.wheel_base / std::tan(steer);
185183
const auto start_pose = calcStartPose(
186184
arc_end_pose, road_lanes, start_pose_offset, R_E_far, is_forward, left_side_parking);

planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/geometric_pull_out.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ std::optional<PullOutPath> GeometricPullOut::plan(
6666
// check if the ego is at left or right side of road lane center
6767
const bool left_side_start = 0 < getArcCoordinates(road_lanes, start_pose).distance;
6868
const double max_steer_angle =
69-
vehicle_info_.max_steer_angle *
70-
parallel_parking_parameters_.geometric_pull_out_max_steer_angle_margin_scale;
69+
vehicle_info_.max_steer_angle_rad * parallel_parking_parameters_.max_steer_angle_margin_scale;
7170

7271
planner_.setTurningRadius(planner_data->parameters, max_steer_angle);
7372
planner_.setPlannerData(planner_data);

0 commit comments

Comments
 (0)