dusty-nv / jetson-containers

Machine Learning Containers for NVIDIA Jetson and JetPack-L4T
MIT License
2.14k stars 444 forks source link

Building noetic_desktop + pytorch image #89

Open madratman opened 3 years ago

madratman commented 3 years ago

I am trying to build the neotic_desktop image with pytorch by doing the equivalent of ./scripts/docker_build_ros.sh --distro noetic --package desktop --with-pytorch

As noetic_base + pytorch binaries are already availble under dustynv/ros:noetic-pytorch-l4t-r32.6.1, I chose to clone that image as a starting point, and then am running these lines for noetic + desktop.

Now, cv_bridge failed to compile eventually. Looking at the logs, it seems things failed in this step:

root@goose:/workspace/ros_catkin_ws# rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro ${ROS_DISTRO} --skip-key

Log:

Selecting previously unselected package libopencv-dev.
Preparing to unpack .../106-libopencv-dev_3.2.0+dfsg-4ubuntu0.1_arm64.deb ...
Unpacking libopencv-dev (3.2.0+dfsg-4ubuntu0.1) ...
dpkg: error processing archive /tmp/apt-dpkg-install-1213eD/106-libopencv-dev_3.2.0+dfsg-4ubuntu0.1_arm64.deb (--unpack):
 trying to overwrite '/usr/bin/opencv_annotation', which is also in package opencv-dev 4.5.0
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Selecting previously unselected package libpng-tools.
Preparing to unpack .../107-libpng-tools_1.6.34-1ubuntu0.18.04.2_arm64.deb ...
Unpacking libpng-tools (1.6.34-1ubuntu0.18.04.2) ...
Selecting previously unselected package libraw1394-tools.
Preparing to unpack .../108-libraw1394-tools_2.1.2-1_arm64.deb ...
Unpacking libraw1394-tools (2.1.2-1) ...
Selecting previously unselected package opencv-data.
Preparing to unpack .../109-opencv-data_3.2.0+dfsg-4ubuntu0.1_all.deb ...
Unpacking opencv-data (3.2.0+dfsg-4ubuntu0.1) ...
Selecting previously unselected package proj-bin.
Preparing to unpack .../110-proj-bin_4.9.3-2_arm64.deb ...
Unpacking proj-bin (4.9.3-2) ...
Errors were encountered while processing:
 /tmp/apt-dpkg-install-1213eD/106-libopencv-dev_3.2.0+dfsg-4ubuntu0.1_arm64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
ERROR: the following rosdeps failed to install
  apt: command [apt-get install -y libopencv-dev] failed

Wanted to check if I should try to force an overwrite of opencv3.2 over 4.5, or should I use a different base image?

dusty-nv commented 3 years ago

Hi @madratman, perhaps you need to skip the opencv keys in the rosdep call like I do in the foxy/galactic Dockerfiles:

https://github.com/dusty-nv/jetson-containers/blob/d58ce7eb0afbb3c2706fc62d26f69e7055384484/Dockerfile.ros.foxy#L164

madratman commented 3 years ago

Thanks for the quick reply! Actually, I think the above issue was inconsequential. I am rerunning things again inside the docker container interactively.

The issue was a specific version of boost_python needed by cv_bridge

==> Processing catkin package: 'cv_bridge'
==> Creating build directory: 'build_isolated/cv_bridge'
==> Building with env: '/opt/ros/noetic/share/ros/env.sh'
==> cmake /workspace/ros_catkin_ws/src/vision_opencv/cv_bridge -DCATKIN_DEVEL_PREFIX=/workspace/ros_catkin_ws/devel_isolated/cv_bridge -DCMAKE_INSTALL_PREFIX=/opt/ros/noetic/share/ros -DCMAKE_BUILD_TYPE=Release -G Unix Makefiles in '/workspace/ros_catkin_ws/build_isolated/cv_bridge'
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using CATKIN_DEVEL_PREFIX: /workspace/ros_catkin_ws/devel_isolated/cv_bridge
-- Using CMAKE_PREFIX_PATH: /opt/ros/noetic/share/ros;/opt/ros/noetic
-- This workspace overlays: /opt/ros/noetic/share/ros;/opt/ros/noetic
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.6.9", minimum required is "3") 
-- Using PYTHON_EXECUTABLE: /usr/bin/python3
-- Using Debian Python package layout
-- Found PY_em: /usr/lib/python3/dist-packages/em.py  
-- Using empy: /usr/lib/python3/dist-packages/em.py
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /workspace/ros_catkin_ws/build_isolated/cv_bridge/test_results
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python3 (found version "3.6.9") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Using Python nosetests: /usr/bin/nosetests3
-- catkin 0.8.10
-- BUILD_SHARED_LIBS is on
-- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.6m.so (found version "3.6.9") 
CMake Warning at /usr/share/cmake-3.10/Modules/FindBoost.cmake:1626 (message):
  No header defined for python37; skipping header check
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)

CMake Error at /usr/share/cmake-3.10/Modules/FindBoost.cmake:1947 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.65.1

  Boost include path: /usr/include

  Could not find the following Boost libraries:

          boost_python37

  No Boost libraries were found.  You may need to set BOOST_LIBRARYDIR to the
  directory containing Boost libraries or BOOST_ROOT to the location of
  Boost.
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)

-- Found CUDA: /usr/local/cuda (found suitable exact version "10.2") 
-- Found OpenCV: /usr (found version "4.5.0") found components:  opencv_core opencv_imgproc opencv_imgcodecs 
-- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.6m.so (found suitable version "3.6.9", minimum required is "3.6") 
-- Configuring incomplete, errors occurred!
See also "/workspace/ros_catkin_ws/build_isolated/cv_bridge/CMakeFiles/CMakeOutput.log".
See also "/workspace/ros_catkin_ws/build_isolated/cv_bridge/CMakeFiles/CMakeError.log".
<== Failed to process package 'cv_bridge': 
  Command '['/opt/ros/noetic/share/ros/env.sh', 'cmake', '/workspace/ros_catkin_ws/src/vision_opencv/cv_bridge', '-DCATKIN_DEVEL_PREFIX=/workspace/ros_catkin_ws/devel_isolated/cv_bridge', '-DCMAKE_INSTALL_PREFIX=/opt/ros/noetic/share/ros', '-DCMAKE_BUILD_TYPE=Release', '-G', 'Unix Makefiles']' returned non-zero exit status 1.

Reproduce this error by running:
==> cd /workspace/ros_catkin_ws/build_isolated/cv_bridge && /opt/ros/noetic/share/ros/env.sh cmake /workspace/ros_catkin_ws/src/vision_opencv/cv_bridge -DCATKIN_DEVEL_PREFIX=/workspace/ros_catkin_ws/devel_isolated/cv_bridge -DCMAKE_INSTALL_PREFIX=/opt/ros/noetic/share/ros -DCMAKE_BUILD_TYPE=Release -G 'Unix Makefiles'

Following https://github.com/ros-perception/vision_opencv/issues/341#issuecomment-767965760, I just changed that CMake line in vision_opencv from find_package(Boost REQUIRED python37) to find_package(Boost REQUIRED python3), and that is enough apparently. I'll update if the full thing works.

root@goose:/workspace/ros_catkin_ws/build_isolated/cv_bridge# cd /workspace/ros_catkin_ws/build_isolated/cv_bridge && /opt/ros/noetic/share/ros/env.sh cmake /workspace/ros_catkin_ws/src/vision_opencv/cv_bridge -DCATKIN_DEVEL_PREFIX=/workspace/ros_catkin_ws/devel_isolated/cv_bridge -DCMAKE_INSTALL_PREFIX=/opt/ros/noetic/share/ros -DCMAKE_BUILD_TYPE=Release -G 'Unix Makefiles'
-- Using CATKIN_DEVEL_PREFIX: /workspace/ros_catkin_ws/devel_isolated/cv_bridge
-- Using CMAKE_PREFIX_PATH: /opt/ros/noetic/share/ros;/opt/ros/noetic
-- This workspace overlays: /opt/ros/noetic/share/ros;/opt/ros/noetic
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.6.9", minimum required is "3") 
-- Using PYTHON_EXECUTABLE: /usr/bin/python3
-- Using Debian Python package layout
-- Using empy: /usr/lib/python3/dist-packages/em.py
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /workspace/ros_catkin_ws/build_isolated/cv_bridge/test_results
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python3 (found version "3.6.9") 
-- Using Python nosetests: /usr/bin/nosetests3
-- catkin 0.8.10
-- BUILD_SHARED_LIBS is on
-- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.6m.so (found version "3.6.9") 
CMake Warning at /usr/share/cmake-3.10/Modules/FindBoost.cmake:1626 (message):
  No header defined for python3; skipping header check
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)

-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   python3
-- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.6m.so (found suitable version "3.6.9", minimum required is "3.6") 
-- Configuring done
-- Generating done
-- Build files have been written to: /workspace/ros_catkin_ws/build_isolated/cv_bridge

Interestingly, find_package(Boost REQUIRED python36) doesn't work albeit I can see it here

root@goose:/workspace/ros_catkin_ws# ls /usr/lib/aarch64-linux-gnu/libboost_python
libboost_python-py27.a           libboost_python-py36.a           libboost_python.so               libboost_python3-py36.so.1.65.1
libboost_python-py27.so          libboost_python-py36.so          libboost_python3-py36.a          libboost_python3.a
libboost_python-py27.so.1.65.1   libboost_python.a                libboost_python3-py36.so         libboost_python3.so

Update: the above did work, closing. Thanks @dusty-nv!

madratman commented 3 years ago

One more question: I did not run the last 5 lines in the docker container: https://github.com/dusty-nv/jetson-containers/blob/master/Dockerfile.ros.noetic#L69-L73 (as they are already in the base docker image (noetic-ros-base-pytorch one)

When building a catkin workspace (after ensuring source /opt/ros/noetic/setup.bash), catkin is unable to find basic packages like tf, tf2, vision_opencv.. Although I see them all inside /opt/ros/noetic/include, /lib, /share, etc

examples:

CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "cv_bridge" with
  any of the following names:

    cv_bridgeConfig.cmake
    cv_bridge-config.cmake

  Add the installation prefix of "cv_bridge" to CMAKE_PREFIX_PATH or set
  "cv_bridge_DIR" to a directory containing one of the above files.  If
  "cv_bridge" provides a separate development package or SDK, be sure it has
  been installed.
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "tf" with any of
  the following names:

    tfConfig.cmake
    tf-config.cmake

  Add the installation prefix of "tf" to CMAKE_PREFIX_PATH or set "tf_DIR" to
  a directory containing one of the above files.  If "tf" provides a separate
  development package or SDK, be sure it has been installed.
Call Stack (most recent call first):

even though I can see them here

# echo $CMAKE_PREFIX_PATH/
/opt/ros/noetic/

# find /opt/ros/noetic/ -name cv_bridgeConfig.cmake
/opt/ros/noetic/share/ros/share/cv_bridge/cmake/cv_bridgeConfig.cmake

# find /opt/ros/noetic/ -name tfConfig.cmake
/opt/ros/noetic/share/ros/share/tf/cmake/tfConfig.cmake
madratman commented 3 years ago

Here's the output of running the provided docker test ros script (I modified it slightly to use dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 which is the name of the local build of my noetic desktop image)

robot@goose:~/projects/jetson-containers$ ./scripts/docker_test_ros.sh noetic
reading L4T version from /etc/nv_tegra_release
L4T BSP Version:  L4T R32.6.1
l4t-base image:  nvcr.io/nvidia/l4t-base:r32.6.1
testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => ros_version
localuser:root being added to access control list
sourcing   /opt/ros/noetic/setup.bash
ROS_ROOT   /opt/ros/noetic/share/ros
ROS_DISTRO noetic
getting ROS version -
noetic
done testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => ros_version

testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => ros_version
localuser:root being added to access control list
sourcing   /opt/ros/noetic/setup.bash
ROS_ROOT   /opt/ros/noetic/share/ros
ROS_DISTRO noetic
getting ROS version -
noetic
done testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => ros_version

testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => PyTorch
localuser:root being added to access control list
sourcing   /opt/ros/noetic/setup.bash
ROS_ROOT   /opt/ros/noetic/share/ros
ROS_DISTRO noetic
testing PyTorch...
PyTorch version: 1.9.0
CUDA available:  True
cuDNN version:   8201
Tensor a = tensor([0., 0.], device='cuda:0')
Tensor b = tensor([-0.1175, -0.4439], device='cuda:0')
Tensor c = tensor([-0.1175, -0.4439], device='cuda:0')
testing LAPACK (OpenBLAS)...
test/test_pytorch.py:25: UserWarning: torch.solve is deprecated in favor of torch.linalg.solveand will be removed in a future PyTorch release.
torch.linalg.solve has its arguments reversed and does not return the LU factorization.
To get the LU factorization see torch.lu, which can be used with torch.lu_solve or torch.lu_unpack.
X = torch.solve(B, A).solution
should be replaced with
X = torch.linalg.solve(A, B) (Triggered internally at  /media/nvidia/NVME/pytorch/pytorch-v1.9.0/aten/src/ATen/native/BatchLinearAlgebra.cpp:760.)
  x, lu = torch.solve(b, a)
done testing LAPACK (OpenBLAS)
testing torch.nn (cuDNN)...
done testing torch.nn (cuDNN)
testing CPU tensor vector operations...
test/test_pytorch.py:49: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.
  cpu_y = F.softmax(cpu_x)
Tensor cpu_x = tensor([12.3450])
Tensor softmax = tensor([1.])
Tensor exp (float32) = tensor([[2.7183, 2.7183, 2.7183],
        [2.7183, 2.7183, 2.7183],
        [2.7183, 2.7183, 2.7183]])
Tensor exp (float64) = tensor([[2.7183, 2.7183, 2.7183],
        [2.7183, 2.7183, 2.7183],
        [2.7183, 2.7183, 2.7183]], dtype=torch.float64)
Tensor exp (diff) = 7.429356050359104e-07
PyTorch OK

done testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => PyTorch

testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => numpy
localuser:root being added to access control list
sourcing   /opt/ros/noetic/setup.bash
ROS_ROOT   /opt/ros/noetic/share/ros
ROS_DISTRO noetic
testing numpy...
numpy version: 1.19.5
blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib/aarch64-linux-gnu']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib/aarch64-linux-gnu']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib/aarch64-linux-gnu']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib/aarch64-linux-gnu']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
None
numpy OK

done testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => numpy

testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => OpenCV
localuser:root being added to access control list
sourcing   /opt/ros/noetic/setup.bash
ROS_ROOT   /opt/ros/noetic/share/ros
ROS_DISTRO noetic
testing OpenCV...
OpenCV version: 4.5.0

General configuration for OpenCV 4.5.0 =====================================
  Version control:               4.5.0

  Extra modules:
    Location (extra):            /opt/opencv_contrib/modules
    Version control (extra):     4.5.0

  Platform:
    Timestamp:                   2021-07-19T21:05:54Z
    Host:                        Linux 4.9.201-tegra aarch64
    CMake:                       3.10.2
    CMake generator:             Unix Makefiles
    CMake build tool:            /usr/bin/make
    Configuration:               RELEASE

  CPU/HW features:
    Baseline:                    NEON FP16
      required:                  NEON
      disabled:                  VFPV3

  C/C++:
    Built as dynamic libs?:      YES
    C++ standard:                11
    C++ Compiler:                /usr/bin/c++  (ver 7.5.0)
    C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
    C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
    C Compiler:                  /usr/bin/cc
    C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
    C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
    Linker flags (Release):      -Wl,--gc-sections -Wl,--as-needed  
    Linker flags (Debug):        -Wl,--gc-sections -Wl,--as-needed  
    ccache:                      NO
    Precompiled headers:         NO
    Extra dependencies:          m pthread cudart_static dl rt nppc nppial nppicc nppicom nppidei nppif nppig nppim nppist nppisu nppitc npps cublas cudnn cufft -L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu
    3rdparty dependencies:

  OpenCV modules:
    To be built:                 alphamat aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
    Disabled:                    world
    Disabled by dependency:      -
    Unavailable:                 cnn_3dobj cvv hdf java js julia matlab ovis python2 sfm ts viz
    Applications:                apps
    Documentation:               NO
    Non-free algorithms:         YES

  GUI: 
    GTK+:                        YES (ver 3.22.30)
      GThread :                  YES (ver 2.56.4)
      GtkGlExt:                  NO
    OpenGL support:              NO
    VTK support:                 NO

  Media I/O: 
    ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)
    JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 80)
    WEBP:                        build (ver encoder: 0x020f)
    PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.34)
    TIFF:                        build (ver 42 - 4.0.10)
    JPEG 2000:                   build (ver 2.3.1)
    OpenEXR:                     build (ver 2.3.0)
    HDR:                         YES
    SUNRASTER:                   YES
    PXM:                         YES
    PFM:                         YES

  Video I/O:
    DC1394:                      YES (2.2.5)
    FFMPEG:                      YES
      avcodec:                   YES (57.107.100)
      avformat:                  YES (57.83.100)
      avutil:                    YES (55.78.100)
      swscale:                   YES (4.8.100)
      avresample:                YES (3.7.0)
    GStreamer:                   YES (1.14.5)
    v4l/v4l2:                    YES (linux/videodev2.h)

  Parallel framework:            TBB (ver 2017.0 interface 9107)

  Trace:                         YES (with Intel ITT)

  Other third-party libraries:
    Lapack:                      YES (/usr/lib/aarch64-linux-gnu/liblapack.so /usr/lib/aarch64-linux-gnu/libcblas.so /usr/lib/aarch64-linux-gnu/libatlas.so)
    Eigen:                       YES (ver 3.3.4)
    Custom HAL:                  YES (carotene (ver 0.0.1))
    Protobuf:                    build (3.5.1)

  NVIDIA CUDA:                   YES (ver 10.2, CUFFT CUBLAS FAST_MATH)
    NVIDIA GPU arch:             53 62 72
    NVIDIA PTX archs:

  cuDNN:                         YES (ver 8.0.0)

  Python 3:
    Interpreter:                 /usr/bin/python3 (ver 3.6.9)
    Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.6m.so (ver 3.6.9)
    numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.13.3)
    install path:                lib/python3.6/dist-packages/cv2/python-3.6

  Python (for build):            /usr/bin/python2.7

  Java:                          
    ant:                         NO
    JNI:                         NO
    Java wrappers:               NO
    Java tests:                  NO

  Install to:                    /usr/local
-----------------------------------------------------------------

GPU devices: 1
loaded test image from /test/data/test_0.jpg  (560, 700, 3)  uint8
OpenCV OK

done testing container dustynv/ros:noetic-desktop-pytorch-l4t-r32.6.1 => OpenCV
dusty-nv commented 3 years ago

If you check for the packages through the ros tools, is ros able to discover them?

samialperen commented 2 years ago

@dusty-nv Is there any progress on this one? I am exactly having the same problem. I am trying to create a clean catkin_ws and use oak-d camera with depthai-ros. Although everything works fine in x86 end, once I move to xavier, I can not make it work. I tried many base images like

Here is one of the docker files I am trying:

FROM dustynv/ros:noetic-ros-base-l4t-r34.1.1

# Change the default shell to Bash
SHELL [ "/bin/bash" , "-c" ]

# Minimal setup
RUN apt-get update \
 && apt-get install -y locales lsb-release
ARG DEBIAN_FRONTEND=noninteractive
RUN dpkg-reconfigure locales

# install important stuff 
RUN apt install git -y
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
RUN apt-get install git-lfs
RUN apt install tmux -y
RUN apt-get install wget

# Install depth-ai
RUN wget -qO- https://raw.githubusercontent.com/luxonis/depthai-ros/main/install_dependencies.sh | sudo bash
# Continue installing dependencies
RUN apt install python3-rosdep -y
RUN apt-get install ros-noetic-rviz-imu-plugin -y 

# figure out rosdep install stuff
#RUN cd $HOME/dai_ws
#RUN rosdep install --from-paths src --ignore-src -r -y
dusty-nv commented 2 years ago

@samialperen I think your issue is related to installing additional ROS packages from apt, while the noetic packages in my containers were built from source. Although you already tried nvcr.io/nvidia/l4t-pytorch:r34.1.0-pth1.12-py3 as a base, which means that you probably did a fresh install of Noetic from the ROS apt repos.

What you try doing is add a RUN apt-get purge -y '*opencv*' statement in your dockerfile that uses FROM nvcr.io/nvidia/l4t-pytorch:r34.1.0-pth1.12-py3. That should clear out the previous openCV and make way for the one that ROS tries to install.