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.