NITROS not detected and build with colcon.

Hello ! I am following the exact instructions here : Setting up isaac ros

The guide mentions that I should be getting a confirmation that the zed ros2 wrapper is built with NITROS support, but I do not get this message.

The commands I run at this step are :

cd ${ISAAC_ROS_WS}
rm -rf build/ install/ log/
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-up-to zed_wrapper
source install/local_setup.bash

And the output looks like this :

Starting >>> zed_componentsFinished <<< zed_components [0.36s]Starting >>> zed_wrapperFinished <<< zed_wrapper [0.23s] Summary: 2 packages finished [2.49s]

Any help appreciated.

Furthermore, when launching the camera node for testing, and then checking the topics I get :

root@giorgos-desktop:/home/giorgos# ros2 topic list | grep zed
/zed/joint_states
/zed/zed_description
/zed/zed_node/depth/camera_info
/zed/zed_node/depth/depth_registered
/zed/zed_node/depth/depth_registered/camera_info
/zed/zed_node/depth/depth_registered/compressed
/zed/zed_node/depth/depth_registered/compressedDepth
/zed/zed_node/depth/depth_registered/theora
/zed/zed_node/imu/data
/zed/zed_node/odom
/zed/zed_node/point_cloud/cloud_registered
/zed/zed_node/pose
/zed/zed_node/pose/status
/zed/zed_node/rgb/color/rect/camera_info
/zed/zed_node/rgb/color/rect/image
/zed/zed_node/rgb/color/rect/image/camera_info
/zed/zed_node/rgb/color/rect/image/compressed
/zed/zed_node/rgb/color/rect/image/compressedDepth
/zed/zed_node/rgb/color/rect/image/theora
/zed/zed_node/status/health
/zed/zed_node/status/heartbeat

This shows no “nitros” anywhere in the topic names. The guide says “You should see topics related to the ZED camera, such as /zed/zed_node/rgb/color/rect/image/nitros and /zed/zed_node/depth/depth_registered/nitros"

Hi @Giorgos
Welcome to the Stereolabs community.

What type of installation have you performed? Docker or APT?

The fact that image_transport topics are available means that Nitros is not detected when building the Wrapper.

What’s the output of the command $ ros2 pkg list | grep isaac?

Thank you for the prompt reply Myhzar! I used the Docker installation.

Interestingly, running ros2 pkg list | grep isaac , listed 0 packages. What does that mean ?

I notice that when I start the isaac ros container with this command :

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh -i ros2_humble.zed \
-a "-v /usr/local/zed/settings:/usr/local/zed/settings \
    -v /usr/local/zed/resources:/usr/local/zed/resources"

..then my ~/.bashrc shell script is completely empty. Is that normal ?

This means that ISAAC ROS is not installed in your Docker image.

The script at the step #5 here is supposed to install the required packages:

# Install base Isaac ROS Nitros packages
sudo apt-get update && sudo apt-get install -y \
   ros-humble-isaac-ros-common \
   ros-humble-isaac-ros-nitros \
   ros-humble-isaac-ros-managed-nitros \
   ros-humble-isaac-ros-nitros-image-type

I followed step 5 instructions, and my script does contain these packages. Is this script supposed to run with the “-i ros2_humble.zed …etc” command when starting the container?

In any case, here is my install-zed-aarch64.sh :

#!/bin/bash

# Download dependencies for zed SDK installation RUN file
sudo apt-get update -y || true
sudo apt-get install --no-install-recommends lsb-release wget less zstd udev sudo apt-transport-https -y

# Download zed SDK installation RUN file to /tmp directory
cd /tmp

URL=https://download.stereolabs.com/zedsdk/5.1/l4t36.4/jetsons
wget -q --no-check-certificate -O ZED_SDK_Linux.run ${URL}
SIZE=$(du -sb './ZED_SDK_Linux.run' | awk '{ print $1 }')
if ((SIZE<1024)) ; then
   echo "ERROR: ZED_SDK_Linux.run size is not valid: ${SIZE}B!!!";
   echo " * Verify the ZED SDK download link validity: " ${URL} ;
   exit 1
fi

sudo chmod 777 ./ZED_SDK_Linux.run
sudo ./ZED_SDK_Linux.run silent skip_od_module skip_python skip_drivers
# Symlink required to use the streaming features on Jetson inside a container, based on
# https://github.com/stereolabs/zed-docker/blob/fd514606174d8bb09f21a229f1099205b284ecb6/4.X/l4t/devel/Dockerfile#L27C5-L27C95
sudo ln -sf /usr/lib/aarch64-linux-gnu/tegra/libv4l2.so.0 /usr/lib/aarch64-linux-gnu/libv4l2.so

# Install zed-ros2-wrapper dependencies
sudo apt-get update && sudo apt-get install -y \
   ros-humble-zed-msgs \
   ros-humble-nmea-msgs \
   ros-humble-geographic-msgs \
   ros-humble-robot-localization \
   #ros-humble-point-cloud-transport \
   #ros-humble-point-cloud-transport-plugins \
   #ros-humble-draco-point-cloud-transport \
   #ros-humble-zlib-point-cloud-transport \
   #ros-humble-zstd-point-cloud-transport \
   #ros-humble-point-cloud-transport \

# Uncomment the point cloud transport packages above if you want to use point cloud compression.

# Install base Isaac ROS Nitros packages
sudo apt-get update && sudo apt-get install -y \
   ros-humble-isaac-ros-common \
   ros-humble-isaac-ros-nitros \
   ros-humble-isaac-ros-managed-nitros \
   ros-humble-isaac-ros-nitros-image-type

# Cleanup
sudo rm -rf /usr/local/zed/resources/*
rm -rf ZED_SDK_Linux.run
sudo rm -rf /var/lib/apt/lists/*

Check that it’s saved in the correct path:
isaac_ros_common/docker/scripts/install-zed-<arch>.sh
and replace <arch> by aarm64 or x86_64

I suppose you are using a Jetson, so:
isaac_ros_common/docker/scripts/install-zed-aarch64.sh

I recommend you clean the Docker cache before retrying.

List all the images:

docker image list

remove all of them

docker image rm <image_name>

Then:

docker system prune

Yes the script is placed there :

admin@giorgos-desktop:/workspaces/isaac_ros-dev$ ls src/isaac_ros_common/docker/scripts/install-zed-aarch64.sh
 
src/isaac_ros_common/docker/scripts/install-zed-aarch64.sh


I removed the images and did a clean rebuild, the scripts seem to run so I am very confused as to why I cannot find the packages inside the docker. Here is my console output to see what I mean

giorgos@giorgos-desktop:~/ros2_ws/isaac_ros-dev/src/isaac_ros_common$ cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \

./scripts/run_dev.sh -i ros2_humble.zed \

-a "-v /usr/local/zed/settings:/usr/local/zed/settings \

    -v /usr/local/zed/resources:/usr/local/zed/resources"

Launching Isaac ROS Dev container with image key aarch64.ros2_humble.zed: /home/giorgos/ros2_ws/isaac_ros-dev/

Building aarch64.ros2_humble.zed base as image: isaac_ros_dev-aarch64

Building layered image for key aarch64.ros2_humble.zed as isaac_ros_dev-aarch64

Using configured docker search paths: /home/giorgos/ros2_ws/isaac_ros-dev/src/isaac_ros_common/scripts/../docker

Checking if base image nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble-zed_ccc93862c478342dd3453aa6d38e3967 exists on remote registry

Checking if base image nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a exists on remote registry

Found pre-built base image: nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a

aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a: Pulling from nvidia/isaac/ros

Digest: sha256:6b95b06a7bed6fd23f541795acc3b3f58356ea6392643d7d911a6fbf4aa4d6f1

Status: Downloaded newer image for nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a

nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a

Finished pulling pre-built base image: nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a

Resolved the following 1 Dockerfiles for target image: aarch64.ros2_humble.zed

/home/giorgos/ros2_ws/isaac_ros-dev/src/isaac_ros_common/scripts/../docker/Dockerfile.zed

Building /home/giorgos/ros2_ws/isaac_ros-dev/src/isaac_ros_common/scripts/../docker/Dockerfile.zed as image: isaac_ros_dev-aarch64 with base: nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a

[+] Building 50.6s (9/9) FINISHED                                                                                                                                                                                                                                          docker:default

 => [internal] load build definition from Dockerfile.zed                                                                                                                                                                                                                             0.0s

 => => transferring dockerfile: 659B                                                                                                                                                                                                                                                 0.0s

 => WARN: InvalidDefaultArgInFrom: Default value for ARG ${BASE_IMAGE} results in empty or invalid base image name (line 2)                                                                                                                                                          0.0s

 => [internal] load metadata for nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a                                                                                                                                                                       0.0s

 => [internal] load .dockerignore                                                                                                                                                                                                                                                    0.0s

 => => transferring context: 2B                                                                                                                                                                                                                                                      0.0s

 => CACHED [1/4] FROM nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_adc428c7077de4984a00b63c55903b0a                                                                                                                                                                                  0.0s

 => [internal] load build context                                                                                                                                                                                                                                                    0.0s

 => => transferring context: 2.49kB                                                                                                                                                                                                                                                  0.0s

 => [2/4] COPY scripts/install-zed-aarch64.sh /opt/zed/install-zed.sh                                                                                                                                                                                                                0.0s

 => [3/4] COPY scripts/zed-entrypoint.sh /usr/local/bin/scripts/entrypoint_additions/zed-entrypoint.sh                                                                                                                                                                               0.0s

 => [4/4] RUN chmod +x /opt/zed/install-zed.sh &&    /opt/zed/install-zed.sh                                                                                                                                                                                                        48.4s

 => exporting to image                                                                                                                                                                                                                                                               2.0s 

 => => exporting layers                                                                                                                                                                                                                                                              2.0s 

 => => writing image sha256:a2e927e210e94fd639e8041939a0b8f98edf08a6bac487aa156b8ac218d34f59                                                                                                                                                                                         0.0s 

 => => naming to docker.io/library/isaac_ros_dev-aarch64                                                                                                                                                                                                                             0.0s 

                                                                                                                                                                                                                                                                                          

 1 warning found (use docker --debug to expand):                                                                                                                                                                                                                                          

 - InvalidDefaultArgInFrom: Default value for ARG ${BASE_IMAGE} results in empty or invalid base image name (line 2)

Running isaac_ros_dev-aarch64-container

Creating non-root container 'admin' for host user uid=1000:gid=1000

addgroup: The GID `1001' is already in use.

adduser: The group `jtop' does not exist.

Sourcing entryrypoint extension: /usr/local/bin/scripts/entrypoint_additions/zed-entrypoint.sh

Checking ZED SDK...

 * /usr/local/zed/ exists. Changing permissions

 * ZED SDK available:

Stereolabs ZED SDK Version : 5.1.1

 * Stopping hotplug events dispatcher systemd-udevd                                                                                                                                                                                                                                [ OK ] 

 * Starting hotplug events dispatcher systemd-udevd                                                                                                                                                                                                                                [ OK ] 

To run a command as administrator (user "root"), use "sudo <command>".

See "man sudo_root" for details.



admin@giorgos-desktop:/workspaces/isaac_ros-dev$ ros2 pkg list | grep isaac

admin@giorgos-desktop:/workspaces/isaac_ros-dev$ 

What does it happen if you try to install the packages manually after you started the Docker image?
Do you get any error?

No, manual installation of the packages worked. Below is the log. This suggests that the script install-zed-aarch64.sh was never run, but I cannot find the reason.

admin@giorgos-desktop:/workspaces/isaac_ros-dev$ sudo apt-get install -y ros-humble-isaac-ros-common ros-humble-isaac-ros-nitros

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

The following additional packages will be installed:

  ros-humble-gxf-isaac-atlas ros-humble-gxf-isaac-gems ros-humble-gxf-isaac-gxf-helpers ros-humble-gxf-isaac-message-compositor ros-humble-gxf-isaac-optimizer ros-humble-gxf-isaac-sight ros-humble-isaac-ros-gxf ros-humble-magic-enum

The following NEW packages will be installed:

  ros-humble-gxf-isaac-atlas ros-humble-gxf-isaac-gems ros-humble-gxf-isaac-gxf-helpers ros-humble-gxf-isaac-message-compositor ros-humble-gxf-isaac-optimizer ros-humble-gxf-isaac-sight ros-humble-isaac-ros-common ros-humble-isaac-ros-gxf ros-humble-isaac-ros-nitros

  ros-humble-magic-enum

0 upgraded, 10 newly installed, 0 to remove and 389 not upgraded.

Need to get 22.4 MB of archives.

After this operation, 119 MB of additional disk space will be used.

Get:1 http://packages.ros.org/ros2/ubuntu jammy/main arm64 ros-humble-magic-enum arm64 0.9.5-1jammy.20250701.031512 [26.0 kB]

Get:2 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-isaac-ros-common arm64 3.2.5-0jammy [29.7 kB]

Get:3 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-isaac-ros-gxf arm64 3.2.5-0jammy [14.2 MB]

Get:4 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-gxf-isaac-gems arm64 3.2.5-0jammy [179 kB]

Get:5 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-gxf-isaac-atlas arm64 3.2.5-0jammy [1,761 kB]

Get:6 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-gxf-isaac-gxf-helpers arm64 3.2.5-0jammy [919 kB]

Get:7 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-gxf-isaac-message-compositor arm64 3.2.5-0jammy [894 kB]

Get:8 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-gxf-isaac-optimizer arm64 3.2.10-0jammy [1,090 kB]

Get:9 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-gxf-isaac-sight arm64 3.2.5-0jammy [1,108 kB]

Get:10 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy/release-3.0 arm64 ros-humble-isaac-ros-nitros arm64 3.2.5-0jammy [2,275 kB]

Fetched 22.4 MB in 3s (6,611 kB/s)                  

debconf: unable to initialize frontend: Dialog

debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78, <> line 10.)

debconf: falling back to frontend: Readline

Selecting previously unselected package ros-humble-isaac-ros-common.

(Reading database ... 166244 files and directories currently installed.)

Preparing to unpack .../0-ros-humble-isaac-ros-common_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-isaac-ros-common (3.2.5-0jammy) ...

Selecting previously unselected package ros-humble-magic-enum.

Preparing to unpack .../1-ros-humble-magic-enum_0.9.5-1jammy.20250701.031512_arm64.deb ...

Unpacking ros-humble-magic-enum (0.9.5-1jammy.20250701.031512) ...

Selecting previously unselected package ros-humble-isaac-ros-gxf.

Preparing to unpack .../2-ros-humble-isaac-ros-gxf_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-isaac-ros-gxf (3.2.5-0jammy) ...

Selecting previously unselected package ros-humble-gxf-isaac-gems.

Preparing to unpack .../3-ros-humble-gxf-isaac-gems_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-gxf-isaac-gems (3.2.5-0jammy) ...

Selecting previously unselected package ros-humble-gxf-isaac-atlas.

Preparing to unpack .../4-ros-humble-gxf-isaac-atlas_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-gxf-isaac-atlas (3.2.5-0jammy) ...

Selecting previously unselected package ros-humble-gxf-isaac-gxf-helpers.

Preparing to unpack .../5-ros-humble-gxf-isaac-gxf-helpers_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-gxf-isaac-gxf-helpers (3.2.5-0jammy) ...

Selecting previously unselected package ros-humble-gxf-isaac-message-compositor.

Preparing to unpack .../6-ros-humble-gxf-isaac-message-compositor_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-gxf-isaac-message-compositor (3.2.5-0jammy) ...

Selecting previously unselected package ros-humble-gxf-isaac-optimizer.

Preparing to unpack .../7-ros-humble-gxf-isaac-optimizer_3.2.10-0jammy_arm64.deb ...

Unpacking ros-humble-gxf-isaac-optimizer (3.2.10-0jammy) ...

Selecting previously unselected package ros-humble-gxf-isaac-sight.

Preparing to unpack .../8-ros-humble-gxf-isaac-sight_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-gxf-isaac-sight (3.2.5-0jammy) ...

Selecting previously unselected package ros-humble-isaac-ros-nitros.

Preparing to unpack .../9-ros-humble-isaac-ros-nitros_3.2.5-0jammy_arm64.deb ...

Unpacking ros-humble-isaac-ros-nitros (3.2.5-0jammy) ...

Setting up ros-humble-isaac-ros-common (3.2.5-0jammy) ...

Setting up ros-humble-magic-enum (0.9.5-1jammy.20250701.031512) ...

Setting up ros-humble-isaac-ros-gxf (3.2.5-0jammy) ...

Setting up ros-humble-gxf-isaac-optimizer (3.2.10-0jammy) ...

Setting up ros-humble-gxf-isaac-sight (3.2.5-0jammy) ...

Setting up ros-humble-gxf-isaac-message-compositor (3.2.5-0jammy) ...

Setting up ros-humble-gxf-isaac-gems (3.2.5-0jammy) ...

Setting up ros-humble-gxf-isaac-atlas (3.2.5-0jammy) ...

Setting up ros-humble-gxf-isaac-gxf-helpers (3.2.5-0jammy) ...

Setting up ros-humble-isaac-ros-nitros (3.2.5-0jammy) ...

(post deleted by author)

Following up the manual installation of the isaac packages, I rebuild with colcon the wrapper succesfully. No info messages stated that nitros will be used however. And when I then launched the camera node, the topics did not have “nitros” in them.

You can ignore the last message, it was fixed. I had ommited something in the apt-get install commands. However, it might still be interesting for you to figure out if there is something wrong with the guide, because the script did not install the isaac ros packages for me, as if it failed silently. Also, before the rosdep install command, it could be nice to add a rosdep update, because that part for me was failing if I did not run rosdep update beforehand.