Per gli appassionati dei mattoncini LEGO spesso la ricerca di singoli pezzi, anche molto piccoli, può diventare frustrante. Ecco allora che si rivela utilissimo lo smistatore Lego Raspberry Pi creato da Daniel West, ingegnere software e appassionato di intelligenze artificiali, ha creato la LEGO Sorting Machine definitiva.
Si tratta di un dispositivo creato da Daniel West e mostrato sul suo canale YouTube, fatto di Lego. Il device ha la capacità di riconoscere qualsiasi mattoncino e quindi in questo modo è possibile riordinarli.
La macchina è realizzata con 10.000 singoli mattoncini LEGO. Per alimentare l’operazione di smistamento è stato utilizzato un Raspberry Pi 3 B+.
Il sistema non utilizza solo mattoni e Raspberry: ci sono alcuni componenti microelettronici, inclusi sei motori LEGO e nove servomotori. Questi motori azionano una serie di cinghie che muovono i mattoni uno alla volta quando vengono smistati in uno dei 18 contenitori, al ritmo di un mattone ogni due secondi..
I mattoncini Lego vengono scansionati utilizzando una fotocamera Pi Camera V2. Le immagini vengono inviate in modalità wireless ad un PC vicino, che utilizza una rete neurale AI per riconoscere i mattoni e prevedere quelli di nuova introduzione.
Il monte di pezzi viene sgranato attraverso diversi passaggi, servendosi soprattutto di tre stadi di tramogge vibranti che fanno in modo di far arrivare sotto l’occhio della fotocamera Raspberry un pezzo alla volta.
L’immagine della fotocamera viene elaborata da un’intelligenza artificiale basata su una rete neurale convoluzionale (CNN).
Una volta identificato il pezzo, le informazioni vengono ritrasmesse al Raspberry Pi, che quindi assegna il mattone da spostare nel cassetto appropriato. Guarda il video sottostante per capire meglio il meccanismo.
Daniel ha usato la domain randomization, che crea una varietà simulata di ambienti casuali che accrescono i dati iniziali forniti per foraggiare le connessioni della rete.
In questo modo, la rete neurale è stata nutrita a dovere e l’intelligenza artificiale a essa associata è riuscita a riconoscere correttamente i pezzi che le venivano mostrati attraverso foto reali. Per aumentare il tasso di precisione, Daniel ha poi inserito tra i dati utili alle connessioni neurali anche delle foto reali con il numero identificativo. A questo punto, queste foto avevano un’utilità accresciuta perché non erano più il punto di partenza dell’apprendimento, ma un “regolazione di fino”.
Che cosa è una rete neurale convoluzionale (CNN)?
La rete neurale convoluzionale (CNN o ConvNet) è uno degli algoritmi più comuni per il deep learning, un tipo di machine learning in cui un modello computerizzato impara a svolgere attività di classificazione direttamente da immagini, video, testo o suoni.
Le CNN sono particolarmente utili per trovare pattern nelle immagini per riconoscere oggetti, volti e scene. Apprendono direttamente dai dati delle immagini, utilizzando i pattern per classificare le immagini ed eliminando la necessità dell’estrazione manuale delle feature.
Le applicazioni che richiedono il riconoscimento di oggetti e la visione artificiale, come ad esempio i veicoli a guida autonoma e le applicazioni di riconoscimento facciale, dipendono fortemente dalle CNN. A seconda dell’applicazione, è possibile creare una CNN da zero o utilizzare un modello pre-addestrato con il proprio set di dati.
Perché le CNN sono così utili?
L’utilizzo delle CNN per il deep learning è diventato sempre più comune grazie a tre fattori importanti:
- Le CNN eliminano la necessità dell’estrazione manuale delle feature, poiché queste vengono apprese direttamente dalla CNN.
- Le CNN producono risultati di riconoscimento all’avanguardia.
- Le CNN possono essere ri-addestrate per nuove attività di riconoscimento, consentendo di sfruttare reti preesistenti.
Ritornando al dispositivo…
La macchina smistatrice ha richiesto a Daniel due anni di lavoro. Non è la prima al mondo. Ne sono state costruite altre due: una nel 2011 e l’altra nel 2017, ma nessuna poteva riconoscere tutti i pezzi Lego.
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano