SLAM Lidar data from boat

Hello,

I am using LidarView to SLAM lidar data from a Hesai XT32 scanner. The scanner is mounted on a small boat and is used to scan docks, piers, quays and the waterside. Since water doesn’t return data, contrary to a scan of for example a road, there is a gap between the watersides. I think this makes the slamming process more challenging and i am curious if you have any advice on slamming data like this. The boat is equipped with a GPS and IMU. Is LidarView the right software for slamming data like this and if so are there any specific settings I can use that would improve my slamming process?

In addition, I am considering how to best integrate the GPS and IMU data to enhance the SLAM process, especially given the lack of reference points over the water. I’ve experimented with adjusting the parameters for scan matching and point cloud filtering but haven’t yet found the optimal settings. Are there specific scanning strategies or configurations within LidarView that could compensate for the gaps in the data or improve the registration between the watersides?

Also, if anyone has experience with similar setups (such as lidar systems on boats or dealing with large data gaps like those over water), I would appreciate any tips or recommendations.

I added some screenshots of the data straight from the scanner and after slamming.

On a related note, I was wondering what format the GPS data should be in. I my case I converted my GPS data from WGS84 to local meters. Is it better to use meters or the original WGS84 coordinates?

And finally, During a SLAM session what data is logged and is there a way to view these logs after a SLAM?

Thank you in advance for your help!





Thank you for sharing the information and screenshots!

Since lidar struggles with water surfaces, resulting in data gaps, SLAM can indeed be challenging in your scenario. Here are some suggestions to help improve SLAM performance with LidarView and optimize your setup:

- Adjust SLAM Parameters in LidarView
As you’ve mentioned, tuning parameters to improve keypoint extraction and matching can make a difference. If you’re using LidarView 5.0, the SLAM toolbar offers preset configurations that may help streamline this process. In your case, you could choose either “Forest” or “City” as the environment, based on the characteristics of the waterside structures you’re scanning. This will adjust SLAM parameters to better suit your scene. Then choose “Pedestrian” for lidar support, as this setting is generally optimized for handling more unstable surfaces, like water.
For more details on the SLAM toolbar and configuration options, please refer to this SLAM guide for LidarView.

- Integrate IMU and GPS Data
Since you have both IMU and GPS data, integrating these can significantly enhance SLAM stability, especially in featureless areas like open water. However, note that LidarView doesn’t automatically log IMU/GPS data with lidar frames, so you’ll need to manually load them.

Prepare External Sensor Data: Before launching the SLAM process, load IMU and GPS data as a CSV file, along with a calibration file to align these sensors with the lidar. Instructions on loading external sensor data are available in the LidarView SLAM documentation (section external sensors).
Pre-integrate IMU Data: LidarView supports IMU data pre-integration for pose estimation, which can help in smoothing the SLAM trajectory. This feature requires GTSAM, a library used for optimizing sensor fusion.
Format GPS Data: Convert your GPS data to local meters in a CSV format, with fields for time, x, y, and z. Ensure the time is in POSIX format. This data can then be applied in pose graph optimization to enhance SLAM accuracy.

- Optimize Scanning Strategies
Adjusting your scanning strategies can also help stabilize SLAM performance over challenging areas:
Reduce Speed over Water: Since SLAM tends to lose accuracy over large, featureless surfaces, reducing the boat’s speed over these areas can improve results by allowing SLAM to process the sparse data more effectively.
Use a Loop Pattern: If your boat can follow a loop pattern near docks or quays, this can enable loop closure, which helps correct trajectory drift by revisiting known locations. For instructions on activating loop closure, see the LidarView loop closure documentation.

As for viewing the logged data:
LidarView provides a “Spreadsheet View” that allows you to review both input and output data. This can help you verify that the data is being processed correctly. In SLAM, lidar points are typically processed as a “LidarPoint” type, which includes fields like x, y, z, time, intensity, laser_id, and label. The Hesai lidar interpreter in LidarView will convert your lidar data into this format, and only these fields are considered during SLAM processing.

You can find more information in the repo of our slam library here.

If these suggestions don’t fully address your needs, you’re welcome to share some of your data with us so we can help you fine-tune the parameters for your specific use case. Kitware offers support and can provide custom implementations to better address unique challenges, such as working with lidar on water. Feel free to reach out for further assistance or potential development options.

I hope this helps clarify and improve your SLAM process. Don’t hesitate to contact us (tong.fu@kitware.com) with any additional questions, and we look forward to helping you optimize your setup.

Tong FU