This was our course project for the ME547 robot manipulator course. We
implemented a fully automated method for accurate maze solving. The system used
a camera looking from above and a FANUC robotic arm.

A binary representation of the maze is extracted using image processing techniques
such as cropping, thresholding, noise reduction, and contour finding. The start
point is marked by a square and the end point is marked by a triangle.

Input from the camera

Binary image with end points identified

To ensure the path travels in the center between the walls, the binary image is
skeletonized and a weighted A* algorithms is used to find a path through the
maze. A greedy algorithms is then applied to reduce the number of waypoints
required to traverse the path.

Skeletonized

A*

Reduce waypoints

In order for the robotic arm to draw accurately to the designed path, we
calibrated the position and orientation of the camera, robotic arm, and the
table surface. We used a standard checkerboard for calibration. First, a
pattern is drawn on the table to place the checkerboard. Since we know where the
robot has drawn, we can calculate the transformation of the checkerboard with
respect to the robot. Then, the camera is calibrated to the checkerboard
using homography.