Skip to content

Commit 4836437

Browse files
v0.0.9
1 parent cc64048 commit 4836437

File tree

172 files changed

+6655
-559
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

172 files changed

+6655
-559
lines changed

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
*.gif filter=lfs diff=lfs merge=lfs -text
2+
nvblox/tests/data/lidarply/**/*.ply filter=lfs diff=lfs merge=lfs -text
23
docs/images/* filter=lfs diff=lfs merge=lfs -text
4+
nvblox_torch/nvblox_torch/tests/data/**/*.png filter=lfs diff=lfs merge=lfs -text
35

46
# Sphinx-built site images: NOT LFS, but protect from line ending issues
57
docs/_images/*.gif -filter -diff -merge binary
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name: 'Build and Test'
2+
description: 'Build nvblox Docker image and run tests'
3+
inputs:
4+
platform:
5+
description: 'Platform to build for'
6+
required: true
7+
cuda-version:
8+
description: 'CUDA version'
9+
required: true
10+
ubuntu-version:
11+
description: 'Ubuntu version'
12+
required: true
13+
gcc-sanitizer:
14+
description: 'Build in debug mode with gcc sanitizers enabled'
15+
required: false
16+
default: 0
17+
ngc-api-key:
18+
description: 'NGC API Key for authentication'
19+
required: true
20+
run-cpp-tests:
21+
description: 'Run C++ unit tests'
22+
required: false
23+
default: 'true'
24+
run-python-tests:
25+
description: 'Run Python unit tests'
26+
required: false
27+
default: 'true'
28+
run-cuda-sanitizer:
29+
description: 'Run CUDA sanitizer tests'
30+
required: false
31+
default: 'true'
32+
run-realsense-tests:
33+
description: 'Run Realsense example tests'
34+
required: false
35+
default: 'true'
36+
runs:
37+
using: 'composite'
38+
steps:
39+
- name: NGC Login
40+
uses: ./.github/actions/ngc-login
41+
with:
42+
ngc-api-key: ${{ inputs.ngc-api-key }}
43+
- name: Set COMMON_NVBLOX_CI_ARGS env
44+
shell: bash
45+
run: |
46+
# Store arguments used for all jobs in an environment variable.
47+
echo "COMMON_NVBLOX_CI_ARGS=--platform ${{ inputs.platform }} --cuda-version ${{ inputs.cuda-version }} --ubuntu-version ${{ inputs.ubuntu-version }} --gcc-sanitizer ${{ inputs.gcc-sanitizer }}" >> $GITHUB_ENV
48+
# Note that the two build-image steps could be omitted since the build-and-test steps also build necessary images.
49+
# However, we separate the steps to get cleaner logs and better timing granularity.
50+
- name: Build dependency image
51+
shell: bash
52+
run: |
53+
echo "::group::BUILD DEPENDENCY IMAGE"
54+
time python3 ci/nvblox_ci.py $COMMON_NVBLOX_CI_ARGS --build-image deps
55+
echo "::endgroup::"
56+
- name: Build build image
57+
shell: bash
58+
run: |
59+
echo "::group::BUILD BINARIES IMAGE"
60+
time python3 ci/nvblox_ci.py $COMMON_NVBLOX_CI_ARGS --build-image build
61+
echo "::endgroup::"
62+
- name: Run CPP unit tests
63+
if: inputs.run-cpp-tests == 'true'
64+
shell: bash
65+
run: |
66+
echo "::group::RUN CPP UNIT TESTS"
67+
time python3 ci/nvblox_ci.py $COMMON_NVBLOX_CI_ARGS --build-and-test cpp
68+
echo "::endgroup::"
69+
- name: Run Python unit tests
70+
if: inputs.run-python-tests == 'true'
71+
shell: bash
72+
run: |
73+
echo "::group::RUN PYTHON UNIT TESTS"
74+
time python3 ci/nvblox_ci.py $COMMON_NVBLOX_CI_ARGS --build-and-test python
75+
echo "::endgroup::"
76+
- name: Run CUDA Sanitizer
77+
if: inputs.run-cuda-sanitizer == 'true'
78+
shell: bash
79+
run: |
80+
echo "::group::RUN CUDA SANITIZER"
81+
time python3 ci/nvblox_ci.py $COMMON_NVBLOX_CI_ARGS --build-and-test cuda-sanitizer
82+
echo "::endgroup::"
83+
- name: Run Realsense example test
84+
if: inputs.run-realsense-tests == 'true'
85+
shell: bash
86+
run: |
87+
echo "::group::RUN REALSENSE EXAMPLE TEST"
88+
time python3 ci/nvblox_ci.py $COMMON_NVBLOX_CI_ARGS --build-and-test realsense
89+
echo "::endgroup::"
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: 'NGC Login'
2+
description: 'Login to NVIDIA NGC Container Registry'
3+
inputs:
4+
ngc-api-key:
5+
description: 'NGC API Key for authentication'
6+
required: false
7+
runs:
8+
using: 'composite'
9+
steps:
10+
- name: NGC Login
11+
shell: bash
12+
run: |
13+
# Only attempt NGC login if API key is available
14+
if [ -n "${{ inputs.ngc-api-key }}" ]; then
15+
echo "Logging into NGC registry..."
16+
docker login -u \$oauthtoken -p ${{ inputs.ngc-api-key }} nvcr.io
17+
echo "✅ Successfully logged into NGC registry"
18+
else
19+
echo "⚠️ NGC_API_KEY not available - skipping NGC login"
20+
echo "This is normal for PRs from forks or when secrets are not configured"
21+
fi

.github/workflows/premerge.yml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
name: nvblox premerge
2+
on:
3+
pull_request:
4+
jobs:
5+
## ------------------------------------------
6+
## Linting and formatting
7+
## ------------------------------------------
8+
lint_precommit:
9+
name: pre-commit
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout Code
13+
uses: actions/checkout@v4
14+
with:
15+
lfs: false
16+
- name: Set up Python
17+
uses: actions/setup-python@v5
18+
with:
19+
python-version: '3.10'
20+
- name: Install pre-commit
21+
run: |
22+
python -m pip install --upgrade pip
23+
pip install pre-commit clang-format==14.0.6
24+
- name: Run pre-commit
25+
run: pre-commit run --all-files --show-diff-on-failure
26+
## ------------------------------------------
27+
## Build and test x86/CU11/U22
28+
## ------------------------------------------
29+
premerge_x86_cu11_u22:
30+
name: Build&Test x86-CU11-U22
31+
needs: [lint_precommit]
32+
runs-on: [self-hosted, gpu] # GPU jobs will run on AWS
33+
steps:
34+
- name: Checkout Code
35+
uses: actions/checkout@v4
36+
with:
37+
lfs: true
38+
- name: premerge_x86_cu11_u22 - Unit tests
39+
uses: ./.github/actions/build-and-test
40+
with:
41+
platform: x86_64
42+
cuda-version: '11'
43+
ubuntu-version: '22'
44+
ngc-api-key: ${{ secrets.NGC_API_KEY }}
45+
## ------------------------------------------
46+
## Build and test x86/CU12/U22
47+
## ------------------------------------------
48+
premerge_x86_cu12_u22:
49+
name: Build&Test x86-CU12-U22
50+
needs: [lint_precommit]
51+
runs-on: [self-hosted, gpu] # GPU jobs will run on AWS
52+
steps:
53+
- name: Checkout Code
54+
uses: actions/checkout@v4
55+
with:
56+
lfs: true
57+
- name: premerge_x86_cu12_u22 - Unit tests
58+
uses: ./.github/actions/build-and-test
59+
with:
60+
platform: x86_64
61+
cuda-version: '12'
62+
ubuntu-version: '22'
63+
ngc-api-key: ${{ secrets.NGC_API_KEY }}
64+
## ------------------------------------------
65+
## Build and test x86/CU13/U24
66+
## ------------------------------------------
67+
premerge_x86_cu13_u24:
68+
name: Build&Test x86-CU13-U24
69+
needs: [lint_precommit]
70+
runs-on: [self-hosted, gpu] # GPU jobs will run on AWS
71+
steps:
72+
- name: Checkout Code
73+
uses: actions/checkout@v4
74+
with:
75+
lfs: true
76+
- name: premerge_x86_cu13_u24 - Unit tests
77+
uses: ./.github/actions/build-and-test
78+
with:
79+
platform: x86_64
80+
cuda-version: '13'
81+
ubuntu-version: '24'
82+
ngc-api-key: ${{ secrets.NGC_API_KEY }}
83+
run-realsense-tests: false # TODO(dtingahl) make realsense docker build for cuda13
84+
## --------------------------------------------------------
85+
## Build and test x86/CU12/U22/gcc-sanitizer
86+
## --------------------------------------------------------
87+
premerge_x86_cu12_u22_debug:
88+
name: Build&Test x86-gcc-sanitizer
89+
needs: [lint_precommit]
90+
runs-on: [self-hosted, gpu] # GPU jobs will run on AWS
91+
steps:
92+
- name: Checkout Code
93+
uses: actions/checkout@v4
94+
with:
95+
lfs: true
96+
- name: premerge_x86_cu12_u22_debug - Unit tests
97+
uses: ./.github/actions/build-and-test
98+
with:
99+
platform: x86_64
100+
cuda-version: '12'
101+
ubuntu-version: '22'
102+
gcc-sanitizer: 1
103+
ngc-api-key: ${{ secrets.NGC_API_KEY }}
104+
run-python-tests: false # TODO(dtingdahl) Enable these tests
105+
run-realsense-tests: false #
106+
run-cuda-sanitizer: false #

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ TAGS
5858
# Test artifacts
5959
nvblox/tests/*.png
6060
nvblox/tests/*.nvblx
61+
nvblox/tests/data/test_output_data/
6162

6263
# Built py distribution
6364
nvblox_torch/dist

.pre-commit-config.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ repos:
2020
- repo: https://github.com/doublify/pre-commit-clang-format
2121
rev: 62302476d0da01515660132d76902359bed0f782
2222
hooks:
23-
- id: clang-format
24-
entry: clang-format-14 -i
23+
- id: clang-format # See premerge.yml for the clang-format version used.
2524
files: \.(c|cc|cpp|cxx|cu|cuh|h|hh|hpp|hxx|inl|proto|pb\.h|pb\.cc)$
2625
- repo: https://github.com/pylint-dev/pylint
2726
rev: v3.0.3

.pylintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ inlinevar-rgx=^[a-z][a-z0-9_]*$
222222
class-rgx=^_?[A-Z][a-zA-Z0-9]*$
223223

224224
# Regular expression matching correct module names
225-
module-rgx=^(_?[a-z][a-z0-9_]*|__init__|__about__)$
225+
module-rgx=[a-z_][a-z0-9_]{2,40}$
226226

227227
# Regular expression matching correct method names
228228
method-rgx=(?x)^(?:(?P<exempt>_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass|(test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|next)|(?P<camel_case>_{0,2}[A-Z][a-zA-Z0-9_]*)|(?P<snake_case>_{0,2}[a-z][a-z0-9_]*))$

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ All releases of the nvblox library will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

7-
## Unreleased (public branch)
7+
## [v.0.0.9] - Date: 2026-01-27
88

9+
- Support for LiDAR pointcloud as native input to integrateDepth.
10+
- Support for LiDAR motion compensation.
911
- Refactor and optimization of blocks-to-update tracker.
1012
- Option for initializing freespace voxels to free.
1113
- Camera sensor extended with support for distortion (radial and tangential).

CMakeLists.txt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ endif()
2222
# CMAKE_CUDA_ARCHITECTURES to a default (potentially non-native) value
2323
project(
2424
nvblox
25-
VERSION 0.0.8
25+
VERSION 0.0.9
2626
LANGUAGES CXX C CUDA)
2727

2828
# ##############################################################################
@@ -41,19 +41,7 @@ endif()
4141
# Include file that defines functions for adding nvblox binary targets
4242
include(cmake/cuda/setup_compute_capability.cmake)
4343
include(cmake/nvblox_targets.cmake)
44-
45-
# This option avoids any implementations using std::string in their signature in
46-
# header files Useful for Nvblox PyTorch wrapper, which requires the old
47-
# Pre-CXX11 ABI on x86
48-
if(BUILD_PYTORCH_WRAPPER AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64"
49-
OR CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64"))
50-
option(PRE_CXX11_ABI_LINKABLE "Better support pre-C++11 ABI library users" ON)
51-
message(STATUS "Building with pre-C++11 ABI support")
52-
else()
53-
option(PRE_CXX11_ABI_LINKABLE "Better support pre-C++11 ABI library users"
54-
OFF)
55-
message(STATUS "Building without pre-C++11 ABI support")
56-
endif()
44+
include(cmake/setup_pytorch_cpp11_abi.cmake)
5745

5846
if(BUILD_PYTORCH_WRAPPER)
5947
add_subdirectory(nvblox_torch/cpp)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ either
1313
[C++](https://nvidia-isaac.github.io/nvblox/), or
1414
[ROS2](https://nvidia-isaac-ros.github.io/concepts/scene_reconstruction/nvblox/index.html).
1515

16-
To get started with `nvblox`, see our [documentation site](https://nvidia-isaac.github.io/nvblox/)
16+
To get started with `nvblox`, see our [documentation site](https://nvblox.gitlab-master-pages.nvidia.com/nvblox/)
1717

1818
<p align="center">
1919
<img src="docs/images/3dmatch.gif" alt="3D reconstruction" width="400"/>

0 commit comments

Comments
 (0)