Coverage Path Planning for Autonomous Robots