UriCones is a point-cloud-only DBSCAN-based cone detector specifically designed for Formula Student driverless events.
It explodes the fact that in Formula Student, cones delimit the track and are isolated from any other object, i.e. the only thing close to cones are (other) cones.
It takes as input the raw LiDAR scan(s) and produces for each new frame, a set of detections.
These are the key concepts that lead to its performance.
When coupling these package to the output of a LiDAR-based slam, it can take the point cloud produced at each slam iteration (deskewed and transformed) and accumulate them using a temporal buffer to enhance the point cloud's resolution and obtain better results.
Ground removal is an essential step for the algorithm, to get a clear view of the cones and to make sure the methods in following points work well, point cloud should be polished as much as possible, we should then remove the ground.
Now that we have a clean point cloud without ground, we will exploit the fact that cones represent very dense areas in space. We can cluster points based on density using DBSCAN. Now we have a set of clusters, some of which are cones.
To now filter the clusters and obtain cones, we take advantage of:
- Big structures do not have any cones near → discard clusters close to big clusters.
- The bigger the object is, the less probable it is that there is a cone nearby.
To quantize how big a cluster is, we do it by taking the diameter of the cluster's point cloud, this is the segment obtained from the points which are the farthest apart from each other. To avoid a double for loop with quadratic complexity, we first compute the convex hull of the cluster's point cloud and then find the max distance points.
Now we remove clusters that are within a radius of other clusters. This radius is computed from the cluster's diameter and a weighting factor
Note that the
Of course we also filter out big remaining clusters by a threshold on its diameter, i.e.:
Now every cluster remaining should either be a cone or lonely objects, but remember, lonely objects are likely not a cone and can also be removed.