I'd like to extract "features" of an environment scanned with a 2D LiDAR.

I tried to create a temporary occupancy map to extract "corners" with the Harris Corner Detector. However LiDAR data is noisy, it creates false corners even after applying a Gaussian filter on the map. I wonder if there are more reliable algorithms for this.

Another method I tried is to use raw data output of the LiDAR, i.e. the $(r,\theta)$ vector, and calculate its first and second derivatives and choose "abrupt changes" as landmarks. This has a major drawback, it is harder to track landmarks when LiDAR position changes since $(r,\theta)$ vectors are totally different.

I appreciate any help. Thanks.


In general you have to assign some probability distribution to your map or cells individually and update them iteratively.

In the very simple case you can just apply a low-pass filter to each of your cells. Like that: $p[t] = a*p[t-1] + (1-a)*I(occupied)$ where I is an indicator function which is set to 1 if current lidar measurement shows that cell is occupied and to 0 otherwise.

Better way is to look at SLAM methods like FastSLAM. Which use particles and kalman filters underneath. Comparing to the case I described above, Kalman filter will produce better estimates, because it is optimal in the sense that it minimises variances thus giving you as presice estimate of a mean as possible.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.