Skip to content

Obstacle Detection and Avoidance for an Unmanned Surface Vehicle using ROS, C++, OpenCV and PCL

License

Notifications You must be signed in to change notification settings

PranayShirodkar/obstacle-detection-and-avoidance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Obstacle Detection and Avoidance for an Unmanned Surface Vehicle

Pranay Shirodkar's Thesis, National University of Singapore (B.Eng. 2017)

drawing

The objective of this project is to equip the above unmanned surface vehicle (USV) with autonomous operation capabilities. This project contains 2 sections:

  1. obstacle detection using stereo vision and point cloud processing
  2. path planning using Voronoi-Dijkstra algorithm

This project utilizes the following technologies: Ubuntu, ROS, OpenCV, Point Cloud Library This project utilizes the following algorithms: stereo vision block matching, RANSAC plane segmentation, A* , Dijkstra.

Part 1: Obstacle Detection

Refer to the Final Report for full details.

Before using the cameras, we must perform camera calibration:

drawing

Using the following obstacle environment:

drawing

To determine the location of the obstacles relative to the USV, we use 2 calibrated cameras mounted on the USV and stereo vision block matching algorithm. This is a technique in computer vision to determine how far away image features are from the cameras. This algorithm generates a disparity map:

drawing

This disparity map can be converted into a 3D point cloud:

drawing

RANSAC plane segmentation algorithm is used to identify the largest plane of point clouds. If done correctly, it should identify the floor or ground. This plane is then removed from the point cloud, leaving only the obstacles:

drawing

Finally, take the top down view of the remaining point cloud to obtain a 2D obstacle map for path planning purposes:

drawing

Part 2: Path Planning

Refer to the Final Report for full details.

Using the following obstacle environment (blue is valid path, black is obstacle, red is start point, green is end point):

drawing

If A* algorithm is used for shortest path planning:

drawing

A* algorithm does not consider the proximity of the path to obstacles. In a maritime environment the USV should maintain a safe distance from obstacles. For this we use Voronoi diagrams to find safe paths (blue is safe path, grey is unsafe path), and Dijkstra path planning to find the shortest path available:

drawing

About

Obstacle Detection and Avoidance for an Unmanned Surface Vehicle using ROS, C++, OpenCV and PCL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages