Unable to build isaac_ros_nitros in a x86 Ubuntu 22.04 computer containing Ryzen processor and RTX 3080 GPU

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_ws in 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 src and build isaac_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_common package was cloned earlier to cloningnegotiated_interface and isaac_ros_nitros

@azmyin12 I moved your topic to Isaac ROS forum for better support.

Thank you very much @zhengwang. I was able to get the pipeline working from binaries. However, I am still interested in debugging this problem since I may need to compile from source later next month.

Hi @azmyin12,

Are you using our Isaac ROS Docker, or what kind of custom installation are you working with?

We usually don’t provide support for custom installations. However, if you wish to proceed with your setup, you can refer to this resource for all the necessary software to use Isaac ROS with the Docker image: isaac_ros_common/docker/Dockerfile.base at main · NVIDIA-ISAAC-ROS/isaac_ros_common · GitHub.

Let me know.

Best,
Raffaello

Hi @Raffaello
Thank you very much for pointing me to the resource. I will try to replicate the steps from the Dockerfile.base to see if the build problem is resolved or not and report back here. For now, I am closing this issue since the binaries work.


For reference, here is how I got the pipeline installed and to work

  • Step 1: Install isaac_ros_common

  • Step 2: Add apt source for isaac_ros packages

sudo apt update && sudo apt install gnupg wget
sudo apt install software-properties-common
sudo add-apt-repository universe
wget -qO - https://isaac.download.nvidia.com/isaac-ros/repos.key | sudo apt-key add -
grep -qxF "deb https://isaac.download.nvidia.com/isaac-ros/release-3 $(lsb_release -cs) release-3.0" /etc/apt/sources.list || \
echo "deb https://isaac.download.nvidia.com/isaac-ros/release-3 $(lsb_release -cs) release-3.0" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt upgrade
sudo apt-get install -y ros-humble-isaac-ros-visual-slam
  • Step 3: Install isaac_ros_visual_slam
sudo apt-get update
sudo apt-get install -y ros-humble-isaac-ros-visual-slam

After the above, follow the remaining quickstart tutorial to test isaac_ros_visual_slam.


On a closing note, I really enjoyed your webinar on the isaac_ros_visual_slam. Is there a formal paper associated with Nvidia’s Elbrus SLAM framework?

Best,
Azmyin

Thank you @azmyin12 I really appreciated :-)

NVIDIA Elbrus was the older name of NVIDIA cuVSLAM

@azmyin12 Please check out our cuVSLAM technical report [2506.04359] cuVSLAM: CUDA accelerated visual odometry and mapping