-
Lidar sensing gives us high resolution data by sending out thousands of laser signals. These lasers bounce off objects, returning to the sensor where we can then determine how far away objects are by timing how long it takes for the signal to return. Also we can tell a little bit about the object that was hit by measuring the intesity of the returned signal. Each laser ray is in the infrared spectrum, and is sent out at many different angles, usually in a 360 degree range. While lidar sensors gives us very high accurate models for the world around us in 3D, they are currently very expensive, upwards of $60,000 for a standard unit.
-
In this project, real lidar point cloud data stream is processed in order to detect obstacles as shown in the following GIFs.
-
Scene:
-
Output:
- Reduce the number of points in a data set with the PCL voxel_grid.
- Hyperparameter:
- Voxel size.
- Extract the region of interest using PCL CropBox filter.
- Hyperparameters:
- Min. & Max. vectors.
-
Segment the data into to clouds namely obstacles cloud, and road cloud.
-
Custom implementation of segmenting 3D and 2D data with RANSAC. The implementation for 3D data can be found here, and 2D data can be found here.
-
PCL segmentation with RANSAC can be found here.
-
-
Segmentation pseudocode and results can be found here.
-
Hyperparameters:
- Distance tolerance.
- Max. number of RANSAC iterations.
-
Form clusters from the obstacles cloud.
- Custom implementation of Euclidean clustering with kd-tree.
- PCL clustering with kd-tree data structure can be found here.
-
Clustering pseudocode and results can be found here.
-
Clustering with 2d tree visualization:
-
Hyperparameters:
- Distance threshold.
- Min. & Max. number of points to form a cluster.
- Place bounding boxes around the individual clusters
- Download and run the install file.
./installFile.sh
or
sudo apt install libpcl-dev
cd ~
git clone https://github.com/HatemSelim94/Lidar_Obstacle_Detection
cd SFND_Lidar_Obstacle_Detection
mkdir build && cd build
cmake ..
make
./environment