17
17
#include " autoware/behavior_path_planner_common/utils/path_safety_checker/path_safety_checker_parameters.hpp"
18
18
#include " autoware/behavior_path_planner_common/utils/path_shifter/path_shifter.hpp"
19
19
20
+ #include < autoware/behavior_path_planner_common/parameters.hpp>
21
+ #include < autoware/route_handler/route_handler.hpp>
20
22
#include < interpolation/linear_interpolation.hpp>
21
23
24
+ #include < nav_msgs/msg/odometry.hpp>
25
+
22
26
#include < lanelet2_core/primitives/Lanelet.h>
23
27
#include < lanelet2_core/primitives/Polygon.h>
24
28
29
+ #include < memory>
25
30
#include < utility>
26
31
#include < vector>
27
32
28
- namespace autoware ::behavior_path_planner
33
+ namespace autoware ::behavior_path_planner::lane_change
29
34
{
35
+ using geometry_msgs::msg::Pose;
36
+ using geometry_msgs::msg::Twist;
37
+ using nav_msgs::msg::Odometry;
38
+ using route_handler::Direction;
39
+ using route_handler::RouteHandler;
40
+ using utils::path_safety_checker::ExtendedPredictedObjects;
41
+
30
42
struct LateralAccelerationMap
31
43
{
32
44
std::vector<double > base_vel;
@@ -68,7 +80,7 @@ struct LateralAccelerationMap
68
80
}
69
81
};
70
82
71
- struct LaneChangeCancelParameters
83
+ struct CancelParameters
72
84
{
73
85
bool enable_on_prepare_phase{true };
74
86
bool enable_on_lane_changing_phase{false };
@@ -83,7 +95,7 @@ struct LaneChangeCancelParameters
83
95
int unsafe_hysteresis_threshold{2 };
84
96
};
85
97
86
- struct LaneChangeParameters
98
+ struct Parameters
87
99
{
88
100
// trajectory generation
89
101
double backward_lane_length{200.0 };
@@ -92,8 +104,8 @@ struct LaneChangeParameters
92
104
int lateral_acc_sampling_num{10 };
93
105
94
106
// lane change parameters
95
- double backward_length_buffer_for_end_of_lane;
96
- double backward_length_buffer_for_blocking_object;
107
+ double backward_length_buffer_for_end_of_lane{ 0.0 } ;
108
+ double backward_length_buffer_for_blocking_object{ 0.0 } ;
97
109
double lane_changing_lateral_jerk{0.5 };
98
110
double minimum_lane_changing_velocity{5.6 };
99
111
double lane_change_prepare_duration{4.0 };
@@ -143,40 +155,40 @@ struct LaneChangeParameters
143
155
utils::path_safety_checker::RSSparams rss_params_for_stuck{};
144
156
145
157
// abort
146
- LaneChangeCancelParameters cancel{};
158
+ CancelParameters cancel{};
147
159
148
160
double finish_judge_lateral_threshold{0.2 };
149
161
150
162
// debug marker
151
163
bool publish_debug_marker{false };
152
164
};
153
165
154
- enum class LaneChangeStates {
166
+ enum class States {
155
167
Normal = 0 ,
156
168
Cancel,
157
169
Abort,
158
170
Stop,
159
171
};
160
172
161
- struct LaneChangePhaseInfo
173
+ struct PhaseInfo
162
174
{
163
175
double prepare{0.0 };
164
176
double lane_changing{0.0 };
165
177
166
178
[[nodiscard]] double sum () const { return prepare + lane_changing; }
167
179
168
- LaneChangePhaseInfo (const double _prepare, const double _lane_changing)
180
+ PhaseInfo (const double _prepare, const double _lane_changing)
169
181
: prepare(_prepare), lane_changing(_lane_changing)
170
182
{
171
183
}
172
184
};
173
185
174
- struct LaneChangeInfo
186
+ struct Info
175
187
{
176
- LaneChangePhaseInfo longitudinal_acceleration{0.0 , 0.0 };
177
- LaneChangePhaseInfo velocity{0.0 , 0.0 };
178
- LaneChangePhaseInfo duration{0.0 , 0.0 };
179
- LaneChangePhaseInfo length{0.0 , 0.0 };
188
+ PhaseInfo longitudinal_acceleration{0.0 , 0.0 };
189
+ PhaseInfo velocity{0.0 , 0.0 };
190
+ PhaseInfo duration{0.0 , 0.0 };
191
+ PhaseInfo length{0.0 , 0.0 };
180
192
181
193
lanelet::ConstLanelets current_lanes{};
182
194
lanelet::ConstLanelets target_lanes{};
@@ -190,22 +202,19 @@ struct LaneChangeInfo
190
202
double terminal_lane_changing_velocity{0.0 };
191
203
};
192
204
193
- struct LaneChangeLanesFilteredObjects
205
+ struct LanesObjects
194
206
{
195
- utils::path_safety_checker:: ExtendedPredictedObjects current_lane{};
196
- utils::path_safety_checker:: ExtendedPredictedObjects target_lane{};
197
- utils::path_safety_checker:: ExtendedPredictedObjects other_lane{};
207
+ ExtendedPredictedObjects current_lane{};
208
+ ExtendedPredictedObjects target_lane{};
209
+ ExtendedPredictedObjects other_lane{};
198
210
};
199
211
200
- enum class LaneChangeModuleType {
212
+ enum class ModuleType {
201
213
NORMAL = 0 ,
202
214
EXTERNAL_REQUEST,
203
215
AVOIDANCE_BY_LANE_CHANGE,
204
216
};
205
- } // namespace autoware::behavior_path_planner
206
217
207
- namespace autoware ::behavior_path_planner::lane_change
208
- {
209
218
struct PathSafetyStatus
210
219
{
211
220
bool is_safe{true };
@@ -218,6 +227,55 @@ struct LanesPolygon
218
227
std::optional<lanelet::BasicPolygon2d> target;
219
228
std::vector<lanelet::BasicPolygon2d> target_backward;
220
229
};
230
+
231
+ struct Lanes
232
+ {
233
+ lanelet::ConstLanelets current;
234
+ lanelet::ConstLanelets target;
235
+ std::vector<lanelet::ConstLanelets> preceding_target;
236
+ };
237
+
238
+ struct CommonData
239
+ {
240
+ std::shared_ptr<RouteHandler> route_handler_ptr;
241
+ Odometry::ConstSharedPtr self_odometry_ptr;
242
+ std::shared_ptr<BehaviorPathPlannerParameters> bpp_param_ptr;
243
+ std::shared_ptr<Parameters> lc_param_ptr;
244
+ Lanes lanes;
245
+ Direction direction;
246
+
247
+ [[nodiscard]] Pose get_ego_pose () const { return self_odometry_ptr->pose .pose ; }
248
+
249
+ [[nodiscard]] Twist get_ego_twist () const { return self_odometry_ptr->twist .twist ; }
250
+
251
+ [[nodiscard]] double get_ego_speed (bool use_norm = false ) const
252
+ {
253
+ if (!use_norm) {
254
+ return get_ego_twist ().linear .x ;
255
+ }
256
+
257
+ const auto x = get_ego_twist ().linear .x ;
258
+ const auto y = get_ego_twist ().linear .y ;
259
+ return std::hypot (x, y);
260
+ }
261
+ };
262
+
263
+ using RouteHandlerPtr = std::shared_ptr<RouteHandler>;
264
+ using BppParamPtr = std::shared_ptr<BehaviorPathPlannerParameters>;
265
+ using LCParamPtr = std::shared_ptr<Parameters>;
266
+ using CommonDataPtr = std::shared_ptr<CommonData>;
267
+ using LanesPtr = std::shared_ptr<Lanes>;
221
268
} // namespace autoware::behavior_path_planner::lane_change
222
269
270
+ namespace autoware ::behavior_path_planner
271
+ {
272
+ using LaneChangeModuleType = lane_change::ModuleType;
273
+ using LaneChangeParameters = lane_change::Parameters;
274
+ using LaneChangeStates = lane_change::States;
275
+ using LaneChangePhaseInfo = lane_change::PhaseInfo;
276
+ using LaneChangeInfo = lane_change::Info;
277
+ using LaneChangeLanesFilteredObjects = lane_change::LanesObjects;
278
+ using LateralAccelerationMap = lane_change::LateralAccelerationMap;
279
+ } // namespace autoware::behavior_path_planner
280
+
223
281
#endif // AUTOWARE__BEHAVIOR_PATH_LANE_CHANGE_MODULE__UTILS__DATA_STRUCTS_HPP_
0 commit comments