Matematica  |  Informatica

 

Till Neubecker, 2002 | Niederhasli, ZH

 

Questo progetto vuole mostrare la capacità e la potenzialità della robotica nella risoluzione del cubo di Rubik, un compito che la mente umana solo vagamente riesce a visualizzare e comprendere. Il cubo di Rubik è un rompicapo combinatorio complesso che comporta una difficile visualizzazione e risoluzione. Il compito della macchina è di risolverlo in piena autonomia minimizzando il tempo di risoluzione per arrivare alla permutazione desiderata. Discuto le essenziali proprietà e la matematica del cubo di Rubik e la costruzione del robot toccando aspetti sia meccanici che informatici.

Argomento

Al centro di questo progetto c’è la costruzione di un robot, sviluppato con parti e materiali accessibili a persone comuni, capace di risolvere il cubo di Rubik. In primo luogo, descrivo le proprietà del cubo di Rubik con i vari possibili modi di risoluzione, la complessità dietro alla risoluzione meccanica del cubo e l’arte di trovare la soluzione perfetta tra il vasto spazio dei possibili stati del cubo. La parte pratica è divisa in due. La prima comprende la concezione e l’implementazione di un algoritmo di risoluzione capace di ridurre ogni permutazione in uno schema di mosse e ritornare una sequenza di movimenti che portano alla soluzione. La seconda riguarda la costruzione del robot, capace di interagire con il cubo di Rubik e di eseguire le mosse dettate dall’algoritmo di risoluzione. L’aspettativa era una risoluzione corretta del cubo Rubik entro 30 secondi, indipendentemente dalla configurazione iniziale.

Metodologia

La programmazione, la mente del robot, è la parte centrale del progetto. Inizialmente, ho idealizzato il codice su una piattaforma Java per facilitarne la costruzione e la visualizzazione, utilizzando classi e creando una interfaccia animata per l’utente. Passando poi a Python ho migliorato la scrittura e l’efficienza del codice, il che ha permesso di implementare varie nuove funzioni come, ad esempio, il riconoscimento della permutazione tramite la video camera. Il centro del programma si basa su una struttura verosimile a un vero cubo di Rubik suddiviso in 27 cubetti più piccoli ognuno con una propria posizione e un orientamento. Utilizzo un metodo di risoluzione per strati chiamato CFOP che con le caratteristiche dei cubetti permette di identificare le sequenze di mosse necessari per la risoluzione. Per massimizzare l’efficienza e il tempo di risoluzione, si effettua una ricerca della cosiddetta strada più corta, ossia della sequenza di mosse più corta. La parte strutturale del progetto tocca vari aspetti della progettazione ingegneristica. Anche qui ho ricercato e testato design e componenti in più iterazioni. I sei motori che disposti alla rotazione delle facce del cubo di Rubik sono controllate da sei driver in combinazione con un Arduino Mega connesso al computer permettendo il trasferimento di dati.

Risultati

Il robot è stato costruito con successo raggiungendo gli obiettivi stabiliti controllando ogni risoluzione nella sua riuscita. Il tempo medio di risoluzione complessivo per una qualsiasi risoluzione è di circa 13 secondi mentre la risoluzione più veloce è di 9.163 secondi. L’efficienza dell’algoritmo si traduce anche attraverso la conta dei movimenti che si aggira intorno alle 45 – 50 mosse per risoluzione.

Discussione

L’automatizzazione un compito già di per sé difficile può diventare di un grande ordine ancora più complicato. È proprio ciò che rende la complessità della robotica così affascinante. Ci dà strumenti per andare oltre all’immaginabile. Con i risultati ottenuti, anche se le potenzialità si possono sempre migliorare, questo progetto realizzato interamente in ambiente domestico lo tenta di dimostrare con successo.

Conclusioni

La riuscita di questo progetto mostra anche che la realizzazione dei Robot, con compiti anche impegnativi, è possibile anche artigianalmente e che non è solo un lavoro riservato a esperti. Indubbiamente, questo fattore influisce sugli obiettivi, tenendo in considerazione aspetti limitativi quali costi, tempo, capacità e disponibilità di materiali o componenti. Comportando però risultati più che accettabili. Per quanto riguarda la funzionalità del robot, con l’aggiunta della visione artificiale è stata creata un’indipendenza completa: il cubo può essere mischiato dall’utente per poi essere risolto dal robot. Questo rende il lavoro ancora più affascinate nella sua complessità.

 

 

Valutazione del lavoro espressa dall’esperto

Lanzetti

Till ha sviluppato, con mezzi artigianali, un robot che risolve il cubo di Rubik in poco più di dieci secondi. Il suo progetto coniuga ottimamente aspetti teorici, quali lo studio della matematica del cubo di Rubik e di algoritmi per risolverlo autonomamente, con aspetti pratici, quali la concezione e la costruzione di un robot capace di eseguire i movimenti desiderati. Il risultato è quindi un robot, realizzato sì “in casa” e in un lasso di tempo ristretto, ma capace di risolvere un problema complesso come il cubo di Rubik in tempi più che competitivi.

Menzione:

molto buono

Sonderpreis «London International Youth Science Forum (LIYSF)» gestiftet von der Metrohm Stiftung

 

 

 

Liceo cantonale di Lugano 1
Docente: Prof. Mattia Bergomi