Unified Robotics IV: Navigation
In the final class of the undergraduate series of robotics engineering at WPI, students we're tasked with writing software to navigate and explore unknown environments using a mobile robotics platform. Student we're given a mobile platform called a turtlebot. It is composed of a drive base similar to a Roomba with differential drive, encoders and bump sensors. Additionally, an Xbox Kinect was used for 2d mapping and localization.
Robot Operating System (ROS) was used and the full navstack was implemented for the final project. The final project consisted of writing software to subscribe to a map and determine frontiers. These frontiers were defined as open space next to unknown space. Once the frontiers of a map were determined, they were blobbed together, then rated and a goal for the robot to navigate to was determined based off size, distance away and accessibility. A breadth first search was used to determine the nearest viable to navigate to given a centroid of a blob of frontiers. A global cost map was used to determine the optimal position to navigate to, in order to explore the frontier.
Below is a video demonstrating frontier based exploration. The frontiers can be seen as green squares and navigation goals as arrows.