When future generations look back on 2018 what will they remember? Not much, I suspect, except for this amazing robot that can solve a Rubik’s cube in 0.38 seconds. The video, above, shows the cube in an unsolved position and then the actuators jump into action, slamming squares into place like some kind of crazed version of Will Smith’s character in The Pursuit of Happiness.
A robot build by Ben Katz and software developer Jared Di Carlo, accomplished the feat in a blazing 0.38 seconds, though it isn’t an official record at this point.
How does the Robot work?
According to the personal blog of Di Carlo;
“Recently, Ben Katz and I collaborated on a Rubik’s Cube solving robot to try to beat the world record time of 0.637 seconds, set by some engineers at Infineon. We noticed that all of the fast Rubik’s Cube solvers were using stepper motors, and thought that we could do better if we used better motors. ”
The solve time of 0.38 seconds includes acquiring the image from the webcam, detecting colors, finding a solution, and actually rotating the faces of the cube. In the video, the machine is solving a “YJ Yulong Smooth Sitckerless Speed Cube Puzzle”, available on Amazon for $4.55. They used the cheapest cube it is possible to find on Amazon Prime because they thought they’d end up destroying many of them, but somehow ended up only going through 4 cubes and 100’s of solves.
Ben made a blog post that describes the hardware and build as well as the insane nonlinear minimum-time sliding mode controller which let us do 90 degree moves in around 10 ms. They used Kollmorgen ServoDisc motors, which have a very high torque-to-inertia ratio. The motor is coreless, so there are no heavy steel laminations on the rotor, and there’s no steel to saturate, so it can accelerate insanely fast. In a 10 ms quarter-turn move, the motor reaches over 1000 rpm.
On the software side, they used OpenCV for the color detection and this fantastic implementation of Kociemba’s Two-Phase algorithm called ‘min2phase’ . Playstation 3 Eye webcams, which are only $7 on Amazon Prime, and work at 187 fps under Linux are used to detect the motions. 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 the software is on GitHub here: https://github.com/dicarlo236/cube-solver
The motor controllers step through the moves one by one and remain synchronized with the AND BOARD, which tells all the motor controllers when the current move is finished.