Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_motion_velocity_out_of_lane_module at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.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-08-16 |
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
- Maxime Clement
- Tomoya Kimura
- Shumpei Wakabayashi
- Takayuki Murooka
- Mamoru Sobue
- Alqudah Mohammad
Authors
Out of Lane
Role
There are cases where the ego vehicle footprint goes out of the driving lane,
for example when taking a narrow turn with a large vehicle.
The out_of_lane
module adds deceleration and stop points to the ego trajectory in order to prevent collisions from occurring in these out of lane cases.
Activation
This module is activated if the launch parameter launch_out_of_lane_module
is set to true.
Inner-workings / Algorithms
This module calculates if out of lane collisions occur and insert stop point before the collisions if necessary.
The algorithm assumes the input ego trajectory contains accurate time_from_start
values in order to calculate accurate time to collisions with the predicted objects.
Next we explain the inner-workings of the module in more details.
1. Ego trajectory footprints
In this first step, the ego footprint is projected at each trajectory point and its size is modified based on the ego.extra_..._offset
parameters.
The length of the trajectory used for generating the footprints is limited by the max_arc_length
parameter.
2. Other lanelets
In the second step, we calculate the lanelets where collisions should be avoided. We consider all lanelets around the ego vehicle that are not crossed by the trajectory linestring (sequence of trajectory points) or their preceding lanelets.
In the debug visualization, these other lanelets are shown as blue polygons.
3. Out of lane areas
Next, for each trajectory point, we create the corresponding out of lane areas by intersection the other lanelets (from step 2) with the trajectory point footprint (from step 1). Each area is associated with the lanelets overlapped by the area and with the corresponding ego trajectory point.
In the debug visualization, the out of lane area polygon is connected to the corresponding trajectory point by a line.
4. Predicted objects filtering
We filter objects and their predicted paths with the following conditions:
- ignore objects with a speed bellow the
minimum_velocity
parameter; - ignore objects coming from behind the ego vehicle if parameter
ignore_behind_ego
is set to true; - ignore predicted paths whose confidence value is bellow the
predicted_path_min_confidence
parameter; - cut the points of predicted paths going beyond the stop line of a red traffic light if parameter
cut_predicted_paths_beyond_red_lights
is set totrue
.
cut_predicted_paths_beyond_red_lights = false |
cut_predicted_paths_beyond_red_lights = true |
---|---|
![]() |
![]() |
In the debug visualization, the filtered predicted paths are shown in green and the stop lines of red traffic lights are shown in red.
5. Time to collisions
For each out of lane area, we calculate the times when a dynamic object will overlap the area based on its filtered predicted paths.
To make it more likely to detect collision in the other lanes, the width of the dynamic object can be increased using the parameter objects.extra_width
.
In the case where parameter mode
is set to threshold
and the calculated time is less than threshold.time_threshold
parameter, then we decide to avoid the out of lane area.
In the case where parameter mode
is set to ttc
,
we calculate the time to collision by comparing the predicted time of the object with the time_from_start
field contained in the trajectory point.
If the time to collision is bellow the ttc.threshold
parameter value, we decide to avoid the out of lane area.
In the debug visualization, the ttc (in seconds) is displayed on top of its corresponding trajectory point. The color of the text is red if the collision should be avoided and green otherwise.
Validation using the lanelet map
When parameter object.validate_predicted_paths_on_lanelets
is set to true
,
an additional check is performed before considering a collision between the out of lane area and a predicted path.
First, the possible sequences of lanelets followed by the predicted path are calculated such that:
- each lanelet in the sequence follows the previous one (according to the lanelet map);
- the sequence fully contains the predicted path.
Then, for a collision to be considered, one of the “other lanelets” overlapped by the out of lane area must be inside the calculated sequence.
This feature allows the module to ignore collisions caused by nonsensical predicted paths, or by predicted paths that “merge” into the ego lane and that should be handled by other modules. Indeed, lanelets that merge into the ego lane (i.e., precede a trajectory lanelet) are not included in the “other lanelets”.
6. Calculate the stop or slowdown point
First, the minimum stopping distance of the ego vehicle is calculated based on the jerk and deceleration constraints set by the velocity smoother parameters.
We then search for the furthest pose along the trajectory where the ego footprint stays inside of the ego lane (calculate in step 2) and constraint the search to be between the minimum stopping distance and the 1st trajectory point with a collision to avoid (as determined in the previous step).
The search is done by moving backward along the trajectory with a distance step set by the action.precision
parameter.
File truncated at 100 lines see the full file
Changelog for package autoware_motion_velocity_out_of_lane_module
0.47.0 (2025-08-11)
- style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- feat(out_of_lane): add safety factors to the published planning factor (#11062)
- feat(out_of_lane): add objects.extra_width parameter (#10923)
- feat(out_of_lane): cut trajectory footprints behind the current ego front (#10949)
- feat(out_of_lane): validate predicted paths on lanelets (#10882)
- Contributors: Maxime CLEMENT, Mete Fatih Cırıt
0.46.0 (2025-06-20)
- Merge remote-tracking branch 'upstream/main' into tmp/TaikiYamada/bump_version_base
- feat(autoware_motion_velocity_planner): only wait for required subscriptions (#10732)
- Contributors: Ryohsuke Mitsudome, TaikiYamada4
0.45.0 (2025-05-22)
- Merge remote-tracking branch 'origin/main' into tmp/notbot/bump_version_base
- feat(out_of_lane): resample object predicted paths to prevent empty gaps (#10606) Co-authored-by: mkquda <<168697710+mkquda@users.noreply.github.com>>
- fix(motion_velocity_planner): add missing header (#10560)
- fix(out_of_lane): throttle log message to avoid spamming the logs (#10562)
- Contributors: Masaki Baba, Maxime CLEMENT, TaikiYamada4
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat(out_of_lane): implement min duration to activate stop action (#10448)
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- implement stop pose activation time buffer
- refactor code to avoid reduce loops
- fix logic
- use different ttc threshold value once stop decision is made
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
- fix logic to get nearest slowdown pose
- fix merge errors
* chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776) not sync github-release
- maintain a buffer of slowdown poses and use nearest one
- fix duration check condition
- rename parameter
* Revert "chore(sync-files.yaml): not synchronize [github-release.yaml]{.title-ref} (#1776)" This reverts commit 871a8540ade845c7c9a193029d407b411a4d685b.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |