Nvblox lidar implementation

Hello,

Ive been trying to integrate the unitrees Go2 Lidar into nvblox. following the nvblox static reconstruction with realsense, i know that the proper parameters specific for the lidar have to be set up in nvblox_base.yaml:

    # lidar settings
    use_lidar: true
    max_lidar_update_hz: 21.6
    lidar_width: 1800
    lidar_height: 16
    lidar_vertical_fov_rad: 1.57
    use_non_equal_vertical_fov_lidar_params: false
    min_angle_below_zero_elevation_rad: -0.785
    max_angle_above_zero_elevation_rad: 0.785

also i have found that the lidar information being published with a different QoS setting as seen by running ros2 topic info command:

admin@lse-desktop:/workspaces/isaac_ros-dev$ ros2 topic info --verbose /utlidar/cloud_deskewed
Type: sensor_msgs/msg/PointCloud2

Publisher count: 1

Node name: _CREATED_BY_BARE_DDS_APP_
Node namespace: _CREATED_BY_BARE_DDS_APP_
Topic type: sensor_msgs/msg/PointCloud2
Endpoint type: PUBLISHER
GID: 01.10.64.93.0a.ca.6f.d1.8b.38.17.3e.00.00.04.03.00.00.00.00.00.00.00.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): KEEP_LAST (1)
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Subscription count: 1

Node name: _CREATED_BY_BARE_DDS_APP_
Node namespace: _CREATED_BY_BARE_DDS_APP_
Topic type: sensor_msgs/msg/PointCloud2
Endpoint type: SUBSCRIPTION
GID: 01.10.7b.73.0c.20.71.c9.f7.d9.4a.c7.00.00.14.04.00.00.00.00.00.00.00.00
QoS profile:
  Reliability: BEST_EFFORT
  History (Depth): KEEP_LAST (1)
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

do i change the subscription code in nvblox_node.cpp to be able to properly accept these QoS settings?

at the moment the lidar portion of the node is written as:

  if (use_lidar_) {
    // Subscribe to pointclouds.
    const auto pointcloud_qos = rclcpp::QoS(
      rclcpp::KeepLast(kQueueSize), parseQosString(pointcloud_qos_str_));
    pointcloud_sub_ = create_subscription<sensor_msgs::msg::PointCloud2>(
      "/utlidar/cloud_deskewed", pointcloud_qos,
      std::bind(
        &NvbloxNode::pointcloudCallback, this,
        std::placeholders::_1));
  }

after running ros2 launch nvblox_examples_bringup realsense_example.launch.py I dont see the lidar information being used or another subscriber being added to the topic /utlidar/cloud_deskewed.

Hi @castej10

Thank you for your post and request I’m forwarding to the engineers.
Nvblox is tested with with depth-cameras and/or 3D LiDAR and the Unitree Go2 use another specific 4D lidar

I will report you which is the right way to read the output from nvblox

Raffaello