Fixing ground segmented as obstacle when grid noise filtering is enab… #478
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CMake-Windows | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| branches: | |
| - '**' | |
| workflow_dispatch: | |
| env: | |
| BUILD_TYPE: Release | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| build: | |
| name: ${{ matrix.build_name }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| build_name: [windows-2022, windows-2022-cuda] | |
| include: | |
| - build_name: windows-2022 | |
| os: windows-2022 | |
| extra_deps: "" | |
| extra_cmake_def: '-DWITH_TORCH=OFF -DWITH_ZED=OFF' | |
| - build_name: windows-2022-cuda | |
| os: windows-2022 | |
| extra_deps: "" | |
| extra_cmake_def: '-DWITH_TORCH=ON -DWITH_ZED=ON -DWITH_CUDASIFT=ON' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Restore test data | |
| id: cache-testdata | |
| if: matrix.build_name != 'windows-2022-cuda' | |
| uses: actions/cache@v4 | |
| with: | |
| # SQLite DBs are binary-portable -> share the cache across | |
| # linux / macos / windows. Key omits runner.os on purpose so all | |
| # three OSes hit the same entry. | |
| path: data/tests/*.db | |
| key: testdata-${{ hashFiles('data/tests/manifest.txt') }} | |
| - name: Fetch test data | |
| if: matrix.build_name != 'windows-2022-cuda' && steps.cache-testdata.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: bash scripts/fetch_test_data.sh | |
| - name: Install Windows Dependencies | |
| if: matrix.build_name == 'windows-2022' | |
| uses: ./.github/actions/install-windows-deps | |
| - name: Install Windows Dependencies with CUDA | |
| if: matrix.build_name == 'windows-2022-cuda' | |
| uses: ./.github/actions/install-windows-cuda-deps | |
| - name: Configure CMake | |
| run: | | |
| # K4A, K4W2 and ZED are located via these env vars (FindK4A.cmake / FindKinectSDK2.cmake | |
| # and the install rules), pointing at the export where the bundle staged their SDK files. | |
| $env:K4A_ROOT_DIR = "${{env.VCPKG_EXPORT_PATH}}/installed/x64-windows-release" | |
| $env:KINECTSDK20_DIR = "${{env.VCPKG_EXPORT_PATH}}/installed/x64-windows-release" | |
| $env:ZED_SDK_ROOT_DIR = "${{env.VCPKG_EXPORT_PATH}}/installed/x64-windows-release" | |
| cmake ` | |
| -B ${{github.workspace}}/build ` | |
| -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ` | |
| -DBUILD_AS_BUNDLE=ON ` | |
| -DWITH_PYTHON=ON ` | |
| -DWITH_CERES=ON ` | |
| -DWITH_ORBBEC_SDK=ON ` | |
| -DWITH_FREENECT2=ON ` | |
| -DWITH_K4W2=ON ` | |
| -DWITH_K4A=ON ` | |
| -DWITH_DEPTHAI=ON ` | |
| -DWITH_REALSENSE2=ON ` | |
| -DWITH_CCCORELIB=ON ` | |
| ${{ matrix.extra_cmake_def }} ` | |
| -DBUILD_TESTING=ON ` | |
| -DVCPKG_MANIFEST_INSTALL=OFF ` | |
| -DVCPKG_TARGET_TRIPLET=x64-windows-release ` | |
| -DVCPKG_INSTALLED_DIR="${{env.VCPKG_EXPORT_PATH}}/installed" ` | |
| -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_EXPORT_PATH}}/scripts/buildsystems/vcpkg.cmake ` | |
| -DTorch_DIR=${{env.VCPKG_EXPORT_PATH}}/installed/x64-windows-release/tools/python3/Lib/site-packages/torch/share/cmake/Torch | |
| - name: Build | |
| run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target ALL_BUILD | |
| - name: Test | |
| # Not run on the CUDA build, which is a build+package job only. | |
| # | |
| # The runner has no NVIDIA GPU or driver (see the driver-DLL note in | |
| # app/src/CMakeLists.txt), so no cv::cuda / CUDASIFT path can actually | |
| # execute there -- everything falls back to CPU and the run just repeats | |
| # the coverage the non-CUDA job already gives, on the same sources. It | |
| # used to cost more than it returned: the two cv::cuda-touching tests | |
| # (test_util3d_features, test_localgrid) had to be excluded because lazy | |
| # CUDA-init stalled them past the 300 s timeout, and once WITH_ZED=ON was | |
| # added to this job every remaining corelib test died in the loader with | |
| # 0xc0000135 (STATUS_DLL_NOT_FOUND) before reaching main(): rtabmap_core | |
| # links sl_zed64.dll, which imports the driver-only nvcuvid.dll / | |
| # nvEncodeAPI64.dll that a driver-less runner does not have. | |
| # | |
| # So this job compiles, links and packages the CUDA artifact; the | |
| # non-CUDA job is what verifies behaviour. Same reason the Info step | |
| # below is skipped here. | |
| if: matrix.build_name != 'windows-2022-cuda' | |
| working-directory: ${{github.workspace}}/build | |
| # PYTHONHOME points the embedded interpreter at vcpkg's bundled | |
| # Python install (where Lib/, DLLs/ live). Without it Python emits | |
| # "Could not find platform independent libraries <prefix>" at init | |
| # and runs without a stdlib, breaking every numpy import. | |
| # PYTHONNOUSERSITE=1: prevent the embedded Python interpreter from | |
| # loading numpy / other site-packages from %APPDATA%\Python that | |
| # were compiled against a different ABI than the build-time Python | |
| # (numpy 1.x/2.x mismatch crashes in test_pydetector / | |
| # test_pydescriptor / test_pymatcher). | |
| env: | |
| PYTHONHOME: ${{env.VCPKG_EXPORT_PATH}}/installed/x64-windows-release/tools/python3 | |
| PYTHONNOUSERSITE: 1 | |
| run: | | |
| ctest -C ${{env.BUILD_TYPE}} -V --timeout 300 -LE performance | |
| - name: Info | |
| # Skipped for CUDA: the binary links ZED (sl_zed64.dll -> nvcuvid/nvEncodeAPI64), | |
| # which need the NVIDIA driver; the GPU-less runner can't load the exe. | |
| if: matrix.build_name != 'windows-2022-cuda' | |
| working-directory: ${{github.workspace}}/build/bin | |
| run: | | |
| ./rtabmap-console --version | |
| - name: Build Windows Package | |
| shell: pwsh | |
| run: | | |
| if ("${{ github.event_name }}" -eq "pull_request") { | |
| cpack --config build/CPackConfig.cmake -G ZIP -B build | |
| } else { | |
| cmake --build ${{ github.workspace }}/build --config ${{ env.BUILD_TYPE }} --target package | |
| } | |
| - name: Rename CUDA artifacts | |
| if: matrix.build_name == 'windows-2022-cuda' | |
| shell: pwsh | |
| run: Get-ChildItem -Path "build" -Filter "RTABMap-*" | Rename-Item -NewName { $_.BaseName + "_cuda" + $_.Extension } | |
| - name: Upload RTABMap Artifacts (ZIP) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: RTABMap-Binaries-${{ matrix.build_name }}-zip | |
| path: | | |
| build/RTABMap-*.zip | |
| compression-level: 0 | |
| if-no-files-found: warn | |
| retention-days: ${{ github.event_name == 'pull_request' && 1 || 90 }} | |
| - name: Upload RTABMap Artifacts (Installer) | |
| if: github.event_name != 'pull_request' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: RTABMap-Binaries-${{ matrix.build_name }}-exe | |
| path: | | |
| build/RTABMap-*.exe | |
| compression-level: 0 | |
| if-no-files-found: warn | |
| retention-days: ${{ github.event_name == 'pull_request' && 1 || 90 }} |