Don’t blink…
That was a Rubik’s cube being solved in 0.38 seconds. The time is from the moment the keypress is registered on the computer, to when the last face is flipped. It includes image capture and computation time, as well as actually moving the cube. The motion time is ~335 ms, and the remaining time consists of image acquisition and computation. For reference, the current world record is/was 0.637 seconds.
According to the machine’s builders, Ben Katz and Jared Di Carlo, they could probably shave another ~100 ms or so, but the tuning process is time consuming because debugging needs to be done with the high speed camera, and any mistakes often destroy the cube.
The photos and descriptions below are from Ben’s blog, build its. Check out the Rubik’s solving beast of a machine below:
The contraption is built from:
6 Kollmorgen ServoDisc U9-series motors
6 Custom motor drivers
2 PlayStation Eye cameras
1 Rubik’s Cube
On the software side, Jared Di Carlo explains on his blog, The Cactus Zone, how the machine works:
I used OpenCV for the color detection and this fantastic implementation of Kociemba’s Two-Phase algorithm called ‘min2phase’. We used Playstation 3 Eye webcams, which are only $7 on Amazon Prime, and work at 187 fps under Linux. The software identifies all the colors, builds a description of the cube, and passes it to the min2phase solver. The resulting solve string is converted to a compact cube sequence message, and is sent to all motor controllers simultaneously using a USB to serial adapter connected to a differential serial IC. This whole process takes around 45 ms. Most of the time is spent waiting for the webcam driver and detecting colors. All our software is on GitHub here: https://github.com/dicarlo236/cube-solver
You can find a much more detailed description of how the machine works on the builders’ respective blogs. For the hardware go here. For the software go here.