Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_behavior_velocity_traffic_light_module at Robotics Stack Exchange
Package Summary
| Version | 0.53.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 | 2026-10-26 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Taiki Yamada
- Mamoru Sobue
- Yukinari Hisaki
Authors
- Satoshi Ota
Traffic Light
Role
Judgement whether a vehicle can go into an intersection or not by traffic light status, and planning a velocity of the stop if necessary. This module is designed for rule-based velocity decision that is easy for developers to design its behavior. It generates proper velocity for traffic light scene.
Limitations
This module allows developers to design STOP/GO in traffic light module using specific rules. Due to the property of rule-based planning, the algorithm is greatly depends on object detection and perception accuracy considering traffic light. Also, this module only handles STOP/Go at traffic light scene, so rushing or quick decision according to traffic condition is future work.
Activation Timing
This module is activated when there is traffic light in ego lane.
Algorithm
- Obtains a traffic light mapped to the route and a stop line correspond to the traffic light from a map information.
-
If a corresponding traffic light signal have never been found, it treats as a signal to pass.
-
If a corresponding traffic light signal is found but timed out, it treats as a signal to stop.
-
- Uses the highest reliability one of the traffic light recognition result and if the color of that was not green or corresponding arrow signal, generates a stop point.
- If an elapsed time to receive stop signal is less than
stop_time_hysteresis, it treats as a signal to pass. This feature is to prevent chattering.
- If an elapsed time to receive stop signal is less than
- When vehicle current velocity is
-
higher than
yellow_light_stop_velocitym/s ⇒ pass judge(using next slide formula) -
lower than
yellow_light_stop_velocitym/s ⇒ stop
-
- When it to be judged that vehicle can’t stop before stop line, autoware chooses one of the following behaviors
-
“can pass through” stop line during yellow lamp => pass
-
“can’t pass through” stop line during yellow lamp => emergency stop
-
Dilemma Zone
-
yellow lamp line
It’s called “yellow lamp line” which shows the distance traveled by the vehicle during yellow lamp.
-
dilemma zone
It’s called “dilemma zone” which satisfies following conditions:
-
vehicle can’t pass through stop line during yellow lamp.(right side of the yellow lamp line)
-
vehicle can’t stop under deceleration and jerk limit.(left side of the pass judge curve)
⇒emergency stop(relax deceleration and jerk limitation in order to observe the traffic regulation)
-
-
optional zone
It’s called “optional zone” which satisfies following conditions:
-
vehicle can pass through stop line during yellow lamp.(left side of the yellow lamp line)
-
vehicle can stop under deceleration and jerk limit.(right side of the pass judge curve)
⇒ stop(autoware selects the safety choice)
-
-
arrow-aware passing on yellow
This feature enables smooth passing on a yellow signal in turn lanes to avoid sudden braking. Even in situations where the system would normally select STOP (Optional Zone) or EMERGENCY STOP (Dilemma Zone), it overrides the decision and selects PASS if all the following conditions are met:
- The parameter
enable_arrow_aware_yellow_passingis set totrue. - The ego vehicle is in a turn lane (left or right).
- The corresponding traffic light has a static arrow bulb defined in the map.
- The signal state has transitioned from “Green” to “Yellow”. (Note: If the transition is from “Red + Arrow” to “Yellow”, the system decides to STOP for safety as per normal logic.)
- The parameter
Module Parameters
| Parameter | Type | Description |
|---|---|---|
stop_margin |
double | [m] margin before stop point |
tl_state_timeout |
double | [s] time out for detected traffic light result. |
stop_time_hysteresis |
double | [s] time threshold to decide stop planning for chattering prevention |
yellow_lamp_period |
double | [s] time for yellow lamp |
yellow_light_stop_velocity |
double | [m/s] velocity threshold for always stopping at a yellow light. |
enable_pass_judge |
bool | [-] whether to use pass judge |
enable_arrow_aware_yellow_passing |
bool | [-] whether to support arrow-aware passing on yellow |
v2i.use_remaining_time |
bool | [-] whether to use V2I remaining time information for traffic light decision |
v2i.last_time_allowed_to_pass |
double | [s] relative time against the time of turn to red - safety margin for passing through |
v2i.velocity_threshold |
double | [m/s] velocity threshold to change decision logic for V2I prediction |
v2i.required_time_to_departure |
double | [s] required time to departure for low speed scenarios to prevent unsafe passing |
Flowchart
```plantuml @startuml title modifyPathVelocity start
:calc stop point and insert index;
:find offset segment;
File truncated at 100 lines see the full file
Changelog for package autoware_behavior_velocity_traffic_light_module
0.53.0 (2026-09-29)
0.52.0 (2026-06-30)
0.51.0 (2026-05-01)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_traffic_light_utils): rewrite hasTrafficLightCircleColor and hasTrafficLightShape into three functions to handle overseas color arrow traffic light (#12481)
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- feat(autoware_traffic_light_utils): merge hasTrafficLightCirleColor and hasTrafficLightShape into a general function hasTrafficLightShapeColor to handle oversea color arrow traffic light
- fix: modify default parameter for hasTrafficLightShapeColor
- fix: separate hasTrafficLightShapeColor into three functions
* chore(miscs): remove unused lanelet2 extension header (#12081) chore(miscs): remove unused header include for lanelet2_extension
- fix: revert modification
- fix: revert modification
- style(pre-commit): autofix
* fix: change TrafficLightElement msg belonging ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(traffic_light): support arrow-aware passing judgment on yellow signal in bvp's experimental module (#12266) (bvp_traffic_light_module) add support arrow-aware passing decision on yellow signal (11704)
-
feat(autoware_trajectory): define set stopline in Trajectory class (#12008)
- replace usage with set_stopline function
* replace additiona usage with set_stopline function ---------Co-authored-by: Mamoru Sobue <<hilo.soblin@gmail.com>>
-
chore: organize maintainer (#12139)
-
Contributors: Sarun MUKDAPITAK, Satoshi OTA, Xiaoyu WANG, github-actions
0.50.0 (2026-02-14)
-
Merge remote-tracking branch 'origin/main' into humble
-
feat!: remove ROS 2 Galactic codes (#11905)
-
feat(autoware_behavior_velocity_traffic_light_module): support arrow-aware passing judgment on yellow signal (#11704)
- feat: arrow yellow pass
- ref: change comment out
- style(pre-commit): autofix
- docs: add description for yellow pass
- style(pre-commit): autofix
- ref: cleaned up the code
- ref: change param name
- style(pre-commit): autofix
- ref: add private variable
- style(pre-commit): autofix
- chore: change variable name
- feat: test module
- style(pre-commit): autofix
- chore: add variable comment out
- chore: rename nongreen variable
- fix: transition logic doesn't handle the case
- chore: add comment about yellow signal
- chore: use the helper method
- style(pre-commit): autofix
- fix: lint error
- ref: improve code health
- style(pre-commit): autofix
- fix: comment & test coverage
- style(pre-commit): autofix
- ref: change default-initialized properly
- Update planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/test/test_traffic_light_module.cpp
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |