Introduction: Rubics Cube Solver Bot

Making an autonomous robot that solves a physical Rubik's cube. This is a project under Robotics Club, IIT Guwahati.

It is made using simple material that can be found easily. Mainly we used Servo motors & an Arduino to control them, Acrylic sheets, a broken Mini Drafter, L-clamps and Dual Tapes!

For getting the algorithm of solving the cube we used the cubejs library from github.

Step 1: Materials Used

  1. 6 Servo motors
  2. Arduino Uno
  3. 3-cell LiPo battery
  4. Acrylic Sheet (8mm and 5mm thickness)
  5. Heat gun(
  6. Drill machine
  7. Hacksaw
  8. L clamps
  9. Aluminium strips
  10. Mini Drafter/ metal rods
  11. Dual Tape
  12. Fevi Quick
  13. Nut Bolts
  14. Jumper wires

Step 2: Getting the Mechanical Structure Ready

The Basic frame

  • Take a 8mm thick acrylic sheet roughly 50cm * 50cm and mark the center of all the sides(this will be the base of your robot).
  • Take a broken drafter and remove the 4 steel rods from it..(these rods will serve as the path for your slider).
  • On two rectangular pieces of acrylic(of any size) fix two rods parallel to each other and make two pairs of this assembly.
  • Next, to make a slider, stack two small pieces of acrylic one on top of another with spacers between them at the four corners and fasten them with bolts in the spacers. You will need 4 such sliders.
  • Before fastening the two pieces of slider, pass the previously afixated parallel rods between them such that the spacers just touch the outer surface of the rods.
  • For each pair of parallel rods pass two sliders on them.
  • Once this is ready ,arrange the pair of rods in the form of a 90deg cross. Make sure there is one slider at each end of the cross.
  • Now all you have to do is attach this crossed path to base of your robot, at some elevation from the base.(Make sure the elevation is greater than the height of a servo motor)
    • For this , you can use acrylic mountings with L-clamps like we did or any other method will suffice.

After this your structure should look something like the image.

Attaching the base servos

  • The two base servos should be attached such that the servo is below the arm of the cross and offset from the center.
  • The servos are attached in horizontal position to a perforated silicon wafer using long bolts, which in turn is attached to the base with L-clamp and two-way tape.

Making the push-pull rods

  • Set the servo angle to zero and attach the attach the rocker arm of servo in some suitable position.
  • Place the cube at the center of cross to get an estimate of the distance of slider in the closest position and place the sliders in that positions.
  • Attach L shaped aluminium strips at the bottom of each slider using dual tape.
  • Now to measure the distance of each aluminium strip from the top or bottom of the servo rocker which lies in its plane, this will be the length of your push-pull rod.
  • Once lengths are determined the push rod can be fixed by drilling the aluminium strip or something.

Mounting the top servos

  • Decide the height of at which your cube will be solved. The axis of servo motor should be at this height.
  • Attach the four servo motors ,each to a perforated silicon wafer using bolts in vertical position.
  • The wafer is now mounted on a L-shaped aluminium strip whose base is fixed to the slider at a proper height so that servo axis lies at the center of cube.

The C-claws

  • The claws should be such that they exactly fit a side of cube and the length of the top and bottom portions must not exceed a side of a cube.
  • For this take a strip of acrylic of sufficient thickness and heat it. Once it melts reshape it form a C-shaped clamp such that it exactly entraps a side of the cube.
  • Mark the center of the C-claw and fix this clamp to the rocker of servo at its center.

Make some minor adjustments as necessary so that each clamp is at the same height.

This completes the mechanical structure of your robot, lets move to the circuit connections........

Step 3: Circuit Connections

To control the Bot we used a Arduino, voltage regulator, and a 3-cell (12v) LiPo battery.

As The Servo Motors Draw lots of Power, We used 6 voltage regulator, one for each motor.

Signal inputs of the motors (lightest color wire of the three) was connected to digital PWM pins 3,5,6,9,10,11 of the Arduino.

The voltage regulator were connected on the breadboard and powered by the 12 volt battery. The output (5V) supply was fed into the motors directly. Ground of motors were also connected to the breadboard. The common ground was attached to the Arduino as well.

Step 4:

Step 5: Code:

The two files given shows the code written to give command to the motors for particular steps using Arduino.

The first file contain the main function and other variable definations. The second file contains functions for each move used in solving a cube(ex. U for 'up face clockwise rotation' ; R1 for 'right face counter-clockwise movement' etc.)

For getting the algorithm of solving the cube we used the cubejs library from github.

The algorithm directly gives output in 'face moves' which is completed by the Arduino code.