Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_path_lane_change_module at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.48.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-12-03 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Fumiya Watanabe
- Satoshi Ota
- Zulfaqar Azmi
- Kosuke Takeuchi
- Tomoya Kimura
- Shumpei Wakabayashi
- Tomohito Ando
- Alqudah Mohammad
- Maxime Clement
Authors
Lane Change design
The Lane Change module is activated when lane change is needed (Ego is not on preferred lane), and activation requirements are satisfied.
Lane Change Requirements
Prerequisites
The type of lane boundary in the HD map has to be one of the following:
- Dashed lane marking: Lane changes are permitted in both directions.
- Dashed marking on the left and solid on the right: Lane changes are allowed from left to right.
- Dashed marking on the right and solid on the left: Lane changes are allowed from right to left.
-
allow_lane_changetags is set astrue
Activation Conditions
The lane change module will activate under the following conditions :
- The ego-vehicle is NOT on a
preferred_lane. - Distance to start of
target_laneis less thanmaximum_prepare_length - The ego-vehicle is NOT close to a regulatory element:
- Distance to next regulatory element is greater than
maximum_prepare_length. - Considers distance to traffic light. (If param
regulation.traffic_lightis enabled) - Considers distance to crosswalk. (If param
regulation.crosswalkis enabled) - Considers distance to intersection. (If param
regulation.intersectionis enabled)
- Distance to next regulatory element is greater than
!!! warning
If ego vehicle is stuck, lane change will be enabled near crosswalk/intersection. Ego is considered stuck if it stops more than `stuck_detection.stop_time`. Ego is considered to be stopping if its velocity is smaller than `stuck_detection.velocity`.
The following figure illustrates the logic for checking if lane change is required:
@startuml
skinparam defaultTextAlignment center
skinparam backgroundColor #WHITE
start
if (Is data available AND lanes available) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to target lane start;
if (Is dist to target lane start < max prepare dist) then (no)
#LightPink:False;
stop
else (yes)
endif
:Get distance to next regulatory element;
if (Is dist to next regulatory element < max prepare dist) then (yes)
#LightPink:False;
stop
else (no)
end if
#LightGreen:True;
stop
@enduml
Ready Conditions
- Valid lane change path is found.
- Lane change path is safe; does not collide with other dynamic objects.
- Lane change candidate path is approved by an operator.
Implementation
Lane change module uses a sampling based approach for generating a valid and safe lane changing trajectory. The process for generating the trajectory includes object filtering, metrics sampling, candidate paths generation, and lastly candidate paths evaluation. Additionally the lane change module is responsible for turn signal activation when appropriate, and inserting a stop point when necessary.
Global Flowchart
The following diagram, illustrates the overall flow of the lane change module implementation.
```plantuml @startuml
start
#LightBlue:Update lane change data; #LightBlue:Filter detected objects; if (Is lane change required?) then (yes) #LightBlue:Activate turn signal; #LightBlue:Generate metrics samples; if (Is valid metrics available) then (yes) While (Can generate new candidate path?) is (TRUE) if (Candidate path is valid & safe?) then (yes) #LightBlue:Generate drivable area; #LightBlue:Execute lane change path; while (Can module transit to success state?) is (False) if (Can module trasit to failure state?) then (yes)
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_path_lane_change_module
0.48.0 (2025-11-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(autoware_lanelet2_utils): replace ported functions from autoware_lanelet2_extension (#11593) Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
fix: tf2 uses hpp headers in rolling (and is backported) (#11620)
-
fix(lane_change): prevent path distortion by resetting lane change module when ego is not in either current or target lanes (#11599) fix(lane_change): negating path distortion when ego is not in target lanes
-
fix(lane_change): turn signal when valid path is not available (#11545)
- fix(lane_change): turn signal when valid path is not available
- minor refactoring
-
feat(start_planner): supprt rtc force approval to bypass safety check (#11482) feat(start_planner): rtc force approval
-
fix(lane_change): include stopping object beside ego as target (#11342)
- fix(lane_change): include stopping object beside ego as target
- ahead car is completely ahead of ego
- compare ego min vertex against object's max vertex
- check all paths
- include header
- check all path and fix trailing object uses deceleration sampling
* updating readme ---------
-
fix(lane_change): fix predicted path exceeding end point after approval (#11360)
-
feat(bpp, lane_change): enable prepare phase check even when ego is preparing (#11307)
- feat(bpp, lane_change): enable prepare phase check even when ego is preparing
* fix cpp check error ---------
-
feat(lane_change_module): set none planning_factor behavior (#11328)
-
fix(bpp_common, lane_change): generate extended objects directly with highest confidence path. (#11304)
- fix(bpp_common, lane_change): generate extended objects directly with highest confidence path.
* handles multiple paths has equal highest confidence ---------
-
docs(lane_change): correct sentence (#11233)
- docs(lane_change): correct sentence
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* Update planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>>
* style(pre-commit): autofix ---------Co-authored-by: Zulfaqar Azmi <<93502286+zulfaqar-azmi-t4@users.noreply.github.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Sarun MUKDAPITAK, Shumpei Wakabayashi, Tim Clephas, Yuki TAKAGI, Zulfaqar Azmi
0.47.1 (2025-08-14)
File truncated at 100 lines see the full file