Isaac ROS 3.1 dependency issues after 3.2 release

Dear Isaac ROS devs,
Always mighty thanks for continued development and support of Isaac ROS.

I see that Isaac ROS 3.2 has been released, however I wish to stick to 3.1 for a while for various reasons. While I am building isaac_ros_visual_slam from source after installing dependencies using rosdep install, I encounter several build errors as below:

/workspaces/isaac_ros-dev/src/isaac_ros_visual_slam/isaac_ros_visual_slam/src/visual_slam_node.cpp: In lambda function:
/workspaces/isaac_ros-dev/src/isaac_ros_visual_slam/isaac_ros_visual_slam/src/visual_slam_node.cpp:109:40: error: ‘NitrosStatisticsConfig’ is not a member of ‘nvidia::isaac_ros::nitros’; did you mean ‘NitrosDiagnosticsConfig’?
  109 |             nvidia::isaac_ros::nitros::NitrosStatisticsConfig(), image_qos_));
      |                                        ^~~~~~~~~~~~~~~~~~~~~~
      |                                        NitrosDiagnosticsConfig
/workspaces/isaac_ros-dev/src/isaac_ros_visual_slam/isaac_ros_visual_slam/src/visual_slam_node.cpp: In member function ‘void nvidia::isaac_ros::visual_slam::VisualSlamNode::CallbackGetAllPoses(std::shared_ptr<isaac_ros_visual_slam_interfaces::srv::GetAllPoses_Request_<std::allocator<void> > >, std::shared_ptr<isaac_ros_visual_slam_interfaces::srv::GetAllPoses_Response_<std::allocator<void> > >)’:
/workspaces/isaac_ros-dev/src/isaac_ros_visual_slam/isaac_ros_visual_slam/src/visual_slam_node.cpp:299:26: error: ‘CUVSLAM_GetAllSLAMPoses’ was not declared in this scope; did you mean ‘CUVSLAM_GetAllSlamPoses’?
  299 |   const uint32_t count = CUVSLAM_GetAllSLAMPoses(
      |                          ^~~~~~~~~~~~~~~~~~~~~~~
      |                          CUVSLAM_GetAllSlamPoses
/workspaces/isaac_ros-dev/src/isaac_ros_visual_slam/isaac_ros_visual_slam/src/visual_slam_node.cpp: In member function ‘void nvidia::isaac_ros::visual_slam::VisualSlamNode::CallbackLoadMapAndLocalizeAccepted(std::shared_ptr<rclcpp_action::ServerGoalHandle<isaac_ros_visual_slam_interfaces::action::LoadMapAndLocalize> >)’:
/workspaces/isaac_ros-dev/src/isaac_ros_visual_slam/isaac_ros_visual_slam/src/visual_slam_node.cpp:457:17: error: cannot convert ‘double’ to ‘const CUVSLAM_Image*’
  457 |     /*radius=*/ 0.0,                    // reserved for future implementation
      |                 ^~~
      |                 |
      |                 double

I believe this is due to API-breaking changes at NITROS and CUVSLAM for Isaac ROS 3.2.
What would be the best way to manage dependencies for non-latest versions of Isaac ROS such as 3.1? rosdep install seems to install the latest available dependencies from NVIDIA apt repos. Any help to resolve this situation will be appreciated.

Thanks in advance!

3 Likes

Yes, I have is same issues and not just with Isaac ROS Visual Slam but also on Isaac ROS NVBLOX.

The same problem has also occurred. Have you solved it?

Hi,

For these issues, could you try following and re-start the docker?

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && vim docker/Dockerfile.aarch64
# Switch all "release-3.0" to "legacy-release-3.1"
# Please edit docker/Dockerfile.x86_64 for x86.

Please let me know if it helps.

Best,
Ahung

OK, I’ll try this out when I get the chance.

Thanks in advance!

To resolve the build errors you’re encountering with Isaac ROS 3.1, you should pin the dependencies to the specific versions compatible with 3.1. Modify your rosdep configuration to install the appropriate versions of dependencies instead of fetching the latest ones from NVIDIA’s apt repos. Ensure you’re on the correct branch or tag corresponding to Isaac ROS 3.1 in the source code. If needed, manually install older versions of NITROS and CUVSLAM that match 3.1 and patch the code for API-breaking changes, such as replacing NitrosStatisticsConfig with NitrosDiagnosticsConfig. This approach will help you manage dependencies effectively and avoid compatibility issues with newer versions like 3.2.

Hi all,

The hotfixs are landed in github. You can delete the isaac_ros_common folder and clone the 3.1 source again.

cd ${ISAAC_ROS_WS}/src && rm -rf isaac_ros_common \
   git clone -b release-3.1 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git isaac_ros_common

Best,
Ahung

Thank you for your suggestion. I use the same platform as the original poster, but I set it up directly on the Ubuntu 22.4 host without using Docker. I deleted isaac_ros_common and cloned it again, but the same error message still appears. I don’t understand if I missed something. Do you have any further suggestions? I look forward to your reply. Thank you very much.

Hi,

Thank you for sharing your experience!

Based on the error you’re encountering, I wonder if the dependencies required for Isaac ROS were fully installed on your local Ubuntu 22.04 setup. The Dockerfiles provided for Isaac ROS include many necessary dependencies and configurations.

Have you tried analyzing the Dockerfiles and manually setting up the required dependencies on your local system? This includes installing libraries, configuring environment variables, and ensuring compatibility with your system’s architecture.

If you haven’t done this yet, I recommend reviewing the Dockerfiles (e.g., Dockerfile.aarch64) used for the Isaac ROS containers. They contain valuable information about the dependencies and setup steps that you might need to replicate in your local environment.

Let me know if you need help with this process or if you’ve already tried this approach!

Hi,
Thanks for your suggestion!
I haven’t checked the dockerfile in the new isaac_ros_common file yet. I’ll try that first, thanks!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.