Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building noetic_desktop + pytorch image #89

Open
madratman opened this issue Aug 25, 2021 · 7 comments
Open

Building noetic_desktop + pytorch image #89

madratman opened this issue Aug 25, 2021 · 7 comments

Comments

@madratman
Copy link

madratman commented Aug 25, 2021

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
Copy link
Owner

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

--skip-keys "libopencv-dev libopencv-contrib-dev libopencv-imgproc-dev python-opencv python3-opencv" && \

@madratman
Copy link
Author

madratman commented Aug 25, 2021

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 ros-perception/vision_opencv#341 (comment), 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
Copy link
Author

madratman commented Aug 25, 2021

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 madratman reopened this Aug 25, 2021
@madratman
Copy link
Author

madratman commented Aug 25, 2021

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
Copy link
Owner

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

@samialperen
Copy link

@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

  • FROM nvcr.io/nvidia/l4t-pytorch:r34.1.0-pth1.12-py3
  • FROM dustynv/ros:noetic-pytorch-l4t-r34.1.1
  • FROM dustynv/ros:noetic-ros-base-l4t-r34.1.1
    Still no success. Whenever I try to do something, I always have problems with these guys
 /tmp/apt-dpkg-install-8RYxEI/48-libopencv_4.5.4-8-g3e4c170df4_arm64.deb
 /tmp/apt-dpkg-install-8RYxEI/70-libopencv-dev_4.5.4-8-g3e4c170df4_arm64.deb

I am using skip keys argument in my catkin_ws as you suggested above:
rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro noetic --skip-keys "libopencv-dev libopencv-contrib-dev libopencv-imgproc-dev python-opencv python3-opencv"

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
Copy link
Owner

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants