Integrating zedx camera with Nav2 for generating costmaps

Hi,

Has anyone used zedx camera outputs to integrate in Nav2 for generating costmaps? Any leads or guidance is much appreciated.

I am going through the docs provided in their official site for STVL layers, but i havent had much success.
(STVL) Using an External Costmap Plugin — Nav2 1.0.0 documentation

Hi @Anirudhgudi
Welcome to the Stereolabs community.

You can use the ZED X camera like any other RGBD sensor.
Have you already played with the ZED ROS2 Wrapper to use the camera with ROS 2?

How did you configure Nav2? Can you share your config file?

Hi,
Yes, i have already checked out the ZED wrapper and trying to use the topics published through the sdk.
this is the config file of nav2 :

amcl:
  ros__parameters:
    use_sim_time: True
    alpha1: 0.2
    alpha2: 0.2
    alpha3: 0.2
    alpha4: 0.2
    alpha5: 0.2
    base_frame_id: "base_footprint"
    beam_skip_distance: 0.5
    beam_skip_error_threshold: 0.9
    beam_skip_threshold: 0.3
    do_beamskip: false
    global_frame_id: "map"
    lambda_short: 0.1
    laser_likelihood_max_dist: 2.0
    laser_max_range: 100.0
    laser_min_range: -1.0
    laser_model_type: "likelihood_field"
    max_beams: 60
    max_particles: 2000
    min_particles: 500
    odom_frame_id: "odom"
    pf_err: 0.05
    pf_z: 0.99
    recovery_alpha_fast: 0.0
    recovery_alpha_slow: 0.0
    resample_interval: 1
    robot_model_type: "nav2_amcl::DifferentialMotionModel"
    save_pose_rate: 0.5
    sigma_hit: 0.2
    tf_broadcast: true
    transform_tolerance: 1.0
    update_min_a: 0.2
    update_min_d: 0.25
    z_hit: 0.5
    z_max: 0.05
    z_rand: 0.5
    z_short: 0.05
    scan_topic: scan

bt_navigator:
  ros__parameters:
    use_sim_time: True
    global_frame: map
    robot_base_frame: base_link
    odom_topic: /odom
    bt_loop_duration: 10
    default_server_timeout: 20
    wait_for_service_timeout: 1000
    # 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
    # nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
    # nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
    # They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
    plugin_lib_names:
      - nav2_compute_path_to_pose_action_bt_node
      - nav2_compute_path_through_poses_action_bt_node
      - nav2_smooth_path_action_bt_node
      - nav2_follow_path_action_bt_node
      - nav2_spin_action_bt_node
      - nav2_wait_action_bt_node
      - nav2_assisted_teleop_action_bt_node
      - nav2_back_up_action_bt_node
      - nav2_drive_on_heading_bt_node
      - nav2_clear_costmap_service_bt_node
      - nav2_is_stuck_condition_bt_node
      - nav2_goal_reached_condition_bt_node
      - nav2_goal_updated_condition_bt_node
      - nav2_globally_updated_goal_condition_bt_node
      - nav2_is_path_valid_condition_bt_node
      - nav2_initial_pose_received_condition_bt_node
      - nav2_reinitialize_global_localization_service_bt_node
      - nav2_rate_controller_bt_node
      - nav2_distance_controller_bt_node
      - nav2_speed_controller_bt_node
      - nav2_truncate_path_action_bt_node
      - nav2_truncate_path_local_action_bt_node
      - nav2_goal_updater_node_bt_node
      - nav2_recovery_node_bt_node
      - nav2_pipeline_sequence_bt_node
      - nav2_round_robin_node_bt_node
      - nav2_transform_available_condition_bt_node
      - nav2_time_expired_condition_bt_node
      - nav2_path_expiring_timer_condition
      - nav2_distance_traveled_condition_bt_node
      - nav2_single_trigger_bt_node
      - nav2_goal_updated_controller_bt_node
      - nav2_is_battery_low_condition_bt_node
      - nav2_navigate_through_poses_action_bt_node
      - nav2_navigate_to_pose_action_bt_node
      - nav2_remove_passed_goals_action_bt_node
      - nav2_planner_selector_bt_node
      - nav2_controller_selector_bt_node
      - nav2_goal_checker_selector_bt_node
      - nav2_controller_cancel_bt_node
      - nav2_path_longer_on_approach_bt_node
      - nav2_wait_cancel_bt_node
      - nav2_spin_cancel_bt_node
      - nav2_back_up_cancel_bt_node
      - nav2_assisted_teleop_cancel_bt_node
      - nav2_drive_on_heading_cancel_bt_node
      - nav2_is_battery_charging_condition_bt_node

bt_navigator_navigate_through_poses_rclcpp_node:
  ros__parameters:
    use_sim_time: True

bt_navigator_navigate_to_pose_rclcpp_node:
  ros__parameters:
    use_sim_time: True

controller_server:
  ros__parameters:
    use_sim_time: True
    controller_frequency: 20.0
    min_x_velocity_threshold: 0.001
    min_y_velocity_threshold: 0.5
    min_theta_velocity_threshold: 0.001
    failure_tolerance: 0.3
    progress_checker_plugin: "progress_checker"
    goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker"
    controller_plugins: ["FollowPath"]

    # Progress checker parameters
    progress_checker:
      plugin: "nav2_controller::SimpleProgressChecker"
      required_movement_radius: 0.5
      movement_time_allowance: 10.0
    # Goal checker parameters
    #precise_goal_checker:
    #  plugin: "nav2_controller::SimpleGoalChecker"
    #  xy_goal_tolerance: 0.25
    #  yaw_goal_tolerance: 0.25
    #  stateful: True
    general_goal_checker:
      stateful: True
      plugin: "nav2_controller::SimpleGoalChecker"
      xy_goal_tolerance: 0.25
      yaw_goal_tolerance: 0.25
    # DWB parameters
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
      debug_trajectory_details: True
      min_vel_x: 0.0
      min_vel_y: 0.0
      max_vel_x: 0.26
      max_vel_y: 0.0
      max_vel_theta: 1.0
      min_speed_xy: 0.0
      max_speed_xy: 0.26
      min_speed_theta: 0.0
      # Add high threshold velocity for turtlebot 3 issue.
      # https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
      acc_lim_x: 2.5
      acc_lim_y: 0.0
      acc_lim_theta: 3.2
      decel_lim_x: -2.5
      decel_lim_y: 0.0
      decel_lim_theta: -3.2
      vx_samples: 20
      vy_samples: 5
      vtheta_samples: 20
      sim_time: 1.7
      linear_granularity: 0.05
      angular_granularity: 0.025
      transform_tolerance: 0.2
      xy_goal_tolerance: 0.25
      trans_stopped_velocity: 0.25
      short_circuit_trajectory_evaluation: True
      stateful: True
      critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
      BaseObstacle.scale: 0.02
      PathAlign.scale: 32.0
      PathAlign.forward_point_distance: 0.1
      GoalAlign.scale: 24.0
      GoalAlign.forward_point_distance: 0.1
      PathDist.scale: 32.0
      GoalDist.scale: 24.0
      RotateToGoal.scale: 32.0
      RotateToGoal.slowing_factor: 5.0
      RotateToGoal.lookahead_time: -1.0

local_costmap:
  local_costmap:
    ros__parameters:
      update_frequency: 5.0
      publish_frequency: 2.0
      global_frame: odom
      robot_base_frame: base_link
      use_sim_time: True
      rolling_window: true
      width: 3
      height: 3
      resolution: 0.05
      robot_radius: 0.22
      plugins: ["voxel_layer", "inflation_layer"]
      inflation_layer:
        plugin: "nav2_costmap_2d::InflationLayer"
        cost_scaling_factor: 3.0
        inflation_radius: 0.55
      voxel_layer:
        plugin: "spatio_temporal_voxel_layer/SpatioTemporalVoxelLayer"
        enabled:                  true
        voxel_decay:              1.0  # seconds if linear, e^n if exponential
        decay_model:              0     # 0=linear, 1=exponential, -1=persistent
        voxel_size:               0.1  # meters
        track_unknown_space:      true  # default space is known
        unknown_threshold:        15    # voxel height
        mark_threshold:           0     # voxel height
        update_footprint_enabled: true
        combination_method:       1     # 1=max, 0=override
        origin_z:                 0.0   # meters
        publish_voxel_map:        true # default off
        transform_tolerance:      0.3   # seconds
        mapping_mode:             false # default off, saves map not for navigation
        map_save_duration:        60.0  # default 60s, how often to autosave
        observation_sources:      rgbd1_mark rgbd1_clear
        rgbd1_mark:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: true
          clearing: false
          obstacle_range: 3.0          # meters
          min_obstacle_height: 0.02     # default 0, meters
          max_obstacle_height: 1.5     # default 3, meters
          expected_update_rate: 0.0    # default 0, 
          observation_persistence: 0.0 # default 0, 
          inf_is_valid: true          # default false, for laser scans
          filter: "passthrough"        # default passthrough, a
          voxel_min_points: 0          # default 0, minimum points per voxel for voxel filter
          clear_after_reading: true    # default false,
        rgbd1_clear:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: false
          clearing: true
          max_z: 7.0                  # default 0, meters
          min_z: 0.1                  # default 10, meters
          vertical_fov_angle: 1.0337  # default 0.7, radians
          horizontal_fov_angle: 1.575  # default 1.04, radians
          decay_acceleration: 5.0    # default 0, 1/s^2. If laser scanner MUST be 0
          model_type: 0                # default 0, model type for frustum.
      static_layer:
        plugin: "nav2_costmap_2d::StaticLayer"
        map_subscribe_transient_local: True
      always_send_full_costmap: True

global_costmap:
  global_costmap:
    ros__parameters:
      update_frequency: 1.0
      publish_frequency: 1.0
      global_frame: map
      robot_base_frame: base_link
      use_sim_time: True
      robot_radius: 0.22
      resolution: 0.05
      track_unknown_space: true
      plugins: ["voxel_layer", "static_layer", "inflation_layer"]
      voxel_layer:
        plugin: "spatio_temporal_voxel_layer/SpatioTemporalVoxelLayer"
        enabled:                  true
        voxel_decay:              1.0  # seconds if linear, e^n if exponential
        decay_model:              0     # 0=linear, 1=exponential, -1=persistent
        voxel_size:               0.1  # meters
        track_unknown_space:      true  # default space is known
        unknown_threshold:        15    # voxel height
        mark_threshold:           0     # voxel height
        update_footprint_enabled: true
        combination_method:       1     # 1=max, 0=override
        origin_z:                 0.0   # meters
        publish_voxel_map:        true # default off
        transform_tolerance:      0.3   # seconds
        mapping_mode:             false # default off, saves map not for navigation
        map_save_duration:        60.0  # default 60s, how often to autosave
        observation_sources:      rgbd1_mark rgbd1_clear
        rgbd1_mark:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: true
          clearing: false
          obstacle_range: 3.0          # meters
          min_obstacle_height: 0.02     # default 0, meters
          max_obstacle_height: 1.5     # default 3, meters
          expected_update_rate: 0.0    # default 0, 
          observation_persistence: 0.0 # default 0, 
          inf_is_valid: true          # default false, for laser scans
          filter: "passthrough"        # default passthrough, a
          voxel_min_points: 0          # default 0, minimum points per voxel for voxel filter
          clear_after_reading: true    # default false,
        rgbd1_clear:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: false
          clearing: true
          max_z: 7.0                  # default 0, meters
          min_z: 0.1                  # default 10, meters
          vertical_fov_angle: 1.0337  # default 0.7, radians
          horizontal_fov_angle: 1.575  # default 1.04, radians
          decay_acceleration: 5.0    # default 0, 1/s^2. If laser scanner MUST be 0
          model_type: 0                # default 0, model type for frustum.
      static_layer:
        plugin: "nav2_costmap_2d::StaticLayer"
        map_subscribe_transient_local: True
      inflation_layer:
        plugin: "nav2_costmap_2d::InflationLayer"
        cost_scaling_factor: 3.0
        inflation_radius: 0.55
      always_send_full_costmap: True

map_server:
  ros__parameters:
    use_sim_time: True
    # Overridden in launch by the "map" launch configuration or provided default value.
    # To use in yaml, remove the default "map" value in the tb3_simulation_launch.py file & provide full path to map below.
    yaml_filename: ""

map_saver:
  ros__parameters:
    use_sim_time: True
    save_map_timeout: 5.0
    free_thresh_default: 0.25
    occupied_thresh_default: 0.65
    map_subscribe_transient_local: True

planner_server:
  ros__parameters:
    expected_planner_frequency: 20.0
    use_sim_time: True
    planner_plugins: ["GridBased"]
    GridBased:
      plugin: "nav2_navfn_planner/NavfnPlanner"
      tolerance: 0.5
      use_astar: false
      allow_unknown: true

smoother_server:
  ros__parameters:
    use_sim_time: True
    smoother_plugins: ["simple_smoother"]
    simple_smoother:
      plugin: "nav2_smoother::SimpleSmoother"
      tolerance: 1.0e-10
      max_its: 1000
      do_refinement: True

behavior_server:
  ros__parameters:
    costmap_topic: local_costmap/costmap_raw
    footprint_topic: local_costmap/published_footprint
    cycle_frequency: 10.0
    behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
    spin:
      plugin: "nav2_behaviors/Spin"
    backup:
      plugin: "nav2_behaviors/BackUp"
    drive_on_heading:
      plugin: "nav2_behaviors/DriveOnHeading"
    wait:
      plugin: "nav2_behaviors/Wait"
    assisted_teleop:
      plugin: "nav2_behaviors/AssistedTeleop"
    global_frame: odom
    robot_base_frame: base_link
    transform_tolerance: 0.1
    use_sim_time: true
    simulate_ahead_time: 2.0
    max_rotational_vel: 1.0
    min_rotational_vel: 0.4
    rotational_acc_lim: 3.2

robot_state_publisher:
  ros__parameters:
    use_sim_time: True

waypoint_follower:
  ros__parameters:
    use_sim_time: True
    loop_rate: 20
    stop_on_failure: false
    waypoint_task_executor_plugin: "wait_at_waypoint"
    wait_at_waypoint:
      plugin: "nav2_waypoint_follower::WaitAtWaypoint"
      enabled: True
      waypoint_pause_duration: 200

velocity_smoother:
  ros__parameters:
    use_sim_time: True
    smoothing_frequency: 20.0
    scale_velocities: False
    feedback: "OPEN_LOOP"
    max_velocity: [0.26, 0.0, 1.0]
    min_velocity: [-0.26, 0.0, -1.0]
    max_accel: [2.5, 0.0, 3.2]
    max_decel: [-2.5, 0.0, -3.2]
    odom_topic: "odom"
    odom_duration: 0.1
    deadband_velocity: [0.0, 0.0, 0.0]
    velocity_timeout: 1.0

Hi @Anirudhgudi
STVL seems to be correctly configured.
Can you share your TF tree when all the nodes are running?

I see some base_footprint that seems not correct.
Are you using the ZED ROS2 Wrapper odometry or are you fusing odometry in ROS 2 as explained here?

Hi @Myzhar ,
I am currently generating odom through action graph in isaac sim. Yet to integrate zed wrapper odom with Nav2.
And this is the tf tree generated when all the nodes are running. I can already see one problem; with zed_camera_link linked to odom instead of base_link. Please analyse and give me your feedback

The TF tree is not coherent and I’m not sure the ROS 2 Wrapper is working correctly.

Can you please send me the full log of the ZED Node?

This guide can help you configure the system.

I have not integrated the zed camera in urdf yet. i just imported the zedx inside isaac sim and trying it out. I am launching zed node along with the nav2 through a launch file. i am also creating a static transform between odom and zed_camera_link in that launch file. the zed wrapper node seems to be starting okay. here’s the log .

[zed_wrapper-5] [2024-12-30 16:32:02 UTC][ZED][INFO] [Init]  Depth mode: NEURAL PLUS
[zed_wrapper-5] [2024-12-30 16:32:02 UTC][ZED][INFO] [Init]  Serial Number: S/N 40976320
[zed_wrapper-5] [2024-12-30 16:32:02 UTC][ZED][WARNING] Simulated ZED camera used.
[zed_wrapper-5] [2024-12-30 16:32:02 UTC][ZED][WARNING] [Init]  Invalid calibration file. On Linux, call export LC_ALL="C" and restart your application.
[zed_wrapper-5] [2024-12-30 16:32:02 UTC][ZED][WARNING] Self Calibration Disabled.
[zed_wrapper-5] [2024-12-30 16:32:03 UTC][ZED][WARNING] [Init]  Requested depth_minimum_distance: 0.3METER is too close, clamped to 0.4METER.
[component_container_isolated-2] [INFO] [1735576323.188254146] [controller_server]: Creating bond (controller_server) to lifecycle manager.
[component_container_isolated-2] [INFO] [1735576323.289954414] [lifecycle_manager_navigation]: Server controller_server connected with bond.
[component_container_isolated-2] [INFO] [1735576323.290014010] [lifecycle_manager_navigation]: Activating smoother_server
[component_container_isolated-2] [INFO] [1735576323.290145844] [smoother_server]: Activating
[component_container_isolated-2] [INFO] [1735576323.290189616] [smoother_server]: Creating bond (smoother_server) to lifecycle manager.
[component_container_isolated-2] [INFO] [1735576323.392060491] [lifecycle_manager_navigation]: Server smoother_server connected with bond.
[component_container_isolated-2] [INFO] [1735576323.392112407] [lifecycle_manager_navigation]: Activating planner_server
[component_container_isolated-2] [INFO] [1735576323.392262657] [planner_server]: Activating
[component_container_isolated-2] [INFO] [1735576323.392302357] [global_costmap.global_costmap]: Activating
[component_container_isolated-2] [INFO] [1735576323.392311518] [global_costmap.global_costmap]: Checking transform
[component_container_isolated-2] [INFO] [1735576323.392319940] [global_costmap.global_costmap]: Timed out waiting for transform from base_link to map to become available, tf error: Invalid frame ID "map" passed to canTransform argument target_frame - frame does not exist
[zed_wrapper-5] [WARN] [1735576323.646080327] [zed.zed_node]: !!! `general.grab_frame_rate` value is not valid: '60'. Automatically replaced with '30'. Please fix the parameter !!!
[zed_wrapper-5] [INFO] [1735576323.646149028] [zed.zed_node]: ZED SDK running on GPU #0
[zed_wrapper-5] [INFO] [1735576323.646160820] [zed.zed_node]:  * Camera Model  -> ZED X
[zed_wrapper-5] [INFO] [1735576323.646172555] [zed.zed_node]:  * Serial Number -> 40976320
[zed_wrapper-5] [INFO] [1735576323.646179833] [zed.zed_node]:  * Focal Lenght -> 4.4496 mm
[zed_wrapper-5] [INFO] [1735576323.646191067] [zed.zed_node]:  * Input	 -> STREAM
[zed_wrapper-5] [INFO] [1735576323.646199560] [zed.zed_node]:  * Camera FW Version  -> 1523
[zed_wrapper-5] [INFO] [1735576323.646206341] [zed.zed_node]:  * Sensors FW Version -> 0
[zed_wrapper-5] [INFO] [1735576323.646214106] [zed.zed_node]:  * Camera grab frame size -> 1280x720
[zed_wrapper-5] [INFO] [1735576323.646223390] [zed.zed_node]:  * Publishing frame size  -> 640x360
[zed_wrapper-5] [INFO] [1735576323.646239894] [zed.zed_node]: *** TF FRAMES ***
[zed_wrapper-5] [INFO] [1735576323.646247354] [zed.zed_node]:  * Map		-> map
[zed_wrapper-5] [INFO] [1735576323.646253649] [zed.zed_node]:  * Odometry	-> odom
[zed_wrapper-5] [INFO] [1735576323.646262695] [zed.zed_node]:  * Base		-> zed_camera_link
[zed_wrapper-5] [INFO] [1735576323.646268758] [zed.zed_node]:  * Camera		-> zed_camera_center
[zed_wrapper-5] [INFO] [1735576323.646275890] [zed.zed_node]:  * Left		-> zed_left_camera_frame
[zed_wrapper-5] [INFO] [1735576323.646281715] [zed.zed_node]:  * Left Optical	-> zed_left_camera_optical_frame
[zed_wrapper-5] [INFO] [1735576323.646287940] [zed.zed_node]:  * RGB		-> zed_left_camera_frame
[zed_wrapper-5] [INFO] [1735576323.646293808] [zed.zed_node]:  * RGB Optical	-> zed_left_camera_optical_frame
[zed_wrapper-5] [INFO] [1735576323.646299561] [zed.zed_node]:  * Right		-> zed_right_camera_frame
[zed_wrapper-5] [INFO] [1735576323.646305403] [zed.zed_node]:  * Right Optical	-> zed_right_camera_optical_frame
[zed_wrapper-5] [INFO] [1735576323.646311348] [zed.zed_node]:  * Depth		-> zed_left_camera_frame
[zed_wrapper-5] [INFO] [1735576323.646319740] [zed.zed_node]:  * Depth Optical	-> zed_left_camera_optical_frame
[zed_wrapper-5] [INFO] [1735576323.646325786] [zed.zed_node]:  * Point Cloud	-> zed_left_camera_optical_frame
[zed_wrapper-5] [INFO] [1735576323.646331656] [zed.zed_node]:  * Disparity	-> zed_left_camera_frame
[zed_wrapper-5] [INFO] [1735576323.646337379] [zed.zed_node]:  * Disparity Optical	-> zed_left_camera_optical_frame
[zed_wrapper-5] [INFO] [1735576323.646345732] [zed.zed_node]:  * Confidence	-> zed_left_camera_frame
[zed_wrapper-5] [INFO] [1735576323.646353886] [zed.zed_node]:  * Confidence Optical	-> zed_left_camera_optical_frame
[zed_wrapper-5] [INFO] [1735576323.646361475] [zed.zed_node]:  * IMU		-> zed_imu_link
[zed_wrapper-5] [INFO] [1735576323.646387046] [zed.zed_node]: *** PUBLISHED TOPICS ***
[zed_wrapper-5] [INFO] [1735576323.768961832] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.768989712] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.776257371] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb/image_rect_color
[zed_wrapper-5] [INFO] [1735576323.776327546] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb/camera_info
[zed_wrapper-5] [INFO] [1735576323.778360827] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.778374324] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.780137790] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb_gray/image_rect_gray
[zed_wrapper-5] [INFO] [1735576323.780160987] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb_gray/camera_info
[zed_wrapper-5] [INFO] [1735576323.782829268] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.782847362] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.784421611] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb_raw/image_raw_color
[zed_wrapper-5] [INFO] [1735576323.784445106] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb_raw/camera_info
[zed_wrapper-5] [INFO] [1735576323.785476822] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.785490000] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.788393580] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb_raw_gray/image_raw_gray
[zed_wrapper-5] [INFO] [1735576323.790984097] [zed.zed_node]: Advertised on topic: /zed/zed_node/rgb_raw_gray/camera_info
[zed_wrapper-5] [INFO] [1735576323.793799135] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.793820614] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.795485906] [zed.zed_node]: Advertised on topic: /zed/zed_node/left/image_rect_color
[zed_wrapper-5] [INFO] [1735576323.795512198] [zed.zed_node]: Advertised on topic: /zed/zed_node/left/camera_info
[zed_wrapper-5] [INFO] [1735576323.796066641] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.796076376] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.798501223] [zed.zed_node]: Advertised on topic: /zed/zed_node/left_gray/image_rect_gray
[zed_wrapper-5] [INFO] [1735576323.798524669] [zed.zed_node]: Advertised on topic: /zed/zed_node/left_gray/camera_info
[zed_wrapper-5] [INFO] [1735576323.799869314] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.799886739] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.800396524] [zed.zed_node]: Advertised on topic: /zed/zed_node/left_raw/image_raw_color
[zed_wrapper-5] [INFO] [1735576323.800412102] [zed.zed_node]: Advertised on topic: /zed/zed_node/left_raw/camera_info
[zed_wrapper-5] [INFO] [1735576323.800959237] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.800967654] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.801418731] [zed.zed_node]: Advertised on topic: /zed/zed_node/left_raw_gray/image_raw_gray
[zed_wrapper-5] [INFO] [1735576323.801431144] [zed.zed_node]: Advertised on topic: /zed/zed_node/left_raw_gray/camera_info
[zed_wrapper-5] [INFO] [1735576323.801953708] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.801961231] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.802406732] [zed.zed_node]: Advertised on topic: /zed/zed_node/right/image_rect_color
[zed_wrapper-5] [INFO] [1735576323.802418433] [zed.zed_node]: Advertised on topic: /zed/zed_node/right/camera_info
[zed_wrapper-5] [INFO] [1735576323.805253697] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.805579642] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.807019781] [zed.zed_node]: Advertised on topic: /zed/zed_node/right_gray/image_rect_gray
[zed_wrapper-5] [INFO] [1735576323.807055002] [zed.zed_node]: Advertised on topic: /zed/zed_node/right_gray/camera_info
[zed_wrapper-5] [INFO] [1735576323.807995886] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.808018844] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.808824677] [zed.zed_node]: Advertised on topic: /zed/zed_node/right_raw/image_raw_color
[zed_wrapper-5] [INFO] [1735576323.808853686] [zed.zed_node]: Advertised on topic: /zed/zed_node/right_raw/camera_info
[zed_wrapper-5] [INFO] [1735576323.809606338] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.809628540] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.810682660] [zed.zed_node]: Advertised on topic: /zed/zed_node/right_raw_gray/image_raw_gray
[zed_wrapper-5] [INFO] [1735576323.810711831] [zed.zed_node]: Advertised on topic: /zed/zed_node/right_raw_gray/camera_info
[zed_wrapper-5] [INFO] [1735576323.811552401] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.811567385] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.812287179] [zed.zed_node]: Advertised on topic: /zed/zed_node/depth/depth_registered
[zed_wrapper-5] [INFO] [1735576323.812309009] [zed.zed_node]: Advertised on topic: /zed/zed_node/depth/camera_info
[zed_wrapper-5] [INFO] [1735576323.812707007] [zed.zed_node]: Advertised on topic: /zed/zed_node/depth/depth_info
[zed_wrapper-5] [INFO] [1735576323.813428185] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.813441869] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.813993264] [zed.zed_node]: Advertised on topic: /zed/zed_node/stereo/image_rect_color
[zed_wrapper-5] [INFO] [1735576323.814722035] [FFMPEGEncoder]: enc: libx264 prof:  preset: 
[zed_wrapper-5] [INFO] [1735576323.814770137] [FFMPEGEncoder]: qmax: 0 bitrate: 4194304 gop: 10
[zed_wrapper-5] [INFO] [1735576323.815276237] [zed.zed_node]: Advertised on topic: /zed/zed_node/stereo_raw/image_raw_color
[zed_wrapper-5] [INFO] [1735576323.815454415] [zed.zed_node]: Advertised on topic: /zed/zed_node/confidence/confidence_map
[zed_wrapper-5] [INFO] [1735576323.816199417] [zed.zed_node]: Advertised on topic: /zed/zed_node/disparity/disparity_image
[zed_wrapper-5] [INFO] [1735576323.826216807] [zed.zed_node]: Advertised on topic: /zed/zed_node/point_cloud/cloud_registered
[zed_wrapper-5] [INFO] [1735576323.826712063] [zed.zed_node]: Advertised on topic: /zed/zed_node/pose
[zed_wrapper-5] [INFO] [1735576323.827099708] [zed.zed_node]: Advertised on topic: /zed/zed_node/pose/status
[zed_wrapper-5] [INFO] [1735576323.827499212] [zed.zed_node]: Advertised on topic: /zed/zed_node/pose_with_covariance
[zed_wrapper-5] [INFO] [1735576323.828326712] [zed.zed_node]: Advertised on topic: /zed/zed_node/odom
[zed_wrapper-5] [INFO] [1735576323.828796565] [zed.zed_node]: Advertised on topic: /zed/zed_node/path_map
[zed_wrapper-5] [INFO] [1735576323.829232472] [zed.zed_node]: Advertised on topic: /zed/zed_node/path_odom
[zed_wrapper-5] [INFO] [1735576323.831924699] [zed.zed_node]: Advertised on topic /zed/zed_node/mapping/fused_cloud @ 1 Hz
[zed_wrapper-5] [INFO] [1735576323.832610219] [zed.zed_node]: Advertised on topic: /zed/plane_marker
[zed_wrapper-5] [INFO] [1735576323.833127769] [zed.zed_node]: Advertised on topic: /zed/plane
[zed_wrapper-5] [INFO] [1735576323.833604716] [zed.zed_node]: Advertised on topic: /zed/zed_node/imu/data
[zed_wrapper-5] [INFO] [1735576323.834025447] [zed.zed_node]: Advertised on topic: /zed/zed_node/imu/data_raw
[zed_wrapper-5] [INFO] [1735576323.834369414] [zed.zed_node]: Advertised on topic: /zed/zed_node/temperature/imu
[zed_wrapper-5] [INFO] [1735576323.834706919] [zed.zed_node]: Advertised on topic: /zed/zed_node/left_cam_imu_transform
[zed_wrapper-5] [INFO] [1735576323.834733774] [zed.zed_node]: Camera-IMU Translation: 
[zed_wrapper-5]  0 0 0
[zed_wrapper-5] [INFO] [1735576323.834757475] [zed.zed_node]: Camera-IMU Rotation:
[zed_wrapper-5] 77B0629FA030
[zed_wrapper-5] 1.000000 0.000000 0.000000
[zed_wrapper-5] 0.000000 1.000000 0.000000
[zed_wrapper-5] 0.000000 0.000000 1.000000
[zed_wrapper-5] 
[zed_wrapper-5] [INFO] [1735576323.834766331] [zed.zed_node]: *** Subscribers ***
[zed_wrapper-5] [INFO] [1735576323.835151527] [zed.zed_node]:  * Plane detection: '/clicked_point'
[zed_wrapper-5] [INFO] [1735576323.835422201] [zed.zed_node]:  * Sim Clock: '/clock'
[zed_wrapper-5] [WARN] [1735576323.835537153] [zed.zed_node]: Waiting for a valid simulation time on the '/clock' topic...
[zed_wrapper-5] [INFO] [1735576323.851784191] [zed.zed_node]: *** Starting Positional Tracking ***
[zed_wrapper-5] [INFO] [1735576323.851814295] [zed.zed_node]:  * Waiting for valid static transformations...
[zed_wrapper-5] [INFO] [1735576323.851877040] [zed.zed_node]:  Static transform ref. CMOS Sensor to Base [zed_left_camera_frame -> zed_camera_link]
[zed_wrapper-5] [INFO] [1735576323.851885082] [zed.zed_node]:   * Translation: {0.010,-0.060,-0.016}
[zed_wrapper-5] [INFO] [1735576323.851892096] [zed.zed_node]:   * Rotation: {0.000,-0.000,0.000}
[zed_wrapper-5] [INFO] [1735576323.851903356] [zed.zed_node]:  Static transform ref. CMOS Sensor to Camera Center [zed_left_camera_frame -> zed_camera_center]
[zed_wrapper-5] [INFO] [1735576323.851908602] [zed.zed_node]:   * Translation: {0.010,-0.060,0.000}
[zed_wrapper-5] [INFO] [1735576323.851913863] [zed.zed_node]:   * Rotation: {0.000,-0.000,0.000}
[zed_wrapper-5] [INFO] [1735576323.851924448] [zed.zed_node]:  Static transform Camera Center to Base [zed_camera_center -> zed_camera_link]
[zed_wrapper-5] [INFO] [1735576323.851929426] [zed.zed_node]:   * Translation: {0.000,0.000,-0.016}
[zed_wrapper-5] [INFO] [1735576323.851934906] [zed.zed_node]:   * Rotation: {0.000,-0.000,0.000}
[zed_wrapper-5] [INFO] [1735576323.853007544] [zed.zed_node]: Initial ZED left camera pose (ZED pos. tracking): 
[zed_wrapper-5] [INFO] [1735576323.853031170] [zed.zed_node]:  * T: [-0.01,0.06,0.016]
[zed_wrapper-5] [INFO] [1735576323.853044289] [zed.zed_node]:  * Q: [0,0,0,1]

If the TF tree is not coherent, the ZED ROS 2 Wrapper does not work correctly because it waits for the correct TF frames to be published by external nodes.

According to the log, this is not your case because the Positional Tracking module is correctly initialized.

This correct parameter configuration did the trick:
[zed_wrapper-5] [INFO] [1735576323.646262695] [zed.zed_node]: * Base -> zed_camera_link

Please check the Nav2 log. Normally the problem is hidden behind its warnings.

Thank you. I will look into the nav2 logs.

Other than this, the nav2 param file looks ok? and do i need to do any modifications that are generally not mentioned in the documentation?

i have followed these steps:
(STVL) Using an External Costmap Plugin — Nav2 1.0.0 documentation

Af first sight, they all seem correct.
You can check that Nav2 correctly subscribes the point cloud topic to exclude QoS incompatibilities by using this command:
ros2 topic info /zed/zed_node/point_cloud/cloud_registered -v

Hi @Myzhar . I was able to visualise the stvl, i had to make minute changes to the robot frame ID and refer to the nav2 param file.
Thank you for the support.
But still the robot doesnt make decisions based on the voxel layer because bt server refers to costmap/raw topic . if i change it to costmap/voxel_grid, it doesnt accept that topic. Any suggestions to that?

Are the Global and Local cost maps generated correctly?
What (Local) Controller and (Global) Planner are you using?
Can you share the full “fixed” Nav2 configuration file?

  1. the global and local costmaps get generated wrt voxel grid point clouds.
  2. I am using the default controller and planner. havent used any plugins.
  3. this is the param file
amcl:
  ros__parameters:
    use_sim_time: True
    alpha1: 0.2
    alpha2: 0.2
    alpha3: 0.2
    alpha4: 0.2
    alpha5: 0.2
    base_frame_id: "base_link"
    beam_skip_distance: 0.5
    beam_skip_error_threshold: 0.9
    beam_skip_threshold: 0.3
    do_beamskip: false
    global_frame_id: "map"
    lambda_short: 0.1
    laser_likelihood_max_dist: 2.0
    laser_max_range: 100.0
    laser_min_range: -1.0
    laser_model_type: "likelihood_field"
    max_beams: 360
    max_particles: 2000
    min_particles: 500
    odom_frame_id: "odom"
    pf_err: 0.05
    pf_z: 0.99
    recovery_alpha_fast: 0.0
    recovery_alpha_slow: 0.0
    resample_interval: 3
    robot_model_type: "nav2_amcl::DifferentialMotionModel"
    save_pose_rate: 0.5
    sigma_hit: 0.2
    tf_broadcast: true
    transform_tolerance: 1.0
    update_min_a: 0.2
    update_min_d: 0.25
    z_hit: 0.5
    z_max: 0.05
    z_rand: 0.5
    z_short: 0.05
    scan_topic: scan
    map_topic: map
    set_initial_pose: true
    always_reset_initial_pose: false
    first_map_only: false
    initial_pose:
      x: -6.0
      y: -1.0
      z: 0.0
      yaw: 3.14159
    

amcl_map_client:
  ros__parameters:
    use_sim_time: True

amcl_rclcpp_node:
  ros__parameters:
    use_sim_time: True
bt_navigator:
  ros__parameters:
    use_sim_time: True
    global_frame: map
    robot_base_frame: base_link
    odom_topic: /chassis/odom
    bt_loop_duration: 20
    default_server_timeout: 40
    # 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
    # nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
    # nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
    # They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
    plugin_lib_names:
    - nav2_compute_path_to_pose_action_bt_node
    - nav2_compute_path_through_poses_action_bt_node
    - nav2_smooth_path_action_bt_node
    - nav2_follow_path_action_bt_node
    - nav2_spin_action_bt_node
    - nav2_wait_action_bt_node
    - nav2_back_up_action_bt_node
    - nav2_drive_on_heading_bt_node
    - nav2_clear_costmap_service_bt_node
    - nav2_is_stuck_condition_bt_node
    - nav2_goal_reached_condition_bt_node
    - nav2_goal_updated_condition_bt_node
    - nav2_globally_updated_goal_condition_bt_node
    - nav2_is_path_valid_condition_bt_node
    - nav2_initial_pose_received_condition_bt_node
    - nav2_reinitialize_global_localization_service_bt_node
    - nav2_rate_controller_bt_node
    - nav2_distance_controller_bt_node
    - nav2_speed_controller_bt_node
    - nav2_truncate_path_action_bt_node
    - nav2_truncate_path_local_action_bt_node
    - nav2_goal_updater_node_bt_node
    - nav2_recovery_node_bt_node
    - nav2_pipeline_sequence_bt_node
    - nav2_round_robin_node_bt_node
    - nav2_transform_available_condition_bt_node
    - nav2_time_expired_condition_bt_node
    - nav2_path_expiring_timer_condition
    - nav2_distance_traveled_condition_bt_node
    - nav2_single_trigger_bt_node
    - nav2_is_battery_low_condition_bt_node
    - nav2_navigate_through_poses_action_bt_node
    - nav2_navigate_to_pose_action_bt_node
    - nav2_remove_passed_goals_action_bt_node
    - nav2_planner_selector_bt_node
    - nav2_controller_selector_bt_node
    - nav2_goal_checker_selector_bt_node
    - nav2_controller_cancel_bt_node
    - nav2_path_longer_on_approach_bt_node
    - nav2_wait_cancel_bt_node
    - nav2_spin_cancel_bt_node
    - nav2_back_up_cancel_bt_node
    - nav2_drive_on_heading_cancel_bt_node

bt_navigator_rclcpp_node:
  ros__parameters:
    use_sim_time: True

velocity_smoother: 
  ros__parameters: 
    smoothing_frequency: 20.0 
    scale_velocities: false 
    feedback: "OPEN_LOOP" 
    max_velocity: [4.8, 0.0, 2.2] 
    min_velocity: [-4.8, 0.0, -2.2] 
    # deadband_velocity: [0.0, 0.0, 0.0] 
    velocity_timeout: 1.0 
    # max_accel: [1.0, 0.0, 1.25] 
    # max_decel: [-1.0, 0.0, -1.25] 
    odom_topic: "chassis/odom" 
    odom_duration: 0.1

controller_server:
  ros__parameters:
    use_sim_time: True
    controller_frequency: 20.0
    min_x_velocity_threshold: 0.001
    min_y_velocity_threshold: 0.5
    min_theta_velocity_threshold: 0.001
    failure_tolerance: 0.3
    progress_checker_plugin: "progress_checker"
    goal_checker_plugin: ["stopped_goal_checker"]
    controller_plugins: ["FollowPath"]

    # Progress checker parameters
    progress_checker:
      plugin: "nav2_controller::SimpleProgressChecker"
      required_movement_radius: 0.5
      movement_time_allowance: 10.0
    # Goal checker parameters
    stopped_goal_checker:
      plugin: "nav2_controller::StoppedGoalChecker"
      xy_goal_tolerance: 0.25
      yaw_goal_tolerance: 0.25
      stateful: True
    # DWB parameters
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
      debug_trajectory_details: True
      min_vel_x: 0.0
      min_vel_y: 0.0
      max_vel_x: 1.8
      max_vel_y: 0.0
      max_vel_theta: 2.2
      min_speed_xy: 0.0
      max_speed_xy: 4.8
      min_speed_theta: 0.0
      acc_lim_x: 2.5
      acc_lim_y: 0.0
      acc_lim_theta: 3.2
      decel_lim_x: -2.5
      decel_lim_y: 0.0
      decel_lim_theta: -3.2
      vx_samples: 20
      vy_samples: 5
      vtheta_samples: 20
      sim_time: 1.7
      linear_granularity: 0.05
      angular_granularity: 0.025
      transform_tolerance: 0.2
      xy_goal_tolerance: 0.25
      trans_stopped_velocity: 0.25
      short_circuit_trajectory_evaluation: True
      stateful: True
      critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
      BaseObstacle.scale: 0.02
      PathAlign.scale: 32.0
      PathAlign.forward_point_distance: 0.1
      GoalAlign.scale: 24.0
      GoalAlign.forward_point_distance: 0.1
      PathDist.scale: 32.0
      GoalDist.scale: 24.0
      RotateToGoal.scale: 32.0
      RotateToGoal.slowing_factor: 5.0
      RotateToGoal.lookahead_time: -1.0

controller_server_rclcpp_node:
  ros__parameters:
    use_sim_time: True

local_costmap:
  local_costmap:
    ros__parameters:
      update_frequency: 5.0
      publish_frequency: 2.0
      global_frame: odom
      robot_base_frame: base_link
      use_sim_time: True
      rolling_window: true
      width: 3
      height: 3
      resolution: 0.05
      robot_radius: 0.22
      plugins: ["voxel_layer", "inflation_layer"]
      inflation_layer:
        plugin: "nav2_costmap_2d::InflationLayer"
        cost_scaling_factor: 3.0
        inflation_radius: 0.55
      voxel_layer:
        plugin: "spatio_temporal_voxel_layer/SpatioTemporalVoxelLayer"
        enabled:                  true
        voxel_decay:              1.0  # seconds if linear, e^n if exponential
        decay_model:              0     # 0=linear, 1=exponential, -1=persistent
        voxel_size:               0.1  # meters
        track_unknown_space:      true  # default space is known
        unknown_threshold:        15    # voxel height
        mark_threshold:           0     # voxel height
        update_footprint_enabled: true
        combination_method:       1     # 1=max, 0=override
        origin_z:                 0.0   # meters
        publish_voxel_map:        true # default off
        transform_tolerance:      0.3   # seconds
        mapping_mode:             false # default off, saves map not for navigation
        map_save_duration:        60.0  # default 60s, how often to autosave
        observation_sources:      rgbd1_mark rgbd1_clear
        rgbd1_mark:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: true
          clearing: false
          obstacle_range: 3.0          # meters
          min_obstacle_height: 0.02     # default 0, meters
          max_obstacle_height: 1.5     # default 3, meters
          expected_update_rate: 0.0    # default 0, 
          observation_persistence: 0.0 # default 0, 
          inf_is_valid: true          # default false, for laser scans
          filter: "passthrough"        # default passthrough, a
          voxel_min_points: 0          # default 0, minimum points per voxel for voxel filter
          clear_after_reading: true    # default false,
        rgbd1_clear:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: false
          clearing: true
          max_z: 7.0                  # default 0, meters
          min_z: 0.1                  # default 10, meters
          vertical_fov_angle: 1.0337  # default 0.7, radians
          horizontal_fov_angle: 1.575  # default 1.04, radians
          decay_acceleration: 5.0    # default 0, 1/s^2. If laser scanner MUST be 0
          model_type: 0                # default 0, model type for frustum.
      static_layer:
        plugin: "nav2_costmap_2d::StaticLayer"
        map_subscribe_transient_local: True
      always_send_full_costmap: True

global_costmap:
  global_costmap:
    ros__parameters:
      update_frequency: 1.0
      publish_frequency: 1.0
      global_frame: map
      robot_base_frame: base_link
      use_sim_time: True
      robot_radius: 0.22
      resolution: 0.05
      track_unknown_space: true
      plugins: ["voxel_layer", "static_layer", "inflation_layer"]
      voxel_layer:
        plugin: "spatio_temporal_voxel_layer/SpatioTemporalVoxelLayer"
        enabled:                  true
        voxel_decay:              1.0  # seconds if linear, e^n if exponential
        decay_model:              0     # 0=linear, 1=exponential, -1=persistent
        voxel_size:               0.1  # meters
        track_unknown_space:      true  # default space is known
        unknown_threshold:        15    # voxel height
        mark_threshold:           0     # voxel height
        update_footprint_enabled: true
        combination_method:       1     # 1=max, 0=override
        origin_z:                 0.0   # meters
        publish_voxel_map:        true # default off
        transform_tolerance:      0.3   # seconds
        mapping_mode:             false # default off, saves map not for navigation
        map_save_duration:        60.0  # default 60s, how often to autosave
        observation_sources:      rgbd1_mark rgbd1_clear
        rgbd1_mark:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: true
          clearing: false
          obstacle_range: 3.0          # meters
          min_obstacle_height: 0.02     # default 0, meters
          max_obstacle_height: 1.5     # default 3, meters
          expected_update_rate: 0.0    # default 0, 
          observation_persistence: 0.0 # default 0, 
          inf_is_valid: true          # default false, for laser scans
          filter: "passthrough"        # default passthrough, a
          voxel_min_points: 0          # default 0, minimum points per voxel for voxel filter
          clear_after_reading: true    # default false,
        rgbd1_clear:
          data_type: PointCloud2
          topic: /zed/zed_node/point_cloud/cloud_registered
          marking: false
          clearing: true
          max_z: 7.0                  # default 0, meters
          min_z: 0.1                  # default 10, meters
          vertical_fov_angle: 1.0337  # default 0.7, radians
          horizontal_fov_angle: 1.575  # default 1.04, radians
          decay_acceleration: 5.0    # default 0, 1/s^2. If laser scanner MUST be 0
          model_type: 0                # default 0, model type for frustum.
      static_layer:
        plugin: "nav2_costmap_2d::StaticLayer"
        map_subscribe_transient_local: True
      inflation_layer:
        plugin: "nav2_costmap_2d::InflationLayer"
        cost_scaling_factor: 3.0
        inflation_radius: 0.55
      always_send_full_costmap: True





map_server:
  ros__parameters:
    use_sim_time: True
    yaml_filename: "carter_warehouse_navigation.yaml"

map_saver:
  ros__parameters:
    use_sim_time: True
    save_map_timeout: 5000
    free_thresh_default: 0.25
    occupied_thresh_default: 0.65
    map_subscribe_transient_local: True

planner_server:
  ros__parameters:
    expected_planner_frequency: 10.0
    use_sim_time: True
    planner_plugins: ["GridBased"]
    GridBased:
      plugin: "nav2_navfn_planner/NavfnPlanner"
      tolerance: 0.5
      use_astar: false
      allow_unknown: true

planner_server_rclcpp_node:
  ros__parameters:
    use_sim_time: True

smoother_server:
  ros__parameters:
    use_sim_time: True
    smoother_plugins: ["simple_smoother"]
    simple_smoother:
      plugin: "nav2_smoother::SimpleSmoother"
      tolerance: 1.0e-10
      max_its: 1000
      do_refinement: True

behavior_server:
  ros__parameters:
    costmap_topic: local_costmap/raw
    footprint_topic: local_costmap/published_footprint
    cycle_frequency: 5.0
    behavior_plugins: ["spin", "backup", "drive_on_heading", "wait"]
    spin:
      plugin: "nav2_behaviors/Spin"
    backup:
      plugin: "nav2_behaviors/BackUp"
    drive_on_heading:
      plugin: "nav2_behaviors/DriveOnHeading"
    wait:
      plugin: "nav2_behaviors/Wait"
    global_frame: odom
    robot_base_frame: base_link
    transform_tolerance: 0.2
    use_sim_time: true
    simulate_ahead_time: 2.0
    max_rotational_vel: 1.0
    min_rotational_vel: 0.4
    rotational_acc_lim: 3.2

robot_state_publisher:
  ros__parameters:
    use_sim_time: True

waypoint_follower:
  ros__parameters:
    use_sim_time: True
    loop_rate: 20
    stop_on_failure: false
    waypoint_task_executor_plugin: "wait_at_waypoint"
    wait_at_waypoint:
      plugin: "nav2_waypoint_follower::WaitAtWaypoint"
      enabled: True
      waypoint_pause_duration: 200

@Myzhar Hi,

I have another question. The 3d map (fused cloud) created by zed sdk is fairly similar to stvl voxels. Can the zed fused cloud be used as substitute to stvl in created costmaps? if so, is there an example of this being done before?

Hi @Anirudhgudi

No, we do not provide this feature.