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