Skip to content

Commit 2792f36

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 a9d8fb8 commit 2792f36

File tree

7 files changed

+21
-26
lines changed

7 files changed

+21
-26
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-3
Original file line numberDiff line numberDiff line change
@@ -73,21 +73,19 @@
7373
# parallel parking path
7474
parallel_parking:
7575
path_interval: 1.0
76-
max_steer_angle: 0.4 #22.9deg
76+
max_steer_angle_margin_scale: 0.72
7777
forward:
7878
enable_arc_forward_parking: true
7979
after_forward_parking_straight_distance: 2.0
8080
forward_parking_velocity: 1.38
8181
forward_parking_lane_departure_margin: 0.0
8282
forward_parking_path_interval: 1.0
83-
forward_parking_max_steer_angle: 0.4 # 22.9deg
8483
backward:
8584
enable_arc_backward_parking: true
8685
after_backward_parking_straight_distance: 2.0
8786
backward_parking_velocity: -1.38
8887
backward_parking_lane_departure_margin: 0.0
8988
backward_parking_path_interval: 1.0
90-
backward_parking_max_steer_angle: 0.4 # 22.9deg
9189

9290
# freespace parking
9391
freespace_parking:

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/manager.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,11 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
166166

167167
// parallel parking common
168168
{
169+
const std::string ns = base_ns + "pull_over.parallel_parking.";
169170
p.parallel_parking_parameters.center_line_path_interval =
170171
p.center_line_path_interval; // for geometric parallel parking
172+
p.parallel_parking_parameters.max_steer_angle_margin_scale =
173+
node->declare_parameter<double>(ns + "max_steer_angle_margin_scale");
171174
}
172175

173176
// forward parallel parking forward
@@ -182,8 +185,6 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
182185
node->declare_parameter<double>(ns + "forward_parking_lane_departure_margin");
183186
p.parallel_parking_parameters.forward_parking_path_interval =
184187
node->declare_parameter<double>(ns + "forward_parking_path_interval");
185-
p.parallel_parking_parameters.forward_parking_max_steer_angle =
186-
node->declare_parameter<double>(ns + "forward_parking_max_steer_angle"); // 20deg
187188
}
188189

189190
// forward parallel parking backward
@@ -199,8 +200,6 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
199200
node->declare_parameter<double>(ns + "backward_parking_lane_departure_margin");
200201
p.parallel_parking_parameters.backward_parking_path_interval =
201202
node->declare_parameter<double>(ns + "backward_parking_path_interval");
202-
p.parallel_parking_parameters.backward_parking_max_steer_angle =
203-
node->declare_parameter<double>(ns + "backward_parking_max_steer_angle"); // 20deg
204203
}
205204

206205
// freespace parking general params
@@ -557,8 +556,11 @@ void GoalPlannerModuleManager::updateModuleParams(
557556

558557
// parallel parking common
559558
{
559+
const std::string ns = base_ns + "pull_over.parallel_parking.";
560560
p->parallel_parking_parameters.center_line_path_interval =
561561
p->center_line_path_interval; // for geometric parallel parking
562+
update_param<bool>(
563+
parameters, ns + "max_steer_angle_margin_scale", p->max_steer_angle_margin_scale);
562564
}
563565

564566
// forward parallel parking forward

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)