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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]
Messages
Services
Plugins
Recent questions tagged autoware_bevfusion 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
- Kenzo Lobos-Tsunekawa
- Amadeusz Szymko
- Kotaro Uetake
- Masato Saeki
- Kok Seang Tan
Authors
autoware_bevfusion
Purpose
The autoware_bevfusion package is used for 3D object detection based on lidar or camera-lidar fusion.
Inner-workings / Algorithms
This package implements a TensorRT powered inference node for BEVFusion [1]. The sparse convolution backend corresponds to spconv. Autoware installs it automatically in its setup script. If needed, the user can also build it and install it following the following instructions.
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud topics. |
~/input/image* |
sensor_msgs::msg::Image |
Input image topics. The image is assumed to be RGB8 encoding. |
~/input/camera_info* |
sensor_msgs::msg::CameraInfo |
Input camera info topics. |
Output
| Name | Type | Description |
|---|---|---|
~/output/objects |
autoware_perception_msgs::msg::DetectedObjects |
Detected objects. |
debug/cyclic_time_ms |
tier4_debug_msgs::msg::Float64Stamped |
Cyclic time (ms). |
debug/pipeline_latency_ms |
tier4_debug_msgs::msg::Float64Stamped |
Pipeline latency time (ms). |
debug/processing_time/preprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Preprocess (ms). |
debug/processing_time/inference_ms |
tier4_debug_msgs::msg::Float64Stamped |
Inference time (ms). |
debug/processing_time/postprocess_ms |
tier4_debug_msgs::msg::Float64Stamped |
Postprocess time (ms). |
debug/processing_time/total_ms |
tier4_debug_msgs::msg::Float64Stamped |
Total processing time (ms). |
Parameters
BEVFusion node
{{ json_to_markdown(“perception/autoware_bevfusion/schema/bevfusion.schema.json”) }}
BEVFusion model
{{ json_to_markdown(“perception/autoware_bevfusion/schema/ml_package_bevfusion.schema.json”) }}
Detection class remapper
{{ json_to_markdown(“perception/autoware_bevfusion/schema/detection_class_remapper.schema.json”) }}
The build_only option
The autoware_bevfusion node has a build_only option to build the TensorRT engine file from the specified ONNX file, after which the program exits.
ros2 launch autoware_bevfusion bevfusion.launch.xml build_only:=true
The log_level option
The default logging severity level for autoware_bevfusion is info. For debugging purposes, the developer may decrease severity level using log_level parameter:
ros2 launch autoware_bevfusion bevfusion.launch.xml log_level:=debug
Assumptions / Known limits
This node assumes that the input pointcloud follows the PointXYZIRC layout defined in autoware_point_types.
Trained Models
The model bundle is hosted on Hugging Face.
The ansible artifacts role downloads it into $(env HOME)/autoware_data/ml_models/bevfusion.
It holds the ONNX files and the ML package configs for the lidar-only and the camera-lidar models, and the class remapper.
The model was trained in TIER IV’s internal database (~35k lidar frames) for 30 epochs.
Changelog
References/External links
[1] Zhijian Liu, Haotian Tang, Alexander Amini, Xinyu Yang, Huizi Mao, Daniela Rus, and Song Han. “BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation.” 2023 International Conference on Robotics and Automation.
(Optional) Future extensions / Unimplemented parts
Although this node can perform camera-lidar fusion, as it is the first method in autoware to actually use images and lidars for inference, the package structure and its full integration in the autoware pipeline are left for future work. In the current structure, it can be employed without any changes as a lidar-based detector.
Changelog for package autoware_bevfusion
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(design): align the perception node designs with the packages they describe (#13339) The lanelet filter components register under the lanelet_filter:: namespace, and the apollo instance segmentation and transfusion nodes are built with the autoware_ prefix on the executable name. BEVFusion, StreamPetr and LidarFRNet name param file defaults that resolve to nothing: the first two are missing the config/ prefix, and the three files LidarFRNet names are called frnet.param.yaml, ml_package_frnet_ot128.param.yaml and diagnostics_frnet.param.yaml. ElevationMapLoader pins its map_hash input with global:, which keeps the port out of the design graph: link_manager skips any connection whose target is a global input port and the exporter emits no remap. remap_target: keeps the same fixed topic name while letting the port take part in the graph.
-
fix(autoware_bevfusion): reject point clouds with an unexpected point_step (#13311) The voxel generator reinterpret_casts the cloud to a 16-byte InputPointType. The existing check is a prefix check, so a wider point type passed it and was then read at the wrong stride, producing detections from misread data with no error. Validate point_step as well. Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
refactor(bevfusion): replace NMS with perception_utils::IouBevNms (#13178) refactor: replace NMS with perception_utils::IouBevNms
-
docs: replace retired model hosting URLs with Hugging Face links (#13204)
* docs: replace retired model hosting URLs with Hugging Face links The model artifacts moved from awf.ml.dev.web.auto and the autoware-files S3 bucket to Hugging Face repositories under the AutowareFoundation org (autowarefoundation/autoware#7223). The READMEs still pointed manual downloads at the old hosts, and the yabloc README still gave wget instructions for the retired archive. The two dataset links on the S3 bucket stay: the bucket keeps serving datasets, maps and rosbags. Only the model objects are retired. The centerpoint v0 and v1 files were never migrated and stop being distributed, so their changelog rows lose the download links.
* docs: name the ML package configs in the model download notes The launch files read transfusion_ml_package.param.yaml and ml_package_camera_streampetr.param.yaml from the model directory. The download notes did not name them, so a manual download missed two required files. ---------
-
feat(BEVFusion): remove thrust from postprocessing (#13110)
- Update maintaner name in streampetr
- Update maintaner name in streampetr
- Remove thrust from bevfusion node
- Remove thrust from postprocessing
- Remove thrust libraries
- Fix typo
- Fix first invalid bbox in circle_nms
* Add DeviceSelect::Flagged to select valid bboxes mask on the valid mask ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
Contributors: Kok Seang Tan, Kotaro Uetake, Max Schmeller, Mete Fatih Cırıt, Ryohsuke Mitsudome, Taekjin LEE, Vishal Chauhan
0.52.0 (2026-06-30)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(autoware_bevfusion): update parameter and process for TRAFFIC_CONE and BARRIER classes (#12732) update parameter and process for TRAFFIC_CONE and BARRIER classes
-
feat(autoware_bevfusion): add diagnostic declaration (#12681)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_perception_launch |
Launch files
- launch/bevfusion.launch.xml
-
- input/pointcloud [default: /sensing/lidar/concatenated/pointcloud]
- output/objects [default: objects]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- model_name [default: bevfusion_lidar]
- model_path [default: $(var data_path)/bevfusion]
- model_param_path [default: $(find-pkg-share autoware_bevfusion)/config/$(var model_name).param.yaml]
- ml_package_param_path [default: $(var model_path)/ml_package_$(var model_name).param.yaml]
- class_remapper_param_path [default: $(var model_path)/detection_class_remapper.param.yaml]
- common_param_path [default: $(find-pkg-share autoware_bevfusion)/config/common_bevfusion.param.yaml]
- build_only [default: false]
- log_level [default: info]
- use_pointcloud_container [default: false]
- pointcloud_container_name [default: pointcloud_container]
- use_compressed_images [default: false]
- bevfusion_camera_info0 [default: /sensing/camera/camera0/camera_info]
- bevfusion_camera_info1 [default: /sensing/camera/camera1/camera_info]
- bevfusion_camera_info2 [default: /sensing/camera/camera2/camera_info]
- bevfusion_camera_info3 [default: /sensing/camera/camera3/camera_info]
- bevfusion_camera_info4 [default: /sensing/camera/camera4/camera_info]
- bevfusion_camera_info5 [default: /sensing/camera/camera5/camera_info]
- bevfusion_image0 [default: /sensing/camera/camera0/image_rect_color]
- bevfusion_image1 [default: /sensing/camera/camera1/image_rect_color]
- bevfusion_image2 [default: /sensing/camera/camera2/image_rect_color]
- bevfusion_image3 [default: /sensing/camera/camera3/image_rect_color]
- bevfusion_image4 [default: /sensing/camera/camera4/image_rect_color]
- bevfusion_image5 [default: /sensing/camera/camera5/image_rect_color]