Self-solving Rubik's cube


Project Description

My goal with this project was to learn how to use ROS (Robot Operating System), as well as to get more familiar with using computer vision with a real project. With this in mind, the project is pretty simple: to create a simple robot capable of receiving a scrambled Rubik's cube and to solve it on its own. The workflow is as follows:

  • Place the Rubik's cube on the robot and begin the solving process
  • Use a simple webcam to capture the 1st face of the cube
  • Autonomously turn the cube around to capture all 6 faces
  • Using the 6 RGB images, use OpenCV and a simple K-nearest-neighbors classifier to determine the current cube configuration
  • Run a solving algorithm to find the necessary moves to solve the cube
  • Send the moves to the robot who then applies them

Used Technologies: Python 2.7, OpenCV, Scikit-Learn, ROS, Catia