Lego Robot : Fastest rubik’s cube solver
The project was commissioned by ARM Holdings and designed and built by Mike Dobson (who built the Lego robot) and David Gilday (who wrote the software). A custom Android app on a Samsung mobile phone images the cube and instructs the Lego robot what turns to make. The robot is made from 4 Lego Mindstorm NXT kits.
The app uses the phone’s camera to capture images of each face of the Rubik’s Cube which it processes to determine the scrambled colours. The solution is found using an advanced two-phase algorithm, originally developed for Speedcuber, enhanced to be multi-threaded to make effective use of the smartphone’s dual-core ARM Cortex-A9 1.2GHz processor. The software finds an efficient solution to the puzzle which is optimised specifically for the capabilities of the four-grip mechanism. The app communicates via Bluetooth with software running on the ARM microprocessors in the LEGO NXT Intelligent Bricks which controls the motors driving the robot. During the physical solve, the app uses OpenGL ES on the phone’s ARM Mali-400 MP GPU to display a graphical version of the cube being solved in real time.
The software is optimized for the robot’s capabilities, so it computes the quickest sequence for the robot, rather than the minimum number of moves. The software uses pre-computed look up tables of moves for speed. Apparently the limiting factor on the speed is the power of the motors. CubeStormer II can manage about 5 moves per second, whereas the best humans can manage 9 moves per second.
It didn’t work every time. But it is an impressive achievement. Especially considering the software was written by a hardware engineer!