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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_image_transport_decompressor 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-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yukihiro Saito
- Kenzo Lobos-Tsunekawa
Authors
- Yukihiro Saito
- Patrick Mihelich
- Julius Kammerl
image_transport_decompressor
Purpose
The image_transport_decompressor is a node that decompresses images.
Inner-workings / Algorithms
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/compressed_image |
sensor_msgs::msg::CompressedImage |
compressed image |
Output
| Name | Type | Description |
|---|---|---|
~/output/raw_image |
sensor_msgs::msg::Image |
decompressed image |
Parameters
{{ json_to_markdown(“sensing/autoware_image_transport_decompressor/schema/image_transport_decompressor.schema.json”) }}
Assumptions / Known limits
The supported case is an 8-bit RGB or BGR camera with encoding set to rgb8 or bgr8. Anything
else still decodes and publishes, but the result is wrong in one of two ways, because the decode
always yields 8-bit BGR with three channels whatever the camera sent.
-
Another camera, with
encoding: rgb8orbgr8. The message is well formed, so no consumer complains, but the pixels are no longer what the camera measured. -
Any other
encoding. The publishedencodingis the one the sender named, and the payload no longer matches it.cv_bridgethrows on the 16-bit encodings and misreads the rest in silence.
Specifically:
| Camera image |
encoding: rgb8 or bgr8
|
any other encoding
|
|---|---|---|
rgb8, bgr8
|
as sent | as sent |
rgba8, bgra8
|
alpha dropped | alpha replaced by 255 |
mono8 |
one channel copied into three | three channels named mono8 |
mono16 |
upper 8 bits, copied into three | three channels named mono16 |
rgb16, bgr16
|
upper 8 bits | 8-bit samples named 16-bit |
rgba16, bgra16
|
upper 8 bits, alpha dropped | 8-bit samples named 16-bit |
bayer_rggb8 |
pattern copied, no color recovered | three channels named as a Bayer |
yuv422 |
as sent | BGR pixels named yuv422 |
The bold cells are the second case: the payload does not have the encoding it is published under.
An undecodable payload is dropped and reported with RCLCPP_ERROR.
(Optional) Error detection and handling
(Optional) Performance characterization
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts
Changelog for package autoware_image_transport_decompressor
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 ---------
-
test(image_transport_decompressor): move the matrix to a logic test and document the limits (#13246)
- test(image_transport_decompressor): move the matrix to a logic test
* move the 40-case encoding/format matrix out of the node test into a new test_image_transport_decompressor.cpp that calls decompress() directly, so it needs no ROS context
* the node test keeps only the 3 wiring cases: publish, "encoding" parameter forwarding, and drop-without-publish on a decode failure
* register the new logic test in CMakeLists.txt The expected values are carried over unchanged, so the move itself proves the relocation is faithful.
- docs(image_transport_decompressor): document what the encoding parameter publishes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_cmake_ros | |
| ament_lint_auto | |
| autoware_lint_common | |
| cv_bridge | |
| rclcpp | |
| rclcpp_components | |
| sensor_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/image_transport_decompressor.launch.xml
-
- camera_id [default: ]
- input_topic_name [default: /input/compressed_image]
- output_topic_name [default: /output/raw_image]
- param_file [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]