Hardware accelerated package for publishing CSI camera stream in ROS (noetic)

I’ve set up ROS noetic and gscam on my Jetson Nano and the publishing of my gstreamer pipeline is working. But only at a miserable 2Hz instead of the targeted 21Hz i get when using the same pipeline outside of ROS/gscam.
While researching the topic i stumbled upon isaac_ros_argus_camera, a package for ROS2 with hardware acceleration for the hole process from grabbing the frames to publishing them in ROS.
Unfortunately i cannot get this working on my Jetson Nano. I tried using a custom Ubuntu 22.04 Image from user @_Diablo based on Jetpack 4.6.3. ROS2 installs and everything works fine, except isaac_ros_argus_camera throws an error right on start: ERROR] [launch_ros.actions.load_composable_nodes]: Failed to load node 'argus_mono' of type 'nvidia::isaac_ros::argus::ArgusMonoNode' in container '/argus_mono_container': Failed to load library: Could not load library dlopen error: libnvToolsExt.so.1: cannot open shared object file: No such file or directory, at /tmp/binarydeb/ros-humble-rcutils-5.1.3/src/shared_library.c:99
I’ve read you have to be on Jetpack 5.1.2 in order to get this functionality out of the box, but you can’t get that for Jetson Nano.
So can anyone help with fixing that error please?
For a start, libnvToolsExt.so exists under /usr/local/cuda/lib64/ on my device.
If it is not possible under 22.04/ROS2 on Jetson Nano, is there any way to get hardware acceleration for the whole CSI camera image capture process like with isaac_ros_argus_camera only on ROS1 ?
I look forward to reading your opinions and solutions.
Thanks in advance!

moving this topic to the Isaac ROS forum

@Raffaello can you take a look? Thanks!

1 Like

Still trying to solve this with the help of an AI chat bot, but i just go round in circles.
The issue seems to be that libnvTools.so is existing on my device, but it is an empty directory and isaac-ros-argus-camera-mono is looking for a library file libnvTools.so.1

Isaac ROS Argus Camera currently only supports on Jetpack 5.1.2 which is based on Ubuntu 20.04. libnvToolsExt.so should be in /usr/local/cuda-11.4/targets/aarch64-linux/lib/ which you can add to your LD_LIBRARY_PATH to resolve in the worst case. This should get resolved, however, by FindCUDAToolkit in cmake. Which version of cmake are you running and can you confirm the the OS details (Jetpack 4.x is based on Ubuntu 18.04, for example, not Jammy 22.04).

1 Like

Thanks for your answer. I can confirm using jtop that i am running Ubuntu 22.04 with Jetpack 4.6.3 and thus L4T 32.7.3. cmake --version puts out 3.26.3. I tried adding the directory to LD_LIBRARY_PATH, but that did not help. Although i did it by modifying the .launch.py script and added my own env_var.
EDIT: To explicitly confirm: libnvToolsExt.so is in /usr/local/cuda-11.4/targets/aarch64-linux/lib/, although it is an empty directory for me, i hope this is right.
EDIT2: Also, you mentioned that “Isaac ROS Argus Camera currently only supports on Jetpack 5.1.2 which is based on Ubuntu 20.04”. But the official documentation states that “Versions of ROS 2 earlier than Humble are not supported. This package depends on specific ROS 2 implementation features that were only introduced beginning with the Humble release.” And ROS2 Humble is according to its documentation only supported on 22.04.
How does that make sense?

Hi @julius.n

the latest Isaac ROS argus camera version is not supported on your custom distribution.

If can’t update to the latest Jetpack, you can consider to use the version 0.9.3-EA3. All packages tagged with this version work with Jetpack 4.6.1

Thanks for your help.
Unfortunately, VPI won’t work. It fails to install via SDK manager and even inside the docker container shipped with the latest version of isaac_ros_argus_camera where it is preinstalled, it exits with something along the lines of “VPI module not found” when i try to start it.