[PYTHON] Let's make a robot that solves the Rubik's Cube! 1 Overview

Preface

Hello, Nyanyan (reading is prima facie "Nya Nyan") is. From this time on, I will explain the robot that solves the Soltvvo: 2x2x2 Rubik's cube that I made. The structure of the article

  1. Overview
  2. Algorithm
  3. Software
  4. Hardware will do. I will write it as simply as possible, but I plan to write the content in quite detail, so you can pick up and eat what you care about. As soon as the article is completed, we plan to post a collection of videos related to this article on YouTube. In this video collection, I will hide the details and give a rough outline. We will introduce a video at the beginning of each article, so please have a look if you like.

Expected reader

Video collection related to this article

The playlist is here. IMAGE ALT TEXT HERE

The trigger for the project

Um, aren't you free? I wanted to make something, and for the time being, I wrote a program that solves 2x2x2 in the shortest amount of time, and it was unexpectedly fun, so I wondered if I could actually make a robot that solves 2x2x2 using this procedure.

Prerequisite knowledge

In the algorithm section, I try to write it in a simple way (after all, the person who writes the article is a light blue person at AtCoder), so I do not assume any prerequisite knowledge. For software, Python and C ++ (Arduino) are used. I think that these minimum knowledge is necessary. In the hardware section, technical terms may appear in some places, but I think that you can understand them by google. Therefore, no prerequisite knowledge is required. In addition, basic knowledge about Rubik's Cube is required throughout the article, so I will introduce it here.

Basic knowledge about Rubik's cube

How the Rubik's Cube works

The Rubik's Cube is often referred to as a "color-aligning puzzle", but it is actually a ** puzzle that aligns the location and orientation of parts **. First, let's put a disassembled photo of a normal 3x3x3. 分解.png There are two types of moving parts for the Rubik's Cube, edges and corners, each with a different shape (for example, the edge parts have two stickers and the corner parts have three stickers), so the edge parts are in the corners. It does not come to position or vice versa. In the case of a 2x2x2 cube, the structure is similar to 3x3x3, but the edge parts are buried inside and only the corner parts are visible.

Rotation symbol

The rotation symbol is used as a symbol to indicate the rotation of the Rubik's cube. This is when you hold the cube in a certain reference orientation

Actually, the types of rotation symbols (rotating surfaces) used in the 2x2x2 cube are only U, F, and R. please consider. Turning R and turning L are equivalent (ignoring the change in cube orientation). Therefore, you can create all the messed up states (scrambles) just by turning 3 of the 6 faces.

Finally

Well, I think it will be a long collection of articles, but I hope you enjoy reading it!

Recommended Posts

Let's make a robot that solves the Rubik's Cube! 1 Overview
Let's make a robot that solves the Rubik's Cube! 2 Algorithm
Let's make a robot that solves the Rubik's Cube! 3 Software
Write a program to solve the 4x4x4 Rubik's Cube! 1. Overview
Let's write a program to solve the 4x4x4 Rubik's Cube! 2. Algorithm
Let's write a program to solve the 4x4x4 Rubik's Cube! 3. Implementation
Updated software for Rubik's Cube Robot 2. Pre-calculation
Updated Rubik's Cube Robot software 3. Solution search
Updated Rubik's Cube Robot software 4. Status recognition
Rubik's Cube Robot Software Updated 1. Basic Functions
Updated Rubik's Cube Robot software 6. Machine operation (Arduino)
Rubik's Cube Robot Software Updated 5. Machine Operation (Python)
Let's make a robot that solves the Rubik's Cube! 3 Software
Let's make a robot that solves the Rubik's Cube! 2 Algorithm
Let's make a robot that solves the Rubik's Cube! 1 Overview
Let's write a program to solve the Rubik's Cube (Part 2: IDA * Search)
Let's replace UWSC with Python (5) Let's make a Robot
Let's make a Discord Bot.
Let's make the analysis of the Titanic sinking data like that
A memo that solves the knapsack problem by the greedy algorithm
Let's make a rock-paper-scissors game
Let's make a diagram that can be clicked with IPython
Let's make a remote rumba [Hardware]
Let's make a remote rumba [Software]
Let's make a GUI with python.
Let's make a spot sale service 2
Let's make a breakout with wxPython
Let's make a spot sale service 1
[Python] Make the function a lambda function
Let's make a graph with python! !!
Let's make a supercomputer with xCAT
Let's make a spot sale service 3
Let's make a shiritori game with Python
A class that hits the DMM API
Updated software for Rubik's Cube Robot 2. Pre-calculation
A quick overview of the Linux kernel
Updated Rubik's Cube Robot software 3. Solution search
Let's make a voice slowly with Python
Let's make a simple language with PLY 1
Updated Rubik's Cube Robot software 4. Status recognition
Let's make a multilingual site using flask-babel
Let's make a web framework with Python! (1)
Let's make a tic-tac-toe AI with Pylearn 2
Let's make a combination calculation in Python
A code that corrects the yoon / sokuon (sokuon)
Let's make a Twitter Bot with Python!
Rubik's Cube Robot Software Updated 1. Basic Functions
[Python] A program that rounds the score
Let's make a web framework with Python! (2)
Let's make a Backend plugin for Errbot
Let's do clustering that gives a nice bird's-eye view of the text dataset
Let's display a simple template that is ideal for Django for the first time
How to make a Raspberry Pi that speaks the tweets of the specified user
How to make a program to solve Rubik's Cube starting from PC Koshien 2014 Floppy Cube