Nowadays self driving cars rely on many different sensors to percept the surrounding environment. The most relevant one is the LiDAR, which is exploited for mapping, localization, obstacle detection and so on. All those application can use clustering techniques in order to achieve better results. There exist several state of the art algorithm for clustering, for example K-Means, Hierarchical and DBSCAN, however none of them are compliant to real time requirements. This latter aspect is fundamental for autonomous vehicles, which can be seen as real time systems that need to respect deadlines.
Our solution is an optimized clustering algorithm, which exploits parallelism and a clever point selection to massively drop computation times. This solution allows us to perform clustering online while fulfilling our real time needs.
Sales & Marketing Alignment_ How to Synergize for Success.pptx.pdf
Optimized DBSCAN clustering for LiDAR Application - talk version
1. Bartoli Luca
San Francisco - 15 May 2019
DBSCAL Clustering
Bartoli Luca - 228618@studenti.unimore.it
Modena - 15/05/2019
1
2. Bartoli Luca
San Francisco - 15 May 2019
Environment perception
2
?
?
?
?
● Principal case in autonomous driving
● Sensors help us to percept the environment near
the car
13. Bartoli Luca
San Francisco - 15 May 2019
Timing performance
13
Dataset with 40’000
AVG points for spin
< 40
14. Bartoli Luca
San Francisco - 15 May 2019
Clustering algorithms
1. K-Means Clustering
2. Hierarchical Clustering
3. DBSCAN
14
15. Bartoli Luca
San Francisco - 15 May 2019
K-Means Clustering
15
● k-means clustering aims to partition n observations into k clusters.
16. Bartoli Luca
San Francisco - 15 May 2019
K-Means Clustering
16
● k-means clustering aims to partition n
observations into k clusters.
● Need to know the number of clusters!
17. Bartoli Luca
San Francisco - 15 May 2019
Hierarchical Clustering
● Each observation starts in its own cluster, and pairs of clusters are merged as
one moves up the hierarchy (Agglomerative)
17
18. Bartoli Luca
San Francisco - 15 May 2019
Hierarchical Clustering
● Each observation starts in its own cluster, and pairs of clusters are merged as
one moves up the hierarchy (Agglomerative)
● o(n3
)
18
19. Bartoli Luca
San Francisco - 15 May 2019
DBSCAN
● Given a set of points in some space, it groups together points that are closely
packed together.
19
20. Bartoli Luca
San Francisco - 15 May 2019
DBSCAN
● Given a set of points in some space, it groups together points that are closely
packed together.
● o(n2
)
20
21. Bartoli Luca
San Francisco - 15 May 2019
Clustering summary
21
k-means Need to know the number of clusters
Hierarchical Clustering o(n3
)
DBSCAN o(n2
)
22. Bartoli Luca
San Francisco - 15 May 2019
DBSCAN improvement
DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
DBSCAL (Density-Based Spatial Clustering of Applications with LiDAR)
22
23. Bartoli Luca
San Francisco - 15 May 2019
DBSCAL
23
Compute neighbours for each point
Calculate the cluster
26. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
26
Neighbors search improvement
27. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
2. Select MAX 20 nearest points for each
27
28. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
2. Select MAX 20 nearest points for each
28
29. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
2. Select MAX 20 nearest points for each
29
radius
30. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
2. Select MAX 20 nearest points for each
30
radius
31. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
2. Select MAX 20 nearest points for each
31
radius
Less search and memory allocation/transfer
32. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
2. Select MAX 20 nearest points for each
3. Not check all points
32
33. Bartoli Luca
San Francisco - 15 May 2019
Compute neighbours
1. Launch a thread for each points
2. Select MAX 20 nearest points for each
3. Not check all points
33
34. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
● Semi-order cloud by horizontal angle
34
LIDAR
35. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
● Semi-order cloud by horizontal angle
35
LIDAR
36. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
● Semi-order cloud by horizontal angle
36
LIDAR
37. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
● Semi-order cloud by horizontal angle
37
LIDAR LIDAR
38. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
38
LIDAR LIDAR
● Semi-order cloud by horizontal angle
39. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
39
LIDAR LIDAR
● Semi-order cloud by horizontal angle
40. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
40
LIDAR LIDAR
● Semi-order cloud by horizontal angle
41. Bartoli Luca
San Francisco - 15 May 2019
Lidar pointcloud
41
LIDAR LIDAR
● Semi-order cloud by horizontal angle
42. Bartoli Luca
San Francisco - 15 May 2019
Calculate the cluster
● Recursive visit for each neighbours points on CPU
42
43. Bartoli Luca
San Francisco - 15 May 2019
Summary
43
Compute neighbours for each point
Calculate the cluster
1. Launch a thread for each points (ACC)
2. Select MAX 20 nearest points for each
3. Not check all points
1. Recursive visit for each neighbours points (CPU)
50. Bartoli Luca
San Francisco - 15 May 2019
Environment perception
50
RADAR
CAMERAParameters LIDAR RADAR CAMERA
Range high medium medium
Accuracy high medium low
Night time high high low
Rain, snow medium high low
Distance medium high low
Data based on the common sensors present on the market