You should check this paper presenting the Adaptative Ray Clustering (ARC)
algorithm. It believe it could be adpated to work with the intensenties too.
Basically it parses all the distances returned by the lidar, for each beam you check the difference of its distance with the dstance of the next beam. If this difference is under a threshold (that you define) then you put the two beams in the same cluster, if not then you create another cluster. Doing that you can create multiples cluster and use those clusters for lines/corners extraction.
Since you have a custom docking station you should know how many clusters you should have and their length so you could apply the same algorithm using the intensities if the variation of the intenisty is big enough to detect the pattern.
If you want object detection with point clouds maybe you should look into PCL (Point cloud library)...I found this package target_obejct_detector but I'm not sure if that's what you want..
@rfn123 No, I want to find dock station on Lidar LaserScan
can you be more specific? Like do you have a 3D or 2D laser scanner?
@rfn123 2d laser scan which includes ranges and intensities
From #q337861 it seems that you have a ydlidar X4, do you still have this one ? Because I don't think it supports intensites, if you have intensity values in ROS it should be fixed or
0
if the beam hasn't been received.@Delb I have changed the lidar. Now I am using lidar from xiaomi vacuum cleaner. And it returns me intensities.
I would recommend you to put the lidar in front of the docking station and check the intensities returned (since you can approximatively know at which angles the docking station is) and then look for a pattern. If you can find one easily then you probably won't even need a complex algorithm to find it in your application.
@Delb, Yes, currently I am trying to do exactly what you suggested. However, I asked because maybe there are some more robust algorithms.