diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..d9aa52060 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.*/ +docker/ diff --git a/docker/.github/workflows/ros-docker-image.yaml b/.github/workflows/build-docker.yaml similarity index 68% rename from docker/.github/workflows/ros-docker-image.yaml rename to .github/workflows/build-docker.yaml index 7152f1e3a..412b7c574 100644 --- a/docker/.github/workflows/ros-docker-image.yaml +++ b/.github/workflows/build-docker.yaml @@ -1,19 +1,36 @@ --- -name: Build/Publish ROS Docker Image +name: Build Docker on: - workflow_dispatch: + workflow_call: inputs: - panther_codebase_version: - description: Version of the panther_ros to be used in the docker image (branch/tag/commit). + build_type: + description: Is it a "development" or a "stable" release? required: true type: string - default: ros2-devel + default: development + target_distro: + description: In case of "stable" release specify the ROS distro of the existing docker image (eg. + humble) + type: string + default: humble + target_release: + description: In case of "stable" release specify the version of the existing docker image (eg. + 1.0.12) + type: string + default: 0.0.0 + target_date: + description: In case of "stable" release specify the date of the existing docker image in format + YYYYMMDD (eg. 20220124) + type: string + default: '20131206' + workflow_dispatch: + inputs: build_type: description: Is it a "development" or a "stable" release? required: true - default: development type: choice + default: development options: - development - stable @@ -32,12 +49,6 @@ on: YYYYMMDD (eg. 20220124) type: string default: '20131206' - feature_branch_tag_suffix: - description: In case of "development" release from a feature branch specify the custom tag suffix - for the docker image - type: string - default: '' - jobs: build: runs-on: ubuntu-22.04 @@ -45,17 +56,17 @@ jobs: fail-fast: false matrix: include: - - dockerfile: Dockerfile.hardware + - dockerfile: ./docker/Dockerfile.hardware platforms: linux/arm64 ros_distro: humble - - dockerfile: Dockerfile.simulation + - dockerfile: ./docker/Dockerfile.simulation repo_name: panther-gazebo platforms: linux/amd64 ros_distro: humble steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Build Docker Image uses: husarion-ci/ros-docker-img-action@v0.8 @@ -65,7 +76,6 @@ jobs: main_branch_name: ros2 dockerfile: ${{ matrix.dockerfile }} repo_name: ${{ matrix.repo_name }} - branch_name: ${{ inputs.panther_codebase_version }} build_type: ${{ inputs.build_type }} ros_distro: ${{ matrix.ros_distro }} platforms: ${{ matrix.platforms }} @@ -73,5 +83,3 @@ jobs: target_distro: ${{ inputs.target_distro }} target_release: ${{ inputs.target_release }} target_date: ${{ inputs.target_date }} - # variables important only for development release - feature_branch_tag_suffix: ${{ inputs.feature_branch_tag_suffix }} diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 08f7311e1..26c281bf7 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -1,5 +1,5 @@ --- -name: Pre-Commit +name: Pre-commit on: push: diff --git a/.github/workflows/protect-default-branch.yaml b/.github/workflows/protect-default-branch.yaml index 678daebe9..be86e630c 100644 --- a/.github/workflows/protect-default-branch.yaml +++ b/.github/workflows/protect-default-branch.yaml @@ -1,5 +1,5 @@ --- -name: Validate PR head branch +name: Protect Default Branch on: pull_request: branches: diff --git a/.github/workflows/release-candidate.yaml b/.github/workflows/release-candidate.yaml index b06bddd69..e71f6cf94 100644 --- a/.github/workflows/release-candidate.yaml +++ b/.github/workflows/release-candidate.yaml @@ -1,5 +1,5 @@ --- -name: Release candidate +name: Release Candidate on: workflow_dispatch: @@ -15,121 +15,90 @@ env: RC_BRANCH_NAME: ${{ github.event.inputs.version }}-${{ github.event.inputs.date }} jobs: - check_docs: - name: Check docs build + docs: + name: Docs runs-on: ubuntu-22.04 steps: - - name: Trigger repository build workflow - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Check docs build + uses: convictional/trigger-workflow-and-wait@v1.6.5 with: owner: husarion repo: docs_new - github_token: ${{ secrets.GH_PAT }} - workflow_file_name: test-release.yml + github_token: ${{ secrets.RAFAL_ACCESS_TOKEN }} + workflow_file_name: parser-test.yaml ref: master client_payload: '{"husarion_ugv_branch": "ros2-devel"}' - # TODO: Add unit testing for panther_ros when ready - unit_test_panther_ros: - name: Run unit tests for panther_ros + # TODO: Add unit testing when ready + unit_tests: + name: Unit tests runs-on: ubuntu-22.04 steps: - - name: Trigger repository build workflow - run: echo "Unit tests for panther_ros are not fully implemented yet -> SKIPPING!" + - name: Run unit tests + run: echo "Unit tests are not fully implemented yet -> SKIPPING!" - create_release_candidate_branches: - name: Create release candidate branches + docker: + name: Docker + needs: unit_tests runs-on: ubuntu-22.04 - needs: - - unit_test_panther_ros - strategy: - matrix: - repo: [panther_ros, panther-docker, panther-rpi-os-img] steps: - - name: Create test branch - uses: GuillaumeFalourd/create-other-repo-branch-action@v1.5 + - name: Checkout + uses: actions/checkout@v4 + + - name: Update docker image tag + run: | + sed -i 's/\(husarion\/panther:humble-\)[^[:space:]]*/\1${{ env.RC_BRANCH_NAME }}/g' docker/demo/compose.hardware.yaml + sed -i 's/\(husarion\/panther:humble-\)[^[:space:]]*/\1${{ env.RC_BRANCH_NAME }}/g' docker/demo/compose.rviz.yaml + sed -i 's/\(husarion\/panther-gazebo:humble-\)[^[:space:]]*/\1${{ env.RC_BRANCH_NAME }}/g' docker/demo/compose.simulation.yaml + + - name: Commit changes + uses: EndBug/add-and-commit@v9 with: - repository_owner: husarion - repository_name: ${{ matrix.repo }} - new_branch_name: ${{ env.RC_BRANCH_NAME }} - new_branch_ref: ros2-devel - access_token: ${{ secrets.GH_PAT}} + message: Update tags in compose files + author_name: action-bot + author_email: action-bot@action-bot.com + new_branch: ${{ env.RC_BRANCH_NAME }} - update_tags_in_compose: - name: Update Docker image tags in compose - runs-on: ubuntu-22.04 - needs: - - create_release_candidate_branches - steps: - - name: Trigger repository build workflow - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Build Docker + uses: ./.github/workflows/build-docker.yaml with: - owner: husarion - repo: panther-docker - github_token: ${{ secrets.GH_PAT }} - workflow_file_name: update-tags-in-compose.yaml - ref: ${{ env.RC_BRANCH_NAME }} - client_payload: | - { - "branch_name": "${{ env.RC_BRANCH_NAME }}", - "image_tag": "humble-${{ env.RC_BRANCH_NAME }}" - } + build_type: development - build_and_push_docker_images: - name: Build panther docker images + os_image: + name: OS image + needs: docker runs-on: ubuntu-22.04 - needs: - - update_tags_in_compose steps: - - name: Trigger repository build workflow - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Create new branch + uses: GuillaumeFalourd/create-other-repo-branch-action@v1.5 with: - owner: husarion - repo: panther-docker - github_token: ${{ secrets.GH_PAT }} - workflow_file_name: ros-docker-image.yaml - ref: ${{ env.RC_BRANCH_NAME }} - client_payload: | - { - "panther_codebase_version": "${{ env.RC_BRANCH_NAME }}", - "build_type": "development", - "target_distro": "humble" - } + repository_owner: husarion + repository_name: panther-rpi-os-img + new_branch_name: ${{ env.RC_BRANCH_NAME }} + new_branch_ref: ros2-devel + access_token: ${{ secrets.RAFAL_ACCESS_TOKEN}} - build_and_publish_rpi_image: - name: Build panther system image - needs: - - update_tags_in_compose - runs-on: ubuntu-22.04 - steps: - - name: Trigger repository build workflow - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Build OS image + uses: convictional/trigger-workflow-and-wait@v1.6.5 with: owner: husarion repo: panther-rpi-os-img - github_token: ${{ secrets.GH_PAT }} + github_token: ${{ secrets.RAFAL_ACCESS_TOKEN }} workflow_file_name: build_and_deploy_image.yaml ref: ${{ env.RC_BRANCH_NAME }} client_payload: | { "dev_image": "true", - "panther_codebase_version": "${{ env.RC_BRANCH_NAME }}", + "husarion_ugv_version": "${{ env.RC_BRANCH_NAME }}", "image_tag": "${{ github.event.inputs.version }}" } - build_and_publish_rpi_flash_os_image: - name: Build panther flash OS image - if: ${{ fromJSON(github.event.inputs.automatic_mode) == true }} - needs: - - build_and_publish_rpi_image - runs-on: ubuntu-22.04 - steps: - - name: Trigger repository build workflow - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Build flash OS image + uses: convictional/trigger-workflow-and-wait@v1.6.5 with: owner: husarion repo: panther-rpi-os-img - github_token: ${{ secrets.GH_PAT }} + github_token: ${{ secrets.RAFAL_ACCESS_TOKEN }} workflow_file_name: build_and_deploy_flash_os_image.yaml ref: ${{ env.RC_BRANCH_NAME }} client_payload: | diff --git a/.github/workflows/release-project.yaml b/.github/workflows/release-project.yaml index cc4307e05..da6df49cb 100644 --- a/.github/workflows/release-project.yaml +++ b/.github/workflows/release-project.yaml @@ -1,5 +1,5 @@ --- -name: Release project +name: Release Project on: workflow_dispatch: @@ -31,64 +31,29 @@ env: jobs: release_project: - name: Release Husarion UGV project + name: Release project runs-on: ubuntu-22.04 steps: - - name: Release panther_ros repository - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Release repository + uses: ./.github/workflows/release-repository.yaml with: - owner: husarion - repo: panther_ros - github_token: ${{ secrets.GITHUB_TOKEN }} # Use the default GITHUB_TOKEN for local repository - workflow_file_name: release-repository.yaml - ref: ${{ env.RC_BRANCH_NAME }} - client_payload: | - { - "release_candidate": "${{ env.RC_BRANCH_NAME }}", - "version": "${{ github.event.inputs.version }}", - "release_name": "${{ github.event.inputs.release_name }}", - "automatic_mode": "${{ github.event.inputs.automatic_mode }}", - "prerelease": "${{ github.event.inputs.prerelease }}" - } + release_candidate: ${{ env.RC_BRANCH_NAME }} + version: ${{ github.event.inputs.version }} + release_name: ${{ github.event.inputs.release_name }} + automatic_mode: ${{ github.event.inputs.automatic_mode }} + prerelease: ${{ github.event.inputs.prerelease }} - - name: Rebuild panther docker images with new version - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Build Docker with new version + uses: ./.github/workflows/build-docker.yaml with: - owner: husarion - repo: panther-docker - github_token: ${{ secrets.GH_PAT }} - workflow_file_name: ros-docker-image.yaml - ref: ${{ env.RC_BRANCH_NAME }} - client_payload: | - { - "panther_codebase_version": "${{ github.event.inputs.version }}", - "build_type": "development", - "target_distro": "humble" - } - - - name: Release panther-docker repository - uses: convictional/trigger-workflow-and-wait@v1.6.1 - with: - owner: husarion - repo: panther-docker - github_token: ${{ secrets.GH_PAT }} - workflow_file_name: release-repository.yaml - ref: ${{ env.RC_BRANCH_NAME }} - client_payload: | - { - "release_candidate": "${{ env.RC_BRANCH_NAME }}", - "version": "${{ github.event.inputs.version }}", - "release_name": "${{ github.event.inputs.release_name }}", - "automatic_mode": "${{ github.event.inputs.automatic_mode }}", - "prerelease": "${{ github.event.inputs.prerelease }}" - } + build_type: development - name: Release panther-rpi-os-img repository - uses: convictional/trigger-workflow-and-wait@v1.6.1 + uses: convictional/trigger-workflow-and-wait@v1.6.5 with: owner: husarion repo: panther-rpi-os-img - github_token: ${{ secrets.GH_PAT }} + github_token: ${{ secrets.RAFAL_ACCESS_TOKEN }} workflow_file_name: release-repository.yaml ref: ${{ env.RC_BRANCH_NAME }} client_payload: | @@ -100,29 +65,29 @@ jobs: "prerelease": "${{ github.event.inputs.prerelease }}" } - - name: Build panther system image + - name: Build OS image if: ${{ fromJSON(github.event.inputs.automatic_mode) == true }} - uses: convictional/trigger-workflow-and-wait@v1.6.1 + uses: convictional/trigger-workflow-and-wait@v1.6.5 with: owner: husarion repo: panther-rpi-os-img - github_token: ${{ secrets.GH_PAT }} + github_token: ${{ secrets.RAFAL_ACCESS_TOKEN }} workflow_file_name: build_and_deploy_image.yaml ref: ${{ env.MAIN_BRANCH }} client_payload: | { "dev_image": "false", - "panther_codebase_version": "${{ github.event.inputs.version }}", + "husarion_ugv_version": "${{ github.event.inputs.version }}", "image_tag": "${{ github.event.inputs.version }}" } - - name: Build panther flash OS image + - name: Build flash OS image if: ${{ fromJSON(github.event.inputs.automatic_mode) == true }} - uses: convictional/trigger-workflow-and-wait@v1.6.1 + uses: convictional/trigger-workflow-and-wait@v1.6.5 with: owner: husarion repo: panther-rpi-os-img - github_token: ${{ secrets.GH_PAT }} + github_token: ${{ secrets.RAFAL_ACCESS_TOKEN }} workflow_file_name: build_and_deploy_flash_os_image.yaml ref: ${{ env.MAIN_BRANCH }} client_payload: | @@ -130,11 +95,11 @@ jobs: "image_tag": "${{ github.event.inputs.version }}" } - - name: Trigger repository build workflow - uses: convictional/trigger-workflow-and-wait@v1.6.1 + - name: Rebuild documentation + uses: convictional/trigger-workflow-and-wait@v1.6.5 with: owner: husarion repo: docs_new - github_token: ${{ secrets.GH_PAT }} + github_token: ${{ secrets.RAFAL_ACCESS_TOKEN }} workflow_file_name: build.yml ref: master diff --git a/.github/workflows/release-repository.yaml b/.github/workflows/release-repository.yaml index 6a58ee2b4..498a304dc 100644 --- a/.github/workflows/release-repository.yaml +++ b/.github/workflows/release-repository.yaml @@ -1,19 +1,22 @@ --- -name: Release repository +name: Release Repository on: - workflow_dispatch: + workflow_call: inputs: release_candidate: description: Branch name of the release candidate. WARNING This branch will be deleted! required: true + type: string version: description: New version (used for tag and package versioning). required: true + type: string release_name: description: Name of the release to be created. Version in the first place is recommended (e.g. `2.0.0-alpha`). required: true + type: string automatic_mode: type: boolean default: false diff --git a/.github/workflows/run-unit-tests.yaml b/.github/workflows/unit-tests.yaml similarity index 98% rename from .github/workflows/run-unit-tests.yaml rename to .github/workflows/unit-tests.yaml index 48c1ebf69..5cfecd9a8 100644 --- a/.github/workflows/run-unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -1,5 +1,5 @@ --- -name: Run unit tests +name: Unit tests on: workflow_dispatch: @@ -25,7 +25,7 @@ jobs: touch ${{ env.COVERAGE_RESULT_FILENAME }} - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.ref }} path: ros2_ws/src/husarion_ugv diff --git a/docker/.coderabbit.yaml b/docker/.coderabbit.yaml deleted file mode 100644 index 8c9c45d23..000000000 --- a/docker/.coderabbit.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json -language: en-US -early_access: false -reviews: - profile: chill - request_changes_workflow: false - high_level_summary: true - poem: false - review_status: true - collapse_walkthrough: false - auto_review: - enabled: true - drafts: false - base_branches: - - ros2-devel -chat: - auto_reply: true diff --git a/docker/.dockerignore b/docker/.dockerignore deleted file mode 100644 index 06a4227a2..000000000 --- a/docker/.dockerignore +++ /dev/null @@ -1,8 +0,0 @@ -.devcontainer/ -.github/ -.git/ -.vscode/ -.dockerignore -.gitignore -Dockerfile.* -README.md diff --git a/docker/.github/workflows/protect-default-branch.yaml b/docker/.github/workflows/protect-default-branch.yaml deleted file mode 100644 index 678daebe9..000000000 --- a/docker/.github/workflows/protect-default-branch.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: Validate PR head branch -on: - pull_request: - branches: - - ros2 - -jobs: - check-head-branch: - runs-on: ubuntu-latest - steps: - - name: Check allowed branches - run: | - pattern="^[0-9]+\.[0-9]+\.[0-9]+-[0-9]{8}$" # This regex matches the X.X.X-YYYYMMDD pattern - if [[ "${{ github.head_ref }}" == *"hotfix"* ]]; then - echo "PR from a branch containing 'hotfix' is allowed." - exit 0 - elif [[ "${{ github.head_ref }}" =~ $pattern ]]; then - echo "PR from a branch matching X.X.X-YYYYMMDD pattern is allowed." - exit 0 - else - echo "PRs must come from branches containing 'hotfix' phrase or matching X.X.X-YYYYMMDD pattern." - exit 1 - fi diff --git a/docker/.github/workflows/release-repository.yaml b/docker/.github/workflows/release-repository.yaml deleted file mode 100644 index c742d184a..000000000 --- a/docker/.github/workflows/release-repository.yaml +++ /dev/null @@ -1,105 +0,0 @@ ---- -name: Release repository - -on: - workflow_dispatch: - inputs: - release_candidate: - description: Branch name of the release candidate. - required: true - version: - description: New version (used for tag). - required: true - release_name: - description: Name of the release to be created. Version in the first place is recommended (e.g. - `2.0.0-alpha`). - required: true - automatic_mode: - type: boolean - default: false - description: Automatically merge PR and create release. - prerelease: - type: boolean - default: false - description: Mark the release as a prerelease. - -jobs: - release: - name: Release repository - runs-on: ubuntu-22.04 - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - MAIN_BRANCH: ros2 - DEVEL_BRANCH: ros2-devel - steps: - - name: Checkout to main branch - if: ${{ github.event.inputs.release_candidate != env.MAIN_BRANCH }} - uses: actions/checkout@v4 - with: - ref: ${{ env.MAIN_BRANCH }} - fetch-depth: 0 - - - name: Get git diff between main and release candidate - id: git_diff - run: | - git fetch origin ${{ github.event.inputs.release_candidate }}:${{ github.event.inputs.release_candidate }} - DIFF=$(git diff --name-only ${{ github.event.inputs.release_candidate }}) # Change to "master.." to diff against last common commit - if [ -z "$DIFF" ]; then - echo "DIFF=false" >> $GITHUB_ENV - else - echo "DIFF=true" >> $GITHUB_ENV - fi - - - name: Create PR to main branch - if: ${{ github.event.inputs.release_candidate != env.MAIN_BRANCH && env.DIFF == 'true' }} - run: | - gh pr create \ - --base ${{ env.MAIN_BRANCH }} \ - --head ${{ github.event.inputs.release_candidate }} \ - --title "Release ${{ github.event.inputs.version}} to ${{ env.MAIN_BRANCH }}" \ - --body "This PR incorporates release updates." - - - name: Merge PR to main branch - if: ${{ fromJSON(github.event.inputs.automatic_mode) == true && github.event.inputs.release_candidate - != env.MAIN_BRANCH && env.DIFF == 'true' }} - run: | - gh pr merge ${{ github.event.inputs.release_candidate }} \ - --merge --delete-branch - - - name: Delete branch - if: ${{ fromJSON(github.event.inputs.automatic_mode) == true && github.event.inputs.release_candidate - != env.MAIN_BRANCH && env.DIFF == 'false' }} - run: | - git push origin --delete ${{ github.event.inputs.release_candidate }} - - - name: Create prerelease - if: ${{ fromJSON(github.event.inputs.automatic_mode) == true && fromJSON(github.event.inputs.prerelease) - == true}} - run: | - gh release create ${{ github.event.inputs.version }} \ - --target ${{ env.MAIN_BRANCH }} \ - --title ${{ github.event.inputs.release_name }} \ - --generate-notes \ - --prerelease - - - name: Create release - if: ${{ fromJSON(github.event.inputs.automatic_mode) == true && fromJSON(github.event.inputs.prerelease) - == false}} - run: | - gh release create ${{ github.event.inputs.version }} \ - --target ${{ env.MAIN_BRANCH }} \ - --title ${{ github.event.inputs.release_name }} \ - --generate-notes - - - name: Checkout to devel branch - if: ${{ env.DEVEL_BRANCH != env.MAIN_BRANCH && fromJSON(inputs.automatic_mode) == true }} - uses: actions/checkout@v4 - with: - ref: ${{ env.DEVEL_BRANCH }} - fetch-depth: 0 - - - name: Update devel branch - if: ${{ env.DEVEL_BRANCH != env.MAIN_BRANCH && fromJSON(inputs.automatic_mode) == true }} - run: | - git pull origin ${{ env.MAIN_BRANCH }} - git push origin ${{ env.DEVEL_BRANCH }} diff --git a/docker/.github/workflows/update-tags-in-compose.yaml b/docker/.github/workflows/update-tags-in-compose.yaml deleted file mode 100644 index 2a42bbada..000000000 --- a/docker/.github/workflows/update-tags-in-compose.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Update tags in compose files - -on: - workflow_dispatch: - inputs: - branch_name: - description: Target branch for the update. - required: true - image_tag: - description: Docker image tag to be replaced with. - required: true - -jobs: - release: - name: Release repository - runs-on: ubuntu-22.04 - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.branch_name }} - - - name: Update docker image tag - uses: mikefarah/yq@v4.43.1 - with: - cmd: | - yq -i '.services.panther_ros.image = "husarion/panther:${{ github.event.inputs.image_tag }}" | (... | select(tag == "!!merge")) tag = ""' demo/compose.minimal-setup.yaml - yq -i '.services.panther_gazebo.image = "husarion/panther-gazebo:${{ github.event.inputs.image_tag }}" | (... | select(tag == "!!merge")) tag = ""' demo/compose.simulation.yaml - - - name: Commit changes to target branch - uses: EndBug/add-and-commit@v9 - with: - message: Update docker image tag - author_name: action-bot - author_email: action-bot@action-bot.com diff --git a/docker/.gitignore b/docker/.gitignore deleted file mode 100644 index 126153b98..000000000 --- a/docker/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -# Docker project generated files to ignore -# if you want to ignore files created by your editor/tools, -# please consider a global .gitignore https://help.github.com/articles/ignoring-files -.vagrant* -bin -docker/docker -.*.swp -a.out -*.orig -build_src -.flymake* -.idea -.DS_Store -docs/_build -docs/_static -docs/_templates -.gopath/ -.dotcloud -*.test -bundles/ -.hg/ -.git/ -vendor/pkg/ -pyenv -Vagrantfile - -.vscode -__pycache__/ diff --git a/docker/.pre-commit-config.yaml b/docker/.pre-commit-config.yaml deleted file mode 100644 index 533c059e2..000000000 --- a/docker/.pre-commit-config.yaml +++ /dev/null @@ -1,37 +0,0 @@ ---- -repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 - hooks: - - id: check-merge-conflict - - id: trailing-whitespace - - id: end-of-file-fixer - - id: check-yaml - - id: check-xml - - id: check-added-large-files - - id: check-ast - - id: check-json - - id: name-tests-test - files: ^.*\/test\/.*$ - args: [--pytest-test-first] - - - repo: https://github.com/codespell-project/codespell - rev: v2.2.6 - hooks: - - id: codespell - entry: codespell - - - repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt - rev: 0.2.3 - hooks: - - id: yamlfmt - files: ^(?!.*compose).*$ - args: [--mapping, '2', --sequence, '4', --offset, '2', --width, '100'] - - # Docs - RestructuredText hooks - - repo: https://github.com/PyCQA/doc8 - rev: v1.1.1 - hooks: - - id: doc8 - args: [--max-line-length=100, --ignore=D001] - exclude: ^.*\/CHANGELOG\.rst/.*$ diff --git a/docker/Dockerfile.hardware b/docker/Dockerfile.hardware index 0ef0d0609..bb08a8d96 100644 --- a/docker/Dockerfile.hardware +++ b/docker/Dockerfile.hardware @@ -2,7 +2,6 @@ ARG ROS_DISTRO=humble FROM husarnet/ros:${ROS_DISTRO}-ros-core -ARG BRANCH_NAME=ros2-devel ARG BUILD_TEST=OFF ENV HUSARION_ROS_BUILD_TYPE=hardware @@ -10,13 +9,13 @@ ENV HUSARION_ROS_BUILD_TYPE=hardware STOPSIGNAL SIGINT WORKDIR /ros2_ws +COPY . src/husarion_ugv RUN apt-get update && \ apt-get install -y \ ros-dev-tools && \ # Setup workspace - git clone -b ${BRANCH_NAME} https://github.com/husarion/panther_ros.git src/panther_ros && \ - vcs import src < src/panther_ros/husarion_ugv/${HUSARION_ROS_BUILD_TYPE}_deps.repos && \ + vcs import src < src/husarion_ugv/husarion_ugv/${HUSARION_ROS_BUILD_TYPE}_deps.repos && \ cp -r src/ros2_controllers/diff_drive_controller src && \ cp -r src/ros2_controllers/imu_sensor_broadcaster src && \ rm -rf src/ros2_controllers && \ @@ -28,8 +27,8 @@ RUN apt-get update && \ source /opt/ros/$ROS_DISTRO/setup.bash && \ colcon build --symlink-install --packages-up-to husarion_ugv --cmake-args -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=$BUILD_TEST && \ # Get version - echo $(cat /ros2_ws/src/panther_ros/husarion_ugv/package.xml | grep '' | sed -r 's/.*([0-9]+.[0-9]+.[0-9]+)<\/version>/\1/g') >> /version.txt && \ - # Size optimalization + echo $(cat /ros2_ws/src/husarion_ugv/husarion_ugv/package.xml | grep '' | sed -r 's/.*([0-9]+.[0-9]+.[0-9]+)<\/version>/\1/g') >> /version.txt && \ + # Size optimization export SUDO_FORCE_REMOVE=yes && \ apt-get remove -y \ ros-dev-tools && \ @@ -37,8 +36,8 @@ RUN apt-get update && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* -COPY update_config_directory.sh /usr/local/sbin/update_config_directory -COPY setup_environment.sh /usr/local/sbin/setup_environment +COPY docker/utils/update_config_directory.sh /usr/local/sbin/update_config_directory +COPY docker/utils/setup_environment.sh /usr/local/sbin/setup_environment # Setup envs from eeprom RUN sed -i "/# /i set -e -a && source setup_environment" /*_entrypoint.sh diff --git a/docker/Dockerfile.simulation b/docker/Dockerfile.simulation index 881af7bc4..eff5b5680 100644 --- a/docker/Dockerfile.simulation +++ b/docker/Dockerfile.simulation @@ -10,13 +10,13 @@ ENV HUSARION_ROS_BUILD_TYPE=simulation STOPSIGNAL SIGINT WORKDIR /ros2_ws +COPY . src/husarion_ugv RUN apt-get update && \ apt-get install -y \ ros-dev-tools && \ # Setup workspace - git clone -b ${BRANCH_NAME} https://github.com/husarion/panther_ros.git src/panther_ros && \ - vcs import src < src/panther_ros/husarion_ugv/${HUSARION_ROS_BUILD_TYPE}_deps.repos && \ + vcs import src < src/husarion_ugv/husarion_ugv/${HUSARION_ROS_BUILD_TYPE}_deps.repos && \ cp -r src/ros2_controllers/diff_drive_controller src && \ cp -r src/ros2_controllers/imu_sensor_broadcaster src && \ rm -rf src/ros2_controllers && \ @@ -28,8 +28,8 @@ RUN apt-get update && \ source /opt/ros/$ROS_DISTRO/setup.bash && \ colcon build --symlink-install --packages-up-to husarion_ugv --cmake-args -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=$BUILD_TEST && \ # Get version - echo $(cat /ros2_ws/src/panther_ros/husarion_ugv/package.xml | grep '' | sed -r 's/.*([0-9]+.[0-9]+.[0-9]+)<\/version>/\1/g') >> /version.txt && \ - # Size optimalization + echo $(cat /ros2_ws/src/husarion_ugv/husarion_ugv/package.xml | grep '' | sed -r 's/.*([0-9]+.[0-9]+.[0-9]+)<\/version>/\1/g') >> /version.txt && \ + # Size optimization export SUDO_FORCE_REMOVE=yes && \ apt-get remove -y \ ros-dev-tools && \ diff --git a/docker/LICENSE b/docker/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/docker/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/docker/README.md b/docker/README.md index 0a6c3b218..6d6cce72e 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,4 +1,4 @@ -# panther-docker +# Docker Docker images dedicated to Husarion Panther ROS system and simulation. @@ -26,8 +26,7 @@ ssh husarion@10.15.20.2 Depending on your needs, you can run Docker to quickly launch the physical robot or run a simulation. To do this, clone this repository to your robot or computer. ```bash -git clone -b ros2 https://github.com/husarion/panther-docker.git -cd panther-docker/demo +cd docker/demo ``` ### 🤖 Robot @@ -44,7 +43,7 @@ cd panther-docker/demo 2. Activate Panther ```bash - docker compose -f compose.minimal-setup.yaml up + docker compose -f compose.hardware.yaml up ``` 3. Launch Visualization on PC diff --git a/docker/demo/compose.minimal-setup.yaml b/docker/demo/compose.hardware.yaml similarity index 85% rename from docker/demo/compose.minimal-setup.yaml rename to docker/demo/compose.hardware.yaml index dba0f388f..d0e82266b 100644 --- a/docker/demo/compose.minimal-setup.yaml +++ b/docker/demo/compose.hardware.yaml @@ -7,7 +7,7 @@ x-common-config: &common-config services: husarion_ugv_ros: - image: husarion/panther:humble-ros2-devel + image: husarion/panther:humble-2.1.2-20241125 container_name: husarion_ugv_ros <<: *common-config devices: @@ -34,7 +34,8 @@ services: soft: 102400 hard: 102400 command: > - ros2 launch husarion_ugv_bringup bringup.launch.py common_dir_path:=/config + ros2 launch husarion_ugv_bringup bringup.launch.py + common_dir_path:=/config gamepad_controller: image: husarion/joy2twist:humble-1.0.0-20241003-stable @@ -48,4 +49,5 @@ services: - 'c 13:0 rmw' # gamepad stop_signal: SIGINT command: > - ros2 launch joy2twist gamepad_controller.launch.py joy2twist_params_file:=/joy2twist.yaml + ros2 launch joy2twist gamepad_controller.launch.py + joy2twist_params_file:=/joy2twist.yaml diff --git a/docker/demo/compose.rviz.yaml b/docker/demo/compose.rviz.yaml index 928368ea1..efd6dce9d 100644 --- a/docker/demo/compose.rviz.yaml +++ b/docker/demo/compose.rviz.yaml @@ -4,6 +4,7 @@ x-common-config: ipc: host environment: - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp # Default FastDDS do not work + - ROBOT_NAMESPACE=${ROBOT_NAMESPACE:-panther} - ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-0} x-cpu-config: @@ -17,12 +18,12 @@ x-gpu-config: services: rviz: - image: husarion/rviz2:humble-nightly - container_name: rviz2 + image: husarion/panther:humble-2.1.2-20241125 + container_name: rviz <<: - *common-config - *cpu-config volumes: - /tmp/.X11-unix:/tmp/.X11-unix:rw - - ./config/panther.rviz:/root/.rviz2/default.rviz - stop_signal: SIGINT + command: > + ros2 launch husarion_ugv_description rviz.launch.py diff --git a/docker/demo/compose.simulation.yaml b/docker/demo/compose.simulation.yaml index 24d35c3bc..686d86041 100644 --- a/docker/demo/compose.simulation.yaml +++ b/docker/demo/compose.simulation.yaml @@ -3,12 +3,17 @@ x-common-config: &common-config ipc: host environment: - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp + - ROBOT_MODEL=${ROBOT_MODEL_NAME:-panther} + - ROBOT_NAMESPACE=${ROBOT_NAMESPACE:-panther} - ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-0} + x-cpu-config: &cpu-config env_file: .env.cpu + x-gpu-config: &gpu-config runtime: nvidia env_file: .env.gpu + services: panther_gazebo: image: husarion/panther-gazebo:humble-2.1.2-20241125 @@ -19,4 +24,4 @@ services: volumes: - /tmp/.X11-unix:/tmp/.X11-unix:rw command: > - ros2 launch panther_gazebo simulation.launch.py robot_model:=panther namespace:=panther + ros2 launch panther_gazebo simulation.launch.py diff --git a/docker/demo/config/panther.rviz b/docker/demo/config/panther.rviz deleted file mode 100644 index 674151330..000000000 --- a/docker/demo/config/panther.rviz +++ /dev/null @@ -1,218 +0,0 @@ -Panels: - - Class: rviz_common/Displays - Help Height: 78 - Name: Displays - Property Tree Widget: - Expanded: ~ - Splitter Ratio: 0.5 - Tree Height: 725 - - Class: rviz_common/Selection - Name: Selection - - Class: rviz_common/Tool Properties - Expanded: - - /2D Goal Pose1 - - /Publish Point1 - Name: Tool Properties - Splitter Ratio: 0.5886790156364441 - - Class: rviz_common/Views - Expanded: - - /Current View1 - - /Current View1/Focal Point1 - Name: Views - Splitter Ratio: 0.5 - - Class: rviz_common/Time - Experimental: false - Name: Time - SyncMode: 0 - SyncSource: "" -Visualization Manager: - Class: "" - Displays: - - Alpha: 0.5 - Cell Size: 1 - Class: rviz_default_plugins/Grid - Color: 160; 160; 164 - Enabled: true - Line Style: - Line Width: 0.029999999329447746 - Value: Lines - Name: Grid - Normal Cell Count: 0 - Offset: - X: 0 - Y: 0 - Z: 0 - Plane: XY - Plane Cell Count: 10 - Reference Frame: - Value: true - - Class: rviz_default_plugins/Axes - Enabled: true - Length: 1 - Name: Axes - Radius: 0.10000000149011612 - Reference Frame: - Value: true - - Alpha: 1 - Class: rviz_default_plugins/RobotModel - Collision Enabled: false - Description File: "" - Description Source: Topic - Description Topic: - Depth: 5 - Durability Policy: Volatile - History Policy: Keep Last - Reliability Policy: Reliable - Value: /panther/robot_description - Enabled: true - Links: - All Links Enabled: true - Expand Joint Details: false - Expand Link Details: false - Expand Tree: false - Link Tree Style: Links in Alphabetic Order - base_link: - Alpha: 1 - Show Axes: false - Show Trail: false - body_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - cover_link: - Alpha: 1 - Show Axes: false - Show Trail: false - fl_wheel_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - fr_wheel_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - front_bumper_link: - Alpha: 1 - Show Axes: false - Show Trail: false - front_light_link: - Alpha: 1 - Show Axes: false - Show Trail: false - imu_link: - Alpha: 1 - Show Axes: false - Show Trail: false - rear_bumper_link: - Alpha: 1 - Show Axes: false - Show Trail: false - rear_light_link: - Alpha: 1 - Show Axes: false - Show Trail: false - rl_wheel_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - rr_wheel_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - Mass Properties: - Inertia: false - Mass: false - Name: RobotModel - TF Prefix: panther - Update Interval: 0 - Value: true - Visual Enabled: true - Enabled: true - Global Options: - Background Color: 48; 48; 48 - Fixed Frame: panther/odom - Frame Rate: 30 - Name: root - Tools: - - Class: rviz_default_plugins/Interact - Hide Inactive Objects: true - - Class: rviz_default_plugins/MoveCamera - - Class: rviz_default_plugins/Select - - Class: rviz_default_plugins/FocusCamera - - Class: rviz_default_plugins/Measure - Line color: 128; 128; 0 - - Class: rviz_default_plugins/SetInitialPose - Covariance x: 0.25 - Covariance y: 0.25 - Covariance yaw: 0.06853891909122467 - Topic: - Depth: 5 - Durability Policy: Volatile - History Policy: Keep Last - Reliability Policy: Reliable - Value: /initialpose - - Class: rviz_default_plugins/SetGoal - Topic: - Depth: 5 - Durability Policy: Volatile - History Policy: Keep Last - Reliability Policy: Reliable - Value: /goal_pose - - Class: rviz_default_plugins/PublishPoint - Single click: true - Topic: - Depth: 5 - Durability Policy: Volatile - History Policy: Keep Last - Reliability Policy: Reliable - Value: /clicked_point - Transformation: - Current: - Class: rviz_default_plugins/TF - Value: true - Views: - Current: - Class: rviz_default_plugins/ThirdPersonFollower - Distance: 3.5 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: -0.10000000149011612 - Y: -0.05000000074505806 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Current View - Near Clip Distance: 0.009999999776482582 - Pitch: 0.5750001072883606 - Target Frame: base_link - Value: ThirdPersonFollower (rviz_default_plugins) - Yaw: 2.9749996662139893 - Saved: ~ -Window Geometry: - Displays: - collapsed: false - Height: 1016 - Hide Left Dock: false - Hide Right Dock: false - QMainWindow State: 000000ff00000000fd00000004000000000000016a0000035efc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b0000035e000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d006100670065010000026b000001470000000000000000fb0000000c00430061006d0065007200610000000233000000970000000000000000fb0000000a0049006d00610067006501000002a3000000f40000000000000000000000010000010f000002aafc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003b000002aa000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073a0000003efc0100000002fb0000000800540069006d006501000000000000073a0000025300fffffffb0000000800540069006d00650100000000000004500000000000000000000005ca0000035e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 - Selection: - collapsed: false - Time: - collapsed: false - Tool Properties: - collapsed: false - Views: - collapsed: false - Width: 1850 - X: 70 - Y: 27 diff --git a/docker/setup_environment.sh b/docker/utils/setup_environment.sh similarity index 100% rename from docker/setup_environment.sh rename to docker/utils/setup_environment.sh diff --git a/docker/update_config_directory.sh b/docker/utils/update_config_directory.sh similarity index 100% rename from docker/update_config_directory.sh rename to docker/utils/update_config_directory.sh diff --git a/husarion_ugv/package.xml b/husarion_ugv/package.xml index 2365d2eb4..5d992db73 100644 --- a/husarion_ugv/package.xml +++ b/husarion_ugv/package.xml @@ -15,7 +15,7 @@ ament_cmake - husarion_ugv_bringup + husarion_ugv_bringup husarion_ugv_gazebo diff --git a/panther_description/launch/rviz.launch.py b/panther_description/launch/rviz.launch.py index b194341cc..be918d45c 100644 --- a/panther_description/launch/rviz.launch.py +++ b/panther_description/launch/rviz.launch.py @@ -58,7 +58,7 @@ def generate_launch_description(): rviz_config = ReplaceString( source_file=rviz_config, - replacements={"/": ns_ext, "": namespace}, + replacements={"/": ns_ext, "": namespace}, ) rviz_node = Node( diff --git a/panther_description/rviz/husarion_ugv.rviz b/panther_description/rviz/husarion_ugv.rviz index 8285a0474..9e6060da7 100644 --- a/panther_description/rviz/husarion_ugv.rviz +++ b/panther_description/rviz/husarion_ugv.rviz @@ -73,7 +73,7 @@ Visualization Manager: Inertia: false Mass: false Name: RobotModel - TF Prefix: + TF Prefix: Update Interval: 0 Value: true Visual Enabled: true @@ -135,7 +135,7 @@ Visualization Manager: Enabled: true Global Options: Background Color: 48; 48; 48 - Fixed Frame: /odom + Fixed Frame: /odom Frame Rate: 30 Name: root Tools: