Isaac Sim Version
4.5.0
Operating System
Ubuntu 22.04
GPU Information / Toolkit information
- Model: RTX 3080
- Driver Version: 550.163.01
- CUDA version: 12.4
- CUDA Compiler
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0
- CUDA Toolkit
nvidia-ctk --version
NVIDIA Container Toolkit CLI version 1.17.8
commit: f202b80a9b9d0db00d9b1d73c0128c8962c55f4d
Detailed Description
I am trying to use isaac_ros_visual_slam in a custom ROS 2 environment as part of integrating Visual SLAM into a simulated AMR in Isaac Sim that is equipped with a virtual Intel Realsense camera. We are unable to use the Nvidia Docker container for development due to complex orchestration schema required to make other parts of the pipeline work.
I have begun by installing key dependencies but the colcon build is constantly failing to compile isaac_ros_nitros package.
Steps to Reproduce
-
ROS 2 Humble and Nividia drivers are installed apriori and the base ROS 2 workspace sourced.
-
Create the
dev_wsin home
cd ~
mkdir -p dev_ws/src
- Setup some global envs
export ISAAC_ROS_WS="$HOME/dev_ws"
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
- Install these dependencies
sudo apt-get install -y curl jq tar
- Install the Vision Programing Interface required by
isaac_ros_common
sudo apt install gnupg
sudo apt-key adv --fetch-key https://repo.download.nvidia.com/jetson/jetson-ota-public.asc
sudo apt install software-properties-common
sudo add-apt-repository 'deb https://repo.download.nvidia.com/jetson/x86_64/jammy r36.4 main'
sudo apt update
sudo apt install libnvvpi3 vpi3-dev vpi3-samples
sudo apt install python3.10-vpi3
- Add negotiated interface package in
srcand buildisaac_ros_nitros
cd ${ISAAC_ROS_WS}/src
git clone https://github.com/osrf/negotiated && cd negotiated && git checkout master
git clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nitros.git
cd ${ISAAC_ROS_WS}
colcon build --packages-up-to negotiated_interfaces
source install/setup.bash
colcon build --packages-up-to isaac_ros_nitros
Error Messages
Starting >>> isaac_ros_nitros
--- stderr: isaac_ros_nitros
In this package, headers install destination is set to `include` by ament_auto_package. It is recommended to install `include/isaac_ros_nitros` instead and will be the default behavior of ament_auto_package from ROS 2 Kilted Kaiju. On distributions before Kilted, ament_auto_package behaves the same way when you use USE_SCOPED_HEADER_INSTALL_DIR option.
In file included from /usr/include/cuda/std/cmath:19,
from /usr/include/cuda/std/complex:12,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/complex.hpp:23,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/tensor.hpp:33,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/multimedia/video.hpp:30,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/include/isaac_ros_nitros/utils/vpi_utilities.hpp:27,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/src/utils/vpi_utilities.cpp:18:
/usr/include/cuda/std/detail/libcxx/include/cmath:569:101: error: ‘float cuda::std::__4::hypot(float, float, float)’ conflicts with a previous declaration
569 | inline _LIBCUDACXX_INLINE_VISIBILITY float hypot( float x, float y, float z ) { return sqrt(x*x + y*y + z*z); }
| ^
In file included from /usr/include/yaml-cpp/emitter.h:10,
from /usr/include/yaml-cpp/yaml.h:11,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/filepath.hpp:21,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/parameter_parser.hpp:29,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/parameter.hpp:29,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/component.hpp:30,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/allocator.hpp:23,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/multimedia/video.hpp:28,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/include/isaac_ros_nitros/utils/vpi_utilities.hpp:27,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/src/utils/vpi_utilities.cpp:18:
/usr/include/c++/11/cmath:1868:3: note: previous declaration ‘float std::hypot(float, float, float)’
1868 | hypot(float __x, float __y, float __z)
| ^~~~~
In file included from /usr/include/cuda/std/cmath:19,
from /usr/include/cuda/std/complex:12,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/complex.hpp:23,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/tensor.hpp:33,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/multimedia/video.hpp:30,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/include/isaac_ros_nitros/utils/vpi_utilities.hpp:27,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/src/utils/vpi_utilities.cpp:18:
/usr/include/cuda/std/detail/libcxx/include/cmath:570:101: error: ‘double cuda::std::__4::hypot(double, double, double)’ conflicts with a previous declaration
570 | inline _LIBCUDACXX_INLINE_VISIBILITY double hypot( double x, double y, double z ) { return sqrt(x*x + y*y + z*z); }
| ^
In file included from /usr/include/yaml-cpp/emitter.h:10,
from /usr/include/yaml-cpp/yaml.h:11,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/filepath.hpp:21,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/parameter_parser.hpp:29,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/parameter.hpp:29,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/component.hpp:30,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/allocator.hpp:23,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/multimedia/video.hpp:28,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/include/isaac_ros_nitros/utils/vpi_utilities.hpp:27,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/src/utils/vpi_utilities.cpp:18:
/usr/include/c++/11/cmath:1872:3: note: previous declaration ‘double std::hypot(double, double, double)’
1872 | hypot(double __x, double __y, double __z)
| ^~~~~
In file included from /usr/include/cuda/std/cmath:19,
from /usr/include/cuda/std/complex:12,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/complex.hpp:23,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/tensor.hpp:33,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/multimedia/video.hpp:30,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/include/isaac_ros_nitros/utils/vpi_utilities.hpp:27,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/src/utils/vpi_utilities.cpp:18:
/usr/include/cuda/std/detail/libcxx/include/cmath:572:101: error: ‘long double cuda::std::__4::hypot(long double, long double, long double)’ conflicts with a previous declaration
572 | inline _LIBCUDACXX_INLINE_VISIBILITY long double hypot( long double x, long double y, long double z ) { return sqrt(x*x + y*y + z*z); }
| ^
In file included from /usr/include/yaml-cpp/emitter.h:10,
from /usr/include/yaml-cpp/yaml.h:11,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/filepath.hpp:21,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/parameter_parser.hpp:29,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/parameter.hpp:29,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/core/component.hpp:30,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/std/allocator.hpp:23,
from /home/azmyin12/kaliber_ws/install/isaac_ros_gxf/share/isaac_ros_gxf/gxf/include/gxf/multimedia/video.hpp:28,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/include/isaac_ros_nitros/utils/vpi_utilities.hpp:27,
from /home/azmyin12/kaliber_ws/src/isaac_ros_nitros/isaac_ros_nitros/src/utils/vpi_utilities.cpp:18:
/usr/include/c++/11/cmath:1876:3: note: previous declaration ‘long double std::hypot(long double, long double, long double)’
1876 | hypot(long double __x, long double __y, long double __z)
| ^~~~~
gmake[2]: *** [CMakeFiles/isaac_ros_nitros.dir/build.make:188: CMakeFiles/isaac_ros_nitros.dir/src/utils/vpi_utilities.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:141: CMakeFiles/isaac_ros_nitros.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed <<< isaac_ros_nitros [9.16s, exited with code 2]
Summary: 11 packages finished [35.3s]
1 package failed: isaac_ros_nitros
4 packages had stderr output: isaac_ros_common isaac_ros_nitros isaac_ros_test negotiated
Additional Context / What I have learned so far
- From what I have gathered (mostly from Claude’s analysis) it believes the error is caused due to
This is a CUDA/GCC compatibility issue. The `hypot` function is defined in both standard C++ and CUDA headers, causing conflicts.
isaac_ros_commonpackage was cloned earlier to cloningnegotiated_interfaceandisaac_ros_nitros