Michael Lancaster's profile

Autonomous Mapping Robot

Autonomous Mapping Robot
From January to April of 2018 I collaborated on a multidisciplinary project to program a Turtlebot 2 robotics platform to perform in a series of challenges for my course, Mechatronics Systems: Design and Integration. 

The first challenge was to autonomously explore an unknown environment while constructing a map using the gmapping ROS package. For this challenge I collaborated with another student to create a navigation algorithm in C++ that used the Turtlebot's onboard Kinect IR depth sensor to construct an occupancy grid, which tells the robot which spaces in the environment are obstructed, unobstructed, or unexplored. During the challenge, the robot scored 90% for map coverage and clarity of the features (walls and other obstacles) mapped.

The second challenge was to program the Turtlebot to localize in a known environment from a random starting point, determine a route to visit 5 known objects, and determine what each object was using the OpenCV (open source computer vision) library. For this challenge I wrote the path planning function, following a 'nearest neighbour' algorithm (where the next location added to a route is chosen as the closest location to the one immediately preceding it). The robot completed the challenge with a score of 100% for path planning.

The third challenge was to program the Turtlebot to follow a walking person and display identifiable emotional responses to environmental stimuli (the four stimuli were: being picked up, hitting an obstacle, losing track of the person, and detecting an object using OpenCV). For this challenge I collaborated with my team to write functions to detect the environmental stimuli and output a combination of audio and visual responses using the onboard Linux laptop. The robot scored 100% for this challenge.
Above: Project team with our Turtlebot
Above: Graphic example of the occupancy grid created while navigating in the first challenge. U = unexplored, O = Open (unobstructed), B = Blocked (obstructed), T = Travelled (where the robot has already been)

Below: Graphic example of determining the nearest neighbour to the present location
Autonomous Mapping Robot
Published:

Autonomous Mapping Robot

Published: