/nvblox_node/static_map_slice Unavailable

Situation
NVIDIA Jetson AGX Orin Developer Kit - Jetpack 6.0 [L4T 36.3.0];
Currently running the following:
Isaac ROS Container + NVBlox + NVBlox / Nav2 plugin + Nav2.

For context, see below for some node and topic outputs:

/ActionGroupRunner
/agx_orin_joint_state_publisher
/agx_orin_odom_publisher
/agx_orin_servo_io
/agx_orin_servo_manager
/arm_controller
/behavior_server
/board
/bt_navigator
/bt_navigator_navigate_through_poses_rclcpp_node
/bt_navigator_navigate_to_pose_rclcpp_node
/camera/camera
/camera/realsense_splitter_node
/complementary_filter_gain_node
/controller_server
/global_costmap/global_costmap
/gripper_controller
/imu_calib
/joint1_controller
/joint2_controller
/joint3_controller
/joint4_controller
/joint5_controller
/joystick_control
/launch_ros_707874
/lifecycle_manager_navigation
/local_costmap/local_costmap
/nvblox_container
/nvblox_node
/planner_server
/r_joint_controller
/robot_state_publisher
/ros_robot_controller
/rplidar_node
/rviz
/serial_proxy
/transform_listener_impl_aaaad3abdb60
/transform_listener_impl_aaaad5931e10
/transform_listener_impl_aaaae3cd25c0
/transform_listener_impl_aaaae409dc40
/transform_listener_impl_aaaaf30eba00
/transform_listener_impl_aaaafd86f550
/transform_listener_impl_aaaafd922790
/transform_listener_impl_ffff54648c00
/visual_slam_node
/w_joint_controller

Shown below is a snippet of the current topics:

/local_costmap/costmap
/local_costmap/costmap_raw
/local_costmap/costmap_updates
/local_costmap/footprint
/local_costmap/local_costmap/transition_event
/local_costmap/published_footprint
/local_plan
/map
/marker
/nvblox_node/back_projected_depth
/nvblox_node/color_layer
/nvblox_node/map_slice_bounds
/nvblox_node/mesh
/nvblox_node/static_esdf_pointcloud
/nvblox_node/static_map_slice
/nvblox_node/tsdf_layer
/odom
/parameter_events
/plan
/planner_server/transition_event
/pose
/r_joint_controller/command
/r_joint_controller/command_duration
/r_joint_controller/state
/received_global_plan
/robot_description
/ros_robot_controller/battery
/ros_robot_controller/bus_servo/set_state
/ros_robot_controller/button
/ros_robot_controller/enable_reception
/ros_robot_controller/imu_raw
/ros_robot_controller/joy
/ros_robot_controller/pwm_servo/set_state
/ros_robot_controller/sbus
/ros_robot_controller/set_buzzer
/ros_robot_controller/set_led
/ros_robot_controller/set_motor
/ros_robot_controller/set_oled
/rosout
/scan
/servo_controllers/port_id_1/id_pos_dur
/servo_controllers/port_id_1/multi_id_pos_dur
/servo_controllers/port_id_1/servo_states
/set_odom
/set_pose
/speed_limit
/tf
/tf_static
/transform
/transformed_global_plan
/visual_slam/status
/visual_slam/tracking/odometry
/visual_slam/tracking/slam_path
/visual_slam/tracking/vo_path
/visual_slam/tracking/vo_pose
/visual_slam/tracking/vo_pose_covariance
/visual_slam/vis/gravity
/visual_slam/vis/landmarks_cloud
/visual_slam/vis/localizer
/visual_slam/vis/localizer_loop_closure_cloud
/visual_slam/vis/localizer_map_cloud
/visual_slam/vis/localizer_observations_cloud
/visual_slam/vis/loop_closure_cloud
/visual_slam/vis/observations_cloud
/visual_slam/vis/pose_graph_edges
/visual_slam/vis/pose_graph_edges2
/visual_slam/vis/pose_graph_nodes
/visual_slam/vis/slam_odometry
/visual_slam/vis/velocity

Expected Outcome #1

  • Launch RVIz
  • Add → “By display type” → nvblox_rviz_plugin
  • I should see “static_map_slice” topic for RViz visualization purposes.

Expected Outcome #2

  • In seperate terminal, enter “ros2 topic echo /nvblox_node/static_map_slice”
  • Output that does not look like shown below:
- 1000.0
- 1000.0
- 1000.0
- 1000.0
- 1000.0
- 1000.0
- 1000.0
- 1000.0
- 1000.0
- 1000.0
- 1000.0

Actual Outcome #1

  • Launch RVIz
  • Add → “By display type” → nvblox_rviz_plugin
  • No “static_map_slice” topic to visualize

Actual Outcome #2

  • Back in terminal, ros2 topic echo /nvblox_node/static_map_slice shows a constant “1000.0”, which, based on digging around forum, seems to be the default value for “unknown”, or “no static_map_slice” data, or “not functional?”

Key Question:
What is the expected output of ‘static_map_slice’, in “standalone mode” (i.e., Isaac ROS + NVBlox + NVBlox Plugin)?

Note:
I am able to successfully visualize the following:

  • /nvblox_node/mesh,
  • /nvblox_node/color_layer,
  • /nvblox_node/static_esdf_pointcloud (which actually outputs a costmap slice that I expect to see)

Thank you for your detailed post.

I’m looking with the engineering the reason report -1000 ~/static_map_slice I 'll keep you posted with more details.

Raffaello

1 Like

The default value is 1000. Typically, the map’s edges have the default value since they’re not visible yet.

When you use echo, you can only see the edge values because echo only displays the first approximately 20 values. It is highly probable that the static map slice contains non-default data.

The slice is not a visualizable message, so we publish a copy formatted as a point cloud for visualization.

Let me know if you have other questions,

Best,
Raffaello

I want to explain why I’m probing the /nvblox_node/static_map_slice topic. My goal is to use VSLAM, NVBlox, and Nav2 to navigate a 2000 sqft space by first building a map and then setting a goal pose in RViz. I launched all three packages and attempted to save the global cost map, but noticed inconsistencies in RViz. Sometimes the global cost map appears correctly, and other times it doesn’t show up at all. I observed that the “map->Odom” transform from VSLAM is unreliable—it’s sometimes missing, which disrupts Nav2.

Running the nvblox_examples_bringup realsense_example.launch.py command doesn’t always generate the map->Odom transform by default. To fix this, I’ve had to reset the Docker container or use the command ros2 param set /camera/camera depth_module.emitter_on_off true, which seems to trigger the VSLAM to publish the transform, but it also disrupts the TF tree.

This behavior is confusing and unreliable.

My question: Is there clear documentation on how to properly use VSLAM, NVBlox, and Nav2 with the AGX Orin (L4T 36.3.0) to save a global cost map for a 2000 sqft space? Although the Isaac ROS documentation suggests this is possible, I haven’t found any concrete examples showing this setup on an Nvidia Jetson robot, only speculation.

Note: See below for TF tree when I run the basic isaac_ros_visual_slam_realsense.launch.py script from here

Hi @augustmille

I’m back with some questions: (also related to this topic: No data on Realsense spliiter output )

Can you please check if the setting is set to true in this file?

Best,
Raffaello