Issues encountered while testing Isaac_ros_nvblox

When I test isaac_ros_nvblox with my own camera, the phenomenon is that rviz can only display the content of the /nvblox_node/static_esdf_pointcloud topic, but the /nvblox_node/color_layer topic is not displayed. These topics and their subscribers and publishers exist, but there is no data. Could you suggest whether this might be caused by some parameters not being configured?

Hello @3061069227,

Thanks for posting in the Isaac ROS forum!

Please verify if the NVBlox is actually subscribing to your color topics with the following command.

ros2 node info /nvblox_node

Under Subscriptions, you should see something like:

  • /camera_0/color/imagesensor_msgs/Image

  • /camera_0/color/camera_infosensor_msgs/CameraInfo

If you don’t see both color topics there, you might need to fix your remappings in the launch file so they point from your camera’s topics to what NVBlox expects.

Besides, check your color topics actually have data, too.
ros2 topic hz /camera_0/color/image
ros2 topic echo /camera_0/color/image -n 1
ros2 topic echo /camera_0/color/camera_info -n 1
If these are empty or wrong, NVBlox will never integrate color.

I added a static odom->base_link->camera_link, and now I can see the colored blocks. I have a question: if I don’t use the mapping and localization function of isaac_ros_visual_slam (just testing, where map->odom->base_link floats around and mapping doesn’t work properly), what data do I need to provide for isaac_ros_nvblox? Should I set use_tf_transforms to false and then provide transform and pose data? Please guide me, thank you!

You could check the NVblox subscribed topic here.
NVBlox always needs pose (either from TF or a pose topic).

  • Depth image + depth CameraInfo (and color + CameraInfo if you want colors).

  • A pose for the depth camera in some global frame over time:

    • Usually this is a transform in TF:global_framecamera_depth_frame (often odomcamera_link/camera_depth_optical).

    • Or, if you disable TF usage by setting use_tf_transforms to false, a pose topic that NVBlox subscribes to (configured in its params) would be expected. (e.g. a PoseStamped topic)

NVBlox does not care if that pose comes from cuVSLAM, wheel odometry, IMU integration, motion capture, or a fake test node, as long as it is consistent and correctly timestamped.