The Rubik's cube, invented by Ernő Rubik in 1974, has existed for not only the enjoyment of puzzle enthusiast, but also for kids who want to show off. This is where the team drew its main inspiration from. The real question about who is the more successful human being is not always who can solve a random three dimensional puzzle faster, but who can spend 36 hours in attempt to have a mobile phone do it for us.
What it does
KewbApp uses the Open Source Computer Vision Library, or openCV, allowing the user to scan and image the six faces of a Rubik's cube. The app then parses RGB data and averages each of the colored squares, before placing the closest color representation into a Cube data structure. This data structure also supports face rotations and transformations.
How we built it
Utilizing Android-Studio and the Android SDK alongside Java Frameworks and Libraries such as OpenGl and OpenCV, we began developing this application until it quickly reached developmental plateau... Then returned in a blaze of glory; the team now well-rested and raring to continue.
Challenges we ran into
Initial the application planned to find either a general or optimal solution for via search algorithms against a mapping of the sub-cubes relationships. This proved to be difficult as the initial plans for the cube's data structure did not take into account the need for search. Our implementation of OpenCV's image recognition gave us problems with different lighting as the color threshold were dependent on RGB values instead of HUE. Rotation of any given face was another trial, due to the data structure. As the puzzle is six sided no single origin can be placed, therefore a rotation about one face must consider the changes to the four adjacent faces.
Accomplishments that we're proud of
The introduction to image recognition software has opened up a vast amount of programming projects for each of us. Cleaning up memory leaks and managing memory in general. The project as a whole instills pride and fear in the hearts and minds of a nation one Rubik's cube at a time.
What we learned
The importance of planning the minute aspects of the project extensively such as the format of image files and data structures. The true meaning of friendship... probably?
What's next for KewbApp
The above stated learned information has show us that this similar technology could be used in other puzzles such as Sudoku and mazes of varying complexity without needing to tackle a puzzle with such high complexity like the Rubik's Cube. This technology can also be applied to our previous HackISU project know colloquially as Pizza Trip. See you at e3 2016!