Skip to content

Commit c929579

Browse files
author
Takumi Ito
committed
append enable_clothoid_* param instead of *_use_clothoid
Signed-off-by: Takumi Ito <takumi.ito@tier4.jp>
1 parent 2c3daec commit c929579

File tree

16 files changed

+67
-48
lines changed

16 files changed

+67
-48
lines changed

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
maximum_deceleration: 1.0
6060
maximum_jerk: 1.0
6161
path_priority: "efficient_path" # "efficient_path" or "close_goal"
62-
efficient_path_order: ["SHIFT", "ARC_FORWARD", "ARC_BACKWARD"] # only lane based pull over(exclude freespace parking)
62+
efficient_path_order: ["SHIFT", "ARC_FORWARD", "CLOTHOID_FORWARD", "ARC_BACKWARD", "CLOTHOID_BACKWARD"] # only lane based pull over(exclude freespace parking)
6363
lane_departure_check_expansion_margin: 0.2
6464

6565
# shift parking
@@ -77,22 +77,22 @@
7777
max_steer_angle: 0.4 #22.9deg
7878
forward:
7979
enable_arc_forward_parking: true
80+
enable_clothoid_forward_parking: true
8081
after_forward_parking_straight_distance: 2.0
8182
forward_parking_velocity: 1.38
8283
forward_parking_lane_departure_margin: 0.0
8384
forward_parking_path_interval: 1.0
8485
forward_parking_max_steer_angle: 0.4 # 22.9deg
8586
forward_parking_steer_rate_lim: 0.35
86-
forward_parking_use_clothoid: true
8787
backward:
8888
enable_arc_backward_parking: true
89+
enable_clothoid_backward_parking: false # Not supported yet
8990
after_backward_parking_straight_distance: 2.0
9091
backward_parking_velocity: -1.38
9192
backward_parking_lane_departure_margin: 0.0
9293
backward_parking_path_interval: 1.0
9394
backward_parking_max_steer_angle: 0.4 # 22.9deg
9495
backward_parking_steer_rate_lim: 0.35
95-
backward_parking_use_clothoid: false # Not supported yet
9696

9797
# freespace parking
9898
freespace_parking:

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_planner_parameters.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ struct GoalPlannerParameters
111111
bool enable_arc_backward_parking{false};
112112
ParallelParkingParameters parallel_parking_parameters;
113113

114+
// clothoid parking
115+
bool enable_clothoid_forward_parking{false};
116+
bool enable_clothoid_backward_parking{false};
117+
114118
// freespace parking
115119
bool enable_freespace_parking{false};
116120
std::string freespace_parking_algorithm;

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/pull_over_planner/geometric_pull_over.hpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ class GeometricPullOver : public PullOverPlannerBase
3232
{
3333
public:
3434
GeometricPullOver(
35-
rclcpp::Node & node, const GoalPlannerParameters & parameters, const bool is_forward);
35+
rclcpp::Node & node, const GoalPlannerParameters & parameters, const bool is_forward,
36+
const bool use_clothoid);
3637

3738
PullOverPlannerType getPlannerType() const override
3839
{
@@ -61,6 +62,7 @@ class GeometricPullOver : public PullOverPlannerBase
6162
const ParallelParkingParameters parallel_parking_parameters_;
6263
const LaneDepartureChecker lane_departure_checker_;
6364
const bool is_forward_;
65+
const bool use_clothoid_;
6466
const bool left_side_parking_;
6567

6668
GeometricParallelParking planner_;

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_planner_module.cpp

+10-4
Original file line numberDiff line numberDiff line change
@@ -274,11 +274,17 @@ LaneParkingPlanner::LaneParkingPlanner(
274274
if (planner_type == "SHIFT" && parameters.enable_shift_parking) {
275275
pull_over_planners_.push_back(std::make_shared<ShiftPullOver>(node, parameters));
276276
} else if (planner_type == "ARC_FORWARD" && parameters.enable_arc_forward_parking) {
277-
pull_over_planners_.push_back(
278-
std::make_shared<GeometricPullOver>(node, parameters, /*is_forward*/ true));
277+
pull_over_planners_.push_back(std::make_shared<GeometricPullOver>(
278+
node, parameters, /*is_forward*/ true, /*use_clothoid*/ false));
279+
} else if (planner_type == "CLOTHOID_FORWARD" && parameters.enable_clothoid_forward_parking) {
280+
pull_over_planners_.push_back(std::make_shared<GeometricPullOver>(
281+
node, parameters, /*is_forward*/ true, /*use_clothoid*/ true));
279282
} else if (planner_type == "ARC_BACKWARD" && parameters.enable_arc_backward_parking) {
280-
pull_over_planners_.push_back(
281-
std::make_shared<GeometricPullOver>(node, parameters, /*is_forward*/ false));
283+
pull_over_planners_.push_back(std::make_shared<GeometricPullOver>(
284+
node, parameters, /*is_forward*/ false, /*use_clothoid*/ false));
285+
} else if (planner_type == "CLOTHOID_BACKWARD" && parameters.enable_clothoid_backward_parking) {
286+
pull_over_planners_.push_back(std::make_shared<GeometricPullOver>(
287+
node, parameters, /*is_forward*/ false, /*use_clothoid*/ true));
282288
}
283289
}
284290

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/manager.cpp

+8-10
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
175175
{
176176
const std::string ns = base_ns + "pull_over.parallel_parking.forward.";
177177
p.enable_arc_forward_parking = node->declare_parameter<bool>(ns + "enable_arc_forward_parking");
178+
p.enable_clothoid_forward_parking =
179+
node->declare_parameter<bool>(ns + "enable_clothoid_forward_parking");
178180
p.parallel_parking_parameters.after_forward_parking_straight_distance =
179181
node->declare_parameter<double>(ns + "after_forward_parking_straight_distance");
180182
p.parallel_parking_parameters.forward_parking_velocity =
@@ -187,15 +189,15 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
187189
node->declare_parameter<double>(ns + "forward_parking_max_steer_angle"); // 20deg
188190
p.parallel_parking_parameters.forward_parking_steer_rate_lim =
189191
node->declare_parameter<double>(ns + "forward_parking_steer_rate_lim");
190-
p.parallel_parking_parameters.forward_parking_use_clothoid =
191-
node->declare_parameter<bool>(ns + "forward_parking_use_clothoid");
192192
}
193193

194194
// forward parallel parking backward
195195
{
196196
const std::string ns = base_ns + "pull_over.parallel_parking.backward.";
197197
p.enable_arc_backward_parking =
198198
node->declare_parameter<bool>(ns + "enable_arc_backward_parking");
199+
p.enable_clothoid_backward_parking =
200+
node->declare_parameter<bool>(ns + "enable_clothoid_backward_parking");
199201
p.parallel_parking_parameters.after_backward_parking_straight_distance =
200202
node->declare_parameter<double>(ns + "after_backward_parking_straight_distance");
201203
p.parallel_parking_parameters.backward_parking_velocity =
@@ -208,8 +210,6 @@ GoalPlannerParameters GoalPlannerModuleManager::initGoalPlannerParameters(
208210
node->declare_parameter<double>(ns + "backward_parking_max_steer_angle"); // 20deg
209211
p.parallel_parking_parameters.backward_parking_steer_rate_lim =
210212
node->declare_parameter<double>(ns + "backward_parking_steer_rate_lim");
211-
p.parallel_parking_parameters.backward_parking_use_clothoid =
212-
node->declare_parameter<bool>(ns + "backward_parking_use_clothoid");
213213
}
214214

215215
// freespace parking general params
@@ -571,6 +571,8 @@ void GoalPlannerModuleManager::updateModuleParams(
571571
{
572572
const std::string ns = base_ns + "pull_over.parallel_parking.forward.";
573573
updateParam<bool>(parameters, ns + "enable_arc_forward_parking", p->enable_arc_forward_parking);
574+
updateParam<bool>(
575+
parameters, ns + "enable_clothoid_forward_parking", p->enable_clothoid_forward_parking);
574576
updateParam<double>(
575577
parameters, ns + "after_forward_parking_straight_distance",
576578
p->parallel_parking_parameters.after_forward_parking_straight_distance);
@@ -589,16 +591,15 @@ void GoalPlannerModuleManager::updateModuleParams(
589591
updateParam<double>(
590592
parameters, ns + "forward_parking_steer_rate_lim",
591593
p->parallel_parking_parameters.forward_parking_steer_rate_lim);
592-
updateParam<bool>(
593-
parameters, ns + "forward_parking_use_clothoid",
594-
p->parallel_parking_parameters.forward_parking_use_clothoid);
595594
}
596595

597596
// forward parallel parking backward
598597
{
599598
const std::string ns = base_ns + "pull_over.parallel_parking.backward.";
600599
updateParam<bool>(
601600
parameters, ns + "enable_arc_backward_parking", p->enable_arc_backward_parking);
601+
updateParam<bool>(
602+
parameters, ns + "enable_clothoid_backward_parking", p->enable_clothoid_backward_parking);
602603
updateParam<double>(
603604
parameters, ns + "after_backward_parking_straight_distance",
604605
p->parallel_parking_parameters.after_backward_parking_straight_distance);
@@ -617,9 +618,6 @@ void GoalPlannerModuleManager::updateModuleParams(
617618
updateParam<double>(
618619
parameters, ns + "backward_parking_steer_rate_lim",
619620
p->parallel_parking_parameters.backward_parking_steer_rate_lim);
620-
updateParam<bool>(
621-
parameters, ns + "backward_parking_use_clothoid",
622-
p->parallel_parking_parameters.backward_parking_use_clothoid);
623621
}
624622

625623
// freespace parking general params

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
namespace autoware::behavior_path_planner
2727
{
2828
GeometricPullOver::GeometricPullOver(
29-
rclcpp::Node & node, const GoalPlannerParameters & parameters, const bool is_forward)
29+
rclcpp::Node & node, const GoalPlannerParameters & parameters, const bool is_forward,
30+
const bool use_clothoid)
3031
: PullOverPlannerBase{node, parameters},
3132
parallel_parking_parameters_{parameters.parallel_parking_parameters},
3233
lane_departure_checker_{[&]() {
@@ -36,6 +37,7 @@ GeometricPullOver::GeometricPullOver(
3637
return LaneDepartureChecker{lane_departure_checker_params, vehicle_info_};
3738
}()},
3839
is_forward_{is_forward},
40+
use_clothoid_{use_clothoid},
3941
left_side_parking_{parameters.parking_policy == ParkingPolicy::LEFT_SIDE}
4042
{
4143
planner_.setParameters(parallel_parking_parameters_);
@@ -66,8 +68,8 @@ std::optional<PullOverPath> GeometricPullOver::plan(
6668
planner_.setTurningRadius(planner_data->parameters, max_steer_angle);
6769
planner_.setPlannerData(planner_data);
6870

69-
const bool found_valid_path =
70-
planner_.planPullOver(goal_pose, road_lanes, pull_over_lanes, is_forward_, left_side_parking_);
71+
const bool found_valid_path = planner_.planPullOver(
72+
goal_pose, road_lanes, pull_over_lanes, is_forward_, left_side_parking_, use_clothoid_);
7173
if (!found_valid_path) {
7274
return {};
7375
}

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

+4-6
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ struct ParallelParkingParameters
5050
double forward_parking_path_interval{0.0};
5151
double forward_parking_max_steer_angle{0.0};
5252
double forward_parking_steer_rate_lim{0.0};
53-
bool forward_parking_use_clothoid{false};
5453

5554
// backward parking
5655
double after_backward_parking_straight_distance{0.0};
@@ -59,15 +58,13 @@ struct ParallelParkingParameters
5958
double backward_parking_path_interval{0.0};
6059
double backward_parking_max_steer_angle{0.0};
6160
double backward_parking_steer_rate_lim{0.0};
62-
bool backward_parking_use_clothoid{false};
6361

6462
// pull_out
6563
double pull_out_velocity{0.0};
6664
double pull_out_lane_departure_margin{0.0};
6765
double pull_out_arc_path_interval{0.0};
6866
double pull_out_max_steer_angle{0.0};
6967
double pull_out_steer_rate_lim{0.0};
70-
bool pull_out_use_clothoid{false};
7168
};
7269

7370
class GeometricParallelParking
@@ -77,10 +74,11 @@ class GeometricParallelParking
7774
bool planPullOver(
7875
const Pose & goal_pose, const lanelet::ConstLanelets & road_lanes,
7976
const lanelet::ConstLanelets & pull_over_lanes, const bool is_forward,
80-
const bool left_side_parking);
77+
const bool left_side_parking, const bool use_clothoid);
8178
bool planPullOut(
8279
const Pose & start_pose, const Pose & goal_pose, const lanelet::ConstLanelets & road_lanes,
8380
const lanelet::ConstLanelets & pull_over_lanes, const bool left_side_start,
81+
const bool use_clothoid,
8482
const std::shared_ptr<autoware::lane_departure_checker::LaneDepartureChecker>
8583
autoware_lane_departure_checker);
8684
void setParameters(const ParallelParkingParameters & parameters) { parameters_ = parameters; }
@@ -149,8 +147,8 @@ class GeometricParallelParking
149147
std::vector<PathWithLaneId> generatePullOverPaths(
150148
const Pose & start_pose, const Pose & goal_pose, const double R_E_far,
151149
const lanelet::ConstLanelets & road_lanes, const lanelet::ConstLanelets & pull_over_lanes,
152-
const bool is_forward, const bool left_side_parking, const double end_pose_offset,
153-
const double velocity);
150+
const bool is_forward, const bool left_side_parking, const bool use_clothoid,
151+
const double end_pose_offset, const double velocity);
154152
PathWithLaneId generateStraightPath(
155153
const Pose & start_pose, const lanelet::ConstLanelets & road_lanes, const bool set_stop_end);
156154
void setVelocityToArcPaths(

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

+12-11
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,17 @@ void GeometricParallelParking::setVelocityToArcPaths(
110110
std::vector<PathWithLaneId> GeometricParallelParking::generatePullOverPaths(
111111
const Pose & start_pose, const Pose & goal_pose, const double R_E_far,
112112
const lanelet::ConstLanelets & road_lanes, const lanelet::ConstLanelets & pull_over_lanes,
113-
const bool is_forward, const bool left_side_parking, const double end_pose_offset,
114-
const double velocity)
113+
const bool is_forward, const bool left_side_parking, const bool use_clothoid,
114+
const double end_pose_offset, const double velocity)
115115
{
116116
const double lane_departure_margin = is_forward
117117
? parameters_.forward_parking_lane_departure_margin
118118
: parameters_.backward_parking_lane_departure_margin;
119119
const double arc_path_interval = is_forward ? parameters_.forward_parking_path_interval
120120
: parameters_.backward_parking_path_interval;
121121
std::vector<PathWithLaneId> arc_paths;
122-
if (is_forward && parameters_.forward_parking_use_clothoid) { // clothoid parking only supports
123-
// forward for now
122+
if (is_forward && use_clothoid) { // clothoid parking only supports
123+
// forward for now
124124
const double L_min =
125125
is_forward
126126
? std::abs(
@@ -148,7 +148,7 @@ std::vector<PathWithLaneId> GeometricParallelParking::generatePullOverPaths(
148148
setVelocityToArcPaths(arc_paths, velocity, set_stop_end);
149149

150150
// straight path from current to parking start
151-
const bool set_stop_straight_end = !(is_forward && parameters_.forward_parking_use_clothoid);
151+
const bool set_stop_straight_end = !(is_forward && use_clothoid);
152152
const auto straight_path = generateStraightPath(start_pose, road_lanes, set_stop_straight_end);
153153

154154
// check the continuity of straight path and arc path
@@ -163,7 +163,7 @@ std::vector<PathWithLaneId> GeometricParallelParking::generatePullOverPaths(
163163

164164
// combine straight_path -> arc_path*2
165165
std::vector<PathWithLaneId> paths;
166-
if (is_forward && parameters_.forward_parking_use_clothoid) {
166+
if (is_forward && use_clothoid) {
167167
paths.push_back(straight_path);
168168
for (const auto & path : arc_paths) {
169169
for (const auto & path_point : path.points) {
@@ -190,7 +190,7 @@ void GeometricParallelParking::clearPaths()
190190
bool GeometricParallelParking::planPullOver(
191191
const Pose & goal_pose, const lanelet::ConstLanelets & road_lanes,
192192
const lanelet::ConstLanelets & pull_over_lanes, const bool is_forward,
193-
const bool left_side_parking)
193+
const bool left_side_parking, const bool use_clothoid)
194194
{
195195
const auto & common_params = planner_data_->parameters;
196196
const double end_pose_offset = is_forward ? -parameters_.after_forward_parking_straight_distance
@@ -220,7 +220,7 @@ bool GeometricParallelParking::planPullOver(
220220

221221
const auto paths = generatePullOverPaths(
222222
*start_pose, goal_pose, R_E_far, road_lanes, pull_over_lanes, is_forward, left_side_parking,
223-
end_pose_offset, parameters_.forward_parking_velocity);
223+
use_clothoid, end_pose_offset, parameters_.forward_parking_velocity);
224224
if (!paths.empty()) {
225225
paths_ = paths;
226226
return true;
@@ -242,7 +242,7 @@ bool GeometricParallelParking::planPullOver(
242242

243243
const auto paths = generatePullOverPaths(
244244
*start_pose, goal_pose, R_E_min_, road_lanes, pull_over_lanes, is_forward,
245-
left_side_parking, end_pose_offset, parameters_.backward_parking_velocity);
245+
left_side_parking, use_clothoid, end_pose_offset, parameters_.backward_parking_velocity);
246246
if (!paths.empty()) {
247247
paths_ = paths;
248248
return true;
@@ -256,6 +256,7 @@ bool GeometricParallelParking::planPullOver(
256256
bool GeometricParallelParking::planPullOut(
257257
const Pose & start_pose, const Pose & goal_pose, const lanelet::ConstLanelets & road_lanes,
258258
const lanelet::ConstLanelets & pull_over_lanes, const bool left_side_start,
259+
const bool use_clothoid,
259260
const std::shared_ptr<autoware::lane_departure_checker::LaneDepartureChecker>
260261
lane_departure_checker)
261262
{
@@ -275,7 +276,7 @@ bool GeometricParallelParking::planPullOut(
275276

276277
// plan reverse path of parking. end_pose <-> start_pose
277278
std::vector<PathWithLaneId> arc_paths;
278-
if (parameters_.pull_out_use_clothoid) {
279+
if (use_clothoid) {
279280
const double L_min = std::abs(
280281
parameters_.pull_out_velocity *
281282
(parameters_.pull_out_max_steer_angle / parameters_.pull_out_steer_rate_lim));
@@ -982,7 +983,7 @@ std::vector<PathWithLaneId> GeometricParallelParking::generateClothoidalSequence
982983
std::reverse(p.lane_ids.begin(), p.lane_ids.end());
983984
}
984985

985-
if (theta != 0) {
986+
if (std::abs(theta) > 1e-6) {
986987
// generate arc path which connect two clothoid paths
987988
const auto end_of_prev_path = clothoid_path_first.points.back().point.pose;
988989
const auto start_of_next_path = clothoid_path_second.points.front().point.pose;

planning/behavior_path_planner/autoware_behavior_path_start_planner_module/config/start_planner.param.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
end_pose_curvature_threshold: 0.1
3737
# geometric pull out
3838
enable_geometric_pull_out: true
39+
enable_clothoid_pull_out: true
3940
geometric_collision_check_distance_from_end: 0.0
4041
arc_path_interval: 1.0
4142
divide_pull_out_path: true
@@ -45,7 +46,6 @@
4546
backward_velocity: -1.0
4647
pull_out_max_steer_angle: 0.26 # 15deg
4748
pull_out_steer_rate_lim: 0.35
48-
pull_out_use_clothoid: true
4949
# search start pose backward
5050
enable_back: true
5151
search_priority: "efficient_path" # "efficient_path" or "short_back_distance"

planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/data_structs.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ struct StartPlannerParameters
132132
double maximum_longitudinal_deviation{0.0};
133133
// geometric pull out
134134
bool enable_geometric_pull_out{false};
135+
bool enable_clothoid_pull_out{false};
135136
double geometric_collision_check_distance_from_end{0.0};
136137
bool divide_pull_out_path{false};
137138
ParallelParkingParameters parallel_parking_parameters{};

planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/geometric_pull_out.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class GeometricPullOut : public PullOutPlannerBase
3232
{
3333
public:
3434
explicit GeometricPullOut(
35-
rclcpp::Node & node, const StartPlannerParameters & parameters,
35+
rclcpp::Node & node, const StartPlannerParameters & parameters, const bool use_clothoid,
3636
std::shared_ptr<universe_utils::TimeKeeper> time_keeper =
3737
std::make_shared<universe_utils::TimeKeeper>());
3838

@@ -45,6 +45,7 @@ class GeometricPullOut : public PullOutPlannerBase
4545
GeometricParallelParking planner_;
4646
ParallelParkingParameters parallel_parking_parameters_;
4747
std::shared_ptr<autoware::lane_departure_checker::LaneDepartureChecker> lane_departure_checker_;
48+
const bool use_clothoid_;
4849

4950
friend class TestGeometricPullOut;
5051
};

planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/data_structs.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ StartPlannerParameters StartPlannerParameters::init(rclcpp::Node & node)
7272
// geometric pull out
7373
p.enable_geometric_pull_out =
7474
getOrDeclareParameter<bool>(node, ns + "enable_geometric_pull_out");
75+
p.enable_clothoid_pull_out = getOrDeclareParameter<bool>(node, ns + "enable_clothoid_pull_out");
7576
p.geometric_collision_check_distance_from_end =
7677
getOrDeclareParameter<double>(node, ns + "geometric_collision_check_distance_from_end");
7778
p.divide_pull_out_path = getOrDeclareParameter<bool>(node, ns + "divide_pull_out_path");

0 commit comments

Comments
 (0)