Skip to content

Commit 680c8c5

Browse files
authored
Merge pull request #19 from NVIDIA-ISAAC-ROS/release-4.5
Isaac ROS 4.5
2 parents 1f0c77d + 385bb5d commit 680c8c5

39 files changed

Lines changed: 3758 additions & 516 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ debian/*.substvars
66
debian/*.debhelper.log
77
debian/*-stamp
88
debian/files
9+
.docker-deb-overrides/

Makefile

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,29 @@ PACKAGE_NAME := isaac-ros-cli
1212

1313
# Convenience variable for the built .deb (lives one dir up when using dpkg-buildpackage)
1414
DEB_GLOB := ../$(PACKAGE_NAME)_*.deb
15+
DOCKER_DEB_OVERRIDE_DIR := .docker-deb-overrides
16+
SYSTEM_DOCKER_DEB_OVERRIDE_DIR := /etc/$(PACKAGE_NAME)/$(DOCKER_DEB_OVERRIDE_DIR)
1517

16-
.PHONY: help all build upload clean distclean release print-deb
18+
.PHONY: help all build install test upload clean distclean release print-deb clear-docker-overrides
1719

1820
help:
1921
@echo "Targets:"
2022
@echo " make build - Build Debian package (.deb)"
23+
@echo " sudo make install - Install built Debian and stage it as Docker override"
24+
@echo " make test - Run Python CLI unit tests"
2125
@echo " make build-stamped - Build Debian package (.deb) with timestamped version"
2226
@echo " make timestamp - Append timestamp suffix to debian/changelog"
2327
@echo " make clean - Remove staged packaging artifacts inside debian/"
2428
@echo " make distclean - Clean and remove built files in parent dir"
2529
@echo " make print-deb - Print the path to the built .deb (expects exactly one)"
30+
@echo " sudo make clear-docker-overrides - Remove Docker Debian overrides"
2631
@echo ""
2732

2833
all: build
2934

35+
test:
36+
PYTHONPATH=src python3 -m unittest discover -s tests -t . -v
37+
3038
timestamp:
3139
@set -e; \
3240
timestamp=$$(date +%Y%m%d%H%M%S); \
@@ -39,6 +47,32 @@ build:
3947
DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -us -uc -b
4048
@echo "Build complete. Use 'make print-deb' to locate the .deb file."
4149

50+
install:
51+
@set -e; \
52+
if [ -n "$(DESTDIR)" ]; then \
53+
echo "Skipping host install during Debian package staging."; \
54+
exit 0; \
55+
fi; \
56+
if [ "$$(id -u)" -ne 0 ]; then \
57+
echo "Error: 'make install' must be run as root. Use 'sudo make install'." 1>&2; \
58+
exit 1; \
59+
fi; \
60+
deb="$$( $(MAKE) --no-print-directory -s print-deb )"; \
61+
echo "Installing host package from $$deb..."; \
62+
apt-get install -y "$$deb"; \
63+
mkdir -p "$(DOCKER_DEB_OVERRIDE_DIR)"; \
64+
rm -f "$(DOCKER_DEB_OVERRIDE_DIR)"/$(PACKAGE_NAME)_*.deb; \
65+
cp "$$deb" "$(DOCKER_DEB_OVERRIDE_DIR)/"; \
66+
if [ -n "$${SUDO_UID:-}" ] && [ -n "$${SUDO_GID:-}" ]; then \
67+
chown -R "$$SUDO_UID:$$SUDO_GID" "$(DOCKER_DEB_OVERRIDE_DIR)"; \
68+
fi; \
69+
mkdir -p "$(SYSTEM_DOCKER_DEB_OVERRIDE_DIR)"; \
70+
rm -f "$(SYSTEM_DOCKER_DEB_OVERRIDE_DIR)"/$(PACKAGE_NAME)_*.deb; \
71+
cp "$$deb" "$(SYSTEM_DOCKER_DEB_OVERRIDE_DIR)/"; \
72+
echo "Staged source-local Docker Debian override: $(DOCKER_DEB_OVERRIDE_DIR)/$$(basename "$$deb")"; \
73+
echo "Staged Docker Debian override: $(SYSTEM_DOCKER_DEB_OVERRIDE_DIR)/$$(basename "$$deb")"; \
74+
echo "Docker builds driven by the installed CLI will use this override until it is cleared."
75+
4276
build-stamped:
4377
cp debian/changelog debian/changelog.original
4478
make timestamp
@@ -57,7 +91,18 @@ print-deb:
5791
clean:
5892
@echo "Removing staged packaging artifacts under debian/..."
5993
rm -rf debian/$(PACKAGE_NAME) debian/*.debhelper debian/*.substvars debian/debhelper-build-stamp debian/files
94+
rm -rf $(DOCKER_DEB_OVERRIDE_DIR)
6095

6196
distclean: clean
6297
@echo "Removing built artifacts in parent directory (if any)..."
6398
rm -f ../$(PACKAGE_NAME)_*.deb ../$(PACKAGE_NAME)_*.buildinfo ../$(PACKAGE_NAME)_*.changes
99+
100+
clear-docker-overrides:
101+
@rm -rf $(DOCKER_DEB_OVERRIDE_DIR)
102+
@if [ "$$(id -u)" -eq 0 ]; then \
103+
rm -rf "$(SYSTEM_DOCKER_DEB_OVERRIDE_DIR)"; \
104+
echo "Removed source-local and system Docker Debian overrides."; \
105+
else \
106+
echo "Removed source-local Docker Debian overrides."; \
107+
echo "Run 'sudo make clear-docker-overrides' to also remove $(SYSTEM_DOCKER_DEB_OVERRIDE_DIR)."; \
108+
fi

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,16 @@ isaac-ros --help
1717
# Initialize environment (pick a mode)
1818
sudo isaac-ros init <docker|venv|baremetal>
1919

20+
# Show configured mode and current activation state
21+
isaac-ros status
22+
isaac-ros status --output json
23+
2024
# Activate environment
2125
isaac-ros activate
26+
27+
# Override config keys for one invocation (see config/config.yaml for available keys)
28+
isaac-ros activate --config docker.run.container_name=foo
29+
isaac-ros activate --config docker.run.container_name=foo -c docker.run.platform=x86_64
2230
```
2331

2432
## Rebuilding Debian Package

config/.build_image_layers.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
image_key_order:
2-
- isaac_ros.noble.ros2_jazzy.realsense.nova_carter
2+
- isaac_ros.noble.ros2_jazzy.realsense.gr00t_workflow.ur_manipulation.mega_manipulation.nova_carter
33
context_overrides:
44
isaac_ros: ..
55
noble: ..

config/config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,9 @@ docker:
1313
platform: auto
1414
use_cached_build_image: false
1515

16+
apt:
17+
key_url: https://isaac.download.nvidia.com/isaac-ros/repos.key
18+
repository: https://isaac.download.nvidia.com/isaac-ros/release-4.5
19+
distro: noble
20+
components:
21+
- main

config/pip_shim_constraints.txt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ flake8-import-order==0.18.2
119119
flake8-quotes==3.4.0
120120
fonttools==4.61.0
121121
frozenlist==1.8.0
122-
fsspec==2025.12.0
122+
fsspec==2025.3.0
123123
generate-parameter-library-py==0.5.0
124124
geographic-msgs==1.0.6
125125
geometry-msgs==5.3.6
@@ -143,6 +143,7 @@ importlib_metadata==8.5.0
143143
importlib_resources==6.5.2
144144
iniconfig==1.1.1
145145
interactive-markers==2.5.5
146+
isaacteleop==1.3.55rc1
146147
Jinja2==3.1.6
147148
jmespath==1.0.1
148149
joblib==1.5.2
@@ -245,14 +246,14 @@ opentelemetry-sdk==1.28.1
245246
opentelemetry-semantic-conventions==0.49b1
246247
orjson==3.11.7
247248
osrf-pycommon==2.1.7
248-
packaging==24.0
249+
packaging==24.2
249250
paho-mqtt==1.6.1
250251
pal-statistics==2.7.0
251252
pal-statistics-msgs==2.7.0
252253
pandas==2.3.3
253254
paramiko==2.12.0
254255
patiencediff==0.2.13
255-
pillow==10.2.0
256+
pillow==12.2.0
256257
platformdirs==4.5.1
257258
pluggy==1.4.0
258259
posix_ipc==1.3.2
@@ -275,7 +276,7 @@ pydocstyle==6.3.0
275276
pydot==1.4.2
276277
pyflakes==3.2.0
277278
PyGithub==2.2.0
278-
Pygments==2.19.2
279+
Pygments==2.20.0
279280
PyGObject==3.48.2
280281
PyJWT==2.7.0
281282
pymongo==4.15.5
@@ -407,7 +408,7 @@ sympy==1.14.0
407408
tabulate==0.9.0
408409
tensordict==0.11.0
409410
tensorrt==10.13.3.9
410-
termcolor==1.1.0
411+
termcolor==2.4.0
411412
textual==6.8.0
412413
tf2-geometry-msgs==0.36.16
413414
tf2-kdl==0.36.16
@@ -422,7 +423,8 @@ tifffile==2025.10.16
422423
tokenizers==0.22.1
423424
torch==2.9.0+cu130
424425
torchmetrics==1.8.2
425-
torchvision==0.24.0+cu130
426+
torchvision==0.24.0+cu130; platform_machine != "aarch64" and platform_machine != "arm64"
427+
torchvision==0.24.0; platform_machine == "aarch64" or platform_machine == "arm64"
426428
tornado==6.4
427429
tqdm==4.67.1
428430
trajectory-msgs==5.3.6
@@ -440,7 +442,7 @@ ujson==5.9.0
440442
unattended-upgrades==0.1
441443
unidiff==0.7.3
442444
unique-identifier-msgs==2.5.0
443-
urllib3==2.6.1
445+
urllib3==2.7.0
444446
vcstool==0.3.0
445447
vcstools==0.1.42
446448
vhacdx==0.0.10

debian/changelog

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
isaac-ros-cli (2.4.0-1) noble; urgency=low
2+
3+
* Add config schema validation, command-line overrides, and the `isaac-ros status` command.
4+
* Improve Docker activation, `run_dev` image build lifecycle handling, and BuildKit scheduling.
5+
* Refresh pip shim constraints, rosdep mappings, apt repository selection, and Docker image definitions for Isaac ROS 4.5.
6+
7+
-- Isaac ROS Maintainers <isaac-ros-maintainers@nvidia.com> Mon, 6 Jul 2026 12:00:00 +0000
8+
19
isaac-ros-cli (2.3.0-1) noble; urgency=low
210

311
* Refresh pip shim constraints, including PyYAML, SciPy, and tensordict.

debian/control

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Depends: ${misc:Depends},
1313
${python3:Depends},
1414
python3,
1515
python3-click (>= 8),
16+
python3-pydantic,
1617
python3-termcolor,
1718
python3-venv,
1819
python3-yaml

debian/postinst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,19 @@
99

1010
set -e
1111

12+
DOCKER_DEB_OVERRIDE_DIR="/etc/isaac-ros-cli/.docker-deb-overrides"
13+
14+
clear_docker_deb_overrides() {
15+
if [ -d "$DOCKER_DEB_OVERRIDE_DIR" ]; then
16+
rm -rf "$DOCKER_DEB_OVERRIDE_DIR"
17+
echo "Cleared Isaac ROS CLI Docker Debian overrides from $DOCKER_DEB_OVERRIDE_DIR"
18+
fi
19+
}
20+
1221
case "$1" in
1322
configure)
23+
clear_docker_deb_overrides
24+
1425
echo "Creating Isaac ROS virtual environment..."
1526

1627
# Check if python3 is available

debian/prerm

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,19 @@
99

1010
set -e
1111

12+
DOCKER_DEB_OVERRIDE_DIR="/etc/isaac-ros-cli/.docker-deb-overrides"
13+
14+
clear_docker_deb_overrides() {
15+
if [ -d "$DOCKER_DEB_OVERRIDE_DIR" ]; then
16+
rm -rf "$DOCKER_DEB_OVERRIDE_DIR"
17+
echo "Cleared Isaac ROS CLI Docker Debian overrides from $DOCKER_DEB_OVERRIDE_DIR"
18+
fi
19+
}
20+
1221
case "$1" in
1322
remove)
23+
clear_docker_deb_overrides
24+
1425
echo "Removing Isaac ROS virtual environment..."
1526

1627
VENV_PATH="/var/lib/isaac-ros-cli/isaac-ros"
@@ -28,6 +39,7 @@ case "$1" in
2839
;;
2940

3041
upgrade|deconfigure)
42+
clear_docker_deb_overrides
3143
# Don't remove venv on upgrade, only on actual removal
3244
;;
3345

0 commit comments

Comments
 (0)