@@ -37,14 +37,15 @@ using autoware::test_utils::get_absolute_path_to_config;
37
37
using autoware_planning_msgs::msg::LaneletRoute;
38
38
using RouteSections = std::vector<autoware_planning_msgs::msg::LaneletSegment>;
39
39
using autoware_planning_test_manager::utils::makeBehaviorRouteFromLaneId;
40
+ using geometry_msgs::msg::Pose;
40
41
41
42
namespace autoware ::behavior_path_planner
42
43
{
43
44
44
45
class TestGeometricPullOut : public ::testing::Test
45
46
{
46
47
public:
47
- std::optional<PullOutPath> plan (
48
+ std::optional<PullOutPath> call_plan (
48
49
const Pose & start_pose, const Pose & goal_pose, PlannerDebugData & planner_debug_data)
49
50
{
50
51
return geometric_pull_out_->plan (start_pose, goal_pose, planner_debug_data);
@@ -54,27 +55,50 @@ class TestGeometricPullOut : public ::testing::Test
54
55
void SetUp () override
55
56
{
56
57
rclcpp::init (0 , nullptr );
57
- node_ = rclcpp::Node::make_shared (" geometric_pull_out" , get_node_options ());
58
+ node_ = rclcpp::Node::make_shared (" geometric_pull_out" , make_node_options ());
58
59
59
- load_parameters ();
60
- initialize_vehicle_info ();
61
60
initialize_lane_departure_checker ();
62
- initialize_routeHandler ();
63
61
initialize_geometric_pull_out_planner ();
64
- initialize_planner_data ();
65
62
}
66
-
67
63
void TearDown () override { rclcpp::shutdown (); }
64
+
65
+ PlannerData make_planner_data (
66
+ const Pose & start_pose, const int route_start_lane_id, const int route_goal_lane_id)
67
+ {
68
+ PlannerData planner_data;
69
+ planner_data.init_parameters (*node_);
70
+
71
+ // Load a sample lanelet map and create a route handler
72
+ const auto shoulder_map_path = autoware::test_utils::get_absolute_path_to_lanelet_map (
73
+ " autoware_test_utils" , " road_shoulder/lanelet2_map.osm" );
74
+ const auto map_bin_msg = autoware::test_utils::make_map_bin_msg (shoulder_map_path, 0.5 );
75
+ auto route_handler = std::make_shared<autoware::route_handler::RouteHandler>(map_bin_msg);
76
+
77
+ // Set up current odometry at start pose
78
+ auto odometry = std::make_shared<nav_msgs::msg::Odometry>();
79
+ odometry->pose .pose = start_pose;
80
+ odometry->header .frame_id = " map" ;
81
+ planner_data.self_odometry = odometry;
82
+
83
+ // Setup route
84
+ const auto route = makeBehaviorRouteFromLaneId (
85
+ route_start_lane_id, route_goal_lane_id, " autoware_test_utils" ,
86
+ " road_shoulder/lanelet2_map.osm" );
87
+ route_handler->setRoute (route);
88
+
89
+ // Update planner data with the route handler
90
+ planner_data.route_handler = route_handler;
91
+
92
+ return planner_data;
93
+ }
94
+
68
95
// Member variables
69
96
std::shared_ptr<rclcpp::Node> node_;
70
- std::shared_ptr<autoware::route_handler::RouteHandler> route_handler_;
71
- autoware::vehicle_info_utils::VehicleInfo vehicle_info_;
72
97
std::shared_ptr<GeometricPullOut> geometric_pull_out_;
73
98
std::shared_ptr<LaneDepartureChecker> lane_departure_checker_;
74
- PlannerData planner_data_;
75
99
76
100
private:
77
- rclcpp::NodeOptions get_node_options () const
101
+ rclcpp::NodeOptions make_node_options () const
78
102
{
79
103
// Load common configuration files
80
104
auto node_options = rclcpp::NodeOptions{};
@@ -102,85 +126,25 @@ class TestGeometricPullOut : public ::testing::Test
102
126
return node_options;
103
127
}
104
128
105
- void load_parameters ()
106
- {
107
- const auto dp_double = [&](const std::string & s) {
108
- return node_->declare_parameter <double >(s);
109
- };
110
- const auto dp_bool = [&](const std::string & s) { return node_->declare_parameter <bool >(s); };
111
- // Load parameters required for planning
112
- const std::string ns = " start_planner." ;
113
- lane_departure_check_expansion_margin_ =
114
- dp_double (ns + " lane_departure_check_expansion_margin" );
115
- pull_out_max_steer_angle_ = dp_double (ns + " pull_out_max_steer_angle" );
116
- pull_out_arc_path_interval_ = dp_double (ns + " arc_path_interval" );
117
- center_line_path_interval_ = dp_double (ns + " center_line_path_interval" );
118
- th_moving_object_velocity_ = dp_double (ns + " th_moving_object_velocity" );
119
- divide_pull_out_path_ = dp_bool (ns + " divide_pull_out_path" );
120
- backward_path_length_ = dp_double (" backward_path_length" );
121
- forward_path_length_ = dp_double (" forward_path_length" );
122
- }
123
-
124
- void initialize_vehicle_info ()
125
- {
126
- vehicle_info_ = autoware::vehicle_info_utils::VehicleInfoUtils (*node_).getVehicleInfo ();
127
- }
128
-
129
129
void initialize_lane_departure_checker ()
130
130
{
131
+ const auto vehicle_info =
132
+ autoware::vehicle_info_utils::VehicleInfoUtils (*node_).getVehicleInfo ();
131
133
lane_departure_checker_ = std::make_shared<LaneDepartureChecker>();
132
- lane_departure_checker_->setVehicleInfo (vehicle_info_ );
134
+ lane_departure_checker_->setVehicleInfo (vehicle_info );
133
135
134
136
autoware::lane_departure_checker::Param lane_departure_checker_params{};
135
- lane_departure_checker_params.footprint_extra_margin = lane_departure_check_expansion_margin_;
136
137
lane_departure_checker_->setParam (lane_departure_checker_params);
137
138
}
138
139
139
- void initialize_routeHandler ()
140
- {
141
- // Load a sample lanelet map and create a route handler
142
- const auto shoulder_map_path = autoware::test_utils::get_absolute_path_to_lanelet_map (
143
- " autoware_test_utils" , " road_shoulder/lanelet2_map.osm" );
144
- const auto map_bin_msg = autoware::test_utils::make_map_bin_msg (shoulder_map_path, 0.5 );
145
-
146
- route_handler_ = std::make_shared<autoware::route_handler::RouteHandler>(map_bin_msg);
147
- }
148
-
149
140
void initialize_geometric_pull_out_planner ()
150
141
{
151
- auto parameters = std::make_shared<StartPlannerParameters>();
152
- parameters->parallel_parking_parameters .pull_out_max_steer_angle = pull_out_max_steer_angle_;
153
- parameters->parallel_parking_parameters .pull_out_arc_path_interval =
154
- pull_out_arc_path_interval_;
155
- parameters->parallel_parking_parameters .center_line_path_interval = center_line_path_interval_;
156
- parameters->th_moving_object_velocity = th_moving_object_velocity_;
157
- parameters->divide_pull_out_path = divide_pull_out_path_;
142
+ auto parameters = StartPlannerParameters::init (*node_);
158
143
159
144
auto time_keeper = std::make_shared<autoware::universe_utils::TimeKeeper>();
160
145
geometric_pull_out_ =
161
- std::make_shared<GeometricPullOut>(*node_, *parameters, lane_departure_checker_, time_keeper);
162
- }
163
-
164
- void initialize_planner_data ()
165
- {
166
- planner_data_.parameters .backward_path_length = backward_path_length_;
167
- planner_data_.parameters .forward_path_length = forward_path_length_;
168
- planner_data_.parameters .wheel_base = vehicle_info_.wheel_base_m ;
169
- planner_data_.parameters .wheel_tread = vehicle_info_.wheel_tread_m ;
170
- planner_data_.parameters .front_overhang = vehicle_info_.front_overhang_m ;
171
- planner_data_.parameters .left_over_hang = vehicle_info_.left_overhang_m ;
172
- planner_data_.parameters .right_over_hang = vehicle_info_.right_overhang_m ;
146
+ std::make_shared<GeometricPullOut>(*node_, parameters, lane_departure_checker_, time_keeper);
173
147
}
174
-
175
- // Parameter variables
176
- double lane_departure_check_expansion_margin_{0.0 };
177
- double pull_out_max_steer_angle_{0.0 };
178
- double pull_out_arc_path_interval_{0.0 };
179
- double center_line_path_interval_{0.0 };
180
- double th_moving_object_velocity_{0.0 };
181
- double backward_path_length_{0.0 };
182
- double forward_path_length_{0.0 };
183
- bool divide_pull_out_path_{false };
184
148
};
185
149
186
150
TEST_F (TestGeometricPullOut, GenerateValidGeometricPullOutPath)
@@ -199,26 +163,16 @@ TEST_F(TestGeometricPullOut, GenerateValidGeometricPullOutPath)
199
163
geometry_msgs::build<geometry_msgs::msg::Quaternion>().x (0.0 ).y (0.0 ).z (0.705897 ).w (
200
164
0.708314 ));
201
165
202
- // Set up current odometry at start pose
203
- auto odometry = std::make_shared<nav_msgs::msg::Odometry>();
204
- odometry->pose .pose = start_pose;
205
- odometry->header .frame_id = " map" ;
206
- planner_data_.self_odometry = odometry;
207
-
208
- // Setup route
209
- const auto route = makeBehaviorRouteFromLaneId (
210
- 4619 , 4635 , " autoware_test_utils" , " road_shoulder/lanelet2_map.osm" );
211
- route_handler_->setRoute (route);
166
+ const auto planner_data = make_planner_data (start_pose, 4619 , 4635 );
212
167
213
168
// Update planner data with the route handler
214
- planner_data_.route_handler = route_handler_;
215
- geometric_pull_out_->setPlannerData (std::make_shared<PlannerData>(planner_data_));
169
+ geometric_pull_out_->setPlannerData (std::make_shared<PlannerData>(planner_data));
216
170
217
171
// Plan the pull out path
218
172
PlannerDebugData debug_data;
219
- auto result = plan (start_pose, goal_pose, debug_data);
173
+ auto result = call_plan (start_pose, goal_pose, debug_data);
220
174
221
- // Assert that a valid geometric geometric pull out path is generated
175
+ // Assert that a valid geometric pull out path is generated
222
176
ASSERT_TRUE (result.has_value ()) << " Geometric pull out path generation failed." ;
223
177
EXPECT_EQ (result->partial_paths .size (), 2UL )
224
178
<< " Generated geometric pull out path does not have the expected number of partial paths." ;
0 commit comments