Results

We experienced several problems throught the project. The first was not being able to turn 90 degrees reliably. This was due to several factors. The wheels moved before they were glued and when they moved, they caused the corresponding servo to move incorrectly. Inconsistent lighting may also have caused the light sensors to speed up or delay the edge detections. The main source of the problem was that the blocks around the center pieces weren't tight and so even if the center piece moved correctly, the outer pieces might not turn the full 90 degrees. As seen in the movie, we continued to struggle with that problem to the end.
The second main problem we had was reading in and differentiating the colors on the cube. We dealt with this by comparing ratios to expected values and narrowing the acceptable ranges of each color. We also used a loop as a safegaurd so that if we couldn't determine a color, we simply retook the reading. Sometimes this caused problems though and became an infinite loop.
The third problem we had was that many of the algorithms we found were for optimal solutions and required more memory than we had access to. We did look into accessing more memory on the board but we ultimately found a suboptimal solution that fit onto our board.

Conclusion

If we had it to do again, we would turn the cube differently so that we could reliably turn 90 degrees. Also, mounting the color sensors could be done more carefully to provide more reliable and consistent readings. That would also have been helped by the cube turning 90 more exactly. We would have looked into accessing external memory as well.

Task distribution:

John Marcoux:

Yan Zhang:

Cheng Li:

Brian Kirkpatrick: