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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_crosswalk_traffic_light_estimator 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
- Yoshi Ri
- Tao Zhong
- Masato Saeki
- Taekjin Lee
- Masaki Baba
Authors
- Satoshi Ota
autoware_crosswalk_traffic_light_estimator
Purpose
autoware_crosswalk_traffic_light_estimator estimates pedestrian traffic signals which can be summarized as the following two tasks:
- Estimate pedestrian traffic signals that are not subject to be detected by perception pipeline.
- Estimate whether pedestrian traffic signals are flashing and modify the result.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/vector_map |
autoware_map_msgs::msg::LaneletMapBin | vector map |
~/input/classified/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | classified signals |
Output
| Name | Type | Description |
|---|---|---|
~/output/traffic_signals |
autoware_perception_msgs::msg::TrafficLightGroupArray | output that contains estimated pedestrian traffic signals |
~/debug/processing_time_ms |
autoware_internal_debug_msgs::msg::Float64Stamped | pipeline latency time (ms) |
Parameters
| Name | Type | Description | Default value |
|---|---|---|---|
use_last_detect_color |
bool | If this parameter is true, this module estimates pedestrian’s traffic signal as RED not only when vehicle’s traffic signal is detected as GREEN/AMBER but also when detection results change GREEN/AMBER to UNKNOWN. (If detection results change RED or AMBER to UNKNOWN, this module estimates pedestrian’s traffic signal as UNKNOWN.) If this parameter is false, this module use only latest detection results for estimation. (Only when the detection result is GREEN/AMBER, this module estimates pedestrian’s traffic signal as RED.) |
true |
use_pedestrian_signal_detect |
bool | If this parameter is true, use the pedestrian’s traffic signal estimated by the perception pipeline. If false, overwrite it with pedestrian’s signals estimated from vehicle traffic signals and HDMap. |
true |
last_detect_color_hold_time |
double | The time threshold to hold for last detect color. The unit is second. | 2.0 |
last_colors_hold_time |
double | The time threshold to hold for history detected pedestrian traffic light color. The unit is second. | 1.0 |
Inner-workings / Algorithms
When the pedestrian traffic signals are detected by perception pipeline
- If estimates the pedestrian traffic signals are flashing, overwrite the results
- Prefer the output from perception pipeline, but overwrite it if the pedestrian traffic signals are invalid(
no detection,backlight, orocclusion)
When the pedestrian traffic signals are NOT detected by perception pipeline
- Estimate the color of pedestrian traffic signals based on detected vehicle traffic signals and HDMap
Override rules specific to some traffic lights can also be defined in the lanelet map. In that case, the crosswalk traffic light estimation is overridden by these rules.
Estimate whether pedestrian traffic signals are flashing
start
if (the pedestrian traffic light classification result exists)then
: update the flashing flag according to the classification result(in_signal) and last_signals
if (the traffic light is flashing?)then(yes)
: update the traffic light state
else(no)
: the traffic light state is the same with the classification result
if (the classification result not exists)
: the traffic light state is the same with the estimation
: output the current traffic light state
end
Update flashing flag
Update traffic light status
Estimate the color of pedestrian traffic signals
```plantuml
start :subscribe detected traffic signals and HDMap; :extract crosswalk lanelets from HDMap; :extract road lanelets that conflicts with crosswalk; :initialize non_red_lanelets(lanelet::ConstLanelets); if (Latest detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; else (no) if (use_last_detect_color is true?) then (yes) if (Latest detection result is UNKNOWN and last detection result is GREEN or AMBER?) then (yes) :push back non_red_lanelets; endif endif endif if (Is there STRAIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else if (Is there both LEFT-NON-RED and RIGHT-NON-RED road lanelet in non_red_lanelets?) then (yes) :estimate related pedestrian’s traffic signal as RED; else (no) :estimate related pedestrian’s traffic signal as UNKNOWN;
File truncated at 100 lines see the full file
Changelog for package autoware_crosswalk_traffic_light_estimator
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
feat(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock (#13268) refactor(autoware_crosswalk_traffic_light_estimator): use timestamp from message header instead of node clock Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>
-
chore(perception): update package maintainers (#13185)
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
- chore(pre-commit): update clang-format to v22.1.5
* style(pre-commit): autofix ---------
-
Contributors: Mete Fatih Cırıt, Ryohsuke Mitsudome, Satoshi OTA, Takahisa Ishikawa
0.52.0 (2026-06-30)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/crosswalk_traffic_light_estimator.launch.xml
- Copyright 2023 UCI SORA Lab Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
- input/vector_map [default: /map/vector_map]
- input/traffic_signals [default: judged/traffic_signals]
- output/traffic_signals [default: traffic_signals]
- param_path [default: $(find-pkg-share autoware_crosswalk_traffic_light_estimator)/config/crosswalk_traffic_light_estimator.param.yaml]