rubiks-cube

Automated Rubik’s Cube Solver

Description

My final year university project submission.

Hardware

The gripper and rotary mechanisms were all pneumatically actuated and controlled via a USB digital I/O board driving a set of solenoid valves. I built amplifier circuits to drive the solenoids based on a control signals from the USB digital I/O board. The cube faces were imaged using a smart camera and then transmitted to a PC over TCP. I had to replace the normal stickers on a Rubik’s Cube with felt to counteract the specular reflections that resulted from the ring of LEDs used by the smart camera to illuminate the area it was imaging.

Software

A 3x3x3 Rubik’s cube has approximately 43 quintillion permutations. The upper-bound for the number of moves required to solve any cube was not known at the time, but had been proven to be possible in at most 23 face turns. It has since been refined to just 20 face turns. Consequently, the solver I used was non-optimal. To compute solutions I used Michael Reid’s adaptation of Herbert Kociemba’s algorithm. I had to limit the search depth to 19 iterations due to computational limitations of the laptop I was using, which meant that I could solve most cube states in approximately 2 minutes.

I was awarded the following prizes for my project submission:

  • First Prize for BEng(Hons) pathway projects
  • The Becton Dickinson Award for Engineering Excellence
  • The IET Award
Key Technologies

C++ | Networking