-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Open
Labels
component:controlVehicle control algorithms and mechanisms.Vehicle control algorithms and mechanisms.component:interfacesCommunication protocols, interfaces and messages.Communication protocols, interfaces and messages.component:planningRoute planning, decision-making, and navigation.Route planning, decision-making, and navigation.type:new-featureNew functionalities or additions, feature requests.New functionalities or additions, feature requests.
Description
Description
Current system
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
Planning["⚙️ **Robotics-Based** Planner"] -->
MsgTrajectory(["✉️ /planning/scenario_planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
classDef class_msg fill:#9BE7DF,stroke:#008274;
class MsgRoute,MsgTrajectory class_msg;
Proposed system
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
PlannerRobo["⚙️ **Robotics-Based** Planner"]
MsgRoute --> PlannerAi["🤖 **AI-Based** Planner"]
subgraph Generator["🛠️ **Generator**"]
PlannerRobo -->
MsgCandidateTrajectoryRobo(["✉️ /planning/generator/robotics_based/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**"]) -->
TrajectoryConcat
PlannerAi -->
MsgCandidateTrajectoryAi(["✉️ /planning/generator/ai_based/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**"]) -->
TrajectoryConcat
end
TrajectoryConcat[📎 Trajectory Concatenator] -->
MsgCandidateTrajectories(["✉️ /planning/generator/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**"]) -->
SafetyGate
subgraph Selector["🔍 **Selector**"]
SafetyGate["🛡️ Safety Gate"] -->
TrafficRuleValidation["🚦 Traffic Rule Validation"] -->
Ranking["📊 Ranking"] -->
MsgScoredTrajectores(["✉️ /planning/selector/scored_candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/ScoredCandidateTrajectories**"]) -->
TrajectoryAdapter[🔌 Trajectory Adapter]
end
TrajectoryAdapter -->
MsgTrajectory(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
classDef class_msg fill:#9BE7DF,stroke:#008274;
classDef class_subgraph fill:#fce4ec,stroke:#8a002e;
class MsgRoute,MsgCandidateTrajectoryRobo,MsgCandidateTrajectoryAi,MsgCandidateTrajectories,MsgScoredTrajectores,MsgTrajectory class_msg;
class Generator,Selector class_subgraph;
Related discussions:
- Current Issues and Future Directions of Autoware Architecture #5032
- The difficulty in handling complex scenarios due to the hierarchical architecture of Planning and the modularization of functionalities #5033 (Offered solution)
- https://github.com/tier4/new_planning_framework/wiki
Timeline & Linked PRs
| 🟢 No breaking change | 🔴 Breaking change |
- 🟢 Phase 0 | New messages
- 🟢 Phase 1 | 📅 2025-07-11 | Dual Publishing
- 🔴 Phase 2 | 📅 2025-08-11 | Update Controller Input Topic
- feat: change planning output topic name to /planning/trajectory autoware_launch#1594
- feat: change planning output topic name to /planning/trajectory autoware_core#602
- feat: change planning output topic name to /planning/trajectory autoware_universe#11135
- feat: change planning output topic name to /planning/trajectory tier4/tier4_ad_api_adaptor#169
- feat: change planning output topic name to /planning/trajectory autoware_tools#288
- refactor: change planning output topic name to /planning/trajectory tier4/scenario_simulator_v2#1664
- 🟢 Phase 3 | 📅 2025-08-30 | Add the Generator (Not used)
- 🟢 Phase 4 | 📅 2025-09-30 | Introduce Selector (Not used)
- 🔴 Phase 5 | 📅 2025-10-15 | Enable Generator/Selector as an Option
- 🔴 Phase 6 | 📅 2025-10-30 | Expand the Generator
Phases
🟢 Phase 0 | New messages
- Merge in the new message types to support the new architecture.
🟢 Phase 1 | 📅 2025-07-11 | Dual Publishing
- Relay
/planning/scenario_planning/trajectoryto/planning/trajectory. - Both topics remain available for subscribers.
New diagram
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
PlannerRobo["⚙️ **Robotics-Based** Planner"] -->
MsgTrajectoryScenario(["✉️ /planning/scenario_planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
PlannerRobo --> MsgTrajectory(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"])
classDef class_msg fill:#9BE7DF,stroke:#008274;
classDef class_highlight fill:#78ff78,stroke:#008c00;
class MsgRoute,MsgTrajectoryScenario class_msg;
class MsgTrajectory class_highlight;
🔴 Phase 2 | 📅 2025-08-11 | Update Controller Input Topic
- Update control-related nodes/tools to subscribe only to
/planning/trajectory. - Monitor for any lingering dependencies on the old topic.
New Diagram
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
PlannerRobo["⚙️ **Robotics-Based** Planner"] -->
MsgTrajectoryScenario(["✉️ /planning/scenario_planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"])
PlannerRobo --> MsgTrajectory(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
classDef class_msg fill:#9BE7DF,stroke:#008274;
classDef class_highlight fill:#78ff78,stroke:#008c00;
class MsgRoute,MsgTrajectoryScenario class_msg;
class MsgTrajectory class_highlight;
class MsgRoute,MsgCandidateTrajectoryRobo,MsgCandidateTrajectoryAi,MsgCandidateTrajectories,MsgScoredTrajectores,MsgTrajectory class_msg;
🟢 Phase 3 | 📅 2025-08-30 | Add the Generator (Not used)
- Add Diffusion Planner as an AI based alternative planner
- Incorporate the Generator into Autoware without breaking changes
autoware_launchdoes NOT use the generator.- Generator publishes both
/planning/trajectoryand/planning/candidate_trajectories/ai_basedfor testing purposes.
New Diagram
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
PlannerRobo["⚙️ **Robotics-Based** Planner"] -->
MsgTrajectoryScenario(["✉️ /planning/scenario_planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"])
PlannerRobo --> MsgTrajectory(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
MsgRoute --> PlannerAi
subgraph Generator["🛠️ Generator (❌ Not used)"]
PlannerAi["🌀 Diffusion Planner"]-->
MsgCandidateTrajectoryAi(["✉️ /planning/generator/ai_based/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**<br>❌ Not used"])
end
PlannerAi --> MsgTrajectoryAi(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**<br>❌ Not used"])
classDef class_msg fill:#9BE7DF,stroke:#008274;
classDef class_highlight fill:#78ff78,stroke:#008c00;
classDef class_subgraph fill:#fce4ec,stroke:#8a002e;
class MsgRoute,MsgTrajectoryScenario,MsgTrajectory class_msg;
class PlannerAi,MsgTrajectoryAi,MsgCandidateTrajectoryAi class_highlight;
class Generator class_subgraph;
🟢 Phase 4 | 📅 2025-09-30 | Introduce Selector (Not used)
- Incorporate the Selector into Autoware without breaking changes
autoware_launchdoes NOT use the Selector.- Generator does not publish
/planning/trajectoryanymore. It is published by the Trajectory Adapter from the Selector now.
New Diagram
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
PlannerRobo["⚙️ **Robotics-Based** Planner"] -->
MsgTrajectoryScenario(["✉️ /planning/scenario_planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"])
PlannerRobo --> MsgTrajectory(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
MsgRoute --> PlannerAi
subgraph Generator["🛠️ Generator (❌ Not used)"]
PlannerAi["🌀 Diffusion Planner"] -->
MsgCandidateTrajectoryAi(["✉️ /planning/generator/ai_based/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**<br>❌ Not used"]) -->
TrajectoryConcat
end
TrajectoryConcat[📎 Trajectory Concatenator] -->
MsgCandidateTrajectories(["✉️ /planning/generator/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**"]) -->
SafetyGate
subgraph Selector["🔍 **Selector** (❌ Not used)"]
SafetyGate["🛡️ Safety Gate"] -->
TrafficRuleValidation["🚦 Traffic Rule Validation"] -->
Ranking["📊 Ranking"] -->
MsgScoredTrajectores(["✉️ /planning/selector/scored_candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/ScoredCandidateTrajectories**"]) -->
TrajectoryAdapter[🔌 Trajectory Adapter]
end
TrajectoryAdapter -->
MsgTrajectory2(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**<br>❌ Not used"])
classDef class_msg fill:#9BE7DF,stroke:#008274;
classDef class_highlight fill:#78ff78,stroke:#008c00;
classDef class_subgraph fill:#fce4ec,stroke:#8a002e;
class MsgRoute,MsgTrajectoryScenario,MsgTrajectory,MsgCandidateTrajectoryAi class_msg;
class TrajectoryConcat,MsgCandidateTrajectories,SafetyGate,TrafficRuleValidation,Ranking,MsgScoredTrajectores,TrajectoryAdapter,MsgTrajectoriesAi,MsgTrajectory2 class_highlight;
class Generator,Selector class_subgraph;
🔴 Phase 5 | 📅 2025-10-15 | Enable Generator/Selector as an Option
autoware_launchis modified to use the Genarator and Selector as an alternative to the robotics-based planner.
New Diagram
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
PlannerRobo["⚙️ **Robotics-Based** Planner"] -->
MsgTrajectoryScenario(["✉️ /planning/scenario_planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"])
PlannerRobo --> MsgTrajectory(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
MsgRoute --> PlannerAi
subgraph Generator["🛠️ Generator (🔀 Optional)"]
PlannerAi["🌀 Diffusion Planner"] -->
MsgCandidateTrajectoryAi(["✉️ /planning/generator/andidate_trajectories/ai_based<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**<br>🔀 Optional"]) -->
TrajectoryConcat
end
TrajectoryConcat[📎 Trajectory Concatenator] -->
MsgCandidateTrajectories(["✉️ /planning/generator/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**"]) -->
SafetyGate
subgraph Selector["🔍 **Selector** (🔀 Optional)"]
SafetyGate["🛡️ Safety Gate"] -->
TrafficRuleValidation["🚦 Traffic Rule Validation"] -->
Ranking["📊 Ranking"] -->
MsgScoredTrajectores(["✉️ /planning/selector/scored_candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/ScoredCandidateTrajectories**"]) -->
TrajectoryAdapter[🔌 Trajectory Adapter]
end
TrajectoryAdapter -->
MsgTrajectory2(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**<br>🔀 Optional"])
classDef class_msg fill:#9BE7DF,stroke:#008274;
classDef class_highlight fill:#78ff78,stroke:#008c00;
classDef class_subgraph fill:#fce4ec,stroke:#8a002e;
class MsgRoute,MsgTrajectoryScenario,MsgTrajectory,MsgCandidateTrajectoryAi,MsgCandidateTrajectories,MsgScoredTrajectores,MsgTrajectoriesAi,MsgTrajectory2 class_msg;
class Generator,Selector class_subgraph;
🔴 Phase 6 | 📅 2025-10-30 | Expand the Generator
- The robotics-based planner is incorporated into the Generator.
- The Selector uses the robotics-based planner by default.
- The Diffusion Planner can be enabled as an option within
autoware_launch. /planning/scenario_planning/trajectorytopic is deprecated.
New Diagram
---
config:
theme: 'base'
themeVariables:
lineColor: '#7e7e7eff'
primaryColor: '#fffde7ff'
primaryTextColor: '#000000'
primaryBorderColor: '#b3a400ff'
flowchart:
markdownAutoWrap: false
wrappingWidth: 600
---
graph TD
MissionPlanner[🗺️ Mission Planner] -->
MsgRoute(["✉️ /planning/mission_planning/route<br>🗂️ **autoware_planning_msgs/msg/LaneletRoute**"]) -->
PlannerRobo["⚙️ **Robotics-Based** Planner"]
MsgRoute --> PlannerAi["🤖 **AI-Based** Planner<br>🔀 Optional"]
subgraph Generator["🛠️ **Generator**"]
PlannerRobo -->
MsgCandidateTrajectoryRobo(["✉️ /planning/generator/robotics_based/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**"]) -->
TrajectoryConcat[📎 Trajectory Concatenator]
PlannerAi -->
MsgCandidateTrajectoryAi(["✉️ /planning/generator/ai_based/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**<br>🔀 Optional"]) -->
TrajectoryConcat
end
TrajectoryConcat -->
MsgCandidateTrajectories(["✉️ /planning/generator/candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/CandidateTrajectories**"]) -->
SafetyGate
subgraph Selector["🔍 **Selector**"]
SafetyGate["🛡️ Safety Gate"] -->
TrafficRuleValidation["🚦 Traffic Rule Validation"] -->
Ranking["📊 Ranking"] -->
MsgScoredTrajectores(["✉️ /planning/selector/scored_candidate_trajectories<br>🗂️ **autoware_internal_planning_msgs/ScoredCandidateTrajectories**"]) -->
TrajectoryAdapter[🔌 Trajectory Adapter]
end
TrajectoryAdapter -->
MsgTrajectory(["✉️ /planning/trajectory<br>🗂️ **autoware_planning_msgs/msg/Trajectory**"]) -->
Control["🎮 Control Component"]
classDef class_msg fill:#9BE7DF,stroke:#008274;
classDef class_subgraph fill:#fce4ec,stroke:#8a002e;
class MsgRoute,MsgCandidateTrajectoryRobo,MsgCandidateTrajectoryAi,MsgCandidateTrajectories,MsgScoredTrajectores,MsgTrajectory class_msg;
class Generator,Selector class_subgraph;
Metadata
Metadata
Assignees
Labels
component:controlVehicle control algorithms and mechanisms.Vehicle control algorithms and mechanisms.component:interfacesCommunication protocols, interfaces and messages.Communication protocols, interfaces and messages.component:planningRoute planning, decision-making, and navigation.Route planning, decision-making, and navigation.type:new-featureNew functionalities or additions, feature requests.New functionalities or additions, feature requests.
Type
Projects
Status
In Progress