The goal of the project is to detect the lanes for a small LIDAR point clouds. The approach used was detecting lanes using windows sliding search from a multi-aspect airborne laser scanning point clouds which were recorded in a forward looking view.Since the resolution of the point cloud is low,deep learing approach or ML-unsueprvised learning will not work .Although clustering has been used but for filtering out noise.
3D visualization
Used The KITTI Vision road dataset to perform testing for lane detection
Lane detection in lidar involves detection of the immediate left and right lanes, also known as ego vehicle lanes, with respect to the lidar sensor. The flowchart gives an overview of the workflow
Class Lidar
contains methods to preprocess the lidar pointclouds
-remove_noise
function uses DBSCAN clustering to remove noise from pointclouds data
- render_lidar_on_image
in class Image
retains only pointclouds which overlays only within the range (0,image_width) and (0,image_height)
Requirement pip install python-pcl
Simple plane segmentation of a set of points, that is to find all the points within a point cloud that support a plane model. I used the ransac algorithm to segment the ground plane lidar rings using python pcl library .
Class Lane
in detect_lanes.py contains methods to detect lane points from the pointcloud data
Lane points in the lidar point cloud have a distinct distribution of intensities. Usually, these intensities occupy the upper region in the histogram distribution and appear as high peaks. Computing a histogram of intensities from the detected ground plane will give all the lanes points
peak_intensity_ratio
:Creates a histogram of intensity points. Control the number of bins for the histogram by specifying the bin resolution.
find_peaks
:Obtains peaks in the histogram
DetectLanes
: peaks in the density of the point clouds are used to detect the windows.Sliding Window approach is used to detect lanes from each window
The polynomial is fitted on X-Y points using a 2-degree polynomial represented as ax2+bx+c
, where a, b, and c are polynomial parameters
To perform curve fitting, use the fit_polynomial
function
Class Image
performs tranformation from 3d pointlouds to 2d pixel points to project lidardata on top of rgb image
Lane detection is performed on data which was collected in realtime by Velodyne sensor mounted on top of a vehicle and its correspoding 2D plot shows the variation in density of point clouds with lanes detected