Hi stereolabs community,
nvidia publishes various software packages to simplify integration of Nvidia AI models into ROS2:
e.g. the object detection package GitHub - NVIDIA-ISAAC-ROS/isaac_ros_object_detection: Deep learning model support for object detection including DetectNet
I am currently trying to use the object detection package with the ZED2i camera and need your assistance. Since nvidia provides pre-built docker images for ROS2 and their AI stack, I would like to utilize them, which (I believe) means I need to somehow integrate this Dockerfile:
into the main Dockerfile from NVIDIA-ISAAC-ROS/isaac_ros_common
I found an example on how to extend the Dockerfile for an intel realsense camera: /isaac_ros_common/blob/main/docs/modify-dockerfile.md (truncated link since I am limited to 2 links in my 1st post) and would like to do the same for the ZED2i.
This is the Dockerfile I created to integrate the zed sdk into the isaac_ros_common docker build process:
https://ngc.nvidia.com/catalog/containers/nvidia:l4t-base
ARG BASE_IMAGE
FROM ${BASE_IMAGE}
ARG ZED_SDK_MAJOR=3
ARG ZED_SDK_MINOR=7
ARG L4T_MAJOR_VERSION=35
ARG L4T_MINOR_VERSION=1
ARG L4T_PATCH_VERSION=0
#This environment variable is needed to use the streaming features on Jetson inside a container
ENV LOGNAME root
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update || true
RUN apt-get install --no-install-recommends lsb-release wget less udev sudo apt-transport-https build-essential cmake -y&& \
echo "# R${L4T_MAJOR_VERSION} (release), REVISION: ${L4T_MINOR_VERSION}.${L4T_PATCH_VERSION}" > /etc/nv_tegra_release ; \
wget -q --no-check-certificate -O ZED_SDK_Linux.run https://download.stereolabs.com/zedsdk/${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}/l4t${L4T_MAJOR_VERSION}.${L4T_MINOR_VERSION}/jetsons && \
chmod +x ZED_SDK_Linux.run ; ./ZED_SDK_Linux.run silent skip_tools skip_python && \
rm -rf /usr/local/zed/resources/* \
rm -rf ZED_SDK_Linux.run && \
rm -rf /var/lib/apt/lists/*
#This symbolic link is needed to use the streaming features on Jetson inside a container
RUN ln -sf /usr/lib/aarch64-linux-gnu/tegra/libv4l2.so.0 /usr/lib/aarch64-linux-gnu/libv4l2.so
#WORKDIR /usr/local/zed
The container build process runs fine, but when I try to build the zed-ros2-wrapper package in the ROS2 workspace while being in the container, the zed_components package can’t seem to find the ZED SDK:
admin@ubuntu:/workspaces/isaac_ros-dev$ colcon build --symlink-install --cmake-args=-DCMAKE_BUILD_TYPE=Release
Starting >>> isaac_ros_test
Starting >>> isaac_ros_tensor_list_interfaces
Starting >>> zed_components
Starting >>> isaac_ros_apriltag_interfaces
Starting >>> isaac_ros_bi3d_interfaces
Starting >>> isaac_ros_common
--- stderr: zed_components
* Found ROS2 humble
* ROS2 humble is officially supported by this package.
CMake Error at CMakeLists.txt:80 (find_package):
By not providing "FindZED.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "ZED", but
CMake did not find one.
Could not find a package configuration file provided by "ZED" (requested
version 3) with any of the following names:
ZEDConfig.cmake
zed-config.cmake
Add the installation prefix of "ZED" to CMAKE_PREFIX_PATH or set "ZED_DIR"
to a directory containing one of the above files. If "ZED" provides a
separate development package or SDK, be sure it has been installed.
---
Failed <<< zed_components [1.94s, exited with code 1]
Aborted <<< isaac_ros_common [1.81s]
Aborted <<< isaac_ros_tensor_list_interfaces [3.66s]
Aborted <<< isaac_ros_apriltag_interfaces [3.60s]
Aborted <<< isaac_ros_bi3d_interfaces [3.58s]
Aborted <<< isaac_ros_test [4.33s]
Summary: 0 packages finished [5.28s]
1 package failed: zed_components
5 packages aborted: isaac_ros_apriltag_interfaces isaac_ros_bi3d_interfaces isaac_ros_common isaac_ros_tensor_list_interfaces isaac_ros_test
1 package had stderr output: zed_components
16 packages not processed
Does someone have any advice on how to make the zed-ros2-wrapper work with nvidias’ isaac_ros_object_detection?