stereolabs / zed-ros-wrapper

ROS wrapper for the ZED SDK
https://www.stereolabs.com/docs/ros/
MIT License
447 stars 391 forks source link

CUDART error - Jetson Nano + ZED2 #891

Closed rafal-gorecki closed 1 year ago

rafal-gorecki commented 1 year ago

Preliminary Checks

Description

Hello, I try to build this package on Jetson Nano inside the Docker container. When i try to build image on my computer (docker buildx build --platform linux/arm64 -t zed_jp_l4t32 .), I have problem with building docker image. I get error when execute catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs -DCUDA_CUDART_LIBRARY=/usr/local/cuda/lib64/libcudart.so.

I tried this with multiple ZED_SDK versions, but problem doesn't vanished. Could you help me with that?

Steps to Reproduce

Build Dockerfile

ARG L4T_MAJOR=32
ARG L4T_MINOR=7
ARG ZED_SDK_MAJOR=3
ARG ZED_SDK_MINOR=8

FROM stereolabs/zed:${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}-devel-l4t-r${L4T_MAJOR}.${L4T_MINOR} AS build

ARG L4T_MAJOR=32
ARG L4T_MINOR=7
ARG ZED_SDK_MAJOR=3
ARG ZED_SDK_MINOR=8

SHELL ["/bin/bash", "-c"]

# ROS Melodic install
ENV ROS_DISTRO=melodic
RUN apt-get update && apt-get install -q -y --no-install-recommends \
    dirmngr \
    gnupg2 && \
    rm -rf /var/lib/apt/lists/*

RUN echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-latest.list && \
    apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 && \
    apt-get update && \ 
    apt-get install -y --no-install-recommends \
    ros-$ROS_DISTRO-ros-core=1.4.1-0* && \
    rm -rf /var/lib/apt/lists/*

# ZED setup
WORKDIR /ros_ws
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        build-essential \
        git \
        python3-pip && \
        pip3 install \
        rosdep && \
    rm -rf /var/lib/apt/lists/*

RUN apt-get update && \
    git clone --recursive -b v${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}.x https://github.com/stereolabs/zed-ros-wrapper src/zed-ros-wrapper && \
    source /opt/ros/$ROS_DISTRO/setup.bash && \
    rosdep init && \
    rosdep update --rosdistro $ROS_DISTRO && \
    rosdep install --from-paths src -y -i && \
    rm -rf /var/lib/apt/lists/*

RUN echo $(cat /ros_ws/src/zed-ros-wrapper/zed_wrapper/package.xml | grep '<version>' | sed -r 's/.*<version>([0-9]+.[0-9]+.[0-9]+)<\/version>/\1/g') >> /version.txt

# Build
RUN source /opt/ros/$ROS_DISTRO/setup.bash && \
    catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs -DCUDA_CUDART_LIBRARY=/usr/local/cuda/lib64/libcudart.so

# setup entrypoint
COPY ./ros_entrypoint_l4t32.sh /

ENTRYPOINT ["/ros_entrypoint_l4t32.sh"]

Expected Result

Successfully built the package

Actual Result

[ 96%] Building CXX object zed-ros-wrapper/zed_nodelets/CMakeFiles/ZEDNodelets.dir/src/tools/src/sl_tools.cpp.o
[ 97%] Building CXX object zed-ros-wrapper/zed_nodelets/CMakeFiles/ZEDNodelets.dir/src/zed_nodelet/src/zed_wrapper_nodelet.cpp.o
make[2]: *** No rule to make target '/usr/local/cuda/lib64/libcudart.so', needed by '/ros_ws/devel/lib/libZEDNodelets.so'.  Stop.
make[2]: *** Waiting for unfinished jobs....
[ 98%] Building CXX object zed-ros-wrapper/zed_nodelets/CMakeFiles/ZEDNodelets.dir/src/rgbd_sensors_demux_nodelet/src/rgbd_sensor_demux.cpp.o
[ 98%] Building CXX object zed-ros-wrapper/zed_nodelets/CMakeFiles/ZEDNodelets.dir/src/rgbd_sensors_sync_nodelet/src/rgbd_sensor_sync.cpp.o
make[1]: *** [zed-ros-wrapper/zed_nodelets/CMakeFiles/ZEDNodelets.dir/all] Error 2
CMakeFiles/Makefile2:2678: recipe for target 'zed-ros-wrapper/zed_nodelets/CMakeFiles/ZEDNodelets.dir/all' failed
Makefile:140: recipe for target 'all' failed

ZED Camera model

ZED2

Environment

Platform: Jetson Nano (l4t 32.7)

Anything else?

No response

rafal-gorecki commented 1 year ago

Partial solution can be found here: https://stackoverflow.com/questions/59691207/docker-build-with-nvidia-runtime