reŠevanje rubikove kocke s strojnim vidom in … · tvoriti kocko, ki ima vse ploskve enake barve....

48
Rok Rabuza REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN ROBOTSKIM PRIJEMALOM Diplomsko delo Maribor, september 2013

Upload: others

Post on 27-Oct-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Rok Rabuza

REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN ROBOTSKIM PRIJEMALOM

Diplomsko delo

Maribor, september 2013

Page 2: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN

ROBOTSKIM PRIJEMALOM

Diplomsko delo

Študent: Rok Rabuza

Študijski program: univerzitetni študijski program

Elektrotehnika

Smer: Avtomatika in robotika

Mentor: izr. prof. Dušan Gleich, univ. dipl. inž. el.

Lektorica: Irena Hohkraut

Page 3: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

Page 4: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

ii

ZAHVALA

Zahvaljujem se svojemu mentorju, izr.

prof. Dušanu Gleichu, za podporo in

vodenje pri izdelavi diplomskega dela.

Zahvala staršema, ki sta mi študij

omogočila in me vsa leta podpirala.

Posebna zahvala punci Mateji, ki mi je

stala ob strani, ko sem jo najbolj

potreboval.

Page 5: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

iii

REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN

ROBOTSKIM PRIJEMALOM

Ključne besede: Rubikova kocka, strojni vid, virtualna kocka, Fridricheva metoda,

robotsko prijemalo

UDK: 681.5:007.52(043.2)

Povzetek:

V delu je opisana izdelava in delovanje programa za izračun rešitve Rubikove kocke

dimenzije 3x3x3. Opisana je Fridricheva metoda za reševanje Rubikove kocke, ki je

uporabljena kot osnova za delovanje programa. Reševanje Rubikove kocke je prikazano z

grafičnim vmesnikom. V diplomskem delu sem izdelal štiri dvoosna robotska prijemala, jih

povezal z mikrokrmilnikom Arduino UNO, s spletno kamero ter programskim paketom

Matlab. Opisani sta zgradba in delovanje robota, ki rešitev, pridobljeno s programom v

Matlabu, izvede na kocki. Robot Rubikovo kocko s predlagano metodo reši v manj kot

treh minutah.

Page 6: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

iv

RUBIK'S CUBE SOLVER USING COMPUTER VISION AND

ROBOTIC WRIST

Key words: Rubik's cube, computer vision, virtual cube, Fridrich method, robotic arm

UDK: 681.5:007.52(043.2)

Abstract:

This work describes development of a Rubik's cube solver using Rubik's cube with

dimensions 3x3x3. It presents the description of the Fridrich method, which is used as the

base.The program is designed using Matlab enviroment. A proposed Rubik's Cube solver

is implemented. It presents the description and working of a robot, which handles the cube

and solves it using the solution calculated by a program, which is connected with a

microcontroler Arduino UNO.

Page 7: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

v

KAZALO

1 UVOD ........................................................................................................... 1

2 PREDSTAVITEV PROBLEMA RUBIKOVE KOCKE ................................... 2

3 STROJNI VID ............................................................................................... 4

3.1 Prepoznava barv ................................................................................................................... 4

3.2 Virtualna kocka ..................................................................................................................... 6

4 INTUITIVNA METODA ZA REŠEVANJE RUBIKOVE KOCKE ................. 11

4.1 Algoritmi .............................................................................................................................. 12

4.2 Reševanje prve plasti ......................................................................................................... 13

4.3 Reševanje druge plasti ...................................................................................................... 17

5 FRIDRICHEVA METODA ZA REŠEVANJE RUBIKOVE KOCKE ............ 20

6 ROBOTSKO PRIJEMALO ......................................................................... 27

6.1 Robotsko prijemalo ............................................................................................................ 27

6.2 Mikrokrmilnik ...................................................................................................................... 30

7 SKLEP ....................................................................................................... 32

Page 8: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

vi

KAZALO SLIK

SLIKA 2.1: RUBIKOVA KOCKA ................................................................................................................. 2

SLIKA 3.1: PREPOZNAVA BARV .............................................................................................................. 5

SLIKA 3.2: MATRIKA PLOSKVE................................................................................................................ 6

SLIKA 3.3: MREŽA KOCKE ...................................................................................................................... 7

SLIKA 3.4: MATRIKA VIRTUALNE KOCKE .................................................................................................. 7

SLIKA 3.5: MREŽA VIRTUALNE KOCKE ................................................................................................... 10

SLIKA 4.1: POTEK FRIDRICHEVE METODE [8] ........................................................................................ 11

SLIKA 4.2: OZNAKE STRANIC KOCKE [8]................................................................................................ 12

SLIKA 4.3: PRIMERI PREMIKOV KOCKE [8] ............................................................................................. 13

SLIKA 4.4: "KRIŽ" NA PRVI PLOSKVI [8] ................................................................................................. 14

SLIKA 4.5: REŠEN "KRIŽ" NA SPODNJI PLOSKVI ..................................................................................... 15

SLIKA 4.6: VOGALI PRVE PLASTI [8] ...................................................................................................... 16

SLIKA 4.7: REŠENA PRVA PLAST .......................................................................................................... 17

SLIKA 4.8: DRUGA PLAST [8]................................................................................................................ 18

SLIKA 4.9: REŠENA DRUGA PLAST ........................................................................................................ 19

SLIKA 5.1: ZADNJA PLAST - PRVI KORAK [8] .......................................................................................... 20

SLIKA 5.2: REŠEN PRVI KORAK ZADNJE PLASTI ..................................................................................... 21

SLIKA 5.3: ZADNJA PLAST - DRUGI KORAK [8] ........................................................................................ 22

SLIKA 5.4: REŠEN DRUGI KORAK ZADNJE PLASTI ................................................................................... 23

SLIKA 5.5: ZADNJA PLAST - TRETJI KORAK [8] ....................................................................................... 23

SLIKA 5.6: REŠEN TRETJI KORAK ZADNJE PLASTI .................................................................................. 24

SLIKA 5.7: ZADNJA PLAST - ČETRTI KORAK [8] ....................................................................................... 25

SLIKA 5.8: REŠEN ČETRTI KORAK ZADNJE PLASTI – REŠENA KOCKA ....................................................... 25

SLIKA 5.9: PRIMER REŠITVENEGA ALGORITMA KOCKE ........................................................................... 26

SLIKA 6.1: SHEMA ROBOTSKEGA PRIJEMALA ......................................................................................... 27

SLIKA 6.2: ROBOTSKO PRIJEMALO ....................................................................................................... 28

SLIKA 6.3: ROBOT............................................................................................................................... 30

SLIKA 6.4: MIKROKRMILNIK ARDUINO UNO [9] ..................................................................................... 31

Page 9: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

vii

KRATICE

RGB - red green blue: format slike

OLL - orient last layer: orientacija zadnje plasti

PLL - permute last layer: permutacija zadnje plasti

USB - universal serial bus: univerzalno serijsko vodilo

Page 10: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

1

1 UVOD

Rubikova kocka je svetovno znana miselna igrača in je namenjena širši populaciji, vendar

kljub njeni prepoznavnosti znanje reševanja ni tako zelo razširjeno.

Fridricheva metoda [1] je ena najpopularnejših metod za reševanje Rubikove kocke.

Metoda temelji na algoritmih z določenim zaporedjem premikov, ki nas privedejo do

rešitve. Obstaja še mnogo drugih metod za reševanje Rubikove kocke (na primer:

začetniška metoda, Ortega metoda, Watermanova metoda [2]). Intuitivna metoda je del

Fridricheve metode, je začetni del reševanja kocke, pri katerem reševalec uporablja svoje

znanje in izkušnje pri iskanju rešitve.

Sam sem že kot otrok postal navdušenec nad Rubikovo kocko, z leti se je to navdušenje

še poglobilo, z njim pa tudi moje znanje o sami kocki in njenem reševanju. V času študija

sem pridobil idejo in znanje za izvedbo programa za reševanje Rubikove kocke ter robota,

ki bi to rešitev implementiral na realni kocki. Cilj predlaganega diplomskega dela je izdelati

robota, ki samostojno reši Rubikovo kocko v povprečju manj kot treh minutah.

Projekt je sestavljen tako, da predstavi Rubikovo kocko na način, zanimiv tistim, ki jo zelo

dobro poznajo, kakor tudi ostalim, ki mogoče zanjo še niso slišali. Prav tako je

predstavljena tudi ena izmed metod reševanja kocke z namenom pokazati, da proces

reševanja le ni tako težak in nerazumljiv, kot se morda zdi na prvi pogled.

Diplomsko delo je sestavljeno iz sedem poglavij. V drugem poglavju se spoznamo s

kocko, z njenimi lastnostmi ter z eno od najpopularnejših metod reševanja kocke.

Predstavljen je tudi trenutno najhitrejši robot za sestavljanje rubikove kocke, ki je služil kot

inspiracija temu projektu. V naslednjem poglavju se spoznamo s strojnim vidom ter

načinom, kako Rubikovo kocko iz realnega sveta prenesemo v virtualni, računalniški svet.

V četrtem poglavju je predstavljena intuitivna metoda za reševanje kocke ter način, kako

program to intuitivno metodo uporablja za iskanje rešitve. V naslednjem poglavju se

reševanje kocke nadaljuje s Fridrichevo metodo ter njeno implementacijo v računalniškem

programu. V šestem poglavju je predstavljen robot, ki rešitev kocke, pridobljene s

programom, izvede na realni kocki. V sklepu ocenimo delovanje robota, učinkovitost

programa ter navedemo možnosti za izboljšavo.

Page 11: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

2

2 PREDSTAVITEV PROBLEMA RUBIKOVE KOCKE

Slika 2.1 prikazuje Rubikovo kocko z dimenzijami 3x3x3, ki jo sestavlja 26 manjših kock:

šest središč, osem kotov in dvanajst robnih kock, kot je prikazano na sliki 2.1. Le-te tvorijo

šest različno obarvanih ploskev (običajno so to bela, rumena, modra, zelena, rdeča in

oranžna), ki jih lahko poljubno vrtimo in tako pride do menjav posameznih kock, pri čemer

obstaja 43 252 003 274 489 856 000 različnih kombinacij [2]. Namen reševanja je znova

tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik,

madžarski izumitelj, kipar in profesor arhitekture, leta 1974. Med leti 1978 in 1981 so

prodali več kot deset milijonov kock in še danes velja za eno najboljših miselnih igrač [2].

Slika 2.1: Rubikova kocka

S pojavom kocke so se pojavile tudi najrazličnejše metode reševanja Rubikove kocke,

med drugim tudi Fridricheva metoda [1], ki je dobila ime po Jessici Fridrich z objavo

metode na internetu. Fridrich metoda temelji na reševanju kocke po plasteh; najprej na

prvi plasti naredimo "križ", nato preostanek prve plasti in drugo plast rešimo skupaj, tretjo

plast pa rešimo v dveh delih - najprej orientiramo vse kocke, nato pa izvedemo

permutacijo, ki nam kocke postavi na svoje mesto. Začetni križ se reši intuitivno, prav tako

tudi drugi dve plasti ("F2L" - first two layers), vendar obstaja mnogo algoritmov za pomoč

Page 12: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

3

pri razumevanju reševanja le-teh. Orientacija zadnje plasti ("OLL" - orient last layer) ter

permutacija zadnje plasti ("PLL" - permute last layer) pa sta izvedeni izključno z algoritmi,

saj je to najhitrejša pot do rešitve, ko že imamo sestavljeni prvi dve plasti [1].

Z razvojem računalniške tehnologije se je pojavilo čedalje več programov, ki so znali

izračunati rešitev Rubikove kocke z najmanjšim številom potrebnih premikov. Izdelajo se

tudi roboti, ki so sposobni samostojno poiskati rešitev poljubno premešane kocke in jo tudi

implementirati na realni kocki. Najhitrejši robot Cubestormer 2 [4] je 11. 11. 2011 postavil

Guinnessov rekord za najhitrejšo sestavljeno kocko vseh časov z osupljivim rezultatom

5,270 sekund ter s tem postal prvi robot, ki je pri sestavljanju prehitel človeka [5]. Takratni

rekord, ki ga je postavil avstralec Feliks Zemdegs, je znašal 5,66 sekund. Omeniti je

potrebno, da je pri postavljanju rekordov pri ljudeh pred začetkom časovnega merjenja

dovoljen pogled kocke, ki traja približno 12 sekund, pri robotu pa je v času reševanja že

vštet čas, potreben za poslikanje kocke ter izračun rešitve, ne pa sama izvedba rešitve

[4],[5].

Page 13: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

4

3 STROJNI VID

3.1 Prepoznava barv

Za reševanje Rubikove kocke v računalniškem okolju je potrebno računalniku podati

informacijo o stanju premešanosti kocke. Najlažji način, mišljeno za bodočega uporabnika

programa, je slikanje kocke s pomočjo spletne kamere. Matlab [6] ponuja preprosto

rešitev z zajemanjem videa s spletnih kamer v orodju za zajem slike (Image aquisition

toolbox). Slike zajamemo s programskim prožilcem, ki naredi eno samo sliko in jo shrani v

Matlab delovno območje v želenem formatu. Za nas se je kot najustreznejši format izkazal

RGB (Red-Green-Blue) format, ki vsaki slikovni točki slike pripiše vrednosti rdeče, zelene

in modre barve. Barve posamezne ravnine so shranjene v osmih bitih, torej zasedajo

vrednosti od 0 do 255. Slika je tako shranjena kot spremenljivka, ki ima tri ravnine, vsaka

od njih pa je v velikosti ločljivosti slike. S tem je razvidna barva vsake slikovne točke kot

kombinacija vrednosti vseh treh barv, vsaka kombinacija vrednosti pa nam ponazarja

drugo barvo. S tem smo dobili možnost, da za vsako slikovno točko slike izvemo, katere

barve je, oziroma jo lahko primerjamo z želenimi vrednosti ter ugotavljamo, ali so v

območju, ki ga želimo. Če takšno primerjavo izvedemo za vsako točko slike, kot rezultat

dobimo črno-belo sliko, v kateri bela barva predstavlja ujemanje barve s primerjalnim

območjem. Ta črno-bela slika je enake dimenzije kot slika, ki smo jo primerjali,

predstavimo pa jo lahko kot matriko, katere elementi so 1 za belo barvo ter 0 za črno

barvo. Matlab je odlično orodje za delo z matrikami, torej smo uspeli prenesti informacijo

iz realnega sveta v računalniško okolje [6],[7].

Rubikovo kocko sestavlja šest različno obarvanih ploskev, vsaka ploskev pa je

sestavljena iz devetih manjših kockic, razporejenih v tri vrstice in tri stolpce.

Prepoznavanje ene same barve očitno ni dovolj, da računalniku podamo zadostno

informacijo o kocki, je pa začetek, iz katerega lahko izhajamo. Pri slikanju kocke nas

okolica ne zanima, torej želimo, da kocka zajema celotno sliko. Ob tej predpostavki slika

sedaj predstavlja eno ploskev kocke. Vsaka izmed kockic na tej ploskvi je lahko katere

koli izmed šestih barv Rubikove kocke. Primerjava slike z eno trojico želenih vrednosti

oziroma z eno barvo nam pove, kje na tej ploskvi se omenjena barva nahaja. Sliko

primerjamo z vsako od šestih barv, za katere vemo, da se pojavijo na Rubikovi kocki, ter s

Page 14: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

5

tem dobimo šest črno-belih slik oziroma matrik, ki jih lahko uporabljamo v Matlab-u.

Poimenujemo jih po barvi, s katero smo primerjali sliko, kot je prikazano na sliki 3.1.

Slika 3.1: Prepoznava barv

Teh šest črno-belih slik moramo obravnavati skupaj, kajti vsaka zase nam ne podaja

veliko informacij, le kot celota nam opišejo celotno ploskev kocke. Ker je potrebna

informacija o celotni kocki, moramo poslikati vseh šest ploskev kocke, za vsako dobimo

šest črno-belih slik, kar pomeni skupno 36 matrik, vsaka dimenzije ločljivosti slike. Pri

slikah visoke ločljivosti (npr. 1280x1024 pik) je to ogromno podatkov za obdelavo.

Ugotovimo, da lahko velikosti matrik hitro zmanjšamo, saj posameznih kockic ne

potrebujemo opisanih z nekaj sto enicami ampak z eno samo. Predpostavili smo, da

kocka zaseda celotno sliko, torej matrike razdelimo na devet enakih delov, kakor je

razdeljena tudi ploskev kocke. Dobimo torej matrike velikosti 3x3, katerih elemente

izračunamo tako, da izračunamo razmerje med enicami in ničlami v vsakem od 9 delov

velike matrike. Če prevladuje število enic, v novo matriko vpišemo 1, drugače 0. Da

posamezne matrike med seboj ločimo, jih množimo (skaliramo) s številom, ki pripada

barvi v imenu matrike, torej barvi, s katero je bila slika primerjana za izračun te matrike: 1

- bela, 2 - rumena, 3 - zelena, 4 - modra, 5 - oranžna, 6 - rdeča. Vse matrike skupaj nam

predstavljajo celotno ploskev, torej skalirane matrike seštejemo skupaj in dobimo eno

samo matriko, ki nam v celoti predstavlja ploskev kocke, kar prikazuje slika 3.2.

Page 15: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

6

Slika 3.2: Matrika ploskve

Pridobili smo najmanjšo možno obliko predstavitve ene ploskve kocke v računalniškem

okolju. Vseh šest ploskev lahko sedaj predstavimo z le šestimi matrikami dimenzije 3x3,

kar je precej manj informacij kot 36 matrik velikih dimenzij. Kljub vsemu pa to niso vse

potrebne informacije, ki jih potrebujemo za popolno predstavitev kocke. Manjkajo

medsebojne odvisnosti posameznih ploskev oziroma orientacija ploskev. Če pogledamo

kocko, kakor je prikazana na sliki, vidimo eno ploskev, ki ima štiri robove. Vsak od robov

je skupen s sosednjo ploskvijo. Ni dovolj , da vemo, katera ploskev leži "levo" od slikane,

potrebno je vedeti tudi, kako je orientirana oziroma na kateri strani "leve" ploskve leži

slikana ploskev. S pravilnim zaporedjem slikanja kocke je možno dobiti informacijo o

orientiranosti ploskev.

3.2 Virtualna kocka

Rubikova kocka je tridimenzionalni predmet, vendar jo je možno predstaviti v

dvodimenzionalni obliki kot raztegnjeno mrežo kocke, prikazane na sliki 3.3. S tem se

sicer izgubi nekaj skupnih robov ploskev, vendar navidezno še vedno obstajajo, saj pri

raztegu kocke v mrežo ne spreminjamo medsebojnih odvisnosti posameznih ploskev

oziroma njihove orientacije. Mreža kocke še vedno vsebuje manjše kockice, ki sestavljajo

posamezne ploskve.

Page 16: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

7

Slika 3.3: Mreža kocke

Število manjših kockic nam ponazarja velikost mreže, višina je devet kock, širina pa

dvanajst kock. Kot smo pri prepoznavanju barve eno ploskev predstavili z eno samo

matriko, lahko podobno storimo sedaj. Celotno mrežo matrike bomo predstavili z matriko

velikosti 9x12. Prostor, kjer nam mreža ne predstavlja ničesar, zapolnimo z ničlami,

preostale kockice pa ponazorimo na podoben način kot prej. Posamezne ploskve

zapišemo kot 3x3 matrike z elementi od 1 do 6, odvisno od barve pripadajočih kockic.

Matrike nato združimo v eno samo večjo matriko, praznino pa zapolnimo z ničlami.

Dobimo matriko virtualne kocke, prikazane na sliki 3.4, s katero lahko računamo v Matlab-

u.

Slika 3.4: Matrika virtualne kocke

Page 17: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

8

Sedaj imamo način predstavitve celotne kocke v računalniškem okolju, vendar nam

manjka korak, kako iz šestih matrik posameznih ploskev priti v mrežo celotne kocke. Kot

prej omenjeno, je potrebna pravilna orientacija posameznih ploskev, da jih lahko zložimo

skupaj. Za vsako matriko ploskve moramo vedeti, katere so bile njene sosednje ploskve

pri slikanju. Da to zagotovo poznamo, si določimo, da bomo kocko slikali vedno v enakem

zaporedju ploskev.

Rubikova kocka je v notranjosti zgrajena iz tridimenzionalnega križa, na katerega so

pritrjene sredinske kockice posamezne ploskve. Zaradi te lastnosti vidimo, da so

sredinske kockice vedno v enaki medsebojni legi. Posamezne ploskve kocke lahko tako

poimenujemo kar po barvi sredinske kockice, kajti ta bo vedno na istem mestu ne glede

na to, kako kocko premešamo. Z malo preizkušanja hitro ugotovimo, da niti ni pomembno,

da vedno slikamo ploskve v enakem zaporedju, ampak je dovolj, da rotacije kocke

ostanejo enake. Torej lahko začnemo s katero koli ploskvijo, le da nadaljujemo s pravilnim

zasukom kocke. Kocka je tridimenzionalna, torej jo lahko vrtimo okoli treh osi X, Y in Z.

Osi kocke določimo z zgledom po Fridrichevi metodi, ki pravi, da osi definiramo tako, da

kocko pogledamo na tak način, da vidimo samo eno ploskev: Y os je navpična os,

usmerjena navzgor, X os je vodoravna os, usmerjena v desno, Z os pa je pravokotna na

obe osi ter usmerjena proti nam. Zasuke kocke torej definiramo kot "X", "Y", "Z" - zasuki

po oseh v pozitivni matematični smeri za 90°, "Xp", "Yp", "Zp" - zasuki po oseh v negativni

matematični smeri ter "X2", "Y2", "Z2" - zasuki v katero koli smer za 180°. Zaporedje

rotacij kocke lahko torej predstavimo z zaporedjem zasukov po oseh. Poudariti je

potrebno, da se osi ne premikajo skupaj s kocko, ampak so odvisne od našega pogleda

na kocko.

Potrebujemo torej zaporedje, s katerim bomo dobili informacijo o orientaciji ploskev. Z

malce preizkušanja ugotovimo, da je zaporedje YYYXX2 takšno zaporedje, s katerim

poslikamo vse ploskve kocke in tudi pridobimo potrebne informacije. Ploskve imamo sedaj

oštevilčene glede na zaporedje slikanja (prva, druga, itd.), potrebno pa je njihove

pripadajoče matrike pravilno orientirati. Cilj teh matrik ploskev je virtualna kocka, ki smo jo

v osnovi definirali tako, da je sprednja ploskev zelena, zgoraj rumena, spodaj bela, levo

rdeča, desno oranžna in zadaj modra. Zaporedje slikanja nam pove, katera ploskev je bila

slikana prej - tu je pomembno predvsem, katera barva je pred katero. Barvo ploskve

določimo iz barve sredinske kockice. Zaporedja slikanja kocke poimenujemo po zaporedju

slikanih barv (npr. rdeča, zelena, oranžna, modra, bela, rumena). Ugotovimo, da kakor

Page 18: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

9

imamo podani prvi dve barvi v zaporedju, je preostanek zaporedja enolično določen, torej

skrajšamo imena zaporedji na samo prvi dve barvi. Sedaj smo dobili 30 zaporedji, ki so

vsa možna zaporedja slikanja kocke s temi zasuki kocke. Za posamezno zaporedje

preverimo, kako so orientirane posamezne ploskve, ko jih slikamo. Vsako matriko ploskve

potem orientiramo pravilno, da so njene sosednje ploskve enake, kakor so sosednje

ploskve pripadajoče enakobarvne ploskve virtualne kocke. Možne rotacije so rotacija v

pozitivni matematični smeri, v negativni matematični smeri ter rotacija za 180°. Te rotacije

ne spadajo med matematične operacije z matrikami. Matrike se v tem primeru

obravnavajo enako kot ploskve kocke, ki se vrtijo okoli sredinskega elementa. Pravilno

orientirane matrike ploskev nato zložimo skupaj v večjo matriko - matriko virtualne kocke,

ki je popolna predstavitev kocke v računalniškem okolju. Virtualna kocka je sedaj

generirana, vendar je sama po sebi neuporabna. Da lahko izkoristimo virtualno kocko, se

mora tudi obnašati kot prava kocka, torej jo moramo znati "premikati" kot pravo kocko.

Premiki kocke so po Fridrichevi metodi definirani kot premiki posameznih ploskev v smeri

urinega kazalca ali pa v nasprotni smeri ter premik za pol obrata, kot premik pa se šteje

tudi rotacija kocke okoli katere od njenih osi [8]. Za vsako ploskev imamo torej tri možnosti

premikanja, skupaj 18 možnih premikov ter 9 rotacij kocke okoli osi. Za vsakega od 27

premikov je potrebno zapisati transformacijo, ki virtualno kocko pred premikom preslika v

virtualno kocko, ustrezno kocki po premiku. Premike kocke bomo podrobneje obravnavali

pri Fridrichevi metodi. Virtualno kocko smo sedaj opremili še s transformacijami, ki

opisujejo premikanje realne kocke, torej imamo popolno predstavitev kocke v

računalniškem okolju (slika 3.5), s katero lahko upravljamo, potrebno je le še poiskati

rešitev.

Page 19: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

10

Slika 3.5: Mreža virtualne kocke

Page 20: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

11

4 INTUITIVNA METODA ZA REŠEVANJE RUBIKOVE KOCKE

Fridricheva metoda je ena izmed mnogih metod reševanja Rubikove kocke. Metoda

temelji na sestavljanju kocke po plasteh. Kocko po višini razdelimo na tri plasti, kar je tudi

v njeni naravi, saj ima višino treh kock, ter jih oštevilčimo od spodaj navzgor. Prva plast

obsega celotno spodnjo ploskev ter prvo vrstico vseh štirih stranskih ploskev, druga

ploskev zajema drugo vrstico stranskih ploskev, torej njihova središča, tretja pa zgornjo

vrstico stranskih ploskev ter zgornjo ploskev. Metoda rešuje kocko po plasteh (slika 4.1),

pri čemer se ne oziramo na naslednjo plast, ker nas ne zanima, pazimo le, da si prejšnje

ne podremo [1],[8].

Slika 4.1: Potek Fridricheve metode [8]

Prvi dve plasti sta načeloma rešljivi intuitivno, metoda poda le nekaj nasvetov in

algoritmov za pomoč, zadnja plast pa ima celotno rešitev podano v algoritmih. Intuitivna

metoda torej opisuje reševanje prve in druge plasti, medtem ko je tretja plast skoraj

nemogoče rešljiva intuitivno, zato za njo uporabimo Fridrichevo metodo, ki jo bomo

podrobneje spoznali v naslednjem poglavju. Da lahko predstavimo vrtenje kocke na

Page 21: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

12

razumljiv način, je potrebno definirati, kako premike označujemo. Zaporedje več premikov

se imenuje algoritem [8].

4.1 Algoritmi

Algoritem [8] je zaporedje premikov kocke, ki rešijo določeno situacijo. Premike

označujemo s prvo črko angleškega imena strani. Na primer sprednja stran Front se

označi s F, zgornja z U in tako dalje, kot je prikazano na sliki 4.2 [8].

Slika 4.2: Oznake stranic kocke [8]

Premik U pomeni, da zgornjo stran v smeri urinega kazalna zavrtimo za 90°. Poznamo še

dva premika zgornje plasti U' oziroma Up, pri čemer p in ' pomenita obrat v nasprotni

smeri urinega kazalca za 90°, ter U2, pri čemer 2 pomeni dvojni premik v katero koli smer.

Pri dvojnem premiku se 2 piše vedno za premikom, na katerega se nanaša, in nikoli pred,

da pri zapisu algoritmov ne pride do nejasnosti. Mala črka u pa pomeni, da zavrtimo

zgornjo plast ter plast pod njo. Najpogosteje uporabljene premike prikazuje slika 4.3,

kocka pred izvedenim premikom pa je enaka kocki na sliki 4.2 [8].

Page 22: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

13

Slika 4.3: Primeri premikov kocke [8]

4.2 Reševanje prve plasti

Za boljše razumevanje reševanja kocke bomo s pomočjo intuitivne in Fridricheve metode

rešili primer premešane kocke, prikazane na sliki 3.5.

Fridrich metoda rešuje kocko po plasteh, to pomeni, da kocko razdelimo na tri plasti po

višini. Najprej rešimo spodnjo ploskev in spodnji rob vseh stranskih ploskev, temu pravimo

prva plast. Začetni "križ" na prvi plasti je čisto intuitivna rešitev in zanj ni posebnih

algoritmov, potrebno je le nekaj poznavanja delovanja kocke ter prostorske predstave in

malce vaje. Križ je v 99,9 % primerov rešljiv s sedmimi premiki ali manj. Kocko imamo

tukaj še popolnoma premešano, zato je potrebno vedeti, kako začeti. Če vzamemo našo

virtualno kocko, vidimo, da je bela ploskev spodnja, rdeča, zelena, oranžna in modra pa

so stranske ploskve. Začeli bomo s križem na beli ploskvi, ki ga prikazuje slika 4.4 [8].

Page 23: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

14

Slika 4.4: "Križ" na prvi ploskvi [8]

S slike 4.4 vidimo, da je pomembno tudi, da se kraki "križa" pravilno ujemajo s sredinskimi

kockicami sosednjih ploskev, sicer je križ napačen. Kako torej poiskati rešitev? Najlažji

način je, da vsak krak križa poiščemo posebej ter ga vstavimo na njegovo mesto, pri tem

pa moramo paziti, da ne uničimo predhodno postavljenih krakov. Križ leži na spodnji

ploskvi, s tem je zgornja ploskev prosta in primerna za "prenašanje" elementov po kocki.

Če pogledamo mrežo naše virtualne kocke, vidimo, da je belo-zelen robni element na

spodnji strani sprednje ploskve. Vsakokrat bomo iskali ta element, njegove barve pa bodo

odvisne od tega, kateri barvi sta spredaj in spodaj. Na celotni kocki najdemo dvanajst

robnih elementov, naš iskani robni element pa je lahko na katerem koli od teh dvanajstih

mest. Najlažji način, da ga pripeljemo na njegovo mesto, je, da ga najprej poiščemo in

pripeljemo "nad" njegovo mesto. Iščemo belo-zelen robni element, ki je lahko na

dvanajstih mestih. Ko ga najdemo, ga pripeljemo "nad" njegovo mesto, to je na mesto

rumeno-zelenega robnega elementa. S tem, ko smo pripeljali naš iskani rob "nad" njegovo

mesto, smo že opravili nekaj premikov kocke. Te premike si v točnem zaporedju

shranimo, saj so že del rešitve. Iskani element imamo sedaj "nad" njegovim mestom, sta

pa dve možnosti, kako je orientiran. Lahko je orientiran tako, da se barva sredinske

kockice sprednje ploskve (v našem primeru zelena) stika s to barvo na iskanem robnem

elementu, druga možnost pa je, da se sredinski element stika z barvo spodnje ploskve na

iskanem elementu. Element po eni od dveh možnosti prestavimo na njegovo mesto in

seveda shranimo zaporedje potrebnih premikov. Dobili smo en krak "križa", ki ga želimo

sestaviti. Preostale tri poiščemo enostavno tako, da celotno kocko zasučemo okoli Y osi v

pozitivni smeri in postopek ponovimo. Tako na mesto zelene ploskve pride oranžna

ploskev, bela pa ostane spodaj. Sedaj po enakem postopku kot za belo-zelen robni

element poiščemo rešitev še za belo-oranžen element ter za preostala dva robna

Page 24: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

15

elementa. Ne smemo pozabiti shraniti zaporedja opravljenih premikov. Opazimo, da se

preostali del kocke pri tem tudi prestavlja, vendar nas to trenutno ne zanima. Na koncu

zasučemo kocko, da jo vrnemo v začetno stanje (zelena stran sprednja). Rešeni križ na

spodnji ploskvi prikazuje slika 4.5.

Slika 4.5: Rešen "križ" na spodnji ploskvi

Uspelo nam je sestaviti prvi del prve plasti, nato sledi drugi korak, ki dokonča prvo plast

kocke. Pri tem koraku moramo poiskati štiri vogalne elemente, ki sestavijo spodnjo

ploskev. Celotna kocka ima osem vogalnih elementov, zato se rahlo olajša iskanje

pravega elementa. Pripadajoče kote prve plasti prav tako rešujemo intuitivno, vendar

imamo podan nasvet: najlažje je kote postaviti na njihovo mesto, če jih najprej damo "nad"

njihovo mesto ter jih nato pravilno orientirane vstavimo. Za prestavljanje kotov "nad"

njihovo mesto je potreben intuitiven postopek, za vstavljanje pa imamo tri možnosti, ker

ima vogal tri možne orientacije, torej tri algoritme. Iskali bomo spodnji desni vogalni

element sprednje stranice, torej belo-zeleno-oranžen vogalni element. Vogalni element

sestavljajo tri barve, zato so sedaj tudi tri možnosti, kako je obrnjen. Ločimo jih glede na

Page 25: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

16

stran, kamor kaže barva spodnje stranice, vogal z barvo gor, vogal z barvo desno ter

vogal z barvo naprej, kakor je prikazano na sliki 4.6.

Slika 4.6: Vogali prve plasti [8]

Za vsako od teh možnosti imamo rešitev, kako vogalni element spravimo na njegovo

mesto s čim manj premiki. Prvo možnost (na sliki levo) nam reši RURp, drugo možnost

URUpRp ter tretjo (RU2RpUp)(RuRp). Ta zaporedja imenujemo algoritmi reševanja

Rubikove kocke, saj nam za določeno situacijo povedo rešitev. Ko imamo prvi vogalni

element na svojem mestu in pravilno orientiran, enako kot pri križu obrnemo kocko v

smeri Y osi ter ponovimo postopek, dokler nimamo vseh štirih vogalnih elementov na

svojem mestu. S tem dobimo rešeno celotno prvo plast, prikazano na sliki 4.7, in prvi del

rešitve kocke [8].

Page 26: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

17

Slika 4.7: Rešena prva plast

4.3 Reševanje druge plasti

Druga plast ima najmanj elementov za sestavljanje, saj jo sestavljajo sredinske kockice,

za katere že vemo, da so vedno v enakem razmerju, in štirje robni elementi, ki sodijo med

njih. Pri iskanju elementov druge plasti nam ni več potrebno pregledovati prve plasti, saj

so tam že vsi elementi pravilno razporejeni. Ostane nam torej osem mest, na katera se

razporedijo štirje iskani elementi, štirje na drugi plasti in štirje na tretji plasti. Ponovno je

najlažje, da imamo elemente na tretji plasti, saj jih lahko nemoteno prestavljamo po kocki.

Elemente na njihovo mesto postavimo v dveh korakih: najprej jih poiščemo in prestavimo

na določeno mesto, nato pa jih z algoritmom vstavimo na njihovo končno mesto. Za

razliko od prve plasti sta sedaj dve mesti, na kateri si pripravimo iskani element, odvisno

od njegove orientacije. Glede na mesto, na katerem je pripravljen iskani element, se

razlikujeta tudi algoritma, ki element vstavita. Iščemo element, ki leži na desni strani

sprednje ploskve in je skupen z desno ploskvijo, v našem primeru zeleno-oranžen

element. Ponovno ga postavimo "nad" njegovo mesto, vendar nekoliko drugače. Ne

moremo ga postaviti neposredno "nad" njegovo mesto, ker ni vogalni element, postavimo

Page 27: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

18

pa ga lahko "nad" enega od pripadajočih sredinskih kockic. Nad katero sredinsko kockico

ga postavimo, je odvisno, kako je element obrnjen. Potrebno ga je postaviti tako, da se

barva sredinske kockice ujema z barvo elementa, ki se dotika sredinske kockice, drugače

ga prestavimo nad drugo sredinsko kockico, kot prikazuje slika 4.8.

Slika 4.8: Druga plast [8]

Slika 4.8 prikazuje primer, ko imamo rdečo kot sprednjo stran, iščemo pa rdeče-zelen

robni element. V prvem primeru robni element vstavimo na njegovo mesto z algoritmom

RpUpRpUpRpURUR, v drugem primeru pa FUFUFUpFpUpFp. V primeru, da je iskani

robni element vstavljen na mesto nekega drugega elementa, torej ni na tretji plasti, pa ga

na tretjo plast dobimo tako, da postavimo eno izmed stranic, na katerih leži, kot sprednjo,

drugo stranico pa kot desno ter naredimo prvi algoritem RpUpRpUpRpURUR. Nato se

vrnemo tja, kjer smo ostali, ter ponovno poiščemo robni element in ga po že znanem

postopku vstavimo na njegovo mesto. S tem dobimo rešeno drugo plast, prikazano na

sliki 4.9, kar zaključi reševanje kocke po intuitivni metodi [8].

Page 28: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

19

Slika 4.9: Rešena druga plast

Page 29: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

20

5 FRIDRICHEVA METODA ZA REŠEVANJE RUBIKOVE KOCKE

Reševanje kocke se približuje koncu, ostala je le še zadnja plast, ki je za reševanje

najtežja. Večina kocke je sedaj že rešena, zato je potrebno zelo pazljivo nadaljevati, saj

vsak napačen premik uniči vse dosedanje delo. Intuitivno je skoraj nemogoče rešiti zadnjo

plast, zato nam pomagajo Fridricheva metoda in algoritmi, ki rešijo vsako možno situacijo.

V tretji plasti se pokaže pravi pomen Fridricheve metode, ki se deli v dve skupini:

algoritmi, ki orientirajo elemente zadnje plasti ("OLL") ter algoritmi, ki prestavijo elemente

zadnje plasti ("PLL"). Vseh algoritmov skupaj je 78; 57 "OLL" in 21 "PLL". Vsakega od

korakov zadnje plasti lahko razdelimo na dva dela in s tem zmanjšamo število možnosti,

vendar povečamo število premikov v končni rešitvi. Prvi korak, orientacijo elementov,

razdelimo na orientacijo robnih elementov, s čimer dobimo "križ", ter orientacijo vogalnih

elementov. Drugi korak pa razdelimo na prva dva algoritma ter na zadnje štiri algoritme.

Skupaj imamo torej štiri korake za rešitev zadnje plasti [1],[8].

Prvi korak je ustvarjanje "križa", pri čemer imamo štiri možnosti, prikazane na sliki 5.1,

izmed katerih je ena že rešen "križ" [1],[8].

Slika 5.1: Zadnja plast - prvi korak [8]

Page 30: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

21

Program poišče ustrezen algoritem tako, da najprej preveri, če imamo katero od možnih

situacij, sicer pa zgornjo ploskev zasuče (premik U) ter ponovno išče možne rešitve.

Postopek ponavlja tako dolgo, da najde situacijo, ki jo ima opisano z algoritmom, ki ga

nato izvede. Rešitev prvega koraka prikazuje slika 5.2.

Slika 5.2: Rešen prvi korak zadnje plasti

V naslednjem koraku orientira še kote, za kar ima osem možnosti, prikazanih na sliki 5.3

[1],[8].

Page 31: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

22

Slika 5.3: Zadnja plast - drugi korak [8]

Program ponovno zgornjo ploskev obrača, dokler ne najde situacije, za katero ima

napisan algoritem. Če takšne situacije ne najde, pomeni, da je ta korak že rešen in lahko

nadaljuje z naslednjim korakom. Na sliki 5.4 vidimo celotno zgornjo plast pravilno

orientirano (zgornja ploskev je v celoti rumena).

Page 32: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

23

Slika 5.4: Rešen drugi korak zadnje plasti

Sedaj imamo vse elemente zadnje plasti pravilno orientirane, vendar še niso na svojih

mestih, zato moramo izvesti še tretji in četrti korak. Pri tretjem koraku moramo na tretji

plasti na stranskih ploskvah poiskati dva kota, ki imata na eni ploskvi enaki barvi (slika 5.5

puščici prikazujeta zelena dela kotov na isti strani). Ko ju najdemo, obrnemo kocko tako,

da je ta ploskev zadaj (na sliki 5.5 je ta ploskev zgoraj) ter izvedemo prvi algoritem. Če ne

najdemo takega para kotov, potem izvedemo drugi algoritem, kot je na sliki 5.5 desno

[1],[8].

Slika 5.5: Zadnja plast - tretji korak [8]

Page 33: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

24

V našem primeru lahko na sliki 5.4 takšna para kotov opazimo na oražni stranici, kjer sta

dela levega in desnega vogala oba enake barve – rdeče. Zgornja plast se temu primerno

obrne, da dobimo par na zadnji ploskvi ter izvedemo prvi algoritem. Dobimo rešen tretji

korak zadnje plasti, ki ga prikazuje slika 5.6.

Slika 5.6: Rešen tretji korak zadnje plasti

V zadnjem koraku ostanejo samo še robni elementi, ki jih je potrebno med seboj

zamenjati, tako da zasedejo svoja prava mesta. Možnosti je pet, ena od teh je rešena

kocka, torej za zadnji, četrti korak, ostanejo štirje možni algoritmi, prikazani na sliki 5.7

[1],[8].

Page 34: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

25

Slika 5.7: Zadnja plast - četrti korak [8]

Program reši zadnji korak podobno kot prejšnje. Zgornjo plast vrti, dokler ne najde ene od

možnih situacij ter jo izvede. Na koncu samo še preveri, če je zgornja plast pravilno

orientirana glede na spodnje plasti in kocka je rešena, kot prikazuje slika 5.8.

Slika 5.8: Rešen četrti korak zadnje plasti – rešena kocka

Page 35: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

26

Program sproti shranjuje premike ter algoritme, ki jih je uporabljal ter jih na koncu združi

skupaj v en velik algoritem, ki predstavlja celotno rešitev naše kocke. Rešitev našega

primera kocke prikazuje slika 5.9.

Slika 5.9: Primer rešitvenega algoritma kocke

Page 36: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

27

6 ROBOTSKO PRIJEMALO

Iskanje rešitve je le prvi del našega projekta, to rešitev je potrebno še izvesti na realni

kocki. V ta namen smo izdelali robota, ki kocko drži in vrti podobno kot človek. Robot ima

štiri dvoosna prijemala, kar omogoča direkten dostop do štirih od šestih strani kocke.

Preostali dve strani pa sta dostopni z zasukom kocke. Tako je robot zelo učinkovit in je

zelo malo nepotrebnih vmesnih rotacij kocke pri sami implementaciji rešitve.

6.1 Robotsko prijemalo

Rubikova kocka je namenjena reševanju ljudem, torej je smiselno, da robot čim bolj

upodobi človeški prijem. Vendar je človeško roko zelo težko posnemati z robotskim

prijemalom, zadosti je, da posnema bistvene lastnosti, ki so potrebne za vrtenje kocke. Za

zasuk posamezne ploskve kocke je zadosti, da jo primemo na dveh mestih ter zasučemo

okoli njene osi vrtenja. Naše prijemalo se torej mora vrteti okoli osi, ki leži na isti premici,

kot leži os ploskve kocke, ki poteka od sredine ploskve skozi središče kocke. Posamezne

ploskve kocke so med seboj povezane, imajo skupne elemente (robni in kotni elementi),

torej mora prijemalo biti sposobno kocko tudi spustiti in se umakniti, da se lahko kocka

prosto vrti oziroma, da ne ovira vrtenja preostalih ploskev. Prijemalo mora torej biti

narejeno kot klešče, ki se lahko odpirajo in zapirajo ter vrtijo okoli simetrale med

kleščama, kakor je prikazano na sliki 6.1.

Slika 6.1: Shema robotskega prijemala

Page 37: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

28

Prijemalo moramo opremiti z motorji, da ga lahko premikamo. Kot nalašč za to so

modelarski servomotorji, potrebujemo pa dva za vodenje prijemala, enega za odpiranje in

zapiranje ter enega za rotacijo celotnega prijemala. Uporabili smo Hitec HS-81 micro za

odpiranje in zapiranje ter Hitec HS-225BB za rotacijo. HS-81 ima 90° kot delovanja, kar je

zadostno za odpiranje in zapiranje, HS-225 BB pa omogoča 180° delovanja, kar

zadostuje vrtenju stranic v obe smeri (U in Up). Pri odpiranju in zapiranju prijemala

moramo zagotoviti sočasno delovanje obeh ročic, kar dosežemo z zobniško povezavo

med ročicama. HS-225 BB je s spodnjim delom pritrjen neposredno na ohišje in omogoča

stabilno delovanje prijemala. Na koncu prijemal je dodana penasta obloga, ki omogoča

boljši oprijem kocke ter dopušča manjše napake pri odprtosti prijemala. Na sliki 6.2 je

prikazano prijemalo, kjer so vidni vsi bistveni elementi.

Slika 6.2: Robotsko prijemalo

Prijemalo je zgrajeno iz pleksi stekla, ker je lahko in močno, obdelava pa ni zahtevna,

hkrati pa zaradi svoje prozornosti omogoča pregled nad komponentami tudi med

delovanjem.

Page 38: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

29

Za obvladovanje kocke potrebujemo najmanj dve prijemali – eno za držanje kocke, drugo

za vrtenje ploskev. Takšen pristop bi bil najbolj podoben biomehaniki človeka, vendar

prijemala niso tako učinkovita kot človeška roka. Manipulacijo kocke lahko izboljšamo z

uporabo dodatnih prijemal in izkaže se, da so najbolj učinkovita štiri prijemala, saj lahko

zagotovimo, da se med seboj ne ovirajo, pri tem pa imamo neposreden dostop do štirih

ploskev kocke.

Za pritrditev prijemal potrebujemo ohišje, ki je prav tako zgrajeno iz pleksi stekla.

Prozorno ohišje omogoča spremljanje delovanja robota med samim reševanjem kocke,

kar je vidno na sliki 6.3. Položaj prijemal mora biti natančen, da je kocka stabilno vpeta

med njih, kar zagotovimo z robustno konstrukcijo ohišja. Vrh robota je pokrov, ki omogoča

dostop do kocke ter prijemal, zaradi varnosti pa je pokrov zavarovan s stikalom, da med

delovanjem ne posegamo v robota. Na pokrovu se nahaja kamera, ki je povezana z

računalnikom ter programom za slikanje kocke.

Page 39: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

30

Slika 6.3: Robot

6.2 Mikrokrmilnik

Program in robota je potrebno povezati, če želimo, da robot izvede rešitev, ki jo program

izračuna. Za to je uporabljen mikrokrmilnik Arduino UNO [11], prikazan na sliki 6.4,

popularna odprtokodna prototipna plošča. Arduino je odličen mikrokrmilnik za vodenje

servomotorjev, saj je zanj napisana knjižnica za vodenje servomotorjev, ki omogoča

simultano vodenje do 12 servomotorjev [9].

Page 40: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

31

Slika 6.4: Mikrokrmilnik Arduino UNO [9]

Mikrokrmilnik je napajan preko USB kabla, priključenega na računalnik, kar ne predstavlja

zadostne napajalne moči za delovanje osmih servomotorjev, zato je potrebno dodatno

zunanje napajanje preko napajalnika. Napajalnik mora zagotavljati 3 ampere izhodnega

toka, kolikor znaša poraba servomotorjev pri 5 voltih napetosti. V ta namen je zraven

krmilnika nameščen napajalnik MW RS-25-5, ki ima priključno napetost 230 voltov.

Negativni sponki mikrokrmilnika in napajalnika sta kratko sklenjeni, da ne pride do

nezaželenih razlik med napetostmi. Med napajalni sponki mikrokrmilnika je dodan

kondenzator za večjo stabilnost napetosti in delovanja mikrokrmilnika. Napajanje

servomotorjev je neposredno iz napajalnika, vodenje pa je priključeno na izhode

mikrokrmilnika.

Povezava mikrokrmilnika z računalnikom poteka preko USB kabla, preko katerega je

mikrokrmilnik tudi napajan. Da pa lahko mikrokrmilnik komunicira s programom v Matlabu,

je na mikrokrmilniku nameščen strežniški program [10], ki omogoča Matlabu neposreden

dostop do vhodov in izhodov na mikrokrmilniku ter njegovih knjižnic. Na računalniku mora

imeti nameščene gonilnike za mikrokrmilnik ter knjižnico za Matlab, ki vsebuje ukaze za

komunikacijo z mikrokrmilnikom [9].

Page 41: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

32

7 SKLEP

Program obsega zelo široko kodo, kar je pomenilo precej testiranj za odpravo vseh napak.

Povprečna dolžina rešitve za naključno premešano kocko je znašala približno 140

premikov. Čas, potreben za računanje rešitve, je precej odvisen od strojne opreme,

vendar naj ne bi znašal več kot pet sekund. Program dopušča veliko možnosti za

izboljšavo, saj bi z izpopolnjeno intuitivno metodo ter Fridrichevo metodo z večjim

naborom algoritmov lahko število potrebnih premikov za rešitev tudi prepolovili.

Pri strojnem vidu je prihajalo do precejšnjih težav pri prepoznavi barv zaradi nekonstantne

osvetlitve. Za boljše delovanje bi bilo potrebno zagotoviti kvalitetnejšo kamero ali pa

neodvisen vir svetlobe na samem robotu, saj je dnevna svetloba preveč nepredvidljiva.

Poleg tega je potrebno paziti tudi na postavitev svetlobnega vira, saj zaradi odbojne

površine kocke pogosto pride do bleščanja in s tem popačenja slike.

Robot se je pokazal za dovolj hitrega, saj je bil dosežen cilj povprečnega reševanja pod

tremi minutami. Čas reševanja bi lahko izboljšali z nadgradnjo programa, s čimer bi

zmanjšali število potrebnih premikov, ter s povečanjem odzivnosti in hitrosti izvajanja

premikov samega robota. Prvi korak bi bila zamenjava servomotorjev za hitrejše in

močnejše, vendar ne bi veliko pridobili, saj razlike v hitrostih servomotorjev niso tako

drastične. Najboljša možnost za hitrejše izvajanje premikov je dodajanje zobniškega

prenosa med servomotor in prijemalo, s čimer bi vplivali na natančnost zasuka, zato bi

bila potrebna še dodatna testiranja razmerji. Robustnost in stabilno delovanje robota bi

lahko povečali s strojno izdelavo elementov, saj jih je večina ročne izdelave.

S predlaganim diplomskim delom sem v popolnosti dosegel cilj diplome.

Page 42: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

33

VIRI IN LITERATURA

[1] My speed cubing page. Dostopno na:

http://www.ws.binghamton.edu/fridrich/cube.html [september 2013].

[2] Rubikscube.info. Dostopno na: http://www.rubikscube.info/ [september 2013]

[3] Bandelow, C. Inside Rubik's cube and beyond. Birghauser Boston, 1982.

Dostopno na: http://www.ebook3000.com/Inside-Rubik-s-Cube-and-

Beyond_66314.html [september 2013].

[4] Cubestormer II – The power of Two. Dostopno na: http://blogs.arm.com/smart-

connected-devices/794-cubestormer-ii-the-power-of-two/ [avgust 2013.]

[5] Fastest robot to solve a Rubik's cube. Dostopno na:

http://www.guinnessworldrecords.com/world-records/6000/fastest-robot-to-solve-a-

rubiks-cube [avgust 2013.]

[6] Petrišič, J. Uvod v MATLAB: za inženirje. Ljubljana: Fakulteta za strojništvo, 2011.

[7] Ponce, F. Computer Vision: A Modern Approach, 2nd Edition. Pearson, 2012.

[8] Badmephisto's cubing page. Dostopno na: http://badmephisto.com [september

2013].

[9] Arduino playground. Dostopno na:

http://playground.arduino.cc/ComponentLib/servo [avgust 2013].

[10] Matlab central. Dostopno na:

http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-support-

package-for-arduino-aka-arduinoio-package [avgust 2013].

[11] Monk, S. Programming Arduino: getting started with sketches. New York:

McGraw-Hill, 2012.

Page 43: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

PRILOGE

Page 44: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

Priloga A

Načrt robota

Page 45: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

Načrt robota

Page 46: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

I Z J A V A O A V T O R S T V U

Spodaj podpisani

Rok Rabuza

z vpisno številko

E1030554

sem avtor diplomskega dela z naslovom:

Reševanje Rubikove kocke s strojnim

vidom in robotskim prijemalom

(naslov diplomskega dela)

S svojim podpisom zagotavljam, da:

sem diplomsko delo izdelal samostojno pod mentorstvom (naziv, ime in priimek)

izr. prof. Dušan Gleich, univ. dipl. inž. el.

in somentorstvom (naziv, ime in priimek)

so elektronska oblika diplomskega dela, naslov (slov., angl.), povzetek (slov., angl.) ter ključne besede (slov., angl.) identični s tiskano obliko diplomskega dela.

soglašam z javno objavo elektronske oblike diplomskega dela v DKUM.

V Mariboru, dne

Podpis avtorja/-ice:

Page 47: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

IZJAVA O USTREZNOSTI DIPLOMSKEGA DELA Spodaj podpisani Dušan Gleich izjavljam, da je

(ime in priimek mentorja/-ice)

študent Rok Rabuza izdelal diplomsko

(ime in priimek študenta/-ke) delo z naslovom:

Reševanje Rubikove kocke s strojnim vidom in robotskim prijemalom

(naslov diplomskega dela)

v skladu z odobreno temo diplomskega dela, Navodili za pisanje diplomskih del na dodiplomskih študijskih programih UM FERI in mojimi navodili. Kraj in datum:

Podpis mentorja:

Page 48: REŠEVANJE RUBIKOVE KOCKE S STROJNIM VIDOM IN … · tvoriti kocko, ki ima vse ploskve enake barve. Rubikovo kocko je izumil Erno Rubik, madžarski izumitelj, kipar in profesor arhitekture,

IZJAVA O ISTOVETNOSTI TISKANE IN ELEKTRONSKE VERZIJE ZAKLJUČNEGA DELA IN OBJAVI OSEBNIH PODATKOV DIPLOMANTOV

Ime in priimek avtorja:

Rok Rabuza

Vpisna številka:

E1030554

Študijski program:

Elektritehnika UNI

Naslov zaključnega dela:

Reševanje Rubikove kocke s strojnim vidom in robotskim

prijemalom

Mentor:

izr. prof. Dušan Gleich, univ. dipl. inž. el.

Somentor:

Podpisani Rok Rabuza izjavljam, da sem za potrebe arhiviranja oddal elektronsko verzijo zaključnega dela v Digitalno knjižnico Univerze v Mariboru. Zaključno delo sem izdelal sam ob pomoči mentorja. V skladu s 1. odstavkom 21. člena Zakona o avtorskih in sorodnih pravicah dovoljujem, da se zgoraj navedeno zaključno delo objavi na portalu Digitalne knjižnice Univerze v Mariboru. Tiskana verzija zaključnega dela je istovetna z elektronsko verzijo elektronski verziji, ki sem jo oddal za objavo v Digitalno knjižnico Univerze v Mariboru. Podpisani izjavljam, da dovoljujem objavo osebnih podatkov, vezanih na zaključek študija (ime, priimek, leto in kraj rojstva, datum zaključka študija, naslov zaključnega dela), na spletnih straneh in v publikacijah UM. Datum in kraj: Podpis avtorja-ice: