Skip to content

Migrate tier4_xxx_launcher from autoware_universe into autoware_launch #6774

@paulsohn

Description

@paulsohn

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I've agreed with the maintainers that I can plan this task.

Description

I created a PR first before filing an issue.

The goal is simple: blindly move all tier4_xxx_launchers from autoware_universe launch/ into autoware_launch repository tier4_universe_launch/ directory.

This is motivated from #6721 (comment) , to centralize all launch files into one place. While autoware_launch_v2 and autoware system designer take some time to apply, I would like to suggest what we can and should do right now.

⚠️ non-goals for this task

  • ❌ Refactor any content of the launch files or packages, including renaming. (The only changes will be the package location.)
  • ❌ Make tier4_xxx_launch packages private or remove them. (tier4_xxx_launch will be still available, but in autoware_launch repo.)
  • ❌ Migrate all tier4-prefixed packages such as tier4_dummy_object_rviz_plugin (only tier4_xxx_launch with launch/ will be affected)
  • ❌ Apply all suggestions from @xmfcx in New launch package: autoware_launch_v2 #6721 (comment) , for example...
    • ❌ Migrate every launch files from autoware_universe to autoware_launch. (Thin wrapper launchers will not be migrated.)
    • ❌ Put all migrated launch files into autoware_launch package. (They will be in autoware_launch repository, but in different packages.)

I am not saying that these non-goals shouldn't be considered; it just can be done AFTER the migration.

TIER IV internal docs

Purpose

As a TIER IV engineer and an unintentional Autoware enthusiast, I recently faced a very frustrating issue that autowarefoundation/autoware_universe#10541 restricted one of the model names that my team wants to use. I suggested a partial revert as in autowarefoundation/autoware_universe#12005 and waiting for review.

Pondering on the fundamental solution of this issue, I concluded that tier4_xxx_launch should not be in autoware_universe, but in autoware_launch because:

  1. From AWF perspective,
  • it obviously depends on TIER IV system topology, business logic and usecase. While TIER IV can provide an example case as a set of launchers, AWF should be as unbiased as possible and allow users an option to customize or dismiss the example, to support all Autoware users not limited to TIER IV.
  • Concerns for nodes (functionality) and launchers (how to use the functionality; system topology, input verification and business logic) are not properly separated for now.
  1. From TIER IV perspective,
  • We are using AWF core and universe, while for autoware_launch we have our own, modified version.
  • Even TIER IV ourselves fail to launch Autoware because of the inflexible TIER IV launcher rules. To circumvent this, we have to fork another autoware_universe to fix only launchers (because of the project visibility scope) and sync with the upstream which takes more cost than using common universe and just maintaining autoware_launch.
  • We need our business logic totally under our control, and the appropriate location is autoware_launch. Once tier4_xxx_launchers are migrated into AWF autoware_launch, we can pull the changes into ours and modify it to meet our own business requirements.

I am confident that migrating tier4 launchers is beneficial for both AWF and TIER IV.

Possible approaches

As we recently done on autowarefoundation/autoware_tools#329 , we can create a PR preserving history. Additionally, we can rewrite the commit message so that (#NN) can be properly replaced as (autowarefoundation/autoware_universe#NN), and merge commit is plausible.

PRs are ready, except for DCO.

In case tier4 launchers get additional updates in the meantime, I've provided a reproducible way to generate the latest migration PR branch from your local.

Since this is a simple and blind migration, we won't have a downtime, and the expected work time is less than an hour (being maximally pessimistic; I actually expect < 10min).
NO PR FREEZE PERIOD other than that is required.
Still, it might be beneficial to announce to everyone for about a week beforehand.

For open PR support, first list all PRs including launch/ changes:

$ gh pr list --repo autowarefoundation/autoware_universe --state open --json number,title,files \
  --jq '[.[] | select(any(.files[]; .path | startswith("launch/")))] | unique_by(.number) | .[] | {number, title}'

Say, the last autoware_universe commit hash that contains tier4_xxx_launch files was a1b2c3 (In the current PR, it is 02cae8) and the first autoware_launch commit hash that contains tier4_xxx_launch files was d4e5f6. We can guide each PR owner to:

  1. sync their PR branch with a1b2c3.
  2. checkout autoware_launch at d4e5f6, cut the launch directory from autoware_universe and paste into autoware_launch.
  3. Create another PR for autoware_launch.

Definition of done

autowarefoundation/autoware_universe#12001 (or an equivalent one) and autowarefoundation/autoware_launch#1740 (or an equivalent one) are both merged without loss of launch file updates in the meantime, and simulator for the new version builds and works as before. All open PRs with tier4_xxx_launcher changes are properly guided or announced to open another PR for autoware_launch.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions