├── .fdignore ├── .rgignore ├── ansible ├── COLCON_IGNORE ├── .gitignore ├── roles │ ├── cuda │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── ros2 │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── agnocast │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ └── README.md │ ├── artifacts │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ └── README.md │ ├── dev_tools │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── gdown │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── pacmod │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── spconv │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── telegraf │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── files │ │ │ ├── load-data.png │ │ │ ├── create-org.png │ │ │ ├── generate-api-token.png │ │ │ ├── get_telegraf_procmem_json.sh │ │ │ ├── get_telegraf_proccpu_json.sh │ │ │ └── telegraf.conf │ │ ├── handlers │ │ │ └── main.yaml │ │ └── README.md │ ├── build_tools │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── docker_engine │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── geographiclib │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── kisak_mesa │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── meta │ │ │ └── main.yaml │ │ ├── tasks │ │ │ └── main.yaml │ │ └── README.md │ ├── qt5ct_setup │ │ ├── meta │ │ │ └── main.yml │ │ ├── defaults │ │ │ └── main.yml │ │ ├── files │ │ │ ├── autoware-rviz-icons │ │ │ │ ├── primary │ │ │ │ │ ├── minus.svg │ │ │ │ │ ├── branch-open.svg │ │ │ │ │ ├── branch-closed.svg │ │ │ │ │ ├── add.svg │ │ │ │ │ ├── splitter-horizontal.svg │ │ │ │ │ ├── splitter-vertical.svg │ │ │ │ │ ├── close.svg │ │ │ │ │ ├── checkbox_unchecked_enabled.svg │ │ │ │ │ ├── checkbox_unchecked_hovered.svg │ │ │ │ │ ├── checkbox_unchecked_pressed.svg │ │ │ │ │ ├── checkbox_indeterminate_enabled.svg │ │ │ │ │ ├── checkbox_indeterminate_hovered.svg │ │ │ │ │ ├── checkbox_indeterminate_pressed.svg │ │ │ │ │ ├── checkbox_unchecked_disabled.svg │ │ │ │ │ ├── checkbox_indeterminate_disabled.svg │ │ │ │ │ ├── checkbox_checked_disabled.svg │ │ │ │ │ ├── checkbox_checked_enabled.svg │ │ │ │ │ ├── checkbox_checked_hovered.svg │ │ │ │ │ ├── checkbox_checked_pressed.svg │ │ │ │ │ ├── more.svg │ │ │ │ │ ├── uparrow.svg │ │ │ │ │ ├── downarrow.svg │ │ │ │ │ ├── leftarrow.svg │ │ │ │ │ ├── rightarrow.svg │ │ │ │ │ ├── tab_close.svg │ │ │ │ │ ├── branch-end.svg │ │ │ │ │ ├── branch-more.svg │ │ │ │ │ ├── slider.svg │ │ │ │ │ ├── radiobutton_unchecked.svg │ │ │ │ │ ├── radiobutton_unchecked_invert.svg │ │ │ │ │ ├── radiobutton_checked.svg │ │ │ │ │ ├── radiobutton_checked_invert.svg │ │ │ │ │ ├── sizegrip.svg │ │ │ │ │ ├── float.svg │ │ │ │ │ ├── toolbar-handle-horizontal.svg │ │ │ │ │ └── toolbar-handle-vertical.svg │ │ │ │ ├── active │ │ │ │ │ ├── uparrow.svg │ │ │ │ │ └── downarrow.svg │ │ │ │ └── disabled │ │ │ │ │ ├── uparrow.svg │ │ │ │ │ ├── downarrow.svg │ │ │ │ │ ├── leftarrow.svg │ │ │ │ │ ├── rightarrow.svg │ │ │ │ │ ├── vline.svg │ │ │ │ │ ├── branch-end.svg │ │ │ │ │ ├── branch-more.svg │ │ │ │ │ ├── radiobutton_unchecked.svg │ │ │ │ │ └── radiobutton_checked.svg │ │ │ └── qt5ct.conf │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yml │ ├── ros2_dev_tools │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── tasks │ │ │ └── main.yaml │ │ └── README.md │ ├── tensorrt │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── rmw_implementation │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ └── nvidia_container_toolkit │ │ ├── meta │ │ └── main.yaml │ │ ├── defaults │ │ └── main.yaml │ │ └── tasks │ │ └── main.yaml ├── playbooks │ ├── install_rviz_theme.yaml │ ├── telegraf.yaml │ ├── download_artifacts.yaml │ ├── install_spconv.yaml │ ├── role_rmw_implementation.yaml │ ├── rosdep.yaml │ ├── docker.yaml │ └── openadkit.yaml ├── galaxy.yml └── README.md ├── .shellcheckrc ├── simulator-nightly.repos ├── arm64.env ├── .github ├── pull_request_template.md ├── workflows │ ├── mirror-main-branch.yaml │ ├── setup-docker.yaml │ ├── dco.yaml │ ├── semantic-pull-request.yaml │ ├── cancel-previous-workflows.yaml │ ├── setup-universe.yaml │ ├── pre-commit-ansible.yaml │ ├── pre-commit-optional.yaml │ ├── pre-commit.yaml │ ├── spell-check-differential.yaml │ ├── bump-repo-versions-tools.yaml │ ├── spell-check-daily.yaml │ ├── backport.yaml │ ├── bump-repo-versions-simulator.yaml │ ├── bump-repo-versions-autoware.yaml │ ├── sync-files.yaml │ ├── pre-commit-ansible-autoupdate.yaml │ ├── pre-commit-autoupdate.yaml │ ├── pre-commit-optional-autoupdate.yaml │ ├── comment-on-pr.yaml │ ├── autoware-base.yaml │ ├── github-release.yaml │ ├── update-tool-versions.yaml │ └── load-env.yaml ├── CODEOWNERS ├── dependabot.yaml ├── DISCUSSION_TEMPLATE │ └── general.yaml ├── stale.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── simple-issue.yaml │ ├── task.yaml │ └── bug.yaml ├── actions │ ├── free-disk-space │ │ └── action.yaml │ └── docker-build-and-push-base │ │ └── action.yaml └── sync-files.yaml ├── ansible-galaxy-requirements.yaml ├── CONTRIBUTING.md ├── simulator.repos ├── .pre-commit-config-ansible.yaml ├── .prettierignore ├── docker ├── docker-compose.gpu.yaml ├── scripts │ ├── cleanup_apt.sh │ ├── resolve_rosdep_keys.sh │ ├── build_and_clean.sh │ └── cleanup_system.sh ├── tools │ ├── README.md │ ├── visualizer │ │ ├── xstartup │ │ ├── README.md │ │ └── Dockerfile │ ├── docker-bake.hcl │ └── scenario-simulator │ │ ├── Dockerfile │ │ └── entrypoint.sh ├── logging-simulation.gpu.env ├── docker-bake-base.hcl ├── etc │ ├── ros_entrypoint.sh │ └── .bash_aliases ├── docker-bake-cuda.hcl ├── planning-simulation.env ├── logging-simulation.env └── Dockerfile.base ├── NOTICE ├── .ansible-lint ├── extra-packages.repos ├── .gitignore ├── .markdown-link-check.json ├── .hadolint.yaml ├── tools.repos ├── tools-nightly.repos ├── .dockerignore ├── .webauto-ci └── main │ ├── environment-setup │ └── run.sh │ ├── autoware-setup │ └── run.sh │ └── autoware-build │ └── run.sh ├── .devcontainer ├── Dockerfile ├── core-devel │ └── devcontainer.json ├── universe-devel │ └── devcontainer.json └── universe-devel-cuda │ └── devcontainer.json ├── .markdownlint.yaml ├── amd64.env ├── .clang-tidy-ci ├── amd64_jazzy.env ├── .prettierrc.yaml ├── .pre-commit-config-optional.yaml ├── setup.cfg ├── .yamllint.yaml ├── CPPLINT.cfg ├── .clang-format └── autoware-nightly.repos /.fdignore: -------------------------------------------------------------------------------- 1 | !/src/ 2 | -------------------------------------------------------------------------------- /.rgignore: -------------------------------------------------------------------------------- 1 | !/src/ 2 | -------------------------------------------------------------------------------- /ansible/COLCON_IGNORE: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | -------------------------------------------------------------------------------- /ansible/roles/cuda/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/ros2/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/agnocast/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/artifacts/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/dev_tools/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/gdown/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/gdown/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/pacmod/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/spconv/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.shellcheckrc: -------------------------------------------------------------------------------- 1 | external-sources=true 2 | -------------------------------------------------------------------------------- /ansible/roles/artifacts/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/build_tools/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/dev_tools/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/docker_engine/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/geographiclib/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/kisak_mesa/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/kisak_mesa/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/pacmod/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/meta/main.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/ros2_dev_tools/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/spconv/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/tensorrt/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /simulator-nightly.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | -------------------------------------------------------------------------------- /ansible/roles/build_tools/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/docker_engine/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/geographiclib/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/rmw_implementation/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/ros2_dev_tools/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/nvidia_container_toolkit/meta/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/nvidia_container_toolkit/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible/roles/cuda/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | cuda_install_drivers: true 2 | -------------------------------------------------------------------------------- /ansible/roles/ros2/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | ros2_installation_type: desktop 2 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/defaults/main.yml: -------------------------------------------------------------------------------- 1 | # defaults file for qt5ct_setup 2 | -------------------------------------------------------------------------------- /arm64.env: -------------------------------------------------------------------------------- 1 | # Override amd64's settings 2 | tensorrt_version=10.3.0.26-1+cuda12.5 3 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | ## How was this PR tested? 4 | -------------------------------------------------------------------------------- /ansible-galaxy-requirements.yaml: -------------------------------------------------------------------------------- 1 | collections: 2 | - source: ./ansible 3 | type: dir 4 | -------------------------------------------------------------------------------- /ansible/roles/tensorrt/meta/main.yaml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - role: autoware.dev_env.cuda 3 | -------------------------------------------------------------------------------- /ansible/roles/rmw_implementation/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | rmw_implementation__rosdistro: null 2 | rmw_implementation__name: null 3 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | See . 4 | -------------------------------------------------------------------------------- /ansible/playbooks/install_rviz_theme.yaml: -------------------------------------------------------------------------------- 1 | - name: Install RViz theme 2 | hosts: localhost 3 | roles: 4 | - autoware.dev_env.qt5ct_setup 5 | -------------------------------------------------------------------------------- /ansible/playbooks/telegraf.yaml: -------------------------------------------------------------------------------- 1 | - name: Set up Telegraf and InfluxDB v2 2 | hosts: localhost 3 | roles: 4 | - autoware.dev_env.telegraf 5 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/files/load-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/autowarefoundation/autoware/HEAD/ansible/roles/telegraf/files/load-data.png -------------------------------------------------------------------------------- /ansible/roles/telegraf/files/create-org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/autowarefoundation/autoware/HEAD/ansible/roles/telegraf/files/create-org.png -------------------------------------------------------------------------------- /ansible/roles/telegraf/handlers/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Restart telegraf 2 | ansible.builtin.systemd: 3 | name: telegraf 4 | state: restarted 5 | -------------------------------------------------------------------------------- /ansible/playbooks/download_artifacts.yaml: -------------------------------------------------------------------------------- 1 | - name: Download Autoware artifacts 2 | hosts: localhost 3 | roles: 4 | - autoware.dev_env.artifacts 5 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/files/generate-api-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/autowarefoundation/autoware/HEAD/ansible/roles/telegraf/files/generate-api-token.png -------------------------------------------------------------------------------- /ansible/playbooks/install_spconv.yaml: -------------------------------------------------------------------------------- 1 | - name: Download and install the cumm and spconv packages 2 | hosts: localhost 3 | roles: 4 | - autoware.dev_env.spconv 5 | -------------------------------------------------------------------------------- /simulator.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | simulator/scenario_simulator: 3 | type: git 4 | url: https://github.com/tier4/scenario_simulator_v2.git 5 | version: 18.2.1 6 | -------------------------------------------------------------------------------- /ansible/roles/agnocast/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | agnocast_version: 2.1.2 2 | agnocast_heaphook_package: agnocast-heaphook-v{{ agnocast_version }} 3 | agnocast_kmod_package: agnocast-kmod-v{{ agnocast_version }} 4 | -------------------------------------------------------------------------------- /.pre-commit-config-ansible.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/ansible/ansible-lint.git 3 | rev: v25.8.2 4 | hooks: 5 | - id: ansible-lint 6 | additional_dependencies: 7 | - ansible 8 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | *.param.yaml 6 | *.rviz 7 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docker/docker-compose.gpu.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | sensing-perception: 3 | deploy: 4 | resources: 5 | reservations: 6 | devices: 7 | - driver: nvidia 8 | count: all 9 | capabilities: [gpu] 10 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | autowarefoundation/autoware 2 | Copyright 2021 The Autoware Foundation 3 | 4 | This product includes software developed at 5 | The Autoware Foundation (https://www.autoware.org/). 6 | 7 | This product includes code developed by TIER IV. 8 | Copyright 2021 TIER IV, Inc. 9 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.ansible-lint: -------------------------------------------------------------------------------- 1 | exclude_paths: 2 | - src/ 3 | - build/ 4 | - install/ 5 | - log/ 6 | 7 | skip_list: 8 | - galaxy # We don't publish to Ansible Galaxy. 9 | - package-latest # Since this is a development environment, we allow the latest versions. 10 | 11 | warn_list: [] 12 | -------------------------------------------------------------------------------- /ansible/roles/geographiclib/README.md: -------------------------------------------------------------------------------- 1 | # geographiclib 2 | 3 | ## Inputs 4 | 5 | None. 6 | 7 | ## Manual Installation 8 | 9 | ```bash 10 | sudo apt install geographiclib-tools 11 | 12 | # Add EGM2008 geoid grid to geographiclib 13 | sudo geographiclib-get-geoids egm2008-1 14 | ``` 15 | -------------------------------------------------------------------------------- /ansible/roles/gdown/README.md: -------------------------------------------------------------------------------- 1 | # Role: gdown 2 | 3 | This role installs gdown to download files from CMakeLists.txt. 4 | 5 | ## Inputs 6 | 7 | None. 8 | 9 | ## Manual Installation 10 | 11 | ```bash 12 | # Install gdown to download files from CMakeLists.txt 13 | pip3 install gdown 14 | ``` 15 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ansible/playbooks/role_rmw_implementation.yaml: -------------------------------------------------------------------------------- 1 | - name: Install RMW implementation 2 | hosts: localhost 3 | roles: 4 | - role: autoware.dev_env.rmw_implementation 5 | vars: 6 | rmw_implementation__rosdistro: "{{ rosdistro }}" 7 | rmw_implementation__name: "{{ rmw_implementation }}" 8 | -------------------------------------------------------------------------------- /docker/scripts/cleanup_apt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | function cleanup_apt() { 5 | local apt_clean=$1 6 | apt-get autoremove -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache 7 | if [[ $apt_clean == true ]]; then 8 | apt-get clean 9 | fi 10 | } 11 | 12 | cleanup_apt "$@" 13 | -------------------------------------------------------------------------------- /extra-packages.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | sensor_component/external/tamagawa_imu_driver: 3 | type: git 4 | url: https://github.com/tier4/tamagawa_imu_driver.git 5 | version: ros2 6 | vehicle/external/pacmod_interface: 7 | type: git 8 | url: https://github.com/tier4/pacmod_interface.git 9 | version: main 10 | -------------------------------------------------------------------------------- /.github/workflows/mirror-main-branch.yaml: -------------------------------------------------------------------------------- 1 | name: mirror-main-branch 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | workflow_dispatch: 8 | 9 | jobs: 10 | mirror-main-branch: 11 | runs-on: ubuntu-22.04 12 | steps: 13 | - uses: zofrex/mirror-branch@v1 14 | with: 15 | target-branch: humble 16 | -------------------------------------------------------------------------------- /ansible/roles/build_tools/README.md: -------------------------------------------------------------------------------- 1 | # Build Tools 2 | 3 | This role installs build tools for building Autoware. 4 | 5 | ## Tools 6 | 7 | - ccache 8 | 9 | ## Inputs 10 | 11 | ## Manual Installation 12 | 13 | ```bash 14 | # Update package lists 15 | sudo apt-get update 16 | 17 | # Install ccache 18 | sudo apt-get install -y ccache 19 | ``` 20 | -------------------------------------------------------------------------------- /docker/tools/README.md: -------------------------------------------------------------------------------- 1 | # Autoware Tools 2 | 3 | This directory offers container-based tools for Autoware to make development and deployment easier. 4 | 5 | - [scenario-simulator](./scenario-simulator/README.md): Simulation container for Autoware scenario testing. 6 | - [visualizer](./visualizer/README.md): RViz-based visualization container for Autoware. 7 | -------------------------------------------------------------------------------- /.github/workflows/setup-docker.yaml: -------------------------------------------------------------------------------- 1 | name: setup-docker 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | setup-docker: 8 | runs-on: ubuntu-22.04 9 | steps: 10 | - name: Check out repository 11 | uses: actions/checkout@v4 12 | 13 | - name: Run setup script 14 | run: | 15 | ./setup-dev-env.sh -y -v docker 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Vim 2 | *.swp 3 | *.swo 4 | 5 | # Visual Studio Code 6 | .vscode/ 7 | *.code-workspace 8 | 9 | # colcon 10 | build/ 11 | install/ 12 | log/ 13 | /src/ 14 | 15 | # Python 16 | *.pyc 17 | 18 | # Jetbrains 19 | .idea/ 20 | 21 | # rviz Screen Capture 22 | capture/ 23 | 24 | # CodeChecker 25 | .codechecker/ 26 | 27 | # Node.js 28 | node_modules/ 29 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * ryohsuke.mitsudome@tier4.jp mfc@autoware.org 2 | 3 | .devcontainer/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp 4 | .github/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp isamu.takagi@tier4.jp 5 | ansible/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp isamu.takagi@tier4.jp 6 | docker/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp isamu.takagi@tier4.jp 7 | -------------------------------------------------------------------------------- /docker/logging-simulation.gpu.env: -------------------------------------------------------------------------------- 1 | # Perception settings 2 | SENSING_PERCEPTION_IMAGE=ghcr.io/autowarefoundation/autoware:universe-sensing-perception-cuda 3 | LIDAR_DETECTION_MODEL=centerpoint 4 | 5 | # TODO(mitsudome-r): used pointcloud based occupancy grid once we merge 6 | # https://github.com/autowarefoundation/autoware/pull/6382 7 | # OCCUPANCY_GRID_MAP_METHOD=pointcloud_based 8 | -------------------------------------------------------------------------------- /.markdown-link-check.json: -------------------------------------------------------------------------------- 1 | { 2 | "aliveStatusCodes": [200, 206, 403], 3 | "ignorePatterns": [ 4 | { 5 | "pattern": "^http://localhost" 6 | }, 7 | { 8 | "pattern": "^http://127\\.0\\.0\\.1" 9 | }, 10 | { 11 | "pattern": "^https://github.com/.*/discussions/new" 12 | } 13 | ], 14 | "retryOn429": true, 15 | "retryCount": 10 16 | } 17 | -------------------------------------------------------------------------------- /.hadolint.yaml: -------------------------------------------------------------------------------- 1 | ignored: 2 | - DL3008 # Pin versions in apt get install. Instead of `apt-get install ` use `apt-get install =` 3 | - DL3013 # Pin versions in pip. Instead of `pip install `, use `pip install ==` 4 | - DL3015 # Avoid additional packages by specifying `--no-install-recommends` 5 | - DL3009 # Delete the apt-get lists after installing something 6 | -------------------------------------------------------------------------------- /ansible/roles/geographiclib/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Install geographiclib-tools 2 | become: true 3 | ansible.builtin.apt: 4 | name: geographiclib-tools 5 | state: latest 6 | update_cache: true 7 | 8 | - name: Install egm2008-1 9 | become: true 10 | ansible.builtin.command: 11 | cmd: geographiclib-get-geoids egm2008-1 12 | creates: /usr/share/GeographicLib/geoids/egm2008-1.pgm 13 | -------------------------------------------------------------------------------- /tools.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | tools: 3 | type: git 4 | url: https://github.com/autowarefoundation/autoware_tools.git 5 | version: 0.4.0 6 | # This should be removed after merged PR (https://github.com/PlotJuggler/plotjuggler-ros-plugins/pull/94) 7 | plotjuggler_ros: 8 | type: git 9 | url: https://github.com/PlotJuggler/plotjuggler-ros-plugins.git 10 | version: 2.1.2-humble 11 | -------------------------------------------------------------------------------- /tools-nightly.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | tools: 3 | type: git 4 | url: https://github.com/autowarefoundation/autoware_tools.git 5 | version: main 6 | # This should be removed after merged PR (https://github.com/PlotJuggler/plotjuggler-ros-plugins/pull/94) 7 | plotjuggler_ros: 8 | type: git 9 | url: https://github.com/PlotJuggler/plotjuggler-ros-plugins.git 10 | version: 2.1.2-humble 11 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/files/get_telegraf_procmem_json.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "{" 4 | ps -ax --format "rss command" | 5 | while read -r rss cmd; do 6 | if [[ $rss -lt 30000 ]]; then 7 | continue 8 | fi 9 | cmd="${cmd// /_}" 10 | cmd="${cmd//=/_}" 11 | cmd="${cmd:0:50}" 12 | echo "\"${cmd}\":${rss}," 13 | done 14 | echo '"z":0' 15 | echo "}" 16 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore git and metadata directories 2 | .git 3 | .github 4 | .vscode 5 | 6 | # Ignore all markdown files 7 | *.md 8 | 9 | # Ignore Docker files 10 | docker 11 | !docker/etc 12 | !docker/scripts 13 | !docker/tools 14 | 15 | # Ignore a part of files under src 16 | src/**/.* 17 | src/**/*.asc 18 | src/**/*.gif 19 | src/**/*.md 20 | src/**/*.svg 21 | 22 | # Ignore generated files by colcon 23 | build 24 | install 25 | log 26 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /.webauto-ci/main/environment-setup/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | apt-get update 4 | 5 | apt-get -y install sudo curl wget unzip gnupg lsb-release ccache python3-apt python3-pip apt-utils software-properties-common jq 6 | add-apt-repository universe 7 | 8 | pip install --no-cache-dir 'ansible==6.*' 9 | 10 | user=autoware 11 | useradd -m "$user" -s /bin/bash 12 | echo "$user:$user" | chpasswd 13 | echo "$user ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers 14 | gpasswd -a "$user" sudo 15 | -------------------------------------------------------------------------------- /docker/tools/visualizer/xstartup: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # cspell:ignore openbox, VNC, xstartup, DBUS, Xresources, xrdb 3 | 4 | unset SESSION_MANAGER 5 | unset DBUS_SESSION_BUS_ADDRESS 6 | export DISPLAY=:99 7 | 8 | [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup 9 | [ -r "$HOME/.Xresources" ] && xrdb "$HOME/.Xresources" 10 | 11 | # Start Openbox window manager 12 | echo "Starting Openbox window manager..." 13 | openbox-session & 14 | 15 | # Keep the session alive 16 | sleep infinity 17 | -------------------------------------------------------------------------------- /docker/scripts/resolve_rosdep_keys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | function resolve_rosdep_keys() { 5 | local src_path=$1 6 | local ros_distro=$2 7 | local rosdep_keys_args=$3 8 | 9 | # shellcheck disable=SC2086 10 | rosdep keys $rosdep_keys_args --ignore-src --from-paths "$src_path" | 11 | xargs rosdep resolve --rosdistro "$ros_distro" | 12 | grep -v '^#' | 13 | sed 's/ \+/\n/g' | 14 | sort 15 | } 16 | 17 | resolve_rosdep_keys "$@" 18 | -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | # hadolint global ignore=DL3006 2 | ARG BASE_IMAGE 3 | FROM $BASE_IMAGE 4 | 5 | ENV SHELL /bin/bash 6 | 7 | ARG USERNAME=autoware 8 | ARG USER_UID=1000 9 | ARG USER_GID=$USER_UID 10 | 11 | RUN groupadd --gid $USER_GID $USERNAME \ 12 | && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ 13 | && apt-get update \ 14 | && apt-get install -y sudo \ 15 | && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ 16 | && chmod 0440 /etc/sudoers.d/$USERNAME 17 | -------------------------------------------------------------------------------- /.markdownlint.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | # See https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md for all rules. 6 | default: true 7 | MD013: false 8 | MD024: 9 | siblings_only: true 10 | MD029: 11 | style: ordered 12 | MD033: false 13 | MD041: false 14 | MD045: false 15 | MD046: false 16 | MD049: false 17 | MD059: false 18 | -------------------------------------------------------------------------------- /amd64.env: -------------------------------------------------------------------------------- 1 | # ROS distribution (humble) 2 | rosdistro=humble 3 | rmw_implementation=rmw_cyclonedds_cpp 4 | 5 | # Base image selection for Humble 6 | base_image=ros:humble-ros-base-jammy 7 | autoware_base_image=ghcr.io/autowarefoundation/autoware-base:latest 8 | autoware_base_cuda_image=ghcr.io/autowarefoundation/autoware-base:cuda-latest 9 | 10 | cuda_version=12.4 11 | cudnn_version=8.9.7.29-1+cuda12.2 12 | tensorrt_version=10.8.0.43-1+cuda12.8 13 | pre_commit_clang_format_version=17.0.5 14 | cumm_version=0.5.3 15 | spconv_version=2.3.8 16 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/files/get_telegraf_proccpu_json.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SAMPLING_SEC=5 4 | 5 | echo "{" 6 | pidstat -u -h -l "${SAMPLING_SEC}" 1 | 7 | tail -n +4 | 8 | awk '{ cpu=$8; $1=$2=$3=$4=$5=$6=$7=$8=$9=""; print cpu,$0 }' | 9 | sort -n | 10 | while read -r cpu cmd; do 11 | if [[ ${cpu%%.*} -le 0 ]]; then 12 | continue 13 | fi 14 | cmd="${cmd// /_}" 15 | cmd="${cmd//=/_}" 16 | cmd="${cmd:0:50}" 17 | echo "\"${cmd}\":${cpu}," 18 | done 19 | echo '"z":0' 20 | echo "}" 21 | -------------------------------------------------------------------------------- /docker/docker-bake-base.hcl: -------------------------------------------------------------------------------- 1 | group "default" { 2 | targets = [ 3 | "base", 4 | "base-cuda" 5 | ] 6 | } 7 | 8 | // For docker/metadata-action 9 | target "docker-metadata-action-base" {} 10 | target "docker-metadata-action-base-cuda" {} 11 | 12 | target "base" { 13 | inherits = ["docker-metadata-action-base"] 14 | dockerfile = "docker/Dockerfile.base" 15 | target = "base" 16 | } 17 | 18 | target "base-cuda" { 19 | inherits = ["docker-metadata-action-base-cuda"] 20 | dockerfile = "docker/Dockerfile.base" 21 | target = "base-cuda" 22 | } 23 | -------------------------------------------------------------------------------- /.clang-tidy-ci: -------------------------------------------------------------------------------- 1 | Checks: " 2 | -*, 3 | bugprone-*, 4 | -bugprone-branch-clone, 5 | -bugprone-easily-swappable-parameters, 6 | -bugprone-exception-escape, 7 | -bugprone-implicit-widening-of-multiplication-result, 8 | -bugprone-infinite-loop, 9 | -bugprone-integer-division, 10 | -bugprone-macro-parentheses, 11 | -bugprone-narrowing-conversions, 12 | -bugprone-parent-virtual-call, 13 | -bugprone-reserved-identifier, 14 | -bugprone-signed-char-misuse" 15 | 16 | WarningsAsErrors: "*" 17 | 18 | ExtraArgs: 19 | - -std=c++17 20 | - -Wno-c11-extensions 21 | -------------------------------------------------------------------------------- /amd64_jazzy.env: -------------------------------------------------------------------------------- 1 | # ROS distribution (jazzy) 2 | rosdistro=jazzy 3 | rmw_implementation=rmw_cyclonedds_cpp 4 | 5 | # Jazzy-specific overrides (will be set by build.sh) 6 | base_image=ros:jazzy-ros-base-noble 7 | autoware_base_image=ghcr.io/autowarefoundation/autoware-base:latest-jazzy 8 | autoware_base_cuda_image=ghcr.io/autowarefoundation/autoware-base:jazzy-cuda-latest 9 | 10 | cuda_version=12.4 11 | cudnn_version=8.9.7.29-1+cuda12.2 12 | tensorrt_version=10.8.0.43-1+cuda12.8 13 | pre_commit_clang_format_version=17.0.5 14 | cumm_version=0.5.3 15 | spconv_version=2.3.8 16 | -------------------------------------------------------------------------------- /ansible/roles/gdown/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | # noqa: risky-shell-pipe, no-changed-when 2 | 3 | - name: Install gdown to download files from CMakeLists.txt 4 | ansible.builtin.shell: | 5 | set -o pipefail 6 | pip3 list | grep -q gdown || pip3 install --break-system-packages gdown 7 | args: 8 | executable: /bin/bash 9 | when: rosdistro == 'jazzy' 10 | 11 | - name: Install gdown to download files from CMakeLists.txt (non-jazzy) 12 | ansible.builtin.pip: 13 | name: 14 | - gdown 15 | state: latest 16 | executable: pip3 17 | when: rosdistro != 'jazzy' 18 | -------------------------------------------------------------------------------- /ansible/galaxy.yml: -------------------------------------------------------------------------------- 1 | # Required 2 | namespace: autoware 3 | name: dev_env 4 | version: 0.1.0 5 | readme: README.md 6 | authors: 7 | - Kenji Miyake 8 | 9 | # Optional 10 | description: Set up development environment for Autoware 11 | license: 12 | - Apache-2.0 13 | tags: 14 | - autoware 15 | dependencies: {} 16 | repository: https://github.com/autowarefoundation/autoware 17 | documentation: https://autowarefoundation.github.io/autoware-documentation 18 | homepage: https://www.autoware.org/ 19 | issues: https://github.com/autowarefoundation/autoware/issues 20 | build_ignore: [] 21 | -------------------------------------------------------------------------------- /ansible/playbooks/rosdep.yaml: -------------------------------------------------------------------------------- 1 | - name: Register rosdep package repositories 2 | hosts: localhost 3 | connection: local 4 | pre_tasks: 5 | - name: Verify OS 6 | ansible.builtin.fail: 7 | msg: Only Ubuntu 22.04 and 24.04 are supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. 8 | when: ansible_distribution != 'Ubuntu' or (ansible_distribution_version != '22.04' and ansible_distribution_version != '24.04') 9 | roles: 10 | - role: autoware.dev_env.pacmod 11 | when: rosdistro != 'jazzy' 12 | -------------------------------------------------------------------------------- /.github/dependabot.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | version: 2 6 | updates: 7 | - package-ecosystem: github-actions 8 | directory: / 9 | # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#scheduleinterval 10 | schedule: 11 | interval: monthly 12 | open-pull-requests-limit: 1 13 | labels: 14 | - tag:bot 15 | - type:github-actions 16 | -------------------------------------------------------------------------------- /.github/DISCUSSION_TEMPLATE/general.yaml: -------------------------------------------------------------------------------- 1 | body: 2 | - type: checkboxes 3 | attributes: 4 | label: Code of Conduct 5 | options: 6 | - label: I have read [CODE OF CONDUCT](https://github.com/autowarefoundation/autoware/blob/main/CODE_OF_CONDUCT.md) and [Support Guidelines](https://autowarefoundation.github.io/autoware-documentation/main/support/support-guidelines/#github-discussions) before creating this Discussion post. 7 | required: true 8 | - type: textarea 9 | attributes: 10 | label: Contents 11 | description: Write your contents here 12 | validations: 13 | required: true 14 | -------------------------------------------------------------------------------- /.github/workflows/dco.yaml: -------------------------------------------------------------------------------- 1 | name: DCO 2 | # ref: https://github.com/anchore/syft/pull/2926/files 3 | on: 4 | pull_request: 5 | jobs: 6 | dco: 7 | runs-on: ubuntu-22.04 8 | steps: 9 | - uses: actions/checkout@v4 10 | 11 | - name: Setup Python 3.x 12 | uses: actions/setup-python@v5 13 | with: 14 | python-version: 3.x 15 | 16 | - name: Check DCO 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 19 | run: | 20 | pip3 install -U dco-check 21 | dco-check --verbose --exclude-pattern 'pre-commit-ci\[bot\]@users\.noreply\.github\.com' 22 | -------------------------------------------------------------------------------- /.devcontainer/core-devel/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autoware:core-devel", 3 | "build": { 4 | "dockerfile": "../Dockerfile", 5 | "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:core-devel" } 6 | }, 7 | "remoteUser": "autoware", 8 | "runArgs": [ 9 | "--cap-add=SYS_PTRACE", 10 | "--security-opt", 11 | "seccomp=unconfined", 12 | "--net=host", 13 | "--volume=/etc/localtime:/etc/localtime:ro" 14 | ], 15 | "customizations": { 16 | "vscode": { 17 | "settings.json": { 18 | "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } } 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /.github/workflows/semantic-pull-request.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: semantic-pull-request 6 | 7 | on: 8 | pull_request_target: 9 | types: 10 | - opened 11 | - edited 12 | - synchronize 13 | 14 | concurrency: 15 | group: ${{ github.workflow }}-${{ github.ref }} 16 | cancel-in-progress: true 17 | 18 | jobs: 19 | semantic-pull-request: 20 | uses: autowarefoundation/autoware-github-actions/.github/workflows/semantic-pull-request.yaml@v1 21 | -------------------------------------------------------------------------------- /ansible/roles/kisak_mesa/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Install additional dependencies 2 | become: true 3 | ansible.builtin.apt: 4 | name: software-properties-common 5 | state: present 6 | 7 | - name: Add Kisak Mesa PPA 8 | become: true 9 | ansible.builtin.apt_repository: 10 | repo: ppa:kisak/kisak-mesa 11 | 12 | - name: Install Mesa libraries 13 | become: true 14 | ansible.builtin.apt: 15 | name: 16 | - libegl-mesa0 17 | - libegl1-mesa-dev 18 | - libgbm-dev 19 | - libgbm1 20 | - libgl1-mesa-dev 21 | - libgl1-mesa-dri 22 | - libglapi-mesa 23 | - libglx-mesa0 24 | state: present 25 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | # Modified from https://github.com/probot/stale#usage 6 | 7 | # Number of days of inactivity before an Issue or Pull Request with the stale label is closed 8 | daysUntilClose: false 9 | 10 | # Label to use when marking as stale 11 | staleLabel: status:stale 12 | 13 | # Comment to post when marking as stale 14 | markComment: > 15 | This pull request has been automatically marked as stale because it has not had 16 | recent activity. 17 | -------------------------------------------------------------------------------- /.devcontainer/universe-devel/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autoware:universe-devel", 3 | "build": { 4 | "dockerfile": "../Dockerfile", 5 | "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:universe-devel" } 6 | }, 7 | "remoteUser": "autoware", 8 | "runArgs": [ 9 | "--cap-add=SYS_PTRACE", 10 | "--security-opt", 11 | "seccomp=unconfined", 12 | "--net=host", 13 | "--volume=/etc/localtime:/etc/localtime:ro" 14 | ], 15 | "customizations": { 16 | "vscode": { 17 | "settings.json": { 18 | "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } } 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /docker/tools/docker-bake.hcl: -------------------------------------------------------------------------------- 1 | group "default" { 2 | targets = [ 3 | "visualizer", 4 | "scenario-simulator", 5 | ] 6 | } 7 | 8 | // For docker/metadata-action 9 | target "docker-metadata-action-visualizer" {} 10 | target "docker-metadata-action-scenario-simulator" {} 11 | 12 | target "visualizer" { 13 | inherits = ["docker-metadata-action-visualizer"] 14 | dockerfile = "docker/tools/visualizer/Dockerfile" 15 | target = "visualizer" 16 | } 17 | 18 | target "scenario-simulator" { 19 | inherits = ["docker-metadata-action-scenario-simulator"] 20 | dockerfile = "docker/tools/scenario-simulator/Dockerfile" 21 | target = "scenario-simulator" 22 | } 23 | -------------------------------------------------------------------------------- /.github/workflows/cancel-previous-workflows.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | # Deprecated: Use concurrency in each workflow instead. 6 | 7 | name: cancel-previous-workflows 8 | 9 | on: 10 | pull_request_target: 11 | 12 | jobs: 13 | cancel-previous-workflows: 14 | runs-on: ubuntu-22.04 15 | steps: 16 | - name: Cancel previous runs 17 | uses: styfle/cancel-workflow-action@0.12.1 18 | with: 19 | workflow_id: all 20 | all_but_latest: true 21 | -------------------------------------------------------------------------------- /docker/scripts/build_and_clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | function build_and_clean() { 5 | local ccache_dir=$1 6 | local install_base=$2 7 | local colcon_build_args=$3 8 | 9 | # shellcheck disable=SC2086 10 | du -sh "$ccache_dir" && ccache -s && 11 | colcon build --cmake-args \ 12 | " -Wno-dev" \ 13 | " --no-warn-unused-cli" \ 14 | --merge-install \ 15 | --install-base "$install_base" \ 16 | --mixin release compile-commands ccache \ 17 | $colcon_build_args && 18 | du -sh "$ccache_dir" && ccache -s && 19 | rm -rf /autoware/build /autoware/log 20 | } 21 | 22 | build_and_clean "$@" 23 | -------------------------------------------------------------------------------- /.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | printWidth: 100 6 | tabWidth: 2 7 | overrides: 8 | - files: package.xml 9 | options: 10 | printWidth: 1000 11 | xmlSelfClosingSpace: false 12 | xmlWhitespaceSensitivity: ignore 13 | 14 | - files: "*.launch.xml" 15 | options: 16 | printWidth: 200 17 | xmlSelfClosingSpace: false 18 | xmlWhitespaceSensitivity: ignore 19 | 20 | - files: "*.xacro" 21 | options: 22 | printWidth: 200 23 | xmlSelfClosingSpace: false 24 | xmlWhitespaceSensitivity: ignore 25 | -------------------------------------------------------------------------------- /.github/workflows/setup-universe.yaml: -------------------------------------------------------------------------------- 1 | name: setup-universe 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | setup-universe: 8 | runs-on: ubuntu-22.04 9 | steps: 10 | - name: Check out repository 11 | uses: actions/checkout@v4 12 | 13 | - name: Free disk space 14 | uses: ./.github/actions/free-disk-space 15 | 16 | - name: Show disk space 17 | if: always() 18 | run: | 19 | df -h 20 | 21 | - name: Set git config 22 | uses: autowarefoundation/autoware-github-actions/set-git-config@v1 23 | with: 24 | token: ${{ secrets.GITHUB_TOKEN }} 25 | 26 | - name: Run setup script 27 | run: | 28 | ./setup-dev-env.sh -y -v universe 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | blank_issues_enabled: false 6 | contact_links: 7 | - name: Question 8 | url: https://github.com/autowarefoundation/autoware/discussions/new?category=q-a 9 | about: Ask a question 10 | 11 | - name: Feature request 12 | url: https://github.com/autowarefoundation/autoware/discussions/new?category=feature-requests 13 | about: Send a feature request 14 | 15 | - name: Idea 16 | url: https://github.com/autowarefoundation/autoware/discussions/new?category=ideas 17 | about: Post an idea 18 | -------------------------------------------------------------------------------- /.pre-commit-config-optional.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | # https://pre-commit.ci/#configuration 6 | ci: 7 | autofix_commit_msg: "style(pre-commit-optional): autofix" 8 | # we already have our own daily update mechanism, we set this to quarterly 9 | autoupdate_schedule: quarterly 10 | autoupdate_commit_msg: "ci(pre-commit-optional): quarterly autoupdate" 11 | 12 | repos: 13 | - repo: https://github.com/tcort/markdown-link-check 14 | rev: v3.14.2 15 | hooks: 16 | - id: markdown-link-check 17 | args: [--quiet, --config=.markdown-link-check.json] 18 | -------------------------------------------------------------------------------- /.devcontainer/universe-devel-cuda/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autoware:universe-devel-cuda", 3 | "build": { 4 | "dockerfile": "../Dockerfile", 5 | "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:universe-devel-cuda" } 6 | }, 7 | "remoteUser": "autoware", 8 | "hostRequirements": { 9 | "gpu": true 10 | }, 11 | "runArgs": [ 12 | "--cap-add=SYS_PTRACE", 13 | "--security-opt", 14 | "seccomp=unconfined", 15 | "--net=host", 16 | "--volume=/etc/localtime:/etc/localtime:ro", 17 | "--gpus", 18 | "all" 19 | ], 20 | "customizations": { 21 | "vscode": { 22 | "settings.json": { 23 | "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } } 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | [flake8] 6 | # Modified from https://github.com/ament/ament_lint/blob/ebd524bb9973d5ec1dc48a670ce54f958a5a0243/ament_flake8/ament_flake8/configuration/ament_flake8.ini 7 | extend-ignore = B902,C816,D100,D101,D102,D103,D104,D105,D106,D107,D203,D212,D404,I202,CNL100,E203,E501,Q000 8 | import-order-style = pep8 9 | max-line-length = 100 10 | show-source = true 11 | statistics = true 12 | 13 | [isort] 14 | profile=black 15 | line_length=100 16 | force_sort_within_sections=true 17 | force_single_line=true 18 | reverse_relative=true 19 | known_third_party=launch 20 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/simple-issue.yaml: -------------------------------------------------------------------------------- 1 | name: Simple Issue 2 | description: Create a simple issue 3 | body: 4 | - type: checkboxes 5 | attributes: 6 | label: Checklist 7 | description: Confirm the following items before proceeding. If one cannot be satisfied, create a discussion thread instead. 8 | options: 9 | - label: I've read the [contribution guidelines](https://github.com/autowarefoundation/autoware/blob/main/CONTRIBUTING.md). 10 | required: true 11 | - label: I've searched other issues and no duplicate issues were found. 12 | required: true 13 | 14 | - type: textarea 15 | attributes: 16 | label: Description 17 | description: Write a brief description of the issue. 18 | validations: 19 | required: true 20 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit-ansible.yaml: -------------------------------------------------------------------------------- 1 | name: pre-commit-ansible 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | pre-commit-ansible: 8 | runs-on: ubuntu-22.04 9 | steps: 10 | - name: Check out repository 11 | uses: actions/checkout@v4 12 | 13 | - name: Set git config 14 | uses: autowarefoundation/autoware-github-actions/set-git-config@v1 15 | with: 16 | token: ${{ secrets.GITHUB_TOKEN }} 17 | 18 | - name: Install Ansible Galaxy depends for ansible-lint 19 | run: | 20 | ansible-galaxy collection install -f -r ansible-galaxy-requirements.yaml 21 | 22 | - name: Run pre-commit 23 | uses: autowarefoundation/autoware-github-actions/pre-commit@v1 24 | with: 25 | pre-commit-config: .pre-commit-config-ansible.yaml 26 | -------------------------------------------------------------------------------- /.yamllint.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | extends: default 6 | 7 | ignore: | 8 | *.param.yaml 9 | 10 | rules: 11 | braces: 12 | level: error 13 | max-spaces-inside: 1 # To format with Prettier 14 | comments: 15 | level: error 16 | min-spaces-from-content: 1 # To be compatible with C++ and Python 17 | document-start: 18 | level: error 19 | present: false # Don't need document start markers 20 | line-length: disable # Delegate to Prettier 21 | truthy: 22 | level: error 23 | check-keys: false # To allow 'on' of GitHub Actions 24 | quoted-strings: 25 | level: error 26 | required: only-when-needed # To keep consistent style 27 | -------------------------------------------------------------------------------- /ansible/roles/ros2_dev_tools/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Install apt packages 2 | become: true 3 | ansible.builtin.apt: 4 | name: 5 | - python3-colcon-mixin 6 | - python3-flake8-docstrings 7 | - python3-pip 8 | - python3-pytest-cov 9 | - ros-dev-tools 10 | - python3-flake8-blind-except 11 | - python3-flake8-builtins 12 | - python3-flake8-class-newline 13 | - python3-flake8-comprehensions 14 | - python3-flake8-deprecated 15 | - python3-flake8-import-order 16 | - python3-flake8-quotes 17 | - python3-pytest-repeat 18 | - python3-pytest-rerunfailures 19 | state: latest 20 | update_cache: true 21 | 22 | - name: Run 'sudo rosdep init' 23 | become: true 24 | ansible.builtin.command: 25 | cmd: rosdep init 26 | creates: /etc/ros/rosdep/sources.list.d/20-default.list 27 | -------------------------------------------------------------------------------- /docker/scripts/cleanup_system.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | function cleanup_system() { 5 | local lib_dir=$1 6 | local ros_distro=$2 7 | 8 | find /usr/lib/"$lib_dir"-linux-gnu -name "*.a" -type f -delete && 9 | find / -name "*.o" -type f -delete && 10 | find / -name "*.h" -type f -delete && 11 | find / -name "*.hpp" -type f -delete && 12 | rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ 13 | /root/.local/pipx /opt/ros/"$ros_distro"/include /opt/autoware/include /etc/apt/sources.list.d/cuda*.list \ 14 | /etc/apt/sources.list.d/docker.list /etc/apt/sources.list.d/nvidia-docker.list \ 15 | /usr/include /usr/share/doc /usr/lib/gcc /usr/lib/jvm /usr/lib/llvm* 16 | } 17 | 18 | ./cleanup_apt.sh 19 | cleanup_system "$@" 20 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit-optional.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: pre-commit-optional 6 | 7 | on: 8 | pull_request: 9 | 10 | concurrency: 11 | group: ${{ github.workflow }}-${{ github.ref }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | pre-commit-optional: 16 | runs-on: ubuntu-22.04 17 | steps: 18 | - name: Check out repository 19 | uses: actions/checkout@v4 20 | with: 21 | fetch-depth: 0 22 | 23 | - name: Run pre-commit 24 | uses: autowarefoundation/autoware-github-actions/pre-commit@v1 25 | with: 26 | pre-commit-config: .pre-commit-config-optional.yaml 27 | base-branch: origin/${{ github.base_ref }} 28 | -------------------------------------------------------------------------------- /ansible/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Collection - autoware.dev_env 2 | 3 | This collection contains the playbooks to set up the development environment for Autoware. 4 | 5 | ## Set up a development environment 6 | 7 | ### Ansible installation 8 | 9 | ```bash 10 | # Remove apt installed ansible (In Ubuntu 22.04, ansible the version is old) 11 | sudo apt-get purge ansible 12 | 13 | # Install pipx 14 | sudo apt-get -y update 15 | sudo apt-get -y install pipx 16 | 17 | # Add pipx to the system PATH 18 | python3 -m pipx ensurepath 19 | 20 | # Install ansible 21 | pipx install --include-deps --force "ansible==6.*" 22 | ``` 23 | 24 | ### Install ansible collections 25 | 26 | This step should be repeated when a new playbook is added. 27 | 28 | ```bash 29 | cd ~/autoware # The root directory of the cloned repository 30 | ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" 31 | ``` 32 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yaml: -------------------------------------------------------------------------------- 1 | name: pre-commit 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | pre-commit: 8 | if: ${{ github.event.repository.private }} # Use pre-commit.ci for public repositories 9 | runs-on: ubuntu-22.04 10 | steps: 11 | - name: Generate token 12 | id: generate-token 13 | uses: tibdex/github-app-token@v2 14 | with: 15 | app_id: ${{ secrets.APP_ID }} 16 | private_key: ${{ secrets.PRIVATE_KEY }} 17 | 18 | - name: Check out repository 19 | uses: actions/checkout@v4 20 | with: 21 | ref: ${{ github.event.pull_request.head.ref }} 22 | 23 | - name: Run pre-commit 24 | uses: autowarefoundation/autoware-github-actions/pre-commit@v1 25 | with: 26 | pre-commit-config: .pre-commit-config.yaml 27 | token: ${{ steps.generate-token.outputs.token }} 28 | -------------------------------------------------------------------------------- /ansible/roles/agnocast/README.md: -------------------------------------------------------------------------------- 1 | # agnocast 2 | 3 | This role installs [Agnocast](https://github.com/tier4/agnocast), true zero-copy communication middleware for all ROS 2 message types. 4 | 5 | ## Inputs 6 | 7 | None. 8 | 9 | ## Manual Installation 10 | 11 | ```bash 12 | agnocast_version="2.1.2" 13 | agnocast_heaphook_package="agnocast-heaphook-v${agnocast_version}" 14 | agnocast_kmod_package="agnocast-kmod-v${agnocast_version}" 15 | 16 | sudo add-apt-repository -y ppa:t4-system-software/agnocast 17 | sudo apt update 18 | sudo apt install -y "${agnocast_heaphook_package}" 19 | 20 | if dkms status | grep agnocast | grep -q "{agnocast_version}"; then 21 | echo "agnocast-kmod-v${agnocast_version} is already registered in dkms. Skipping purge and install." 22 | else 23 | sudo apt purge -y "${agnocast_kmod_package}" 24 | sudo apt install -y "${agnocast_kmod_package}" 25 | fi 26 | 27 | ``` 28 | -------------------------------------------------------------------------------- /ansible/roles/spconv/README.md: -------------------------------------------------------------------------------- 1 | # spconv 2 | 3 | This role install the `cumm` and `spconv` libraries needed to perform sparse convolutions. 4 | The [original implementation](https://github.com/traveller59/spconv) did not provide a shared library, which is pre-generated c++ code and pre-compiled libraries were prepared [separatedly](https://github.com/autowarefoundation/spconv_cpp). 5 | 6 | ## Manual Installation 7 | 8 | For manual installation, please follow the instructions in [this](https://github.com/autowarefoundation/spconv_cpp) repository. 9 | 10 | ## Run the playbook 11 | 12 | The following command will install a particular version of the packages using ansible. 13 | 14 | ```bash 15 | export CUMM_VERSION=0.5.3 16 | export SPCONV_VERSION=2.3.8 17 | ansible-playbook autoware.dev_env.install_spconv.yaml -e cumm_version=${CUMM_VERSION} -e spconv_version=${SPCONV_VERSION} --ask-become-pass 18 | ``` 19 | -------------------------------------------------------------------------------- /.github/actions/free-disk-space/action.yaml: -------------------------------------------------------------------------------- 1 | name: free-disk-space 2 | description: "" 3 | 4 | runs: 5 | using: composite 6 | steps: 7 | - name: Install sudo 8 | run: | 9 | if ! (command -v sudo >/dev/null 2>&1); then 10 | apt-get -y update 11 | apt-get -y install sudo 12 | fi 13 | shell: bash 14 | 15 | - name: Free Disk Space (Ubuntu) 16 | uses: jlumbroso/free-disk-space@main 17 | with: 18 | # this might remove tools that are actually needed, 19 | # if set to "true" but frees about 6 GB 20 | tool-cache: true 21 | 22 | # all of these default to true, but feel free to set to 23 | # "false" if necessary for your workflow 24 | android: true 25 | dotnet: true 26 | haskell: true 27 | large-packages: true 28 | docker-images: true 29 | swap-storage: false 30 | -------------------------------------------------------------------------------- /ansible/roles/ros2_dev_tools/README.md: -------------------------------------------------------------------------------- 1 | # ros2_dev_tools 2 | 3 | This role installs ROS 2 development tools following [this page](https://docs.ros.org/en/humble/Installation/Ubuntu-Development-Setup.html). 4 | 5 | ## Inputs 6 | 7 | None. 8 | 9 | ## Manual Installation 10 | 11 | ```bash 12 | # Taken from https://docs.ros.org/en/humble/Installation/Ubuntu-Development-Setup.html 13 | sudo apt update && sudo apt install -y \ 14 | python3-colcon-mixin \ 15 | python3-flake8-docstrings \ 16 | python3-pip \ 17 | python3-pytest-cov \ 18 | ros-dev-tools \ 19 | python3-flake8-blind-except \ 20 | python3-flake8-builtins \ 21 | python3-flake8-class-newline \ 22 | python3-flake8-comprehensions \ 23 | python3-flake8-deprecated \ 24 | python3-flake8-import-order \ 25 | python3-flake8-quotes \ 26 | python3-pytest-repeat \ 27 | python3-pytest-rerunfailures 28 | 29 | # Initialize rosdep 30 | sudo rosdep init 31 | rosdep update 32 | ``` 33 | -------------------------------------------------------------------------------- /.webauto-ci/main/autoware-setup/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | ansible_args=() 4 | ansible_args+=("--extra-vars" "prompt_install_nvidia=y") 5 | ansible_args+=("--extra-vars" "prompt_download_artifacts=y") 6 | ansible_args+=("--extra-vars" "data_dir=$HOME/autoware_data") 7 | ansible_args+=("--extra-vars" "ros2_installation_type=ros-base") 8 | ansible_args+=("--extra-vars" "install_devel=false") 9 | 10 | # read amd64 env file and expand ansible arguments 11 | source 'amd64.env' 12 | while read -r env_name; do 13 | ansible_args+=("--extra-vars" "${env_name}=${!env_name}") 14 | done < <( 15 | grep -v '^\s*#' amd64.env | 16 | grep -v '^\s*$' | 17 | sed 's/#.*//' | # remove trailing comments 18 | sed 's/=.*//' # extract variable name 19 | ) 20 | 21 | ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" 22 | ansible-playbook "ansible/playbooks/universe.yaml" \ 23 | "${ansible_args[@]}" \ 24 | -e WORKSPACE_ROOT="$(pwd)" \ 25 | --skip-tags vcs 26 | -------------------------------------------------------------------------------- /ansible/roles/kisak_mesa/README.md: -------------------------------------------------------------------------------- 1 | # Kisak Mesa Fix for Ubuntu 22.04 for Rviz2 (Not mandatory) 2 | 3 | If you are using Ubuntu 22.04 and Rviz2 (especially inside a container), you may encounter black-screen error on Rviz2: 4 | 5 | This role will install the Kisak Mesa fix for Ubuntu 22.04 for Rviz2. 6 | 7 | ## Inputs 8 | 9 | None 10 | 11 | ## Manual Installation 12 | 13 | ```bash 14 | #!/bin/bash 15 | 16 | # Update the package list and install software-properties-common 17 | sudo apt-get update 18 | sudo apt-get install -y software-properties-common 19 | 20 | # Add the Kisak Mesa PPA 21 | sudo add-apt-repository -y ppa:kisak/kisak-mesa 22 | 23 | # Update the package list after adding the new repository 24 | sudo apt-get update 25 | 26 | # Install Mesa libraries 27 | sudo apt-get install -y \ 28 | libegl-mesa0 \ 29 | libegl1-mesa-dev \ 30 | libgbm-dev \ 31 | libgbm1 \ 32 | libgl1-mesa-dev \ 33 | libgl1-mesa-dri \ 34 | libglapi-mesa \ 35 | libglx-mesa0 36 | ``` 37 | -------------------------------------------------------------------------------- /.github/workflows/spell-check-differential.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: spell-check-differential 6 | 7 | on: 8 | pull_request: 9 | 10 | concurrency: 11 | group: ${{ github.workflow }}-${{ github.ref }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | spell-check-differential: 16 | runs-on: ubuntu-22.04 17 | steps: 18 | - name: Check out repository 19 | uses: actions/checkout@v4 20 | 21 | - name: Run spell-check 22 | uses: autowarefoundation/autoware-github-actions/spell-check@v1 23 | with: 24 | cspell-json-url: https://raw.githubusercontent.com/autowarefoundation/autoware-spell-check-dict/main/.cspell.json 25 | dict-packages: | 26 | https://github.com/autowarefoundation/autoware-spell-check-dict 27 | https://github.com/tier4/cspell-dicts 28 | -------------------------------------------------------------------------------- /.github/workflows/bump-repo-versions-tools.yaml: -------------------------------------------------------------------------------- 1 | name: bump-repo-versions-tools 2 | 3 | on: 4 | schedule: 5 | - cron: 0 0,6,12,18 * * * 6 | workflow_dispatch: 7 | 8 | jobs: 9 | create-version-update-pr: 10 | runs-on: ubuntu-22.04 11 | steps: 12 | - uses: actions/checkout@v4 13 | 14 | - name: Generate GitHub App token 15 | id: generate-token 16 | uses: tibdex/github-app-token@v2 17 | with: 18 | app_id: ${{ secrets.APP_ID }} 19 | private_key: ${{ secrets.PRIVATE_KEY }} 20 | 21 | - name: Create PRs to update VCS repositories for tools.repos 22 | uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 23 | with: 24 | token: ${{ steps.generate-token.outputs.token }} 25 | repo_name: autowarefoundation/autoware 26 | parent_dir: . 27 | targets: major minor patch 28 | base_branch: main 29 | new_branch_prefix: feat/update- 30 | autoware_repos_file_name: tools.repos 31 | verbosity: 0 32 | -------------------------------------------------------------------------------- /.github/workflows/spell-check-daily.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: spell-check-daily 6 | 7 | on: 8 | schedule: 9 | - cron: 0 0 * * * 10 | workflow_dispatch: 11 | 12 | concurrency: 13 | group: ${{ github.workflow }}-${{ github.ref }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | spell-check-daily: 18 | runs-on: ubuntu-22.04 19 | steps: 20 | - name: Check out repository 21 | uses: actions/checkout@v4 22 | 23 | - name: Run spell-check 24 | uses: autowarefoundation/autoware-github-actions/spell-check@v1 25 | with: 26 | incremental-files-only: false 27 | cspell-json-url: https://raw.githubusercontent.com/tier4/autoware-spell-check-dict/main/.cspell.json 28 | dict-packages: | 29 | https://github.com/autowarefoundation/autoware-spell-check-dict 30 | https://github.com/tier4/cspell-dicts 31 | -------------------------------------------------------------------------------- /.github/workflows/backport.yaml: -------------------------------------------------------------------------------- 1 | name: backport 2 | on: 3 | pull_request_target: 4 | types: 5 | - closed 6 | - labeled 7 | 8 | jobs: 9 | backport: 10 | runs-on: ubuntu-22.04 11 | # Only react to merged PRs for security reasons. 12 | # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target. 13 | if: > 14 | github.event.pull_request.merged 15 | && ( 16 | github.event.action == 'closed' 17 | || ( 18 | github.event.action == 'labeled' 19 | && contains(github.event.label.name, 'backport') 20 | ) 21 | ) 22 | steps: 23 | - name: Generate token 24 | id: generate-token 25 | uses: tibdex/github-app-token@v2 26 | with: 27 | app_id: ${{ secrets.APP_ID }} 28 | private_key: ${{ secrets.PRIVATE_KEY }} 29 | 30 | - uses: tibdex/backport@v2 31 | with: 32 | github_token: ${{ steps.generate-token.outputs.token }} 33 | title_template: "<%= title %> (backport #<%= number %>)" 34 | -------------------------------------------------------------------------------- /.github/workflows/bump-repo-versions-simulator.yaml: -------------------------------------------------------------------------------- 1 | name: bump-repo-versions-simulator 2 | 3 | on: 4 | schedule: 5 | - cron: 0 0,6,12,18 * * * 6 | workflow_dispatch: 7 | 8 | jobs: 9 | create-version-update-pr: 10 | runs-on: ubuntu-22.04 11 | steps: 12 | - uses: actions/checkout@v4 13 | 14 | - name: Generate GitHub App token 15 | id: generate-token 16 | uses: tibdex/github-app-token@v2 17 | with: 18 | app_id: ${{ secrets.APP_ID }} 19 | private_key: ${{ secrets.PRIVATE_KEY }} 20 | 21 | - name: Create PRs to update VCS repositories for simulator.repos 22 | uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 23 | with: 24 | token: ${{ steps.generate-token.outputs.token }} 25 | repo_name: autowarefoundation/autoware 26 | parent_dir: . 27 | targets: major minor 28 | base_branch: main 29 | new_branch_prefix: feat/update- 30 | autoware_repos_file_name: simulator.repos 31 | verbosity: 0 32 | -------------------------------------------------------------------------------- /.github/workflows/bump-repo-versions-autoware.yaml: -------------------------------------------------------------------------------- 1 | name: bump-repo-versions-autoware 2 | 3 | on: 4 | schedule: 5 | - cron: 0 0,6,12,18 * * * 6 | workflow_dispatch: 7 | 8 | jobs: 9 | create-version-update-pr: 10 | runs-on: ubuntu-22.04 11 | steps: 12 | - uses: actions/checkout@v4 13 | 14 | - name: Generate GitHub App token 15 | id: generate-token 16 | uses: tibdex/github-app-token@v2 17 | with: 18 | app_id: ${{ secrets.APP_ID }} 19 | private_key: ${{ secrets.PRIVATE_KEY }} 20 | 21 | - name: Create PRs to update VCS repositories for autoware.repos 22 | uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 23 | with: 24 | token: ${{ steps.generate-token.outputs.token }} 25 | repo_name: autowarefoundation/autoware 26 | parent_dir: . 27 | targets: major minor patch 28 | base_branch: main 29 | new_branch_prefix: feat/update- 30 | autoware_repos_file_name: autoware.repos 31 | verbosity: 0 32 | -------------------------------------------------------------------------------- /ansible/roles/pacmod/README.md: -------------------------------------------------------------------------------- 1 | # pacmod 2 | 3 | This role sets up the prerequisites to install pacmod3_msgs following [this page](https://github.com/astuff/pacmod3_msgs#installation) and [this page](https://github.com/astuff/docker-builds/blob/e9f563ef04b0578ba0b545711ea3e41b20a51d27/ros2/foxy/ros-core/Dockerfile). 4 | 5 | ## Inputs 6 | 7 | | Name | Required | Description | 8 | | --------- | -------- | --------------- | 9 | | rosdistro | true | The ROS distro. | 10 | 11 | ## Manual Installation 12 | 13 | For Universe, the `rosdistro` variable can also be found in: 14 | [../../playbooks/universe.yaml](../../playbooks/universe.yaml) 15 | 16 | ```bash 17 | wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env 18 | 19 | # Taken from https://github.com/astuff/pacmod3#installation 20 | sudo apt install apt-transport-https 21 | sudo sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list' 22 | sudo apt update 23 | sudo apt install ros-${rosdistro}-pacmod3 24 | ``` 25 | -------------------------------------------------------------------------------- /ansible/roles/dev_tools/README.md: -------------------------------------------------------------------------------- 1 | # devel 2 | 3 | This role installs optional development tools for Autoware. 4 | 5 | ## Tools 6 | 7 | - Git LFS 8 | - pre-commit 9 | - clang-format 10 | - Go 11 | - PlotJuggler 12 | 13 | ## Inputs 14 | 15 | | Name | Required | Description | 16 | | ------------------------------- | -------- | --------------------------------------- | 17 | | pre_commit_clang_format_version | true | The version of clang-format to install. | 18 | | rosdistro | true | The ROS distribution. | 19 | 20 | ## Manual Installation 21 | 22 | ```bash 23 | # For the environment variables 24 | wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env 25 | 26 | sudo apt-get update 27 | 28 | sudo apt install python3-pip 29 | sudo apt-get install -y golang 30 | sudo apt-get install -y ros-${rosdistro}-plotjuggler-ros 31 | sudo apt-get install -y git-lfs 32 | 33 | # Setup Git LFS 34 | git lfs install 35 | 36 | pip3 install pre-commit 37 | pip3 install clang-format==${pre_commit_clang_format_version} 38 | ``` 39 | -------------------------------------------------------------------------------- /ansible/roles/spconv/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | # cspell:ignore Bcumm 2 | - name: Normalize dpkg architecture 3 | ansible.builtin.set_fact: 4 | spconv_normalized_arch: "{{ ansible_architecture | regex_replace('aarch64', 'arm64') | regex_replace('x86_64', 'amd64') }}" 5 | 6 | - name: Download the cumm package 7 | ansible.builtin.get_url: 8 | mode: "0644" 9 | url: https://github.com/autowarefoundation/spconv_cpp/releases/download/spconv_v{{ spconv_version }}%2Bcumm_v{{ cumm_version }}/cumm_{{ cumm_version }}_{{ spconv_normalized_arch }}.deb 10 | dest: /tmp/cumm.deb 11 | 12 | - name: Install the cumm package 13 | become: true 14 | ansible.builtin.apt: 15 | deb: /tmp/cumm.deb 16 | state: present 17 | 18 | - name: Download the spconv package 19 | ansible.builtin.get_url: 20 | mode: "0644" 21 | url: https://github.com/autowarefoundation/spconv_cpp/releases/download/spconv_v{{ spconv_version }}%2Bcumm_v{{ cumm_version }}/spconv_{{ spconv_version }}_{{ spconv_normalized_arch }}.deb 22 | dest: /tmp/spconv.deb 23 | 24 | - name: Install the spconv package 25 | become: true 26 | ansible.builtin.apt: 27 | deb: /tmp/spconv.deb 28 | state: present 29 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/README.md: -------------------------------------------------------------------------------- 1 | # telegraf 2 | 3 | This role install [InfluxDB v2](https://docs.influxdata.com/influxdb/v2/get-started/) and [Telegraf](https://docs.influxdata.com/telegraf/v1/) to collect system metrics. 4 | 5 | After installing telegraf and influxdb2, we need to manually make an API token and copy it to the `/etc/telegraf/telegraf.conf`. 6 | 7 | ## Create Organization 8 | 9 | When accessing the InfluxDB UI for the first time, you need to create an organization and a backet. Enter as follows. 10 | 11 | ![](./files/create-org.png) 12 | 13 | ## Generate API token 14 | 15 | Next, move to the `Load Data` tab, click the `GENERATE API TOKEN button`, and generate the API token. 16 | 17 | 18 | 19 | ![](./files/load-data.png) 20 | 21 | ![](./files/generate-api-token.png) 22 | 23 | ## Copy API token and restart Telegraf 24 | 25 | Paste the obtained API token into the empty string part of `token = ""` in `/etc/telegraf/telegraf.conf`. 26 | 27 | 28 | -------------------------------------------------------------------------------- /ansible/roles/nvidia_container_toolkit/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Add NVIDIA container toolkit GPG key 2 | become: true 3 | ansible.builtin.apt_key: 4 | url: https://nvidia.github.io/libnvidia-container/gpgkey 5 | state: present 6 | keyring: /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 7 | 8 | - name: Add NVIDIA container toolkit repository 9 | become: true 10 | ansible.builtin.apt_repository: 11 | repo: deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) / 12 | state: present 13 | filename: nvidia-container-toolkit 14 | update_cache: true 15 | 16 | - name: Install NVIDIA Container Toolkit 17 | become: true 18 | ansible.builtin.apt: 19 | name: 20 | - nvidia-container-toolkit 21 | update_cache: true 22 | 23 | - name: Add NVIDIA runtime support to docker engine 24 | become: true 25 | ansible.builtin.shell: | 26 | nvidia-ctk runtime configure --runtime=docker 27 | changed_when: true 28 | 29 | - name: Restart docker daemon 30 | become: true 31 | ansible.builtin.systemd: 32 | name: docker 33 | state: restarted 34 | changed_when: true 35 | -------------------------------------------------------------------------------- /ansible/playbooks/docker.yaml: -------------------------------------------------------------------------------- 1 | - name: Set up Docker development environments for Autoware 2 | hosts: localhost 3 | connection: local 4 | vars_prompt: 5 | - name: prompt_install_nvidia 6 | prompt: |- 7 | [Warning] Some Autoware components depend on the CUDA, cuDNN and TensorRT NVIDIA libraries which have end-user license agreements that should be reviewed before installation. 8 | Install NVIDIA libraries? [y/N] 9 | private: false 10 | pre_tasks: 11 | - name: Print args 12 | ansible.builtin.debug: 13 | msg: 14 | - cuda_version: "{{ cuda_version }}" 15 | - cudnn_version: "{{ cudnn_version }}" 16 | - name: Show a warning if the NVIDIA libraries will not be installed 17 | ansible.builtin.pause: 18 | seconds: 10 19 | prompt: | 20 | [Warning] Skipping installation of NVIDIA libraries. Please manually install them if you plan to use any dependent components. 21 | when: prompt_install_nvidia != 'y' 22 | roles: 23 | - role: autoware.dev_env.cuda 24 | when: prompt_install_nvidia == 'y' 25 | - role: autoware.dev_env.docker_engine 26 | - role: autoware.dev_env.nvidia_container_toolkit 27 | -------------------------------------------------------------------------------- /ansible/roles/build_tools/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Install ccache 2 | become: true 3 | ansible.builtin.apt: 4 | name: ccache 5 | state: latest 6 | update_cache: true 7 | 8 | - name: Add CCACHE_DIR to .bashrc 9 | ansible.builtin.lineinfile: 10 | dest: ~/.bashrc 11 | line: export CCACHE_DIR="$HOME/.ccache" 12 | state: present 13 | create: true 14 | mode: 0644 15 | 16 | - name: Add CCACHE_DIR to .bashrc of local user 17 | become: true 18 | ansible.builtin.lineinfile: 19 | dest: /etc/skel/.bashrc 20 | line: export CCACHE_DIR="$HOME/.ccache" 21 | state: present 22 | create: true 23 | mode: 0644 24 | 25 | - name: Export CC to ccache 26 | ansible.builtin.lineinfile: 27 | dest: ~/.bashrc 28 | line: export CC="/usr/lib/ccache/gcc" 29 | state: present 30 | create: true 31 | mode: 0644 32 | 33 | - name: Export CXX to ccache 34 | ansible.builtin.lineinfile: 35 | dest: ~/.bashrc 36 | line: export CXX="/usr/lib/ccache/g++" 37 | state: present 38 | create: true 39 | mode: 0644 40 | 41 | - name: Source .bashrc 42 | ansible.builtin.shell: source ~/.bashrc 43 | args: 44 | executable: /bin/bash 45 | changed_when: false 46 | -------------------------------------------------------------------------------- /ansible/roles/rmw_implementation/README.md: -------------------------------------------------------------------------------- 1 | # rmw_implementation 2 | 3 | This role sets up ROS 2 RMW implementation following [this page](https://docs.ros.org/en/humble/How-To-Guides/Working-with-multiple-RMW-implementations.html). 4 | 5 | ## Inputs 6 | 7 | | Name | Required | Description | 8 | | ------------------ | -------- | ------------------- | 9 | | rosdistro | true | The ROS distro. | 10 | | rmw_implementation | true | RMW implementation. | 11 | 12 | ## Manual Installation 13 | 14 | For Universe, the `rosdistro` and `rmw_implementation` variable can also be found in: 15 | [../../playbooks/universe.yaml](../../playbooks/universe.yaml) 16 | 17 | ```bash 18 | wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env 19 | 20 | # For details: https://docs.ros.org/en/humble/How-To-Guides/Working-with-multiple-RMW-implementations.html 21 | sudo apt update 22 | sudo apt install ros-${rosdistro}-${rmw_implementation//_/-} 23 | 24 | # (Optional) You set the default RMW implementation in the ~/.bashrc file. 25 | echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc 26 | ``` 27 | -------------------------------------------------------------------------------- /.github/workflows/sync-files.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: sync-files 6 | 7 | on: 8 | schedule: 9 | - cron: 0 0 * * * 10 | workflow_dispatch: 11 | 12 | concurrency: 13 | group: ${{ github.workflow }}-${{ github.ref }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | check-secret: 18 | uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 19 | secrets: 20 | secret: ${{ secrets.APP_ID }} 21 | 22 | sync-files: 23 | needs: check-secret 24 | if: ${{ needs.check-secret.outputs.set == 'true' }} 25 | runs-on: ubuntu-22.04 26 | steps: 27 | - name: Generate token 28 | id: generate-token 29 | uses: tibdex/github-app-token@v2 30 | with: 31 | app_id: ${{ secrets.APP_ID }} 32 | private_key: ${{ secrets.PRIVATE_KEY }} 33 | 34 | - name: Run sync-files 35 | uses: autowarefoundation/autoware-github-actions/sync-files@v1 36 | with: 37 | token: ${{ steps.generate-token.outputs.token }} 38 | pr-labels: | 39 | tag:bot 40 | tag:sync-files 41 | auto-merge-method: squash 42 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/qt5ct.conf: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | color_scheme_path=/usr/share/qt5ct/colors/darker.conf 3 | custom_palette=true 4 | icon_theme=ubuntu-mono-dark 5 | standard_dialogs=default 6 | style=Fusion 7 | 8 | [Fonts] 9 | fixed=@Variant(\0\0\0@\0\0\0\f\0R\0o\0\x62\0o\0t\0o\xbf\xf0\0\0\0\0\0\0\0\0\0\r\x5\x1\0\x32\x10) 10 | general=@Variant(\0\0\0@\0\0\0\f\0R\0o\0\x62\0o\0t\0o\xbf\xf0\0\0\0\0\0\0\0\0\0\r\x5\x1\0\x32\x10) 11 | 12 | [Interface] 13 | activate_item_on_single_click=1 14 | buttonbox_layout=3 15 | cursor_flash_time=1000 16 | dialog_buttons_have_icons=1 17 | double_click_interval=400 18 | gui_effects=@Invalid() 19 | keyboard_scheme=2 20 | menus_have_icons=true 21 | show_shortcuts_in_context_menus=true 22 | stylesheets=autoware_stylesheet_path 23 | toolbutton_style=0 24 | underline_shortcut=1 25 | wheel_scroll_lines=3 26 | 27 | [QSSEditor] 28 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\t\xde\0\0\x2~\0\0\f`\0\0\x4\x95\0\0\t\xde\0\0\x2\xa3\0\0\f`\0\0\x4\x95\0\0\0\0\0\0\0\0\n\0\0\0\t\xde\0\0\x2\xa3\0\0\f`\0\0\x4\x95) 29 | 30 | [SettingsWindow] 31 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\f\x9c\0\0\x4\x19\0\0\xfz\0\0\a\x3\0\0\f\x9c\0\0\x4>\0\0\xfz\0\0\a\x3\0\0\0\0\0\0\0\0\xf\0\0\0\f\x9c\0\0\x4>\0\0\xfz\0\0\a\x3) 32 | 33 | [Troubleshooting] 34 | force_raster_widgets=2 35 | ignored_applications=@Invalid() 36 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit-ansible-autoupdate.yaml: -------------------------------------------------------------------------------- 1 | name: pre-commit-ansible-autoupdate 2 | 3 | on: 4 | schedule: 5 | - cron: 0 0 * * * 6 | workflow_dispatch: 7 | 8 | jobs: 9 | check-secret: 10 | uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 11 | secrets: 12 | secret: ${{ secrets.APP_ID }} 13 | 14 | pre-commit-ansible-autoupdate: 15 | needs: check-secret 16 | if: ${{ needs.check-secret.outputs.set == 'true' }} 17 | runs-on: ubuntu-22.04 18 | steps: 19 | - name: Generate token 20 | id: generate-token 21 | uses: tibdex/github-app-token@v2 22 | with: 23 | app_id: ${{ secrets.APP_ID }} 24 | private_key: ${{ secrets.PRIVATE_KEY }} 25 | 26 | - name: Run pre-commit-autoupdate 27 | uses: autowarefoundation/autoware-github-actions/pre-commit-autoupdate@v1 28 | with: 29 | token: ${{ steps.generate-token.outputs.token }} 30 | pre-commit-config: .pre-commit-config-ansible.yaml 31 | pr-labels: | 32 | tag:bot 33 | tag:pre-commit-autoupdate 34 | pr-branch: pre-commit-ansible-autoupdate 35 | pr-title: "ci(pre-commit-ansible): autoupdate" 36 | pr-commit-message: "ci(pre-commit-ansible): autoupdate" 37 | auto-merge-method: squash 38 | -------------------------------------------------------------------------------- /ansible/roles/pacmod/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Install apt-transport-https 2 | become: true 3 | ansible.builtin.apt: 4 | name: apt-transport-https 5 | update_cache: true 6 | 7 | - name: Save result of 'lsb_release -sc' 8 | ansible.builtin.command: lsb_release -sc 9 | register: pacmod__lsb_release 10 | changed_when: false 11 | 12 | # echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list 13 | - name: Add AutonomouStuff apt repository to source list 14 | become: true 15 | ansible.builtin.apt_repository: 16 | repo: deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ {{ pacmod__lsb_release.stdout }} main 17 | filename: autonomoustuff-public 18 | state: present 19 | update_cache: true 20 | 21 | # echo "yaml https://s3.amazonaws.com/autonomoustuff-repo/autonomoustuff-public-$ROS_DISTRO.yaml $ROS_DISTRO" > /etc/ros/rosdep/sources.list.d/40-autonomoustuff-public-'$ROS_DISTRO'.list 22 | - name: Add AutonomouStuff rosdep yaml 23 | become: true 24 | ansible.builtin.lineinfile: 25 | path: /etc/ros/rosdep/sources.list.d/40-autonomoustuff-public-{{ rosdistro }}.list 26 | line: yaml https://s3.amazonaws.com/autonomoustuff-repo/autonomoustuff-public-{{ rosdistro }}.yaml 27 | state: present 28 | create: true 29 | mode: 0644 30 | -------------------------------------------------------------------------------- /docker/etc/ros_entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # shellcheck disable=SC1090,SC1091 3 | 4 | # Get the user ID and group ID of the local user 5 | USER_ID=${LOCAL_UID} 6 | USER_NAME=${LOCAL_USER} 7 | GROUP_ID=${LOCAL_GID} 8 | GROUP_NAME=${LOCAL_GROUP} 9 | 10 | # Check if any of the variables are empty 11 | if [[ -z $USER_ID || -z $USER_NAME || -z $GROUP_ID || -z $GROUP_NAME ]]; then 12 | source "/opt/ros/$ROS_DISTRO/setup.bash" 13 | source /opt/autoware/setup.bash 14 | exec "$@" 15 | else 16 | echo "Starting with user: $USER_NAME >> UID $USER_ID, GID: $GROUP_ID" 17 | 18 | # Create group and user with GID/UID 19 | groupadd -g "$GROUP_ID" "$GROUP_NAME" 20 | useradd -u "$USER_ID" -g "$GROUP_ID" -s /bin/bash -m -d /home/"$USER_NAME" "$USER_NAME" 21 | 22 | # Add sudo privileges to the user 23 | echo "$USER_NAME ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers 24 | 25 | # Source ROS 2 26 | # hadolint ignore=SC1090 27 | source "/opt/ros/$ROS_DISTRO/setup.bash" 28 | source /opt/autoware/setup.bash 29 | 30 | # Add symlink for autoware_data if directory exists 31 | if [ -d /autoware_data ]; then 32 | ln -s /autoware_data /home/"$USER_NAME"/autoware_data 33 | echo "Linked /autoware_data to /home/$USER_NAME/autoware_data" 34 | fi 35 | 36 | # Execute the command as the user 37 | exec /usr/sbin/gosu "$USER_NAME" "$@" 38 | fi 39 | -------------------------------------------------------------------------------- /ansible/roles/tensorrt/README.md: -------------------------------------------------------------------------------- 1 | # tensorrt 2 | 3 | This role installs TensorRT and cuDNN following [the official NVIDIA TensorRT Installation Guide](https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing). 4 | 5 | ## Inputs 6 | 7 | | Name | Required | Description | 8 | | ---------------- | -------- | ------------------------ | 9 | | cudnn_version | true | The version of cuDNN. | 10 | | tensorrt_version | true | The version of TensorRT. | 11 | 12 | ## Manual Installation 13 | 14 | ```bash 15 | # For the environment variables 16 | wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env 17 | 18 | sudo apt-get install -y \ 19 | libcudnn8=${cudnn_version} \ 20 | libnvinfer10=${tensorrt_version} \ 21 | libnvinfer-plugin10=${tensorrt_version} \ 22 | libnvonnxparsers10=${tensorrt_version} \ 23 | libcudnn8-dev=${cudnn_version} \ 24 | libnvinfer-dev=${tensorrt_version} \ 25 | libnvinfer-plugin-dev=${tensorrt_version} \ 26 | libnvinfer-headers-dev=${tensorrt_version} \ 27 | libnvinfer-headers-plugin-dev=${tensorrt_version} \ 28 | libnvonnxparsers-dev=${tensorrt_version} 29 | 30 | sudo apt-mark hold \ 31 | libcudnn8 \ 32 | libnvinfer10 \ 33 | libnvinfer-plugin10 \ 34 | libnvonnxparsers10 \ 35 | libcudnn8-dev \ 36 | libnvinfer-dev \ 37 | libnvinfer-plugin-dev \ 38 | libnvonnxparsers-dev \ 39 | libnvinfer-headers-dev \ 40 | libnvinfer-headers-plugin-dev 41 | ``` 42 | -------------------------------------------------------------------------------- /CPPLINT.cfg: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | # Modified from https://github.com/ament/ament_lint/blob/ebd524bb9973d5ec1dc48a670ce54f958a5a0243/ament_cpplint/ament_cpplint/main.py#L64-L120 6 | set noparent 7 | linelength=100 8 | includeorder=standardcfirst 9 | filter=-build/c++11 # we do allow C++11 10 | filter=-build/c++17 # we allow 11 | filter=-build/namespaces_literals # we allow using namespace for literals 12 | filter=-runtime/references # we consider passing non-const references to be ok 13 | filter=-whitespace/braces # we wrap open curly braces for namespaces, classes and functions 14 | filter=-whitespace/indent # we don't indent keywords like public, protected and private with one space 15 | filter=-whitespace/newline # we allow the developer to decide about newline at the end of file (it's clashing with clang-format) 16 | filter=-whitespace/parens # we allow closing parenthesis to be on the next line 17 | filter=-whitespace/semicolon # we allow the developer to decide about whitespace after a semicolon 18 | filter=-build/header_guard # we automatically fix the names of header guards using pre-commit 19 | filter=-build/include_order # we use the custom include order 20 | filter=-build/include_subdir # we allow the style of "foo.hpp" 21 | -------------------------------------------------------------------------------- /ansible/roles/rmw_implementation/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Validate inputs 2 | ansible.builtin.assert: 3 | that: 4 | - rmw_implementation__rosdistro | length > 0 5 | - rmw_implementation__name | length > 0 6 | 7 | - name: Build target package name 8 | ansible.builtin.set_fact: 9 | rmw_implementation__pkg: >- 10 | ros-{{ rmw_implementation__rosdistro }}-{{ rmw_implementation__name | replace('_', '-') }} 11 | 12 | - name: List held packages 13 | ansible.builtin.command: apt-mark showhold 14 | register: rmw_implementation__held_pkgs 15 | changed_when: false 16 | 17 | - name: Install latest (skip if held) {{ rmw_implementation__pkg }} 18 | become: true 19 | ansible.builtin.apt: 20 | name: "{{ rmw_implementation__pkg }}" 21 | state: latest 22 | update_cache: true 23 | cache_valid_time: 3600 24 | when: rmw_implementation__pkg not in rmw_implementation__held_pkgs.stdout_lines 25 | 26 | - name: Ensure RMW_IMPLEMENTATION in user bashrc 27 | ansible.builtin.lineinfile: 28 | path: "{{ lookup('env', 'HOME') }}/.bashrc" 29 | line: export RMW_IMPLEMENTATION={{ rmw_implementation__name }} 30 | state: present 31 | create: true 32 | mode: "0644" 33 | 34 | - name: Ensure RMW_IMPLEMENTATION in skeleton bashrc (for new users) 35 | become: true 36 | ansible.builtin.lineinfile: 37 | path: /etc/skel/.bashrc 38 | line: export RMW_IMPLEMENTATION={{ rmw_implementation__name }} 39 | state: present 40 | create: true 41 | mode: "0644" 42 | -------------------------------------------------------------------------------- /.github/sync-files.yaml: -------------------------------------------------------------------------------- 1 | - repository: autowarefoundation/sync-file-templates 2 | source-dir: sources 3 | files: 4 | - source: .github/ISSUE_TEMPLATE/bug.yaml 5 | - source: .github/ISSUE_TEMPLATE/config.yml 6 | - source: .github/ISSUE_TEMPLATE/task.yaml 7 | - source: .github/dependabot.yaml 8 | - source: .github/pull_request_template.md 9 | - source: .github/stale.yml 10 | - source: .github/workflows/cancel-previous-workflows.yaml 11 | - source: .github/workflows/comment-on-pr.yaml 12 | - source: .github/workflows/github-release.yaml 13 | - source: .github/workflows/pre-commit-optional.yaml 14 | - source: .github/workflows/pre-commit-optional-autoupdate.yaml 15 | - source: .github/workflows/pre-commit-autoupdate.yaml 16 | - source: .github/workflows/semantic-pull-request.yaml 17 | - source: .github/workflows/spell-check-differential.yaml 18 | - source: .github/workflows/spell-check-daily.yaml 19 | - source: .github/workflows/sync-files.yaml 20 | - source: .clang-format 21 | - source: .clang-tidy 22 | - source: .markdown-link-check.json 23 | - source: .markdownlint.yaml 24 | - source: .pre-commit-config-optional.yaml 25 | - source: .pre-commit-config.yaml 26 | - source: .prettierignore 27 | - source: .prettierrc.yaml 28 | - source: .yamllint.yaml 29 | - source: CODE_OF_CONDUCT.md 30 | - source: CONTRIBUTING.md 31 | - source: CPPLINT.cfg 32 | - source: DISCLAIMER.md 33 | - source: LICENSE 34 | - source: setup.cfg 35 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | # Modified from https://github.com/ament/ament_lint/blob/master/ament_clang_format/ament_clang_format/configuration/.clang-format 6 | Language: Cpp 7 | BasedOnStyle: Google 8 | 9 | AccessModifierOffset: -2 10 | AlignAfterOpenBracket: AlwaysBreak 11 | AllowShortFunctionsOnASingleLine: InlineOnly 12 | BraceWrapping: 13 | AfterClass: true 14 | AfterFunction: true 15 | AfterNamespace: true 16 | AfterStruct: true 17 | BreakBeforeBraces: Custom 18 | ColumnLimit: 100 19 | ConstructorInitializerIndentWidth: 0 20 | ContinuationIndentWidth: 2 21 | DerivePointerAlignment: false 22 | PointerAlignment: Middle 23 | ReflowComments: true 24 | IncludeCategories: 25 | # C++ system headers 26 | - Regex: <[a-z_]*> 27 | Priority: 6 28 | CaseSensitive: true 29 | # C system headers 30 | - Regex: <.*\.h> 31 | Priority: 5 32 | CaseSensitive: true 33 | # Boost headers 34 | - Regex: boost/.* 35 | Priority: 4 36 | CaseSensitive: true 37 | # Message headers 38 | - Regex: .*_msgs/.* 39 | Priority: 3 40 | CaseSensitive: true 41 | - Regex: .*_srvs/.* 42 | Priority: 3 43 | CaseSensitive: true 44 | # Other Package headers 45 | - Regex: <.*> 46 | Priority: 2 47 | CaseSensitive: true 48 | # Local package headers 49 | - Regex: '".*"' 50 | Priority: 1 51 | CaseSensitive: true 52 | -------------------------------------------------------------------------------- /ansible/roles/telegraf/files/telegraf.conf: -------------------------------------------------------------------------------- 1 | [global_tags] 2 | 3 | [agent] 4 | interval = "10s" 5 | round_interval = true 6 | metric_batch_size = 1000 7 | metric_buffer_limit = 10000 8 | collection_jitter = "0s" 9 | flush_interval = "10s" 10 | flush_jitter = "0s" 11 | precision = "0s" 12 | hostname = "" 13 | omit_hostname = false 14 | 15 | [[outputs.influxdb_v2]] 16 | urls = ["http://127.0.0.1:8086"] 17 | # Attach the access token. See also https://docs.influxdata.com/influxdb/cloud/admin/tokens/create-token/#manage-tokens-in-the-influxdb-ui 18 | token = "" 19 | organization = "autowarefoundation" 20 | bucket = "autoware" 21 | timeout = "5s" 22 | user_agent = "telegraf" 23 | 24 | [[inputs.cpu]] 25 | percpu = true 26 | totalcpu = true 27 | collect_cpu_time = false 28 | report_active = false 29 | core_tags = false 30 | 31 | [[inputs.disk]] 32 | ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] 33 | 34 | [[inputs.diskio]] 35 | 36 | [[inputs.kernel]] 37 | 38 | [[inputs.mem]] 39 | 40 | [[inputs.processes]] 41 | 42 | [[inputs.swap]] 43 | 44 | [[inputs.system]] 45 | 46 | [[inputs.exec]] 47 | commands = ["/opt/autoware/bin/get_telegraf_proccpu_json.sh"] 48 | timeout = "10s" 49 | data_format = "json" 50 | name_suffix = "_proccpu" 51 | 52 | [[inputs.exec]] 53 | commands = ["/opt/autoware/bin/get_telegraf_procmem_json.sh"] 54 | timeout = "5s" 55 | data_format = "json" 56 | name_suffix = "_procmem" 57 | 58 | [[inputs.net]] 59 | 60 | [[inputs.nvidia_smi]] 61 | -------------------------------------------------------------------------------- /.webauto-ci/main/autoware-build/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | : "${WEBAUTO_CI_SOURCE_PATH:?is not set}" 4 | : "${WEBAUTO_CI_DEBUG_BUILD:?is not set}" 5 | 6 | : "${AUTOWARE_PATH:?is not set}" 7 | : "${CCACHE_DIR:=}" 8 | : "${CCACHE_SIZE:=1G}" 9 | : "${PARALLEL_WORKERS:=4}" 10 | 11 | sudo mkdir "$AUTOWARE_PATH" 12 | sudo chown "$(whoami)": "$AUTOWARE_PATH" 13 | cd "$WEBAUTO_CI_SOURCE_PATH" 14 | cp -r src .webauto-ci.* "$AUTOWARE_PATH" 15 | cd "$AUTOWARE_PATH" 16 | 17 | if [ -n "$CCACHE_DIR" ]; then 18 | mkdir -p "$CCACHE_DIR" 19 | export USE_CCACHE=1 20 | export CCACHE_DIR="$CCACHE_DIR" 21 | export CC="/usr/lib/ccache/gcc" 22 | export CXX="/usr/lib/ccache/g++" 23 | ccache -M "$CCACHE_SIZE" 24 | fi 25 | 26 | # install xmlschema<4.0.0 before rosdep install as workaround for scenario_simulator_v2 27 | sudo pip3 install xmlschema==3.4.5 28 | 29 | sudo -E apt-get -y update 30 | 31 | # shellcheck disable=SC2012 32 | ROS_DISTRO=$(ls -1 /opt/ros | head -1) 33 | # shellcheck disable=SC1090 34 | source "/opt/ros/$ROS_DISTRO/setup.bash" 35 | rosdep update 36 | rosdep install -y --from-paths src --ignore-src --rosdistro "$ROS_DISTRO" 37 | 38 | [[ $WEBAUTO_CI_DEBUG_BUILD == "true" ]] && build_type="RelWithDebInfo" || build_type="Release" 39 | 40 | colcon build \ 41 | --cmake-args -DCMAKE_BUILD_TYPE="$build_type" -DBUILD_TESTING=off -Wno-dev --no-warn-unused-cli \ 42 | --symlink-install \ 43 | --catkin-skip-building-tests \ 44 | --executor parallel \ 45 | --parallel-workers "$PARALLEL_WORKERS" 46 | 47 | sudo -E apt-get -y autoremove 48 | -------------------------------------------------------------------------------- /docker/tools/visualizer/README.md: -------------------------------------------------------------------------------- 1 | # Autoware Tools - Visualizer 2 | 3 | Opens a remote RViz display for Autoware. 4 | 5 | ## Standalone Run 6 | 7 | ```bash 8 | docker run --rm --name visualizer -p 6080:6080 ghcr.io/autowarefoundation/autoware-tools:visualizer 9 | ``` 10 | 11 | ## Settings 12 | 13 | The following environment variables can be configured with `-e` while launching the visualizer container: 14 | 15 | | Variable | Default Value | Possible Values | Description | 16 | | ----------------- | ------------------------------ | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | 17 | | `RVIZ_CONFIG` | `/autoware/rviz/autoware.rviz` | Any valid path | The full path to the RViz configuration file inside the container | 18 | | `REMOTE_DISPLAY` | `true` | `true`, `false` | **(Recommended)** Lightweight and browser-based RViz display, accessible from any device. Set this to `false` to launch a local rviz2 display. | 19 | | `REMOTE_PASSWORD` | `openadkit` | Any string without special characters | Password for remote display (only used when `REMOTE_DISPLAY=true`) | 20 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit-autoupdate.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: pre-commit-autoupdate 6 | 7 | on: 8 | schedule: 9 | - cron: 0 0 1 1,4,7,10 * # quarterly 10 | workflow_dispatch: 11 | 12 | concurrency: 13 | group: ${{ github.workflow }}-${{ github.ref }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | check-secret: 18 | uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 19 | secrets: 20 | secret: ${{ secrets.APP_ID }} 21 | 22 | pre-commit-autoupdate: 23 | needs: check-secret 24 | if: ${{ needs.check-secret.outputs.set == 'true' }} 25 | runs-on: ubuntu-22.04 26 | steps: 27 | - name: Generate token 28 | id: generate-token 29 | uses: tibdex/github-app-token@v2 30 | with: 31 | app_id: ${{ secrets.APP_ID }} 32 | private_key: ${{ secrets.PRIVATE_KEY }} 33 | 34 | - name: Run pre-commit-autoupdate 35 | uses: autowarefoundation/autoware-github-actions/pre-commit-autoupdate@v1 36 | with: 37 | token: ${{ steps.generate-token.outputs.token }} 38 | pre-commit-config: .pre-commit-config.yaml 39 | pr-labels: | 40 | tag:bot 41 | tag:pre-commit-autoupdate 42 | pr-branch: pre-commit-autoupdate 43 | pr-title: "ci(pre-commit): autoupdate" 44 | pr-commit-message: "ci(pre-commit): autoupdate" 45 | auto-merge-method: squash 46 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/task.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: Task 6 | description: Plan a task 7 | body: 8 | - type: checkboxes 9 | attributes: 10 | label: Checklist 11 | description: Confirm the following items before proceeding. If one cannot be satisfied, create a discussion thread instead. 12 | options: 13 | - label: I've read the [contribution guidelines](https://github.com/autowarefoundation/autoware/blob/main/CONTRIBUTING.md). 14 | required: true 15 | - label: I've searched other issues and no duplicate issues were found. 16 | required: true 17 | - label: I've agreed with the maintainers that I can plan this task. 18 | required: true 19 | 20 | - type: textarea 21 | attributes: 22 | label: Description 23 | description: Write a brief description of the task. 24 | validations: 25 | required: true 26 | 27 | - type: textarea 28 | attributes: 29 | label: Purpose 30 | description: Describe the purpose of the task. 31 | validations: 32 | required: true 33 | 34 | - type: textarea 35 | attributes: 36 | label: Possible approaches 37 | description: Describe possible approaches for the task. 38 | validations: 39 | required: true 40 | 41 | - type: textarea 42 | attributes: 43 | label: Definition of done 44 | description: Write the definition of done for the task. 45 | validations: 46 | required: true 47 | -------------------------------------------------------------------------------- /docker/etc/.bash_aliases: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # planning simulation 4 | function download_planning_map() { 5 | if [ ! -f ~/autoware_map/sample-map-planning.zip ]; then 6 | gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1499_nsbUbIeturZaDj7jhUownh5fvXHd' 7 | unzip -d ~/autoware_map ~/autoware_map/sample-map-planning.zip 8 | fi 9 | } 10 | alias awf-launch-planning-sim='download_planning_map&&ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-planning vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit' 11 | 12 | # rosbag replay simulation 13 | function download_rosbag_map() { 14 | if [ ! -f ~/autoware_map/sample-map-rosbag.zip ]; then 15 | gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1A-8BvYRX3DhSzkAnOcGWFw5T30xTlwZI' 16 | unzip -d ~/autoware_map/ ~/autoware_map/sample-map-rosbag.zip 17 | fi 18 | } 19 | alias awf-launch-sample-rosbag-sim='download_rosbag_artifacts&&download_rosbag_map&&ros2 launch autoware_launch logging_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-rosbag vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit' 20 | 21 | # play sample rosbag 22 | function download_rosbag_file() { 23 | if [ ! -f ~/autoware_map/sample-rosbag.zip ]; then 24 | gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1VnwJx9tI3kI_cTLzP61ktuAJ1ChgygpG' 25 | unzip -d ~/autoware_map/ ~/autoware_map/sample-rosbag.zip 26 | fi 27 | } 28 | alias awf-play-sample-rosbag='download_rosbag_file&&ros2 bag play ~/autoware_map/sample-rosbag/sample.db3 -r 0.35 -s sqlite3' 29 | -------------------------------------------------------------------------------- /docker/docker-bake-cuda.hcl: -------------------------------------------------------------------------------- 1 | group "default" { 2 | targets = [ 3 | "universe-common-devel-cuda", 4 | "universe-sensing-perception-devel-cuda", 5 | "universe-sensing-perception-cuda", 6 | "universe-devel-cuda", 7 | "universe-cuda" 8 | ] 9 | } 10 | 11 | // For docker/metadata-action 12 | target "docker-metadata-action-universe-common-devel-cuda" {} 13 | target "docker-metadata-action-universe-sensing-perception-devel-cuda" {} 14 | target "docker-metadata-action-universe-sensing-perception-cuda" {} 15 | target "docker-metadata-action-universe-devel-cuda" {} 16 | target "docker-metadata-action-universe-cuda" {} 17 | 18 | target "universe-common-devel-cuda" { 19 | inherits = ["docker-metadata-action-universe-common-devel-cuda"] 20 | dockerfile = "docker/Dockerfile" 21 | target = "universe-common-devel-cuda" 22 | } 23 | 24 | target "universe-sensing-perception-devel-cuda" { 25 | inherits = ["docker-metadata-action-universe-sensing-perception-devel-cuda"] 26 | dockerfile = "docker/Dockerfile" 27 | target = "universe-sensing-perception-devel-cuda" 28 | } 29 | 30 | target "universe-sensing-perception-cuda" { 31 | inherits = ["docker-metadata-action-universe-sensing-perception-cuda"] 32 | dockerfile = "docker/Dockerfile" 33 | target = "universe-sensing-perception-cuda" 34 | } 35 | 36 | target "universe-devel-cuda" { 37 | inherits = ["docker-metadata-action-universe-devel-cuda"] 38 | dockerfile = "docker/Dockerfile" 39 | target = "universe-devel-cuda" 40 | } 41 | 42 | target "universe-cuda" { 43 | inherits = ["docker-metadata-action-universe-cuda"] 44 | dockerfile = "docker/Dockerfile" 45 | target = "universe-cuda" 46 | } 47 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit-optional-autoupdate.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: pre-commit-optional-autoupdate 6 | 7 | on: 8 | schedule: 9 | - cron: 0 0 1 1,4,7,10 * # quarterly 10 | workflow_dispatch: 11 | 12 | concurrency: 13 | group: ${{ github.workflow }}-${{ github.ref }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | check-secret: 18 | uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 19 | secrets: 20 | secret: ${{ secrets.APP_ID }} 21 | 22 | pre-commit-optional-autoupdate: 23 | needs: check-secret 24 | if: ${{ needs.check-secret.outputs.set == 'true' }} 25 | runs-on: ubuntu-22.04 26 | steps: 27 | - name: Generate token 28 | id: generate-token 29 | uses: tibdex/github-app-token@v2 30 | with: 31 | app_id: ${{ secrets.APP_ID }} 32 | private_key: ${{ secrets.PRIVATE_KEY }} 33 | 34 | - name: Run pre-commit-autoupdate 35 | uses: autowarefoundation/autoware-github-actions/pre-commit-autoupdate@v1 36 | with: 37 | token: ${{ steps.generate-token.outputs.token }} 38 | pre-commit-config: .pre-commit-config-optional.yaml 39 | pr-labels: | 40 | tag:bot 41 | tag:pre-commit-autoupdate 42 | pr-branch: pre-commit-optional-autoupdate 43 | pr-title: "ci(pre-commit-optional): autoupdate" 44 | pr-commit-message: "ci(pre-commit-optional): autoupdate" 45 | auto-merge-method: squash 46 | -------------------------------------------------------------------------------- /autoware-nightly.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | core/autoware_adapi_msgs: 3 | type: git 4 | url: https://github.com/autowarefoundation/autoware_adapi_msgs.git 5 | version: main 6 | core/autoware_internal_msgs: 7 | type: git 8 | url: https://github.com/autowarefoundation/autoware_internal_msgs.git 9 | version: main 10 | core/autoware_core: 11 | type: git 12 | url: https://github.com/autowarefoundation/autoware_core.git 13 | version: main 14 | core/autoware_utils: # TODO(mitsudome-r): Remove this repository entry when https://github.com/autowarefoundation/autoware/pull/5700 is merged. 15 | type: git 16 | url: https://github.com/autowarefoundation/autoware_utils.git 17 | version: main 18 | core/autoware_rviz_plugins: 19 | type: git 20 | url: https://github.com/autowarefoundation/autoware_rviz_plugins.git 21 | version: main 22 | universe/autoware_universe: 23 | type: git 24 | url: https://github.com/autowarefoundation/autoware_universe.git 25 | version: main 26 | universe/external/managed_transform_buffer: 27 | type: git 28 | url: https://github.com/autowarefoundation/managed_transform_buffer.git 29 | version: main 30 | universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API and remove this repository entry. 31 | type: git 32 | url: https://github.com/tier4/tier4_ad_api_adaptor.git 33 | version: tier4/universe 34 | universe/external/tier4_autoware_msgs: 35 | type: git 36 | url: https://github.com/tier4/tier4_autoware_msgs.git 37 | version: tier4/universe 38 | launcher/autoware_launch: 39 | type: git 40 | url: https://github.com/autowarefoundation/autoware_launch.git 41 | version: main 42 | -------------------------------------------------------------------------------- /ansible/roles/tensorrt/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Install cuDNN and TensorRT 2 | become: true 3 | ansible.builtin.apt: 4 | name: 5 | - libcudnn8={{ cudnn_version }} 6 | - libnvinfer10={{ tensorrt_version }} 7 | - libnvinfer-plugin10={{ tensorrt_version }} 8 | - libnvonnxparsers10={{ tensorrt_version }} 9 | allow_change_held_packages: true 10 | allow_downgrade: true 11 | update_cache: true 12 | 13 | - name: Install cuDNN and TensorRT Dev 14 | become: true 15 | ansible.builtin.apt: 16 | name: 17 | - libcudnn8-dev={{ cudnn_version }} 18 | - libnvinfer-dev={{ tensorrt_version }} 19 | - libnvinfer-plugin-dev={{ tensorrt_version }} 20 | - libnvinfer-headers-dev={{ tensorrt_version }} 21 | - libnvinfer-headers-plugin-dev={{ tensorrt_version }} 22 | - libnvonnxparsers-dev={{ tensorrt_version }} 23 | allow_change_held_packages: true 24 | allow_downgrade: true 25 | update_cache: true 26 | when: install_devel == 'y' 27 | 28 | # apt-mark hold 29 | - name: Prevent CUDA-related packages from upgrading 30 | become: true 31 | ansible.builtin.dpkg_selections: 32 | name: "{{ item }}" 33 | selection: hold 34 | with_items: 35 | - libcudnn8 36 | - libnvinfer10 37 | - libnvinfer-plugin10 38 | - libnvonnxparsers10 39 | 40 | - name: Prevent CUDA-related Dev packages from upgrading 41 | become: true 42 | ansible.builtin.dpkg_selections: 43 | name: "{{ item }}" 44 | selection: hold 45 | with_items: 46 | - libcudnn8-dev 47 | - libnvinfer-dev 48 | - libnvinfer-plugin-dev 49 | - libnvinfer-headers-dev 50 | - libnvinfer-headers-plugin-dev 51 | - libnvonnxparsers-dev 52 | when: install_devel == 'y' 53 | -------------------------------------------------------------------------------- /.github/workflows/comment-on-pr.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: comment-on-pr 6 | on: 7 | pull_request_target: 8 | 9 | concurrency: 10 | group: ${{ github.workflow }}-${{ github.ref }} 11 | cancel-in-progress: true 12 | 13 | jobs: 14 | comment-on-pr: 15 | runs-on: ubuntu-22.04 16 | permissions: 17 | pull-requests: write 18 | steps: 19 | - name: Check out repository 20 | uses: actions/checkout@v4 21 | 22 | - name: Initial PR comment 23 | uses: marocchino/sticky-pull-request-comment@v2 24 | with: 25 | message: | 26 | Thank you for contributing to the Autoware project! 27 | 28 | 🚧 If your pull request is in progress, [switch it to draft mode](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft). 29 | 30 | Please ensure: 31 | - You've checked our [contribution guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/). 32 | - Your PR follows our [pull request guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/). 33 | - All required CI checks pass before [marking the PR ready for review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review). 34 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docker/planning-simulation.env: -------------------------------------------------------------------------------- 1 | # ROS settings 2 | ROS_DOMAIN_ID=1 3 | USE_SIM_TIME=false 4 | 5 | # Common settings 6 | POINTCLOUD_CONTAINER_NAME=pointcloud_container 7 | SCENARIO_SIMULATION=false 8 | SENSOR_MODEL=sample_sensor_kit 9 | VEHICLE_ID=default 10 | VEHICLE_MODEL=sample_vehicle 11 | 12 | # Map settings 13 | LANELET2_MAP_FILE=lanelet2_map.osm 14 | MAP_PATH=$HOME/autoware_map/sample-map-planning 15 | POINTCLOUD_MAP_FILE=pointcloud_map.pcd 16 | 17 | # Planning settings 18 | ENABLE_ALL_MODULES_AUTO_MODE=false 19 | IS_SIMULATION_MODE=true 20 | PLANNING_MODULE_PRESET=default 21 | 22 | # Control settings 23 | CHECK_EXTERNAL_EMERGENCY_HEARTBEAT=false 24 | CONTROL_MODULE_PRESET=default 25 | LATERAL_CONTROLLER_MODE=mpc 26 | LONGITUDINAL_CONTROLLER_MODE=pid 27 | 28 | # Vehicle interface 29 | LAUNCH_VEHICLE_INTERFACE=true 30 | 31 | # System settings 32 | SYSTEM_RUN_MODE=planning_simulation 33 | LAUNCH_SYSTEM_MONITOR=false 34 | LAUNCH_DUMMY_DIAG_PUBLISHER=true 35 | 36 | # Sensing settings 37 | LAUNCH_POINTCLOUD_CONTAINER_SENSING=false 38 | LAUNCH_SENSING_DRIVER=false 39 | 40 | # Perception settings 41 | DATA_PATH=$HOME/autoware_data 42 | LAUNCH_POINTCLOUD_CONTAINER_PERCEPTION=false 43 | LIDAR_DETECTION_MODEL=clustering 44 | PERCEPTION_MODE=lidar 45 | 46 | # Simulator settings 47 | INITIAL_ENGAGE_STATE=true 48 | LAUNCH_DUMMY_DOORS=true 49 | LAUNCH_DUMMY_PERCEPTION=true 50 | LAUNCH_DUMMY_VEHICLE=true 51 | LAUNCH_SCENARIO_SIMULATOR_V2_ADAPTER=false 52 | LOCALIZATION_SIM_MODE=api 53 | PERCEPTION_ENABLE_DETECTION_FAILURE=true 54 | PERCEPTION_ENABLE_OBJECT_RECOGNITION=true 55 | PERCEPTION_ENABLE_TRAFFIC_LIGHT=false 56 | PERCEPTION_USE_BASE_LINK_Z=true 57 | SENSING_VISIBLE_RANGE=300.0 58 | USE_POINTCLOUD_CONTAINER=false 59 | 60 | # Visualization settings 61 | REMOTE_DISPLAY=true 62 | RVIZ_CONFIG=/opt/autoware/share/autoware_launch/rviz/autoware.rviz 63 | 64 | # Rosbag settings 65 | ROSBAG_PATH=$HOME/autoware_map/sample-rosbag 66 | ROSBAG_RATE=1.0 67 | ROSBAG_FORMAT=sqlite3 68 | -------------------------------------------------------------------------------- /docker/tools/visualizer/Dockerfile: -------------------------------------------------------------------------------- 1 | # cspell:ignore openbox, VNC, tigervnc, novnc, websockify, newkey, xstartup, keyout 2 | FROM ghcr.io/autowarefoundation/autoware:universe AS universe 3 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 4 | 5 | # Extract RViz configs for visualizer 6 | # hadolint ignore=SC1091 7 | RUN source /opt/autoware/setup.bash \ 8 | && RVIZ_PATH="$(ros2 pkg prefix --share autoware_launch)/rviz" \ 9 | && cp -r "$RVIZ_PATH" /autoware/rviz 10 | 11 | ### visualizer 12 | FROM ghcr.io/autowarefoundation/autoware:universe-visualization AS visualizer 13 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 14 | ARG ROS_DISTRO 15 | ARG LIB_DIR 16 | 17 | COPY --from=universe /autoware/rviz /autoware/rviz 18 | WORKDIR /autoware 19 | 20 | # Install openbox, VNC, and simulator dependencies 21 | # hadolint ignore=SC2002 22 | RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ 23 | curl \ 24 | unzip \ 25 | openbox \ 26 | tigervnc-standalone-server \ 27 | tigervnc-common \ 28 | novnc \ 29 | websockify \ 30 | python3-numpy \ 31 | python3-xdg \ 32 | && pip install --no-cache-dir yamale xmlschema \ 33 | && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO 34 | 35 | # Create SSL certificate for NoVNC 36 | RUN openssl req -x509 -nodes -newkey rsa:2048 \ 37 | -keyout /etc/ssl/private/novnc.key \ 38 | -out /etc/ssl/certs/novnc.crt \ 39 | -days 365 \ 40 | -subj "/O=Autoware-OpenADKit/CN=localhost" 41 | 42 | # Need to expose VNC and NoVNC ports when running the container 43 | EXPOSE 5900 6080 44 | 45 | # Add source commands to bash startup 46 | RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> /root/.bashrc && \ 47 | echo "source /opt/autoware/setup.bash" >> /root/.bashrc 48 | 49 | # Copy startup scripts 50 | COPY docker/tools/visualizer/xstartup /root/.vnc/xstartup 51 | COPY docker/tools/visualizer/entrypoint.sh /entrypoint.sh 52 | RUN chmod +x /entrypoint.sh && chmod +x /root/.vnc/xstartup 53 | ENTRYPOINT ["/entrypoint.sh"] 54 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ansible/roles/dev_tools/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | # https://github.com/git-lfs/git-lfs/wiki/Installation#debian-and-ubuntu 2 | - name: Install Git LFS 3 | become: true 4 | ansible.builtin.apt: 5 | name: git-lfs 6 | state: latest 7 | update_cache: true 8 | 9 | # ref: https://github.com/ansible/ansible-lint/issues/1780 10 | - name: Check if git lfs is installed # https://github.com/git-lfs/git-lfs/issues/901 11 | community.general.git_config: 12 | list_all: true 13 | scope: global 14 | register: dev_tools__git_lfs__git_global_config 15 | 16 | - name: Setup Git LFS 17 | ansible.builtin.command: git lfs install 18 | when: "'filter.lfs.required' not in dev_tools__git_lfs__git_global_config.config_values" 19 | changed_when: true 20 | 21 | - name: Install pipx 22 | become: true 23 | ansible.builtin.apt: 24 | name: pipx 25 | state: latest 26 | update_cache: true 27 | 28 | - name: Install pre-commit 29 | community.general.pipx: 30 | name: pre-commit 31 | executable: /usr/bin/pipx 32 | 33 | - name: Install clang-format 34 | community.general.pipx: 35 | name: clang-format 36 | executable: /usr/bin/pipx 37 | 38 | - name: Install Go 39 | become: true 40 | ansible.builtin.apt: 41 | name: golang 42 | state: latest 43 | update_cache: true 44 | 45 | - name: Hold check of ros-{{ rosdistro + '-plotjuggler' }} 46 | ansible.builtin.command: apt-mark showhold 47 | register: dev_tools__held_ros_packages 48 | changed_when: false 49 | 50 | - name: Install plotjuggler 51 | become: true 52 | ansible.builtin.apt: 53 | name: 54 | - ros-{{ rosdistro }}-plotjuggler 55 | state: latest 56 | update_cache: true 57 | when: "'ros-' + rosdistro + '-plotjuggler' not in dev_tools__held_ros_packages.stdout" 58 | register: dev_tools__install_result 59 | failed_when: false 60 | 61 | - name: Display warning if plotjuggler package is held 62 | ansible.builtin.debug: 63 | msg: ROS package 'ros-{{ rosdistro }}-plotjuggler' is apt-mark hold. Skipping installation. 64 | when: not dev_tools__install_result.changed 65 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /docker/logging-simulation.env: -------------------------------------------------------------------------------- 1 | # ROS settings 2 | ROS_DOMAIN_ID=1 3 | USE_SIM_TIME=true 4 | 5 | # Common settings 6 | POINTCLOUD_CONTAINER_NAME=pointcloud_container 7 | SCENARIO_SIMULATION=false 8 | SENSOR_MODEL=sample_sensor_kit 9 | VEHICLE_ID=default 10 | VEHICLE_MODEL=sample_vehicle 11 | 12 | # Map settings 13 | LANELET2_MAP_FILE=lanelet2_map.osm 14 | MAP_PATH=$HOME/autoware_map/sample-map-rosbag 15 | POINTCLOUD_MAP_FILE=pointcloud_map.pcd 16 | 17 | # Planning settings 18 | ENABLE_ALL_MODULES_AUTO_MODE=false 19 | IS_SIMULATION_MODE=true 20 | PLANNING_MODULE_PRESET=default 21 | 22 | # Control settings 23 | CHECK_EXTERNAL_EMERGENCY_HEARTBEAT=false 24 | CONTROL_MODULE_PRESET=default 25 | LATERAL_CONTROLLER_MODE=mpc 26 | LONGITUDINAL_CONTROLLER_MODE=pid 27 | 28 | # Vehicle interface 29 | LAUNCH_VEHICLE_INTERFACE=false 30 | 31 | # System settings 32 | SYSTEM_RUN_MODE=logging_simulation 33 | LAUNCH_SYSTEM_MONITOR=false 34 | LAUNCH_DUMMY_DIAG_PUBLISHER=false 35 | 36 | # Sensing settings 37 | LAUNCH_POINTCLOUD_CONTAINER_SENSING=true 38 | LAUNCH_SENSING_DRIVER=false 39 | 40 | # Perception settings 41 | SENSING_PERCEPTION_IMAGE=ghcr.io/autowarefoundation/autoware:universe-sensing-perception 42 | DATA_PATH=$HOME/autoware_data 43 | LAUNCH_POINTCLOUD_CONTAINER_PERCEPTION=false 44 | LIDAR_DETECTION_MODEL=clustering 45 | OCCUPANCY_GRID_MAP_METHOD=laserscan_based 46 | PERCEPTION_MODE=lidar 47 | 48 | # Simulator settings 49 | INITIAL_ENGAGE_STATE=false 50 | LAUNCH_DUMMY_DOORS=false 51 | LAUNCH_DUMMY_PERCEPTION=false 52 | LAUNCH_DUMMY_VEHICLE=false 53 | LAUNCH_SCENARIO_SIMULATOR_V2_ADAPTER=false 54 | LOCALIZATION_SIM_MODE=none 55 | PERCEPTION_ENABLE_DETECTION_FAILURE=false 56 | PERCEPTION_ENABLE_OBJECT_RECOGNITION=true 57 | PERCEPTION_ENABLE_TRAFFIC_LIGHT=true 58 | PERCEPTION_USE_BASE_LINK_Z=false 59 | SENSING_VISIBLE_RANGE=300.0 60 | USE_POINTCLOUD_CONTAINER=true 61 | 62 | # Visualization settings 63 | REMOTE_DISPLAY=true 64 | RVIZ_CONFIG=/opt/autoware/share/autoware_launch/rviz/autoware.rviz 65 | 66 | # Rosbag settings 67 | ROSBAG_PATH=$HOME/autoware_map/sample-rosbag 68 | ROSBAG_RATE=0.2 69 | ROSBAG_FORMAT=sqlite3 70 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /docker/Dockerfile.base: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE 2 | 3 | # hadolint ignore=DL3006 4 | FROM $BASE_IMAGE AS base 5 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 6 | ARG ROS_DISTRO 7 | 8 | # Copy files 9 | COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env amd64_jazzy.env arm64.env /autoware/ 10 | COPY ansible/ /autoware/ansible/ 11 | COPY docker/scripts/cleanup_apt.sh /autoware/cleanup_apt.sh 12 | RUN chmod +x /autoware/cleanup_apt.sh 13 | COPY docker/scripts/cleanup_system.sh /autoware/cleanup_system.sh 14 | RUN chmod +x /autoware/cleanup_system.sh 15 | WORKDIR /autoware 16 | 17 | # Disable installing suggested and recommended packages 18 | RUN echo 'APT::Install-Recommends "false";' > /etc/apt/apt.conf.d/99-disable-extra-packages; \ 19 | echo 'APT::Install-Suggests "false";' >> /etc/apt/apt.conf.d/99-disable-extra-packages 20 | 21 | # Install apt packages and add GitHub to known hosts for private repositories 22 | RUN rm -f /etc/apt/apt.conf.d/docker-clean \ 23 | && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache 24 | RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ 25 | apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ 26 | gosu \ 27 | ssh \ 28 | && /autoware/cleanup_apt.sh \ 29 | && mkdir -p ~/.ssh \ 30 | && ssh-keyscan github.com >> ~/.ssh/known_hosts 31 | 32 | # Set up base environment 33 | RUN --mount=type=ssh \ 34 | --mount=type=cache,target=/var/cache/apt,sharing=locked \ 35 | ./setup-dev-env.sh -y --module base --no-nvidia --no-cuda-drivers --runtime openadkit --ros-distro $ROS_DISTRO \ 36 | && pipx uninstall ansible \ 37 | && /autoware/cleanup_apt.sh \ 38 | && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc 39 | 40 | # Create entrypoint 41 | COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh 42 | RUN chmod +x /ros_entrypoint.sh 43 | CMD ["/bin/bash"] 44 | 45 | FROM base AS base-cuda 46 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 47 | 48 | # Set up CUDA runtime environment 49 | # hadolint ignore=SC2002,SC2086 50 | RUN --mount=type=ssh \ 51 | ./setup-dev-env.sh -y --module base --no-cuda-drivers --runtime openadkit --ros-distro $ROS_DISTRO \ 52 | && pipx uninstall ansible \ 53 | && /autoware/cleanup_apt.sh true 54 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /.github/workflows/autoware-base.yaml: -------------------------------------------------------------------------------- 1 | name: autoware-base 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - .github/actions/docker-build-and-push-base 9 | - .github/workflows/autoware-base.yaml 10 | - amd64.env 11 | - ansible-galaxy-requirements.yaml 12 | - ansible/playbooks/openadkit.yaml 13 | - ansible/roles/** 14 | - arm64.env 15 | - docker/Dockerfile.base 16 | - docker/etc 17 | - docker/scripts/cleanup_*.sh 18 | - setup-dev-env.sh 19 | schedule: 20 | - cron: 0 0 15 * * # every 15th of the month 21 | workflow_dispatch: 22 | 23 | jobs: 24 | autoware-base: 25 | strategy: 26 | matrix: 27 | platform: [humble, jazzy] 28 | include: 29 | - platform: humble 30 | runner: ubuntu-22.04 31 | env-file: amd64.env 32 | suffix: "" # no suffix for humble since it is default 33 | set-latest: true 34 | - platform: jazzy 35 | runner: ubuntu-24.04 36 | env-file: amd64_jazzy.env 37 | suffix: -jazzy 38 | set-latest: false 39 | runs-on: ${{ matrix.runner }} 40 | steps: 41 | - name: Check out this repository 42 | uses: actions/checkout@v4 43 | 44 | - name: Free disk space 45 | uses: ./.github/actions/free-disk-space 46 | 47 | - name: Set up QEMU 48 | uses: docker/setup-qemu-action@v3 49 | with: # cSpell:ignore tonistiigi, binfmt 50 | image: tonistiigi/binfmt:qemu-v7.0.0 51 | 52 | - name: Load env file 53 | id: load-env 54 | uses: falti/dotenv-action@v1 55 | with: 56 | path: ${{ matrix.env-file }} 57 | export-variables: true 58 | log-variables: true 59 | 60 | - name: Build Autoware's base images 61 | uses: ./.github/actions/docker-build-and-push-base 62 | with: 63 | target-image: autoware-base 64 | build-args: | 65 | *.platform=linux/amd64,linux/arm64 66 | *.args.ROS_DISTRO=${{ steps.load-env.outputs.rosdistro }} 67 | *.args.BASE_IMAGE=${{ steps.load-env.outputs.base_image }} 68 | suffix: ${{ matrix.suffix }} 69 | set-latest: ${{ matrix.set-latest }} 70 | -------------------------------------------------------------------------------- /ansible/roles/docker_engine/README.md: -------------------------------------------------------------------------------- 1 | # docker_engine 2 | 3 | This role installs [Docker Engine](https://docs.docker.com/engine/) following the [installation guide](https://docs.docker.com/engine/install/ubuntu/) and sets up execution from non-root users following the [manual](https://docs.docker.com/engine/install/linux-postinstall/). 4 | 5 | ## Inputs 6 | 7 | None. 8 | 9 | ## Manual Installation 10 | 11 | Install Docker Engine: 12 | 13 | ```bash 14 | # Taken from: https://docs.docker.com/engine/install/ubuntu/ 15 | # And: https://docs.docker.com/engine/install/linux-postinstall/ 16 | 17 | # Uninstall old versions 18 | sudo apt-get remove docker docker-engine docker.io containerd runc 19 | 20 | # Install using the repository 21 | sudo apt-get update 22 | 23 | sudo apt-get install \ 24 | ca-certificates \ 25 | curl \ 26 | gnupg \ 27 | lsb-release 28 | 29 | # Add Docker’s official GPG key: 30 | sudo mkdir -p /etc/apt/keyrings 31 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 32 | 33 | # Use the following command to set up the repository: 34 | echo \ 35 | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ 36 | $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 37 | 38 | # Install Docker Engine 39 | sudo apt-get update 40 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin 41 | 42 | # Verify that Docker Engine is installed correctly by running the hello-world image. 43 | sudo docker run hello-world 44 | # Note: This command downloads a test image and runs it in a container. When the container runs, it prints a message and exits. 45 | ``` 46 | 47 | Perform the post-installation steps: 48 | 49 | ```bash 50 | # Post-installation steps for Linux 51 | 52 | # Create the docker group. 53 | sudo groupadd docker 54 | 55 | # Add your user to the docker group. 56 | sudo usermod -aG docker $USER 57 | 58 | # Log out and log back in so that your group membership is re-evaluated. 59 | 60 | # Verify that you can run docker commands without sudo 61 | docker run hello-world 62 | # Note: This command downloads a test image and runs it in a container. When the container runs, it prints a message and exits. 63 | ``` 64 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/README.md: -------------------------------------------------------------------------------- 1 | # qt5ct_setup Ansible role 2 | 3 | ## Overview 4 | 5 | The `qt5ct_setup` Ansible role automates the configuration of the `qt5ct` environment for Autoware. 6 | It won't affect the system-wide configuration. 7 | 8 | ## Installation 9 | 10 | Follow the instructions below to **install** or **update** the custom theme for `RViz2` in Autoware. 11 | 12 | > **Important:** Both commands must be run when you want to update the theme. 13 | 14 | ```bash 15 | cd ~/autoware # The root directory of the cloned repository 16 | ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" 17 | ansible-playbook autoware.dev_env.install_rviz_theme --ask-become-pass 18 | ``` 19 | 20 | ## How to use the custom theme in RViz2 21 | 22 | To apply a custom theme to RViz2, you can use the `qt5ct` platform theme. Follow these steps to ensure that the `QT_QPA_PLATFORMTHEME` environment variable is set correctly for your RViz2 instance when used with Autoware. 23 | 24 | ### Manual setup for running RViz2 25 | 26 | Before running RViz2 manually, set the `QT_QPA_PLATFORMTHEME` environment variable to `qt5ct`. 27 | This ensures that the custom theme settings are applied. 28 | 29 | ```bash 30 | export QT_QPA_PLATFORMTHEME=qt5ct 31 | ``` 32 | 33 | Then, start RViz2 as usual. 34 | 35 | ```bash 36 | rviz2 37 | ``` 38 | 39 | ### Automatic setup in Autoware 40 | 41 | In Autoware, the `QT_QPA_PLATFORMTHEME` environment variable is automatically set within the main [autoware.launch.xml](https://github.com/autowarefoundation/autoware_launch/blob/main/autoware_launch/launch/autoware.launch.xml) file. 42 | Therefore, you do not need to manually set this environment variable when launching Autoware. 43 | 44 | In the `autoware.launch.xml` file, RViz2 is configured with the following `` element: 45 | 46 | ```xml 47 | 55 | 56 | 57 | ``` 58 | 59 | This configuration automatically sets the `QT_QPA_PLATFORMTHEME` to `qt5ct` when RViz2 is launched as part of Autoware. 60 | It also includes additional options such as respawn behavior and custom RViz2 configurations. 61 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 30 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: Bug 6 | description: Report a bug 7 | body: 8 | - type: checkboxes 9 | attributes: 10 | label: Checklist 11 | description: Confirm the following items before proceeding. If one cannot be satisfied, create a discussion thread instead. 12 | options: 13 | - label: I've read the [contribution guidelines](https://github.com/autowarefoundation/autoware/blob/main/CONTRIBUTING.md). 14 | required: true 15 | - label: I've searched other issues and no duplicate issues were found. 16 | required: true 17 | - label: I'm convinced that this is not my fault but a bug. 18 | required: true 19 | 20 | - type: textarea 21 | attributes: 22 | label: Description 23 | description: Write a brief description of the bug. 24 | validations: 25 | required: true 26 | 27 | - type: textarea 28 | attributes: 29 | label: Expected behavior 30 | description: Describe the expected behavior. 31 | validations: 32 | required: true 33 | 34 | - type: textarea 35 | attributes: 36 | label: Actual behavior 37 | description: Describe the actual behavior. 38 | validations: 39 | required: true 40 | 41 | - type: textarea 42 | attributes: 43 | label: Steps to reproduce 44 | description: Write the steps to reproduce the bug. 45 | placeholder: |- 46 | 1. 47 | 2. 48 | 3. 49 | validations: 50 | required: true 51 | 52 | - type: textarea 53 | attributes: 54 | label: Versions 55 | description: Provide the version information. You can omit this if you believe it's irrelevant. 56 | placeholder: |- 57 | - OS: 58 | - ROS 2: 59 | - Autoware: 60 | validations: 61 | required: false 62 | 63 | - type: textarea 64 | attributes: 65 | label: Possible causes 66 | description: Write the possible causes if you have any ideas. 67 | validations: 68 | required: false 69 | 70 | - type: textarea 71 | attributes: 72 | label: Additional context 73 | description: Add any other additional context if it exists. 74 | validations: 75 | required: false 76 | -------------------------------------------------------------------------------- /.github/workflows/github-release.yaml: -------------------------------------------------------------------------------- 1 | # This file is automatically synced from: 2 | # https://github.com/autowarefoundation/sync-file-templates 3 | # To make changes, update the source repository and follow the guidelines in its README. 4 | 5 | name: github-release 6 | 7 | on: 8 | push: 9 | tags: 10 | - "[0-9]+.[0-9]+.[0-9]+" 11 | workflow_dispatch: 12 | inputs: 13 | tag-name: 14 | description: The name of the tag to release 15 | type: string 16 | required: true 17 | 18 | concurrency: 19 | group: ${{ github.workflow }}-${{ github.ref }} 20 | cancel-in-progress: true 21 | 22 | jobs: 23 | github-release: 24 | runs-on: ubuntu-22.04 25 | steps: 26 | - name: Set tag name 27 | id: set-tag-name 28 | run: | 29 | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then 30 | REF_NAME="${{ github.event.inputs.tag-name }}" 31 | else 32 | REF_NAME="${{ github.ref_name }}" 33 | fi 34 | 35 | echo "tag-name=$REF_NAME" >> $GITHUB_OUTPUT 36 | 37 | - name: Check out repository 38 | uses: actions/checkout@v4 39 | with: 40 | fetch-depth: 0 41 | ref: ${{ steps.set-tag-name.outputs.tag-name }} 42 | 43 | - name: Run generate-changelog 44 | id: generate-changelog 45 | uses: autowarefoundation/autoware-github-actions/generate-changelog@v1 46 | with: 47 | git-cliff-args: --tag-pattern "^(\d+)\.(\d+)\.(\d+)$" --latest 48 | 49 | - name: Select verb 50 | id: select-verb 51 | run: | 52 | has_previous_draft=$(gh release view --json isDraft -q ".isDraft" "${{ steps.set-tag-name.outputs.tag-name }}") || true 53 | 54 | verb=create 55 | if [ "$has_previous_draft" = "true" ]; then 56 | verb=edit 57 | fi 58 | 59 | echo "verb=$verb" >> $GITHUB_OUTPUT 60 | env: 61 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 62 | 63 | - name: Release to GitHub 64 | run: | 65 | gh release ${{ steps.select-verb.outputs.verb }} "${{ steps.set-tag-name.outputs.tag-name }}" \ 66 | --draft \ 67 | --title "${{ steps.set-tag-name.outputs.tag-name }}" \ 68 | --notes "$NOTES" 69 | env: 70 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 71 | NOTES: ${{ steps.generate-changelog.outputs.changelog }} 72 | -------------------------------------------------------------------------------- /ansible/roles/ros2/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Get latest release information of ros-apt-source package 2 | ansible.builtin.uri: 3 | url: https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest 4 | method: GET 5 | return_content: true 6 | register: ros2__ros_apt_release_info 7 | 8 | - name: Extract latest version of ros-apt-source package 9 | ansible.builtin.set_fact: 10 | ros2__ros_apt_source_version: "{{ (ros2__ros_apt_release_info.content | from_json).tag_name }}" 11 | 12 | - name: Save result of 'source /etc/os-release && echo $UBUNTU_CODENAME' 13 | ansible.builtin.shell: bash -c 'source /etc/os-release && echo $UBUNTU_CODENAME' 14 | register: ros2__ubuntu_codename 15 | changed_when: false 16 | 17 | - name: Get ros2-apt-source package 18 | ansible.builtin.get_url: 19 | url: https://github.com/ros-infrastructure/ros-apt-source/releases/download/{{ ros2__ros_apt_source_version }}/ros2-apt-source_{{ ros2__ros_apt_source_version }}.{{ ros2__ubuntu_codename.stdout }}_all.deb 20 | dest: /tmp/ros2-apt-source.deb 21 | mode: "0644" 22 | 23 | - name: Install ros2-apt-source package 24 | ansible.builtin.apt: 25 | deb: /tmp/ros2-apt-source.deb 26 | state: present 27 | become: true 28 | 29 | - name: Delete installed .deb file 30 | ansible.builtin.file: 31 | path: /tmp/ros2-apt-source.deb 32 | state: absent 33 | 34 | - name: Hold check of ros-{{ rosdistro + '-' + ros2_installation_type }} 35 | ansible.builtin.command: apt-mark showhold 36 | register: ros2_held_ros_packages 37 | changed_when: false 38 | 39 | - name: Install ros-{{ rosdistro + '-' + ros2_installation_type }} 40 | become: true 41 | ansible.builtin.apt: 42 | name: ros-{{ rosdistro }}-{{ ros2_installation_type }} 43 | state: latest 44 | update_cache: true 45 | when: "'ros-' + rosdistro + '-' + ros2_installation_type not in ros2_held_ros_packages.stdout" 46 | register: ros2_install_result 47 | failed_when: false 48 | 49 | - name: Display warning if ROS 2 package is held 50 | ansible.builtin.debug: 51 | msg: ROS package 'ros-{{ rosdistro + '-' + ros2_installation_type }}' is apt-mark hold. Skipping installation. 52 | when: not ros2_install_result.changed 53 | 54 | - name: Add PATH to .bashrc 55 | become: true 56 | ansible.builtin.lineinfile: 57 | dest: "{{ item }}" 58 | line: source /opt/ros/{{ rosdistro }}/setup.bash 59 | state: present 60 | create: true 61 | mode: 0644 62 | loop: 63 | - ~/.bashrc 64 | - /etc/skel/.bashrc 65 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /docker/tools/scenario-simulator/Dockerfile: -------------------------------------------------------------------------------- 1 | ### Builder 2 | FROM ghcr.io/autowarefoundation/autoware:universe-devel AS builder 3 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 4 | ARG ROS_DISTRO 5 | ENV CCACHE_DIR="/root/.ccache" 6 | 7 | COPY src/simulator /autoware/src/simulator 8 | COPY docker/scripts/ /autoware/ 9 | RUN chmod +x /autoware/*.sh 10 | WORKDIR /autoware 11 | 12 | # Extract rosdep dependencies for simulator 13 | # hadolint ignore=SC1091 14 | RUN source /opt/autoware/setup.bash \ 15 | && /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} --dependency-types=exec \ 16 | > /rosdep-simulator-exec-depend-packages.txt \ 17 | && cat /rosdep-simulator-exec-depend-packages.txt 18 | 19 | # Install dependencies and build the scenario simulator 20 | # hadolint ignore=SC1091 21 | RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ 22 | apt-get update \ 23 | && source /opt/autoware/setup.bash \ 24 | && rosdep update && rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO \ 25 | && /autoware/cleanup_apt.sh 26 | 27 | # Build the scenario simulator 28 | # hadolint ignore=SC1091 29 | RUN --mount=type=cache,target=${CCACHE_DIR} \ 30 | source /opt/autoware/setup.bash \ 31 | && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware \ 32 | && find /opt/autoware/lib -type f -name "*.py" -exec chmod +x {} \; \ 33 | && find /opt/autoware/share -type f -name "*.py" -exec chmod +x {} \; 34 | 35 | ### Scenario Simulator 36 | FROM ghcr.io/autowarefoundation/autoware:universe AS scenario-simulator 37 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 38 | ARG ROS_DISTRO 39 | ARG LIB_DIR 40 | 41 | COPY --from=builder /opt/autoware /opt/autoware 42 | COPY --from=builder /rosdep-simulator-exec-depend-packages.txt /tmp/rosdep-simulator-exec-depend-packages.txt 43 | 44 | # hadolint ignore=SC2002 45 | RUN --mount=type=ssh \ 46 | --mount=type=cache,target=/var/cache/apt,sharing=locked \ 47 | apt-get update \ 48 | # Remove xmlschema and yamale from rosdep packages since we install via pip 49 | && sed -i '/\(xmlschema\|yamale\)/d' /tmp/rosdep-simulator-exec-depend-packages.txt \ 50 | && pip3 install --no-cache-dir yamale \ 51 | && pip3 install --no-cache-dir xmlschema==3.4.5 \ 52 | && cat /tmp/rosdep-simulator-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ 53 | && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO 54 | 55 | COPY docker/tools/scenario-simulator/entrypoint.sh /entrypoint.sh 56 | RUN chmod +x /entrypoint.sh 57 | ENTRYPOINT ["/entrypoint.sh"] 58 | -------------------------------------------------------------------------------- /.github/workflows/update-tool-versions.yaml: -------------------------------------------------------------------------------- 1 | name: update-tool-versions 2 | 3 | on: 4 | schedule: 5 | - cron: 0 0 * * * 6 | workflow_dispatch: 7 | 8 | jobs: 9 | update-tool-versions: 10 | runs-on: ubuntu-22.04 11 | steps: 12 | - name: Generate token 13 | id: generate-token 14 | uses: tibdex/github-app-token@v2 15 | with: 16 | app_id: ${{ secrets.APP_ID }} 17 | private_key: ${{ secrets.PRIVATE_KEY }} 18 | 19 | - name: Check out repository 20 | uses: actions/checkout@v4 21 | 22 | - name: Set up sd 23 | uses: kenji-miyake/setup-sd@v2 24 | 25 | - name: Get clang-format version 26 | id: get-clang-format-version 27 | run: | 28 | function get-latest-pip-version() { 29 | pip index versions "$1" 2>/dev/null | head -n1 | sd '.*\((.*)\)' '$1' 30 | } 31 | 32 | echo "version=$(get-latest-pip-version clang-format)" >> $GITHUB_OUTPUT 33 | env: 34 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 35 | 36 | - name: Update clang-format version 37 | run: | 38 | sd '(pre_commit_clang_format_version): .*' '$1: ${{ steps.get-clang-format-version.outputs.version }}' ansible/roles/pre_commit/defaults/main.yaml 39 | sd '(pre_commit_clang_format_version)=.*' '$1=${{ steps.get-clang-format-version.outputs.version }}' ansible/roles/pre_commit/README.md 40 | 41 | - name: Create PR 42 | id: create-pr 43 | uses: peter-evans/create-pull-request@v7 44 | with: 45 | token: ${{ steps.generate-token.outputs.token }} 46 | base: ${{ github.event.repository.default_branch }} 47 | branch: update-tool-versions 48 | title: "chore: update tool versions" 49 | commit-message: "chore: update tool versions" 50 | body: "" 51 | labels: | 52 | tag:bot 53 | tag:update-tool-versions 54 | signoff: true 55 | delete-branch: true 56 | 57 | - name: Check outputs 58 | run: | 59 | echo "Pull Request Number - ${{ steps.create-pr.outputs.pull-request-number }}" 60 | echo "Pull Request URL - ${{ steps.create-pr.outputs.pull-request-url }}" 61 | shell: bash 62 | 63 | - name: Enable auto-merge 64 | if: ${{ steps.create-pr.outputs.pull-request-operation == 'created' }} 65 | run: gh pr merge --squash --auto "${{ steps.create-pr.outputs.pull-request-number }}" 66 | env: 67 | GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} 68 | -------------------------------------------------------------------------------- /ansible/playbooks/openadkit.yaml: -------------------------------------------------------------------------------- 1 | - name: Set up source development environments for Autoware Universe 2 | hosts: localhost 3 | connection: local 4 | pre_tasks: 5 | - name: Verify OS 6 | ansible.builtin.fail: 7 | msg: Only Ubuntu 22.04 and 24.04 are supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. 8 | when: ansible_distribution != 'Ubuntu' or (ansible_distribution_version != '22.04' and ansible_distribution_version != '24.04') 9 | 10 | - name: Print args 11 | ansible.builtin.debug: 12 | msg: 13 | - module: "{{ module }}" 14 | - rosdistro: "{{ rosdistro }}" 15 | - rmw_implementation: "{{ rmw_implementation }}" 16 | - cuda_version: "{{ cuda_version }}" 17 | - cudnn_version: "{{ cudnn_version }}" 18 | - tensorrt_version: "{{ tensorrt_version }}" 19 | roles: 20 | # Autoware base dependencies 21 | - role: autoware.dev_env.rmw_implementation 22 | when: module == 'base' 23 | vars: 24 | rmw_implementation__rosdistro: "{{ rosdistro }}" 25 | rmw_implementation__name: "{{ rmw_implementation }}" 26 | - role: autoware.dev_env.gdown 27 | when: module == 'base' 28 | - role: autoware.dev_env.kisak_mesa 29 | when: module == 'base' and rosdistro != 'jazzy' 30 | - role: autoware.dev_env.pacmod 31 | when: module == 'base' and rosdistro != 'jazzy' 32 | - role: autoware.dev_env.build_tools 33 | when: module == 'all' and install_devel=='y' 34 | 35 | # Module specific dependencies 36 | - role: autoware.dev_env.geographiclib 37 | when: module == 'perception-localization' or module == 'all' 38 | - role: autoware.dev_env.cuda 39 | when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' 40 | - role: autoware.dev_env.tensorrt 41 | when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' 42 | - role: autoware.dev_env.spconv 43 | when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' 44 | 45 | # Development environment 46 | - role: autoware.dev_env.dev_tools 47 | when: module == 'dev-tools' 48 | - role: autoware.dev_env.ros2_dev_tools 49 | when: module == 'dev-tools' 50 | 51 | # ONNX files and other artifacts 52 | - role: autoware.dev_env.artifacts 53 | when: prompt_download_artifacts == 'y' 54 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /ansible/roles/qt5ct_setup/tasks/main.yml: -------------------------------------------------------------------------------- 1 | - name: Install qt5ct 2 | ansible.builtin.apt: 3 | name: qt5ct 4 | state: present 5 | become: true 6 | 7 | - name: Install rsync 8 | ansible.builtin.package: 9 | name: rsync 10 | state: present 11 | become: true 12 | 13 | - name: Remove qt5ct from auto-start 14 | ansible.builtin.file: 15 | path: /etc/X11/Xsession.d/99qt5ct 16 | state: absent 17 | become: true 18 | 19 | - name: Set variable qt5ct_setup_config_dir 20 | ansible.builtin.set_fact: 21 | qt5ct_setup_config_dir: "{{ ansible_env.HOME }}/.config/qt5ct" 22 | 23 | - name: Ensure qt5ct_setup_config_dir exists 24 | ansible.builtin.file: 25 | path: "{{ qt5ct_setup_config_dir }}" 26 | state: directory 27 | mode: "0755" 28 | 29 | - name: Print the role_path 30 | ansible.builtin.debug: 31 | msg: "The role_path is: {{ role_path }}" 32 | 33 | - name: Set qt5ct_setup_icons_path variable 34 | ansible.builtin.set_fact: 35 | qt5ct_setup_icons_path: "{{ qt5ct_setup_config_dir }}/autoware-rviz-icons" 36 | 37 | - name: Remove autoware-rviz-icons folder if it exists 38 | ansible.builtin.file: 39 | path: "{{ qt5ct_setup_icons_path }}" 40 | state: absent 41 | 42 | # Replace rsync with synchronize which is an ansible wrapper for rsync 43 | - name: Copy autoware-rviz-icons to the qt5ct config directory 44 | ansible.posix.synchronize: 45 | src: "{{ role_path }}/files/autoware-rviz-icons/" 46 | dest: "{{ qt5ct_setup_icons_path }}/" 47 | mode: push 48 | 49 | - name: Fix the paths in the qss file 50 | ansible.builtin.replace: 51 | path: "{{ role_path }}/files/autoware.qss" 52 | regexp: /icons_path/ 53 | replace: "{{ qt5ct_setup_icons_path }}/" 54 | 55 | - name: Ensure qt5ct_setup_config_dir/qss exists 56 | ansible.builtin.file: 57 | path: "{{ qt5ct_setup_config_dir }}/qss" 58 | state: directory 59 | mode: "0755" 60 | 61 | - name: Copy autoware.qss to the qt5ct qss directory 62 | ansible.builtin.copy: 63 | src: "{{ role_path }}/files/autoware.qss" 64 | dest: "{{ qt5ct_setup_config_dir }}/qss/autoware.qss" 65 | force: true 66 | backup: true 67 | mode: "0644" 68 | 69 | - name: Fix the paths in the config file 70 | ansible.builtin.replace: 71 | path: "{{ role_path }}/files/qt5ct.conf" 72 | regexp: autoware_stylesheet_path 73 | replace: "{{ qt5ct_setup_config_dir }}/qss/autoware.qss" 74 | 75 | - name: Copy qt5ct.conf to the config directory 76 | ansible.builtin.copy: 77 | src: "{{ role_path }}/files/qt5ct.conf" 78 | dest: "{{ ansible_env.HOME }}/.config/qt5ct/qt5ct.conf" 79 | force: true 80 | backup: true 81 | mode: "0644" 82 | -------------------------------------------------------------------------------- /docker/tools/scenario-simulator/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # cspell:ignore 3 | # shellcheck disable=SC1090,SC1091 4 | 5 | run_scenario_simulator() { 6 | echo -e "\e[32mRunning scenario simulator...\e[0m" 7 | 8 | # Prompt if no scenario is provided 9 | if [ -z "$SCENARIO" ]; then 10 | echo -e "\e[33mNo scenario provided, using default sample scenario...\e[0m" 11 | fi 12 | 13 | # Set default values if not provided 14 | LAUNCH_AUTOWARE=${LAUNCH_AUTOWARE:-false} 15 | LAUNCH_RVIZ=${LAUNCH_RVIZ:-false} 16 | ARCHITECTURE_TYPE=${ARCHITECTURE_TYPE:-awf/universe/20240605} 17 | SENSOR_MODEL=${SENSOR_MODEL:-sample_sensor_kit} 18 | VEHICLE_MODEL=${VEHICLE_MODEL:-sample_vehicle} 19 | INITIALIZE_DURATION=${INITIALIZE_DURATION:-90} 20 | GLOBAL_FRAME_RATE=${GLOBAL_FRAME_RATE:-30} 21 | OUTPUT_DIRECTORY=${OUTPUT_DIRECTORY:-/autoware/scenario-sim/output} 22 | SCENARIO=${SCENARIO:-$(ros2 pkg prefix --share scenario_test_runner)/scenario/sample.yaml} 23 | GLOBAL_TIMEOUT=${GLOBAL_TIMEOUT:-120} 24 | RECORD=${RECORD:-false} 25 | USE_SIM_TIME=${USE_SIM_TIME:-false} 26 | 27 | # Print all variables 28 | echo "LAUNCH_AUTOWARE: $LAUNCH_AUTOWARE" 29 | echo "LAUNCH_RVIZ: $LAUNCH_RVIZ" 30 | echo "ARCHITECTURE_TYPE: $ARCHITECTURE_TYPE" 31 | echo "SENSOR_MODEL: $SENSOR_MODEL" 32 | echo "VEHICLE_MODEL: $VEHICLE_MODEL" 33 | echo "INITIALIZE_DURATION: $INITIALIZE_DURATION" 34 | echo "GLOBAL_FRAME_RATE: $GLOBAL_FRAME_RATE" 35 | echo "OUTPUT_DIRECTORY: $OUTPUT_DIRECTORY" 36 | echo "SCENARIO: $SCENARIO" 37 | echo "GLOBAL_TIMEOUT: $GLOBAL_TIMEOUT" 38 | echo "RECORD: $RECORD" 39 | echo "USE_SIM_TIME: $USE_SIM_TIME" 40 | 41 | # Launch scenario test runner 42 | ros2 launch scenario_test_runner scenario_test_runner.launch.py \ 43 | launch_autoware:="$LAUNCH_AUTOWARE" \ 44 | launch_rviz:="$LAUNCH_RVIZ" \ 45 | architecture_type:="$ARCHITECTURE_TYPE" \ 46 | sensor_model:="$SENSOR_MODEL" \ 47 | vehicle_model:="$VEHICLE_MODEL" \ 48 | initialize_duration:="$INITIALIZE_DURATION" \ 49 | global_frame_rate:="$GLOBAL_FRAME_RATE" \ 50 | output_directory:="$OUTPUT_DIRECTORY" \ 51 | scenario:="$SCENARIO" \ 52 | global_timeout:="$GLOBAL_TIMEOUT" \ 53 | record:="$RECORD" \ 54 | use_sim_time:="$USE_SIM_TIME" 55 | } 56 | 57 | # Source ROS and Autoware setup files 58 | source "/opt/ros/$ROS_DISTRO/setup.bash" 59 | source "/opt/autoware/setup.bash" 60 | 61 | # Execute passed command if provided, otherwise run scenario simulator 62 | if [ $# -gt 0 ]; then 63 | exec "$@" 64 | else 65 | run_scenario_simulator 66 | fi 67 | -------------------------------------------------------------------------------- /.github/workflows/load-env.yaml: -------------------------------------------------------------------------------- 1 | name: load-env 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | env_file: 7 | description: Specify the env file to load (e.g., amd64.env, amd64_jazzy.env) 8 | required: false 9 | type: string 10 | default: "" 11 | outputs: 12 | rosdistro: 13 | value: ${{ jobs.load-env.outputs.rosdistro }} 14 | base_image: 15 | value: ${{ jobs.load-env.outputs.base_image }} 16 | autoware_base_image: 17 | value: ${{ jobs.load-env.outputs.autoware_base_image }} 18 | autoware_base_cuda_image: 19 | value: ${{ jobs.load-env.outputs.autoware_base_cuda_image }} 20 | 21 | jobs: 22 | load-env: 23 | runs-on: ubuntu-22.04 24 | outputs: 25 | rosdistro: ${{ steps.set-env.outputs.rosdistro }} 26 | base_image: ${{ steps.set-env.outputs.base_image }} 27 | autoware_base_image: ${{ steps.set-env.outputs.autoware_base_image }} 28 | autoware_base_cuda_image: ${{ steps.set-env.outputs.autoware_base_cuda_image }} 29 | steps: 30 | - name: Check out repository 31 | uses: actions/checkout@v4 32 | 33 | - name: Load env 34 | run: | 35 | # Check if env_file is specified 36 | if [ -n "${{ inputs.env_file }}" ]; then 37 | # Use specified env file 38 | echo "Loading specified env file: ${{ inputs.env_file }}" 39 | cat ${{ inputs.env_file }} | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV 40 | else 41 | # Auto-detect based on ROS_DISTRO 42 | rosdistro=${ROS_DISTRO:-humble} 43 | echo "rosdistro=$rosdistro" >> $GITHUB_ENV 44 | 45 | # Determine which env file to use based on rosdistro 46 | if [ "$rosdistro" = "humble" ]; then 47 | echo "Loading amd64.env for Humble" 48 | cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV 49 | else 50 | echo "Loading amd64_jazzy.env for Jazzy" 51 | cat amd64_jazzy.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV 52 | fi 53 | fi 54 | 55 | # Load ARM64 specific env if on ARM64 architecture 56 | if [ "$(uname -m)" = "aarch64" ]; then 57 | echo "Loading arm64.env for ARM64 architecture" 58 | cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV 59 | fi 60 | 61 | - name: Set env 62 | id: set-env 63 | run: | 64 | echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT 65 | echo "base_image=${{ env.base_image }}" >> $GITHUB_OUTPUT 66 | echo "autoware_base_image=${{ env.autoware_base_image }}" >> $GITHUB_OUTPUT 67 | echo "autoware_base_cuda_image=${{ env.autoware_base_cuda_image }}" >> $GITHUB_OUTPUT 68 | -------------------------------------------------------------------------------- /.github/actions/docker-build-and-push-base/action.yaml: -------------------------------------------------------------------------------- 1 | name: docker-build-and-push-base 2 | description: Composite action to build and push base images to registry. 3 | 4 | inputs: 5 | target-image: 6 | description: Target docker image name in the registry. 7 | required: true 8 | build-args: 9 | description: Additional build args. 10 | required: false 11 | max-parallelism: 12 | default: 2 13 | description: Maximum parallelism for buildkitd. 14 | required: false 15 | set-latest: 16 | description: Whether to set the latest flavor for images. 17 | required: false 18 | default: true 19 | suffix: 20 | description: Suffix for image tags. 21 | required: false 22 | default: "" 23 | 24 | runs: 25 | using: composite 26 | steps: 27 | - name: Setup Docker Buildx 28 | uses: docker/setup-buildx-action@v3 29 | with: 30 | buildkitd-config-inline: | 31 | [worker.oci] 32 | max-parallelism = ${{ inputs.max-parallelism }} 33 | install: true 34 | 35 | - name: Get current date 36 | id: date 37 | run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT 38 | shell: bash 39 | 40 | - name: Docker meta for autoware-base:latest 41 | id: meta-base 42 | uses: docker/metadata-action@v5 43 | with: 44 | images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} 45 | tags: | 46 | type=raw,value=${{ steps.date.outputs.date }}${{ inputs.suffix }} 47 | type=raw,value=latest${{ inputs.suffix }} 48 | bake-target: docker-metadata-action-base 49 | flavor: | 50 | latest=${{ inputs.set-latest }} 51 | 52 | - name: Docker meta for autoware-base:cuda-latest 53 | id: meta-base-cuda 54 | uses: docker/metadata-action@v5 55 | with: 56 | images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} 57 | tags: | 58 | type=raw,value=cuda-latest${{ inputs.suffix }} 59 | type=raw,value=cuda-${{ steps.date.outputs.date }}${{ inputs.suffix }} 60 | bake-target: docker-metadata-action-base-cuda 61 | flavor: | 62 | latest=false 63 | 64 | - name: Login to GitHub Container Registry 65 | uses: docker/login-action@v3 66 | with: 67 | registry: ghcr.io 68 | username: ${{ github.repository_owner }} 69 | password: ${{ github.token }} 70 | 71 | - name: Build and Push to GitHub Container Registry 72 | uses: docker/bake-action@v5 73 | with: 74 | push: true 75 | files: | 76 | docker/docker-bake-base.hcl 77 | ${{ steps.meta-base.outputs.bake-file }} 78 | ${{ steps.meta-base-cuda.outputs.bake-file }} 79 | provenance: false 80 | set: | 81 | ${{ inputs.build-args }} 82 | -------------------------------------------------------------------------------- /ansible/roles/artifacts/README.md: -------------------------------------------------------------------------------- 1 | # Autoware artifacts 2 | 3 | The Autoware perception stack uses models for inference. These models are automatically downloaded as part of the `setup-dev-env.sh` script. 4 | 5 | The models are hosted by Web.Auto. 6 | 7 | Default `data_dir` location is `~/autoware_data`. 8 | 9 | ## Download instructions 10 | 11 | ### Check out to the correct commit hash if necessary 12 | 13 | First check this chart if you need to change your current commit hash. 14 | 15 | ```mermaid 16 | graph TD 17 | cond1{{What is your current commit hash?}} 18 | --> option_release_branch(A release tag) 19 | cond1 --> opt2(main branch) 20 | opt2 --> cond2{{Did you pull `autoware-nightly.repos`?}} 21 | --> option_nightly(Yes) 22 | cond2 --> option_autoware_main(No, I only pulled the `autoware.repos`.) 23 | 24 | option_release_branch --> final_normal(((No need to change the commit hash, keep following the rest of the instructions. ✅))) 25 | option_nightly --> final_normal 26 | option_autoware_main --> final_change(((Switch to the latest release tag. 🔄))) 27 | 28 | %% Define styles 29 | classDef conditional fill:#FFF3CD,stroke:#FFB100,stroke-width:2px,color:#000,font-weight:bold; 30 | classDef final_normal fill:#D4EDDA,stroke:#28A745,stroke-width:2px,color:#000,font-weight:bold; 31 | classDef final_change fill:#F8D7DA,stroke:#DC3545,stroke-width:2px,color:#000,font-weight:bold; 32 | classDef neutral fill:#F0F0F0,stroke:#B0B0B0,stroke-width:2px,color:#000,font-weight:normal; 33 | 34 | %% Apply classes 35 | class cond1,cond2 conditional; 36 | class final_normal final_normal; 37 | class final_change final_change; 38 | class option_release_branch,opt2,option_nightly,option_autoware_main neutral; 39 | ``` 40 | 41 | If you need to switch to the latest tag, run the following commands: 42 | 43 | ```bash 44 | cd ~/autoware 45 | git fetch --tags && git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) 46 | ``` 47 | 48 | Once you've downloaded the artifacts, you can switch back to your desired branch or commit hash. 49 | 50 | ### Requirements 51 | 52 | Install ansible following the instructions in the [ansible installation guide](../../README.md#ansible-installation). 53 | 54 | ### Download artifacts 55 | 56 | #### Install ansible collections 57 | 58 | ```bash 59 | cd ~/autoware # The root directory of the cloned repository 60 | ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" 61 | ``` 62 | 63 | This step should be repeated when a new playbook is added. 64 | 65 | #### Run the playbook 66 | 67 | ```bash 68 | ansible-playbook autoware.dev_env.download_artifacts -e "data_dir=$HOME/autoware_data" --ask-become-pass 69 | ``` 70 | 71 | This will download and extract the artifacts to the specified directory and validate the checksums. 72 | -------------------------------------------------------------------------------- /ansible/roles/docker_engine/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | - name: Uninstall old versions 2 | become: true 3 | ansible.builtin.apt: 4 | name: 5 | - docker 6 | - docker-engine 7 | - docker.io 8 | - containerd 9 | - runc 10 | state: absent 11 | update_cache: true 12 | 13 | - name: Install dependencies for setting up apt sources 14 | become: true 15 | ansible.builtin.apt: 16 | name: 17 | - ca-certificates 18 | - curl 19 | - gnupg 20 | - lsb-release 21 | update_cache: true 22 | 23 | # sudo mkdir -p /etc/apt/keyrings 24 | - name: Create the directory for keyrings 25 | become: true 26 | ansible.builtin.file: 27 | state: directory 28 | path: /etc/apt/keyrings 29 | mode: 0755 30 | 31 | # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 32 | - name: Authorize Docker GPG key 33 | become: true 34 | ansible.builtin.apt_key: 35 | url: https://download.docker.com/linux/ubuntu/gpg 36 | keyring: /etc/apt/keyrings/docker.gpg 37 | 38 | - name: Save result of 'dpkg --print-architecture' 39 | ansible.builtin.command: dpkg --print-architecture 40 | register: docker_engine__deb_architecture 41 | changed_when: false 42 | 43 | - name: Save result of 'lsb_release -cs' 44 | ansible.builtin.command: lsb_release -cs 45 | register: docker_engine__lsb_release_cs 46 | changed_when: false 47 | 48 | - name: Save result of 'lsb_release -is' 49 | ansible.builtin.command: lsb_release -is 50 | register: docker_engine__lsb_release_is 51 | changed_when: false 52 | 53 | # echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 54 | - name: Add Docker apt repository to source list 55 | become: true 56 | ansible.builtin.apt_repository: 57 | repo: deb [arch={{ docker_engine__deb_architecture.stdout }} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/{{ docker_engine__lsb_release_is.stdout | lower }} {{ docker_engine__lsb_release_cs.stdout }} stable 58 | filename: docker 59 | state: present 60 | update_cache: true 61 | 62 | - name: Install Docker Engine 63 | become: true 64 | ansible.builtin.apt: 65 | name: 66 | - docker-ce 67 | - docker-ce-cli 68 | - containerd.io 69 | - docker-compose-plugin 70 | update_cache: true 71 | 72 | # sudo groupadd docker 73 | - name: Add docker group 74 | become: true 75 | ansible.builtin.group: 76 | name: docker 77 | state: present 78 | 79 | # sudo usermod -aG docker $USER 80 | - name: Add user to docker group 81 | become: true 82 | ansible.builtin.user: 83 | name: "{{ ansible_user_id }}" 84 | groups: docker 85 | append: true 86 | --------------------------------------------------------------------------------