NameNetIDSection
Alex Zhangalexmz2

ECE 110

Shreya Patilshreyap7ECE 120
Aryan Guptaaryang4ECE 120


Statement of Purpose

The goal of our project is to construct and program a machine that can autonomously solve a Rubik's Cube, starting from any random combination. 


Background Research

We are working on this project because we thought it would be cool to create something that could solve the complicated puzzle that is the Rubik’s Cube. We looked into what people have used to build a Rubik’s cube solver and modified their designs to build our project.

This project is similar to the Rubik's Cube Solver back in Spring 2020. However, we plan to make the mechanical frame out of legos or 3d printing to cut down on cost and need for mechanical design experience. 


Block Diagram


System Overview

    • Rubik’s Cube: Would be a shame if this were missing...

    • UI: Where a human can input the colors of the faces. This is the input of the machine.

      • Each color has a number, you run a python code that allows you to type in the numbers that represent the cube

      • Data is sent to the Raspberry Pi by USB wire

    • IR Sensor: Senses whether the cube is in position and ready to be solved

    • Raspberry Pi: The brains. Figures out the status of the cube, calculates the solution, and sends the moves to the motors

    • Motor Drivers: The interface between the motor and the Pi

    • Stepper Motors: Rotates the faces of the cube to solve it


Parts

Possible Challenges

    • Frame design &  material (lego or 3-D printing?)

    • Creating a UI to input faces

    • Virtual communications/construction

    • Code it so the solver stops at the solution


References

 [1]J. Flatland and P. Rose, "jayflatland/HighFrequencyTwister", GitHub, 2020. [Online]. Available: https://github.com/jayflatland/HighFrequencyTwister/blob/master/LICENSE. [Accessed: 18- Sep- 2020].

[2]"Adafruit's Raspberry Pi Lesson 10. Stepper Motors", Adafruit Learning System, 2020. [Online]. Available: https://learn.adafruit.com/adafruits-raspberry-pi-lesson-10-stepper-motors. [Accessed: 18- Sep- 2020].

[3]N. Knopf and J. Swiezy, Web.mit.edu, 2020. [Online]. Available: http://web.mit.edu/6.111/www/f2017/projects/knopf_Project_Design_Presentation.pdf. [Accessed: 18- Sep- 2020].

[4]"rubix cube transparent - Google Search", Google.com, 2020. [Online]. Available: https://www.google.com/search?q=rubix+cube+transparent&tbm=isch&ved=2ahUKEwje7rqF2PHrAhXXO80KHXg_AiAQ2-cCegQIABAA&oq=rubix+cube+tra&gs_lcp=CgNpbWcQARgAMgIIADICCAAyAggAMgIIADIGCAAQCBAeMgYIABAIEB4yBggAEAgQHjIGCAAQCBAeMgYIABAIEB4yBggAEAgQHjoECAAQQ1ClmDJY3KYyYIqwMmgAcAB4AIABVYgBvgKSAQE0mAEAoAEBqgELZ3dzLXdpei1pbWfAAQE&sclient=img&ei=bx9kX577LNf3tAb4_oiAAg&bih=937&biw=1920&rlz=1C1CHBF_enUS910US910#imgrc=FZIFQ5bO0elW9M. [Accessed: 18- Sep- 2020].

[5]SenorJuan, “Torque on Conventional Cubes,” SpeedSolving Puzzles Community, 27-Jan-2020. [Online]. Available: https://www.speedsolving.com/threads/torque-on-conventional-cubes.76309/. [Accessed: 20-Sep-2020].

[6]"MineLT/CubeSolver", GitHub, 2020. [Online]. Available: https://github.com/MineLT/CubeSolver. [Accessed: 27- Sep- 2020].

Comments:

We already talked a bit and I see you're off to a good start.

Have you researched any specific methods of detecting the cube's colors with computer vision? Are you planning on using a pre-written library for this (if there is one), or something custom? I see you referenced some OpenCV color detection, can you add some more detail regarding this to your proposal?

My only other concern is whether the motors you picked have enough torque to spin a face on a rubik's cube. Have you researched any previously projects that successfully used these motors or otherwise found the mechanical specifications on them (I couldn't find any on the Amazon page you linked).

Posted by jamesw10 at Sep 19, 2020 22:07

Hi Wang, James, we've updated our page:

We've decided to move to letting the user input the cube and creating a UI for the user (cheaper, more software based).

The torque indeed was not enough, we have found new motors and corresponding drivers to spin a face on a Rubik's cube. The total is a bit more expensive now.

Thanks for the feedback!

Posted by alexmz2 at Sep 20, 2020 21:04

Can you please add in what kind of UI will be used? Will it be some type of hardware button array, a smartphone with a website/app, or something else?

I'd also suggest adding in a couple of sensors so you can meet the requirements for ECE 110 honors lab, this could be something like an IR sensor to detect when the cube has been placed in the mechanism.

Other than that, this looks like a solid proposal!

Posted by jamesw10 at Sep 22, 2020 19:35

Hi Wang, James, thanks for the comments!

We've added what kind of UI to be used - it will be a python file that the user will run and input the cube, which will then be sent to the Pi over a USB cable.

We are also planning on using an IR sensor to detect when the cube has been placed in the mechanism, as suggested.

What are our next steps once the project is approved?

Thanks!

Posted by alexmz2 at Sep 26, 2020 20:26

The mechanical design is going to be very tricky here. You're going to need to design and build some kind of mount/chassis that can hold motors/actuators with sufficient precision and positioning to be able to manipulate the cube well. It seems like you have the rest of your project well researched and investigated, but the mechanical design/frame/body/chassis/etc is going to be very tough.

Approved, but stay in touch.

Posted by fns2 at Sep 30, 2020 23:49