HesaiTechnology / HesaiLidar_General_SDK

Development Kit for PandarXT PandarQT Pandar64 Pandar40P Pandar40M Pandar20A Pandar20B
BSD 2-Clause "Simplified" License
72 stars 36 forks source link

Multiple PandarXTs - Corrupted Data or SegFault #13

Open spykara opened 2 years ago

spykara commented 2 years ago

Hello,

I have recently purchased 4 PandarXTs for a project. However I am having problems getting correct data from multiple sensors at the same time. Some pointclouds some back corrupted or the function segfaults.

Current setup is: Ubuntu 18.04. Clean try from a live USB. Everything compiles fine. Same happens in Windows also with a modified SDK. 4 LiDARs connected to a Gigabit switch with IPs 192.168.1.201, 192.168.1.202, 192.168.1.203, 192.168.1.204 and ports 2368, 2369, 2370, 2371. PC connected to the switch too via a Gigabit ethernet port with IP 192.168.1.100.

With all 4 LiDARs connected to the Gigabit switch at full range of 360degrees and grabbing from 1 LiDAR just like in the test.cc everything is fine. If I add another one in the main function with:

 PandarGeneralSDK pandarGeneral_second_lidar(std::string("192.168.1.202"), 2369, 0, 10110, \
      lidarCallback_second_lidar, lidarAlgorithmCallback_second_lidar, gpsCallback_second_lidar, 0, 0, 1, std::string("PandarXT-32"), std::string("frame_id"), "", "", "", false);
 pandarGeneral_second_lidar.Start()

by the way I added duplicates of the callback functions just to be safe. I am getting either:

  1. dropouts in the saved pcd files Normal pointcloud in my case has around 230000 points Dropped frames pointclouds have around 130000 points

  2. Mixed data from both sensors in the pcd files which result in much bigger point clouds Normal pointcloud in my case has around 230000 points Increased pointcloud has around 480000 points This happens after some errors in the console: buffer don't have space!,8386 buffer don't have space!,8595

  3. Segfaults which I do not have the resources right now to dig into more. Probably there is something wrong when pushing back points in vectors or reading lists of pointclouds. Segfaults seem to disappear if I increase the MAX_POINT_CLOUD_NUM and the MAX_POINT_CLOUD_NUM_PER_CHANNEL

Have you run a setup similar to this with multiple LiDARs connected at the same time and grabbing from multiple lidars at the same time? Could you verify that the SDK works with multiple LiDARs? Let me know what you think regarding all three errors.

Please ask if you need any more information.

Thank you, Spyros

yangfanFred commented 2 years ago

Hi Spyros,

Currently SDK only supports 1 LiDAR while ROS driver can support multiple LiDARs. Could you please leave your emial address, I can send you an application note about how to drive multiple LiDARs using ROS driver.

Thanks, Fred