Skip to content

feat(autoware_sample_designs): compose the AD API, system and vehicle components from design modules - #1976

Open
technolojin wants to merge 17 commits into
autowarefoundation:mainfrom
technolojin:feat/node-designs-complete
Open

feat(autoware_sample_designs): compose the AD API, system and vehicle components from design modules#1976
technolojin wants to merge 17 commits into
autowarefoundation:mainfrom
technolojin:feat/node-designs-complete

Conversation

@technolojin

@technolojin technolojin commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Description

Completes the AutowareSample reference system so every component is composed from design modules, and carries the launch side of the node design audit in autowarefoundation/autoware_universe#13298.

1. AD API split into adapi and api

The AD API is now composed from two modules instead of one wrapper:

  • AdapiNodes.module — the default AD API implementation, one composable node per API domain (interface, localization, routing, autoware_state, diagnostics, fail_safe, heartbeat, …). It instantiates as the adapi component.
  • AdapiHelpers.module — the RViz adaptors that turn poses and goals into API requests, plus the external RTC cooperate API. It instantiates as the api component and brings a new AdapiRtcController.node design.

The two names are not interchangeable. /adapi/node/* is a public name: the diagnostic graph configs and the planning_factor RViz plugin hard-code it, so the node component keeps adapi while the helper component takes api.

The AD API components also needed path: / handling — without it the 41 /api/* names exported as /adapi/api/*, which left the engage path dead in planning simulation. They are bound through system-level remaps in AutowareSample.system.yaml.

2. System component composed from design modules

New System.module (diagnostic graph, component state, MRM handling and host monitors, 12 instances) with SystemMonitor.module and ComponentStateMonitor.module underneath, plus two base:/remove: variants:

  • System_sim.module — no host resource monitors.
  • System_psim.module — no host resource monitors, reduced component state monitor (ComponentStateMonitor_psim.module drops the pointcloud map, NDT pose, obstacle pointcloud and traffic signal topic monitors).

Tier4SystemWrapper.node and the universe_system.parameter_set back it.

3. Vehicle component composed from design modules

New SampleVehicle.module in sample_vehicle_launch, composing SampleVehicleInterface.node with RawVehicleCmdConverter.node, replacing the SampleSystemVehicleWrapper launch wrapper.

4. Planning and control module connections

The inputs that the node design audit exposed as having no source are wired: the planning factor publishers and their eleven connections into ControlEvaluator, steering_status on the planning modules, the internal velocity limit path into the selector, the operation mode state, and the hazard lights selector input rename that follows autowarefoundation/autoware_universe#13342.

5. Service ports declared as clients

PerceptionE2ESimulation.module and PointcloudMapFilter.module declared service_pointcloud_map_diff as a subscriber; it is a service client. Correcting the port kind also fixed an E2E failure where the object_lanelet_filter could not load into pointcloud_container.

Related links

Parent Issue:

Related:

The per-component node design PRs this branch is the launch counterpart of — the reference system below was built and run against all of them together:

Dependencies

This PR cannot build on its own — the modules here instantiate node designs that live in other repositories. It needs, in autoware_core:

  • fix(design): align the autoware_core node designs with the packages they describe autoware_core#1416GnssPoser gains the map_projector_info subscriber that SampleSensorKitGnss.module connects, and BehaviorVelocityPlanner gains the nine /planning/planning_factors/* publishers that BehaviorPlanning.module connects. Without it those two connections name ports that do not exist.
  • Two further autoware_core changes that are not yet in a PR: the five AD API node designs in autoware_default_adapi / autoware_adapi_adaptors that AdapiNodes.module and AdapiHelpers.module instantiate, and the MotionVelocityPlanner planning factor publishers that MotionPlanning.module connects.

and in autoware_universe, the per-component PRs listed under Related links — in particular:

How was this PR tested?

This branch is the launch side the node design changes were tested with, against a workspace carrying every dependency listed above: all ten autoware_universe component PRs, autowarefoundation/autoware_core#1416, and the two autoware_core changes that still need a PR.

  • colcon build --packages-select autoware_sample_designs succeeds with zero warnings, and exports all four modes of the AutowareSample system: Runtime (27 launch files, 232 node entries), LoggingSimulation (27 / 216), PlanningSimulation (26 / 157) and E2ESimulation (25 / 202) — 107 generated launchers in total.
  • The AutowareSample AD API wiring was confirmed live: 21 nodes plus the RTC controller, with every declared connection present.
  • Planning simulation reaches autonomous mode; the engage path was verified live after the /api/* remaps went in.
  • pre-commit run --files on every changed file passes (prettier, yamllint, sort/prettier package.xml).

Notes for reviewers

This is design metadata and launch composition only; no node source is touched.

The branch is stacked on #1972 — its first eight commits are that PR's content, rebased. Review this one as the superset, or #1972 first if you prefer the smaller step.

One known follow-up: ControlChecker.module drops the api_operation_mode_statecollision_detector.operation_mode_state link, which was a main-break fix from when the node design pinned that port with global:. Now that autowarefoundation/autoware_universe#13312 has made it a remap_target, the link can be restored; the node currently falls back to its default and still listens on /api/operation_mode/state, so behavior is unchanged either way.

Interface changes

None at the node level. The api / adapi component split changes which component a node is instantiated under, and the /api/* names are held in place by system-level remaps.

Effects on system behavior

None intended. All four AutowareSample modes deploy, and planning simulation reaches autonomous mode.

technolojin and others added 17 commits September 7, 2026 13:41
… limit inputs

Wires collision_detector's operation_mode_state and
remaining_distance_time_calculator's planning_velocity through the
module designs; their node designs now declare the fixed topic names
as remap targets.

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Forwards motion_velocity_planner's velocity_limit and clear_velocity_limit
up to ScenarioPlanning and feeds them into external_velocity_limit_selector,
whose internal inputs were unconnected.

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
…sources

Wires the operation mode transition manager's gate and selector inputs,
the stop mode operator's vehicle status, the manual lane change handler's
route availability and preferred primitive service, the parking costmap,
and the route marker. Exposes the vehicle control mode service, the
preferred lane service and the system hazard lights command as component
interfaces.

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
…ules

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
…rious modules

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
…ules

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
- Updated AdapiRvizHelpers.module.yaml to include helper prefixes for instances and connections.
- Modified AutowareSample.system.yaml to reorganize ADAPI components, introducing default_adapi for better structure.
- Expanded planning factors in Planning.module.yaml, LaneDriving.module.yaml, ScenarioPlanning.module.yaml, and associated modules to include additional factors for improved behavior and motion planning.
- Enhanced connections in behavior planning and motion planning modules to accommodate new planning factors.
- Ensured consistency across scenario planning modules by aligning publisher and subscriber connections for new planning factors.

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
…lobally by the node design

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
…functionality

Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
@github-actions github-actions Bot added component:system System design and integration. (auto-assigned) component:simulation Virtual environment setups and simulations. (auto-assigned) component:planning Route planning, decision-making, and navigation. (auto-assigned) labels Sep 7, 2026
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

Thank you for contributing to the Autoware project!

🚧 If your pull request is in progress, switch it to draft mode.

Please ensure:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component:planning Route planning, decision-making, and navigation. (auto-assigned) component:simulation Virtual environment setups and simulations. (auto-assigned) component:system System design and integration. (auto-assigned) run:build-and-test-differential

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant