No data published on visual_slam/vis/observations_cloud

I am using isaac_ros_visual_slam version 4.1.0 on ROS 2 Jazzy with the standard r2b_cafe dataset. While the SLAM node successfully performs tracking and publishes high-frequency odometry on visual_slam/tracking/odometry, all PointCloud2 topics (specifically visual_slam/vis/observations_cloud) remain empty or are never published, while only the visual_slam/vis/landmarks_cloud topic shows data.

Environment Details:

  • Platform: x86_64
  • OS: Ubuntu 24.04 LTS
  • GPU: NVIDIA Ampere (RTX series, Compute Capability 8.6)
  • NVIDIA Driver: 580.126.09
  • CUDA: 13
  • Isaac ROS Version: 4.1.0 (Jazzy)
  • ROS 2 Version: Jazzy Jalisco
  • Python: 3.12

My configuration for ros2 launch:

context:
  rosbag2_player_config:
    storage:
      uri: "${ISAAC_ROS_WS}/datasets/r2b_cafe"
    play:
      rate: 1.0
      delay: 1.0
      loop: false
      read_ahead_queue_size: 1000

  visual_slam_config:
    enable_image_denoising: false
    rectified_images: false
    enable_slam_visualization: true
    enable_observations_view: true
    enable_landmarks_view: true
    base_frame: "base_link"
    odom_frame: "odom"
    map_frame: "map"
    override_publishing_stamp: false
    publish_map_to_odom_tf: true
    publish_odom_to_base_tf: true
    enable_localization_n_mapping: true 
    camera_optical_frames: ["HAWK_0:left_rgb", "HAWK_0:right_rgb"]
    image_jitter_threshold_ms: 50.0

nodes:
  - name: tf_static_publisher_left
    package: tf2_ros
    executable: static_transform_publisher
    arguments:
      - "--x"
      - "0"
      - "--y"
      - "0"
      - "--z"
      - "0"
      - "--roll"
      - "0"
      - "--pitch"
      - "0"
      - "--yaw"
      - "0"
      - "--frame-id"
      - "base_link"
      - "--child-frame-id"
      - "HAWK_0:left_rgb"

  - name: tf_static_publisher_right
    package: tf2_ros
    executable: static_transform_publisher
    arguments:
      - "--x"
      - "0"
      - "--y"
      - "0.05"
      - "--z"
      - "0"
      - "--roll"
      - "0"
      - "--pitch"
      - "0"
      - "--yaw"
      - "0"
      - "--frame-id"
      - "base_link"
      - "--child-frame-id"
      - "HAWK_0:right_rgb"

  - name: rosbag2_player
    package: rosbag2_transport
    plugin: rosbag2_transport::Player
    parameters:
      - ${rosbag2_player_config}
    extra_arguments:
      - use_intra_process_comms: true
    remappings:
      - {from: hawk_0_left_rgb_image, to: raw/image_left}
      - {from: hawk_0_left_rgb_camera_info, to: raw/camera_info_left}
      - {from: hawk_0_right_rgb_image, to: raw/image_right}
      - {from: hawk_0_right_rgb_camera_info, to: raw/camera_info_right}
      - {from: /tf_static, to: /tf_static_unused}

  - name: VisualSlamNode
    package: isaac_ros_visual_slam
    plugin: nvidia::isaac_ros::visual_slam::VisualSlamNode
    parameters:
      - ${visual_slam_config}
    remappings:
      - {from: visual_slam/image_0, to: raw/image_left}
      - {from: visual_slam/camera_info_0, to: raw/camera_info_left}
      - {from: visual_slam/image_1, to: raw/image_right}
      - {from: visual_slam/camera_info_1, to: raw/camera_info_right}
      - {from: visual_slam/tracking/odometry, to: visual_slam/tracking/odometry}
      - {from: visual_slam/vis/observations_cloud, to: visual_slam/vis/observations_cloud}

This is my frames, when I am using the tf2_tools:


Information about these topics during the launch file:

  • /tf:
     ----
     transforms:
     - header:
     stamp:
       sec: 1677602737
       nanosec: 241082368
     frame_id: odom
    child_frame_id: base_link
    transform:
     translation:
       x: -2.0894250869750977
       y: -0.27180561423301697
       z: 24.227458953857422
     rotation:
       x: -0.006779739661128582
       y: -0.0015924859391927965
       z: 0.004476052727360864
       w: 0.9999657314481545
     ---
    
  • tf_static

    transforms:
    - header:
     stamp:
       sec: 1776674711
       nanosec: 295177468
     frame_id: base_link
    child_frame_id: HAWK_0:right_rgb
    transform:
     translation:
       x: 0.0
       y: 0.05
       z: 0.0
     rotation:
       x: 0.0
       y: 0.0
       z: 0.0
       w: 1.0
     ---
    transforms:
    - header:
     stamp:
       sec: 1776674711
       nanosec: 295470099
     frame_id: base_link
    child_frame_id: HAWK_0:left_rgb
    transform:
     translation:
       x: 0.0
       y: 0.0
       z: 0.0
     rotation:
       x: 0.0
       y: 0.0
       z: 0.0
       w: 1.0
    ---
    

Detailed description of the issue:

I am trying to obtain data from the visual_slam/vis/observations_cloud topic. However, when checking it using ros2 topic echo and ros2 topic hz, I do not receive any information — the topic exists, but no messages are being published.

At the same time, other topics are working correctly:

  • visual_slam/tracking/odometry
  • visual_slam/tracking/slam_path
  • visual_slam/vis/landmarks_cloud

All of these contain valid data. The issue occurs specifically with PointCloud2-type topics, in particular visual_slam/vis/observations_cloud, which remains empty.

I would like to understand the reason for this:

  • Is it an issue in my configuration?
  • Is the dataset not suitable for generating such data?
  • Or does :contentReference[oaicite:0]{index=0} currently not support publishing this topic in this version?

I am also confused about TF behavior.

In my configuration, I set:

publish_map_to_odom_tf: true
publish_odom_to_base_tf: true

During the first launch (in Foxglove Studio), I observed a correct TF chain:

map → odom → base_link → HAWK_0 → HAWK_0:left_rgb

However, even in this case, the observations_cloud topic remained empty.

After restarting the system without any changes in the configuration, the connection between map and odom disappeared, and I do not understand why this is happening.

Question:

I would greatly appreciate help in understanding:

  • why no data is being published to visual_slam/vis/observations_cloud,
  • whether this is related to configuration, dataset, or limitations of the implementation,
  • and how to correctly obtain data from this topic.

Hello @dmytro-varich,

Welcome to the Isaac ROS forum and thanks for your post!

visual_slam/vis/observations_cloudis not actually being published, even though the topic exists. The publish call for the observations cloud is commented out in visual_slam_impl.cpp here. So the topic is empty due to the default implementation, not because of your configuration or the dataset.
If you would like to visualize features, use visual_slam/vis/landmarks_cloud together with the pose/path topics instead. (e.g. visual_slam/tracking/odometry, visual_slam/tracking/slam_path).

Conceptually, vis/observations_cloud was intended for per-keyframe feature observations (more like a camera-frame, high-rate debug cloud). It could be potentially high-rate, and heavier to compute, so it is only for internal/debug visualization and experimentation. As for the intermittent TF link you mentioned is not related to the missing observations_cloud data.

Hi @vchuang,

Thank you very much for this information, this was very helpful.