Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]
Messages
Services
Plugins
Recent questions tagged autoware_diffusion_planner at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Daniel Sanchez
- Yukihiro Saito
- Go Sakayori
- Shintaro Sakoda
Authors
- Daniel Sanchez
Autoware Diffusion Planner
Overview
The Autoware Diffusion Planner is a trajectory generation module for autonomous vehicles, designed to work within the Autoware ecosystem. It leverages the Diffusion Planner model, as described in the paper “Diffusion-Based Planning for Autonomous Driving with Flexible Guidance” by Zheng et al.
This planner generates smooth, feasible, and safe trajectories by considering:
- Dynamic and static obstacles
- Vehicle kinematics
- User-defined constraints
- Lanelet2 map context
- Traffic signals and speed limits
It is implemented as a ROS 2 component node, making it easy to integrate into Autoware-based stacks. The node is aimed at working within the proposed Autoware new planning framework.
Features
-
Diffusion-based trajectory generation for flexible and robust planning
-
Integration with Lanelet2 maps for lane-level context
-
Dynamic and static obstacle handling using perception inputs
-
Traffic signal and speed limit awareness
- ONNX Runtime inference for fast neural network execution
- ROS 2 publishers for planned trajectories, predicted objects, and debug markers
Parameters
{{ json_to_markdown(“planning/autoware_diffusion_planner/schema/diffusion_planner.schema.json”) }}
Parameters can be set via YAML (see config/diffusion_planner.param.yaml
).
Inputs
Topic | Message Type | Description |
---|---|---|
~/input/odometry |
nav_msgs/msg/Odometry | Ego vehicle odometry |
~/input/acceleration |
geometry_msgs/msg/AccelWithCovarianceStamped | Ego acceleration |
~/input/tracked_objects |
autoware_perception_msgs/msg/TrackedObjects | Detected dynamic objects |
~/input/traffic_signals |
autoware_perception_msgs/msg/TrafficLightGroupArray | Traffic light states |
~/input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | Lanelet2 map |
~/input/route |
autoware_planning_msgs/msg/LaneletRoute | Route information |
Outputs
Topic | Message Type | Description |
---|---|---|
~/output/trajectory |
autoware_planning_msgs/msg/Trajectory | Planned trajectory for the ego vehicle |
~/output/trajectories |
autoware_internal_planning_msgs/msg/CandidateTrajectories | Multiple candidate trajectories |
~/output/predicted_objects |
autoware_perception_msgs/msg/PredictedObjects | Predicted future states of dynamic objects |
~/debug/lane_marker |
visualization_msgs/msg/MarkerArray | Lane debug markers |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | Route debug markers |
Testing
Unit tests are provided and can be run with:
colcon test --packages-select autoware_diffusion_planner
colcon test-result --all
❗ Limitations
While the Diffusion Planner shows promising capabilities, there are several limitations to be aware of:
-
Route Termination: The route input to the model consists of a sequence of preferred lanelets from the current position to the goal region. However, this route does not necessarily end exactly at the goal position. As a result, the ego vehicle may continue driving past the goal instead of stopping at the target location.
-
Training Dataset Domain Gap: The provided diffusion model checkpoint was trained on datasets using a proprietary Lanelet2 map that is not publicly available. Consequently, performance may significantly degrade when running on other maps, especially in environments with different topology or tagging conventions.
-
Route Adherence & Lane Changing: The model sometimes fails to strictly follow the preferred lanelet route. If the ego vehicle leaves the preferred lane (e.g., to avoid an obstacle), it tends to only return to the route during curves. It seldom performs deliberate lane changes to merge back into the correct route on straight segments.
-
Agent and Obstacle Avoidance: Although the planner reacts to other agents and can perform avoidance maneuvers, this behavior is not fully reliable. In some cases, collisions with static or dynamic obstacles may still occur due to ignored agents or insufficient context comprehension.
File truncated at 100 lines see the full file
Changelog for package autoware_diffusion_planner
0.47.0 (2025-08-11)
-
refactor(diffusion_planner): remove unused code (#11137) Removed unused code
-
feat: update diffusion planner inputs/outputs (#11093)
- Updated
- Fixed ego_shape
- Removed unnecessary returns
- Fixed for cpplint
- Applied the formatter
- Removed test for traffic light state
- Fixed lane_segments_test
- Moved AddTrafficLightOneHotEncodingToSegmentNoTrafficLight from [lane_segments_test.cpp]{.title-ref} to [lanelet_integration_test.cpp]{.title-ref}
- Added [#include <map>]{.title-ref}
- Added EGO_AGENT_PAST_IDX_X
- Fix
- Fix
- Fixed remap params
* Fixed nits ---------
-
style(pre-commit): update to clang-format-20 (#11088) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
docs(autoware_diffusion_planner): remove obsolete information (#11061)
- docs(autoware_diffusion_planner): remove obsolete information
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
fix(diffusion_planner): modify unread parameters (#11025)
- fix(diffusion_planner): modify unread parameters
* fix(diffusion_planner): remove unused artifact_dir argument ---------
-
feat(autoware_diffusion_planner): add diffusion-based trajectory planner (#10957)
- feat(autoware_diffusion_planner): add diffusion-based trajectory planner
- fix: dead links in README.md
- fix: fix by pre-commit
- fix: modify spell for cspell
- refactor: reorganize CMakeLists.txt for better structure and clarity
- fix: modify for pre-commit ci
- fix: update for cppcheck
- fix: update for pre-commit
- cosmetic change
- rename test dir
- fix: modify for pre-commit
- change output topic name
- add maintainer
- remove unnecessary section in readme
- fixed no install in cmake
- fix wrong syntax in launch
- refactor: consolidate geometry conversion functions into a template
- fix: remove redundant return statement and improve string formatting in to_string methods
- cosmetic change
- fix: remove example configuration section from README
- fix: remove outdated link to Autoware Universe from README
- fix: remove unused parameters from launch files and restore default build_only value
- fix: update input and output sections in README for clarity and consistency
- fix: update diffusion planner parameters and remove unused launch file
- fix: add JSON schema for diffusion planner parameters and update README
* fix: update JSON schema path for diffusion planner parameters in README ---------
-
Contributors: Mete Fatih Cırıt, SakodaShintaro, Shintaro Tomie, Yukihiro Saito
Package Dependencies
System Dependencies
Name |
---|
nlohmann-json-dev |
Dependant Packages
Launch files
- launch/diffusion_planner.launch.xml
-
- diffusion_planner_param_path [default: $(find-pkg-share autoware_diffusion_planner)/config/diffusion_planner.param.yaml]
- output_trajectory [default: /planning/diffusion_planner/trajectory]
- output_trajectories [default: /planning/generator/diffusion_planner/candidate_trajectories]
- output_predicted_objects [default: ~/diffusion_planner/predicted_objects]
- input_odometry [default: /localization/kinematic_state]
- input_acceleration [default: /localization/acceleration]
- input_route [default: /planning/mission_planning/route]
- input_traffic_signals [default: /perception/traffic_light_recognition/traffic_signals]
- input_tracked_objects [default: /perception/object_recognition/tracking/objects]
- input_vector_map [default: /map/vector_map]