Skip to content

Commit 42ee398

Browse files
kyoichi-sugaharaxmfcx
authored andcommitted
test(autoware_behavior_path_start_planner_module): refactor unit tests for shift pull out path generation by using parameter initialization function
Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>
1 parent 421ec7d commit 42ee398

File tree

1 file changed

+44
-90
lines changed

1 file changed

+44
-90
lines changed

planning/behavior_path_planner/autoware_behavior_path_start_planner_module/test/test_geometric_pull_out.cpp

+44-90
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,15 @@ using autoware::test_utils::get_absolute_path_to_config;
3737
using autoware_planning_msgs::msg::LaneletRoute;
3838
using RouteSections = std::vector<autoware_planning_msgs::msg::LaneletSegment>;
3939
using autoware_planning_test_manager::utils::makeBehaviorRouteFromLaneId;
40+
using geometry_msgs::msg::Pose;
4041

4142
namespace autoware::behavior_path_planner
4243
{
4344

4445
class TestGeometricPullOut : public ::testing::Test
4546
{
4647
public:
47-
std::optional<PullOutPath> plan(
48+
std::optional<PullOutPath> call_plan(
4849
const Pose & start_pose, const Pose & goal_pose, PlannerDebugData & planner_debug_data)
4950
{
5051
return geometric_pull_out_->plan(start_pose, goal_pose, planner_debug_data);
@@ -54,27 +55,50 @@ class TestGeometricPullOut : public ::testing::Test
5455
void SetUp() override
5556
{
5657
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());
5859

59-
load_parameters();
60-
initialize_vehicle_info();
6160
initialize_lane_departure_checker();
62-
initialize_routeHandler();
6361
initialize_geometric_pull_out_planner();
64-
initialize_planner_data();
6562
}
66-
6763
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+
6895
// Member variables
6996
std::shared_ptr<rclcpp::Node> node_;
70-
std::shared_ptr<autoware::route_handler::RouteHandler> route_handler_;
71-
autoware::vehicle_info_utils::VehicleInfo vehicle_info_;
7297
std::shared_ptr<GeometricPullOut> geometric_pull_out_;
7398
std::shared_ptr<LaneDepartureChecker> lane_departure_checker_;
74-
PlannerData planner_data_;
7599

76100
private:
77-
rclcpp::NodeOptions get_node_options() const
101+
rclcpp::NodeOptions make_node_options() const
78102
{
79103
// Load common configuration files
80104
auto node_options = rclcpp::NodeOptions{};
@@ -102,85 +126,25 @@ class TestGeometricPullOut : public ::testing::Test
102126
return node_options;
103127
}
104128

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-
129129
void initialize_lane_departure_checker()
130130
{
131+
const auto vehicle_info =
132+
autoware::vehicle_info_utils::VehicleInfoUtils(*node_).getVehicleInfo();
131133
lane_departure_checker_ = std::make_shared<LaneDepartureChecker>();
132-
lane_departure_checker_->setVehicleInfo(vehicle_info_);
134+
lane_departure_checker_->setVehicleInfo(vehicle_info);
133135

134136
autoware::lane_departure_checker::Param lane_departure_checker_params{};
135-
lane_departure_checker_params.footprint_extra_margin = lane_departure_check_expansion_margin_;
136137
lane_departure_checker_->setParam(lane_departure_checker_params);
137138
}
138139

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-
149140
void initialize_geometric_pull_out_planner()
150141
{
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_);
158143

159144
auto time_keeper = std::make_shared<autoware::universe_utils::TimeKeeper>();
160145
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);
173147
}
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};
184148
};
185149

186150
TEST_F(TestGeometricPullOut, GenerateValidGeometricPullOutPath)
@@ -199,26 +163,16 @@ TEST_F(TestGeometricPullOut, GenerateValidGeometricPullOutPath)
199163
geometry_msgs::build<geometry_msgs::msg::Quaternion>().x(0.0).y(0.0).z(0.705897).w(
200164
0.708314));
201165

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);
212167

213168
// 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));
216170

217171
// Plan the pull out path
218172
PlannerDebugData debug_data;
219-
auto result = plan(start_pose, goal_pose, debug_data);
173+
auto result = call_plan(start_pose, goal_pose, debug_data);
220174

221-
// Assert that a valid geometric geometric pull out path is generated
175+
// Assert that a valid geometric pull out path is generated
222176
ASSERT_TRUE(result.has_value()) << "Geometric pull out path generation failed.";
223177
EXPECT_EQ(result->partial_paths.size(), 2UL)
224178
<< "Generated geometric pull out path does not have the expected number of partial paths.";

0 commit comments

Comments
 (0)