Integrating the new Hesai XT16, How to modify .so files in isaac_ros_gxf

Hi all,
We are currently integrating the LIDAR Hesai XT16 to replace the original XT32. I am using the default isaac_ros_hesai ROS2 driver package.
However, when using the XT16 LIDAR , some errors occurred as follows, We plan to modify libgxf_isaac_hesai.so adapt to XT16, but this library file is license constrained . Can you provide us with the libgxf_isaac_hesai.so source code so that we can modify it to adapt to XT16?

some errors as follows:

robot@ubuntu:~$ ros2 launch nova_carter_bringup teleop.launch.py enable_3d_lidar:=True enabled_2d_lidars:=none enabled_stereo_cameras:=none enabled_fisheye_cameras:=none enable_wheel_odometry:=False

[component_container_mt-9] [INFO] [1725501653.038024281] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosNode] Loading application
[component_container_mt-9] [INFO] [1725501653.208196791] [front_3d_lidar.hesai]: [NitrosNode] Node was started
[component_container_mt-9] [INFO] [1725501653.210943479] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosNode] Initializing and running GXF graph
[component_container_mt-9] 2024-09-05 02:00:53.218 ERROR extensions/hesai/hesai_parser.cpp@457: Received 568 bytes, expected 1080
[component_container_mt-9] 2024-09-05 02:00:53.219 ERROR gxf/std/entity_executor.cpp@552: Failed to tick codelet hesai_parser in entity: LHAKGNZPAE_hesai_parser code: GXF_FAILURE
[component_container_mt-9] 2024-09-05 02:00:53.219 WARN gxf/std/event_based_scheduler.cpp@329: Error while executing entity E26 named ‘LHAKGNZPAE_hesai_parser’: GXF_FAILURE
[component_container_mt-9] [INFO] [1725501653.484692537] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosNode] Node was started
[component_container_mt-9] 2024-09-05 02:00:54.208 ERROR gxf/std/entity_executor.cpp@210: Entity with eid 50 not found!
[component_container_mt-9] [WARN] [1725501654.208324957] [front_3d_lidar.hesai]: [NitrosNode] The heartbeat entity (eid=50) was stopped. The graph may have been terminated.
[component_container_mt-9] [INFO] [1725501654.219124989] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosNode] Terminating the running application
[component_container_mt-9] [INFO] [1725501654.219165149] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosContext] Interrupting GXF…
[component_container_mt-9] [INFO] [1725501654.219883997] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosContext] Waiting on GXF…
[component_container_mt-9] [INFO] [1725501654.219912669] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosContext] Deinitializing…
[component_container_mt-9] [INFO] [1725501654.245896924] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosContext] Destroying context
[component_container_mt-9] [INFO] [1725501654.246429884] [front_3d_lidar.pointcloud_to_flatscan]: [NitrosNode] Application termination done

Hi @QingHuiZhou

Thank you for your topic and welcome to the Isaac ROS forum.

We don’t recommend changing Nova Carter’s official setup so that the system will perform as requested.

The supported configuration is available at this page: Adapting Nova — nova_docs documentation

However, all code nova carter code is based on this repository: GitHub - NVIDIA-ISAAC-ROS/isaac_ros_nova: ROS 2 support packages for Nova.

The code related to the Hesai node is coming from here: isaac_ros_nova/isaac_ros_hesai/src/hesai_node.cpp at main · NVIDIA-ISAAC-ROS/isaac_ros_nova · GitHub

You can disable this node and use the GitHub - HesaiTechnology/HesaiLidar_ROS_2.0 mapping the output on the same topics

I hope I helped you.
Raffaello

Hi @Raffaello
Thanks for your reply, as your suggestion ,I disable this nodes and use the HesaiLidar_ROS mapping the output on the /pointcloud topics, I tried using the isaac_ros_pointcloud_to-flatscan tool to obtain the /flatscan topic, getting below ‘cudaMemcpy failed’ errors ,I don’t know how to solve this issue, please help me solve it.

step 1: Run hesai_ros_driver node to publish /pointcloud topic
admin@ubuntu:/workspaces/isaac_ros-dev/Hesai_driver$ ros2 launch hesai_ros_driver start.py

step 2. Run the isaac_ros_pointcloud_to_flatscan node as following command
Open a new terminal run as following command
admin@ubuntu:/workspaces/isaac_ros-dev$ ros2 launch isaac_ros_pointcloud_utils isaac_ros_pointcloud_to_flatscan.launch.py
[INFO] [launch]: All log files can be found below /home/admin/.ros/log/2024-09-26-19-04-13-561952-ubuntu-194052
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container_mt-1]: process started with pid [194078]
[component_container_mt-1] [INFO] [1727348653.999772877] [pointcloud_to_flatscan_container]: Load Library: /workspaces/isaac_ros-dev/install/isaac_ros_pointcloud_utils/lib/libpointcloud_to_flatscan.so
[component_container_mt-1] [INFO] [1727348654.077643724] [pointcloud_to_flatscan_container]: Found class: rclcpp_components::NodeFactoryTemplatenvidia::isaac_ros::pointcloud_utils::PointCloudToFlatScanNode
[component_container_mt-1] [INFO] [1727348654.077755596] [pointcloud_to_flatscan_container]: Instantiate class: rclcpp_components::NodeFactoryTemplatenvidia::isaac_ros::pointcloud_utils::PointCloudToFlatScanNode
[component_container_mt-1] [INFO] [1727348654.082593356] [pointcloud_to_flatscan]: [NitrosNode] Initializing NitrosNode
[component_container_mt-1] [INFO] [1727348654.086610284] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/std/libgxf_std.so
[component_container_mt-1] [INFO] [1727348654.094103404] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_gxf_helpers.so
[component_container_mt-1] [INFO] [1727348654.104232908] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_sight.so
[component_container_mt-1] [INFO] [1727348654.118824971] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_atlas.so
[component_container_mt-1] 2024-09-26 19:04:14.140 WARN gxf/std/program.cpp@532: No GXF scheduler specified.
[component_container_mt-1] [INFO] [1727348654.143198059] [pointcloud_to_flatscan]: [NitrosNode] Starting NitrosNode
[component_container_mt-1] [INFO] [1727348654.146385323] [pointcloud_to_flatscan]: [NitrosNode] Loading extensions
[component_container_mt-1] [INFO] [1727348654.148002667] [pointcloud_to_flatscan]: [NitrosContext] Loading extension: gxf/lib/multimedia/libgxf_multimedia.so
[component_container_mt-1] [INFO] [1727348654.151153419] [pointcloud_to_flatscan]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_message_compositor.so
[component_container_mt-1] [INFO] [1727348654.153956971] [pointcloud_to_flatscan]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_point_cloud.so
[component_container_mt-1] [INFO] [1727348654.226208042] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/serialization/libgxf_serialization.so
[component_container_mt-1] [INFO] [1727348654.239358185] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_messages.so
[component_container_mt-1] [INFO] [1727348654.245130665] [NitrosContext]: [NitrosContext] Loading extension: gxf/lib/libgxf_isaac_ros_messages.so
[component_container_mt-1] [INFO] [1727348654.247662153] [pointcloud_to_flatscan]: [NitrosNode] Loading graph to the optimizer
[component_container_mt-1] [INFO] [1727348654.249569705] [pointcloud_to_flatscan]: [NitrosNode] Running optimization
[component_container_mt-1] [INFO] [1727348654.251774345] [pointcloud_to_flatscan]: [NitrosNode] Obtaining graph IO group info from the optimizer
[component_container_mt-1] [INFO] [1727348654.259162601] [pointcloud_to_flatscan]: [NitrosNode] Starting negotiation…
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node ‘/pointcloud_to_flatscan’ in container ‘/pointcloud_to_flatscan_container’
[component_container_mt-1] [ERROR] [1727348654.481037706] [NitrosPointCloud]: [convert_to_custom] cudaMemcpy failed for copying data from sensor_msgs::msg::PointCloud2 to NitrosPointCloud: cudaErrorInvalidValue (invalid argument)
[component_container_mt-1] terminate called after throwing an instance of ‘std::runtime_error’
[component_container_mt-1] what(): [convert_to_custom] cudaMemcpy failed for copying data from sensor_msgs::msg::PointCloud2 to NitrosPointCloud: cudaErrorInvalidValue (invalid argument)
[ERROR] [component_container_mt-1]: process has died [pid 194078, exit code -6, cmd ‘/opt/ros/humble/lib/rclcpp_components/component_container_mt --ros-args -r __node:=pointcloud_to_flatscan_container -r __ns:=/’].
admin@ubuntu:/workspaces/isaac_ros-dev$

Please help & best regard.