Skip to content

Obstacle detection performed on real lidar point cloud data. (Udacity project)

Notifications You must be signed in to change notification settings

HatemSelim94/Lidar_Obstacle_Detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sensor Fusion Udacity Nano-degree

Obstacles Detection:

  • 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:

Data processing pipeline:

Downsampling

  • Reduce the number of points in a data set with the PCL voxel_grid.
  • Hyperparameter:
    • Voxel size.

Filtering

  • Extract the region of interest using PCL CropBox filter.
  • Hyperparameters:
    • Min. & Max. vectors.

Segmentation

  • 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.

    • 2D

    • 3D

  • Hyperparameters:

    • Distance tolerance.
    • Max. number of RANSAC iterations.

Clustering

  • Form clusters from the obstacles cloud.

    • Custom implementation of Euclidean clustering with kd-tree.
      • The implementation For 2D data can be found here.
      • The implementation For 3D data:
        • 3D tree can be found here.
        • Euclidean clustering can be found here
    • 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.

Bounding boxes

  • Place bounding boxes around the individual clusters

Custom implementation performance

  • The average processing time of a point cloud with 120000 data points is 70 ms.

Installation

Ubuntu

  • 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

About

Obstacle detection performed on real lidar point cloud data. (Udacity project)

Topics

Resources

Stars

Watchers

Forks

Languages