Project for Udacity's Sensor Fusion Engineer Nanodegree Program
Project Goals
- Implement Obstacle detection pipeline on PCD from a lidar sensor
- use pcl-library for general data handling and initial testing
- implement following steps:
- PCD filtering, for reducing computational cost, without loss of detail
- Segment the filtered cloud into two parts, road plane and obstacles, using RANSAC based 3D-plane extraction
- Cluster the obstacle cloud, using K-D Tree for 3D space and Eucledian clustering
- Find bounding boxes for the clusters
The configuration I used
- Ubuntu 16.04 OS
- cmake >= 3.14
- gcc/g++ >= 8.0
- PCL >= 1.2 : The code extensively utilizes the Point Cloud Library (PCL).
- README.md: this file.
- ./src/
- environment.cpp - main function , city Block function contains the Lidar obstacle detection pipeline.
- kdtree.h - KD Tree structure definition for Eucledian clustering of Point cloud.
- processPointClouds.cpp & processPointClouds.h - functions for point-cloud processing.
- /render/... - contains functions for rendering point clouds and bounding boxes
- /sensors/.. - contains point-cloud-data files and functions for use with synthetic data.
clone this repository, enter the cloned directory/folder and build:
cd SFND_Lidar_Obstacle_Detection
mkdir build && cd build
cmake ..
make
to run, use following from within the build folder:
./environment
once ./environment
is launched pcd data is read from files at /sensors/data/pcd/data_1/
and point cloud is processed. Input Lidar Stream And Object Detections are rendered in viewers as shown below:
Input Lidar Stream
Bounding Box Object Detections
- To install PCL, C++ https://larrylisky.com/2014/03/03/installing-pcl-on-ubuntu/