You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md
+12-46
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,9 @@ The Lane Change module is activated when lane change is needed and can be safely
11
11
-`allow_lane_change` tags is set as `true`
12
12
- During lane change request condition
13
13
- The ego-vehicle isn’t on a `preferred_lane`.
14
-
- There is neither intersection nor crosswalk on the path of the lane change
14
+
- The ego-vehicle isn't approaching a traffic light. (condition parameterized)
15
+
- The ego-vehicle isn't approaching a crosswalk. (condition parameterized)
16
+
- The ego-vehicle isn't approaching an intersection. (condition parameterized)
15
17
- lane change ready condition
16
18
- Path of the lane change does not collide with other dynamic objects (see the figure below)
17
19
- Lane change candidate path is approved by an operator.
@@ -182,11 +184,9 @@ A candidate path is considered valid if it meets the following criteria:
182
184
1. The distance from the ego vehicle's current position to the end of the current lanes is sufficient to perform a single lane change.
183
185
2. The distance from the ego vehicle's current position to the goal along the current lanes is adequate to complete multiple lane changes.
184
186
3. The distance from the ego vehicle's current position to the end of the target lanes is adequate for completing multiple lane changes.
185
-
4. Intersection requirements are met (conditions are parameterized).
186
-
5. Crosswalk requirements are satisfied (conditions are parameterized).
187
-
6. Traffic light regulations are adhered to (conditions are parameterized).
188
-
7. The lane change can be completed after passing a parked vehicle.
189
-
8. The lane change is deemed safe to execute.
187
+
4. The distance from the ego vehicle's current position to the next regulatory element is adequate to perform a single lane change.
188
+
5. The lane change can be completed after passing a parked vehicle.
189
+
6. The lane change is deemed safe to execute.
190
190
191
191
The following flow chart illustrates the validity check.
192
192
@@ -231,43 +231,6 @@ group check for distance #LightYellow
231
231
endif
232
232
end group
233
233
234
-
235
-
236
-
group evaluate on Crosswalk #LightCyan
237
-
if (regulate_on_crosswalk and not enough length to crosswalk) then (yes)
238
-
if (stop time < stop time threshold\n(Related to stuck detection)) then (yes)
239
-
#LightPink:Reject path;
240
-
stop
241
-
else (no)
242
-
:Allow lane change in crosswalk;
243
-
endif
244
-
else (no)
245
-
endif
246
-
end group
247
-
248
-
group evaluate on Intersection #LightGreen
249
-
if (regulate_on_intersection and not enough length to intersection) then (yes)
250
-
if (stop time < stop time threshold\n(Related to stuck detection)) then (yes)
251
-
#LightPink:Reject path;
252
-
stop
253
-
else (no)
254
-
:Allow lane change in intersection;
255
-
endif
256
-
else (no)
257
-
endif
258
-
end group
259
-
260
-
group evaluate on Traffic Light #Lavender
261
-
if (regulate_on_traffic_light and not enough length to complete lane change before stop line) then (yes)
262
-
#LightPink:Reject path;
263
-
stop
264
-
elseif (stopped at red traffic light within distance) then (yes)
265
-
#LightPink:Reject path;
266
-
stop
267
-
else (no)
268
-
endif
269
-
end group
270
-
271
234
if (ego is not stuck but parked vehicle exists in target lane) then (yes)
272
235
#LightPink:Reject path;
273
236
stop
@@ -517,8 +480,8 @@ The function to stop by keeping a margin against forward obstacle in the previou
517
480
518
481
### Lane change regulations
519
482
520
-
If you want to regulate lane change on crosswalksor intersections, the lane change module finds a lane change path excluding it includes crosswalks or intersections.
521
-
To regulate lane change on crosswalksor intersections, change`regulation.crosswalk`or `regulation.intersection` to `true`.
483
+
If you want to regulate lane change on crosswalks, intersections, or traffic lights, the lane change module is disabled near any of them.
484
+
To regulate lane change on crosswalks, intersections, or traffic lights, set`regulation.crosswalk`, `regulation.intersection`or `regulation.traffic_light` to `true`.
522
485
If the ego vehicle gets stuck, to avoid stuck, it enables lane change in crosswalk/intersection.
523
486
If the ego vehicle stops more than `stuck_detection.stop_time` seconds, it is regarded as a stuck.
524
487
If the ego vehicle velocity is smaller than `stuck_detection.velocity`, it is regarded as stopping.
@@ -573,6 +536,8 @@ detach
573
536
@enduml
574
537
```
575
538
539
+
During a lane change, a safety check is made in consideration of the deceleration of the ego vehicle, and a safety check is made for `cancel.deceleration_sampling_num` deceleration patterns, and the lane change will be canceled if the abort condition is satisfied for all deceleration patterns.
540
+
576
541
To preventive measure for lane change path oscillations caused by alternating safe and unsafe conditions, an additional hysteresis count check is implemented before executing an abort or cancel maneuver. If unsafe, the `unsafe_hysteresis_count_` is incremented and compared against `unsafe_hysteresis_threshold`; exceeding it prompts an abort condition check, ensuring decisions are made with consideration to recent safety assessments as shown in flow chart above. This mechanism stabilizes decision-making, preventing abrupt changes due to transient unsafe conditions.
577
542
578
543
```plantuml
@@ -823,7 +788,8 @@ The following parameters are configurable in `lane_change.param.yaml`.
823
788
|`cancel.duration`|[s]| double | The time taken to complete returning to the center line. | 3.0 |
824
789
|`cancel.max_lateral_jerk`|[m/sss]| double | The maximum lateral jerk for abort path | 1000.0 |
825
790
|`cancel.overhang_tolerance`|[m]| double | Lane change cancel is prohibited if the vehicle head exceeds the lane boundary more than this tolerance distance | 0.0 |
826
-
|`unsafe_hysteresis_threshold`|[-]| int | threshold that helps prevent frequent switching between safe and unsafe decisions | 10 |
791
+
|`cancel.unsafe_hysteresis_threshold`|[-]| int | threshold that helps prevent frequent switching between safe and unsafe decisions | 10 |
792
+
|`cancel.deceleration_sampling_num`|[-]| int | Number of deceleration patterns to check safety to cancel lane change | 5 |
Copy file name to clipboardexpand all lines: planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/scene.hpp
+21-4
Original file line number
Diff line number
Diff line change
@@ -37,6 +37,7 @@ using geometry_msgs::msg::Twist;
37
37
using lane_change::LanesPolygon;
38
38
using tier4_planning_msgs::msg::PathWithLaneId;
39
39
using utils::path_safety_checker::ExtendedPredictedObjects;
40
+
using utils::path_safety_checker::RSSparams;
40
41
41
42
classNormalLaneChange : publicLaneChangeBase
42
43
{
@@ -53,6 +54,8 @@ class NormalLaneChange : public LaneChangeBase
Copy file name to clipboardexpand all lines: planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/base_class.hpp
Copy file name to clipboardexpand all lines: planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/calculation.hpp
Copy file name to clipboardexpand all lines: planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/data_structs.hpp
+3-1
Original file line number
Diff line number
Diff line change
@@ -94,6 +94,8 @@ struct CancelParameters
94
94
// number of unsafe exceeds unsafe_hysteresis_threshold, the lane change will be cancelled or
Copy file name to clipboardexpand all lines: planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/utils.hpp
+9-18
Original file line number
Diff line number
Diff line change
@@ -60,17 +60,6 @@ using tier4_planning_msgs::msg::PathWithLaneId;
0 commit comments