Ciao a tutti, torno con un articolo su Treddi.com com dopo una vita (oltre quindici anni dal primo)

Questo articolo segue gli altri due pubblicati da Gabriele Simonetta e Carlos Faustino sul food scan (prima e seconda parte).

Questo making of è un po' insolito perché mostra come realizzarsi in casa una macchina che aiuta nello scatto in serie di tante immagini per fotogrammetria. Non è quindi un tutorial di immagini ma di elettronica e DIY.

Come avete visto negli articoli precedenti, le scansioni 3d sono ormai alla portata di tutti grazie alla fotogrammetria, che in poche parole permette di acquisire un dato tridimensionale dalla comparazione di tante immagini dello stesso oggetto da posizione diverse. Quello che otteniamo è prima una 'nuvola di punti' (tanti punti non connessi) e poi un mesh (serie di triangoli legati fra loro), oltre che una texture già mappata. Una vera pacchia!

La parte di acquisizione fotografica è molto importante perché è necessario avere tanti scatti, poche ombre e riflessioni.

Questa macchina quindi fa questa operazione: gira l'oggetto tramite piatto girevole (di un numero di gradi che puoi impostare via software), invia un segnale a infrarosso per far scattare la foto appena l'oggetto si è fermato. Ripete l'operazione fino alla conclusione del giro. Tutto qui, ma le foto vengono scattate in modo accurato e automatico.

L'idea è quella di riprodurre più o meno questo prodotto, ma di utilizzare una macchina professionale invece di un telefonino.

L'idea di partenza è quella di realizzare un economico sistema di 'giratutto' automatico, detto 'LazySusan', partendo da uno sgabello Ikea, tipo questo.

 Siccome avevo proprio uno sgabello rotto a casa e stavo seguendo il workshop di tre giorni organizzato da Im-Arch (http://www.im-arch.com/), ho iniziato con quello che avevo in casa: lo sgabello, viti e altra ferramenta, uno spinner di mio figlio, e naturalmente un Arduino.


 Questo è nello specifico il materiale che ho usato:

  • Arduino UNO standard;
  • TB6560stepper driver (sono driver per motori passo passo, molto economici e funzionano bene);
  • motore passo passo a quattro fili
  • macchina fotografica Canon EOS
  • led a infrarosso per comandare la camera

b1a7b533c842a9762dc315664213a55e.jpg

I) parte meccanica

Per prima cosa quindi ho preso un pezzo di legno e lo ho forato in modo da poter alloggiare lo spinner (giochino con dei cuscinetti a sfera che limitano la frizione nelle rotazioni). 

190b8076f141a72d97c3b3fc7afa8cd5.jpg

Su uno dei lati della tavoletta ho preparato l'alloggio per il motore passo passo, che con una cinghia fa girare la ruota. Questa è solo una delle mille possibili soluzioni. Vorrei infatti prepararne una seconda tagliata al laser, di legno con sole ruote dentate.

In questo caso come accennato ho usato uno spinner.

Se lo aprite trovate vari cuscinetti a sfera che possono essere utili per limitare l'attrito.

3243eed7405a49c8a04c2c700123ae89.jpg


II) parte elettronica

Il cuore del sistema è un semplice Arduino Uno. Per chi non la conosce è una scheda di prototipazione elettronica che può contare su una comunità enorme di appassionati, completamente Open Source. Se non ci avete ancora fatto un giro, vi consiglio davvero l'esperienza. Costa molto poco e è un prodotto Made in Italy (Massimo Banzi). La trovate però per tutte le tasche da ogni parte del mondo.

La scheda (nella foto in blu) viene programmata come vedrete nella parte software, da computer via USB, e poi ripete il ciclo all'infinito. Accanto alla scheda c'è un driver per motori passo passo (verde) e in alto a destra il motore vero e proprio.

f19f60cdd4aa272de6fea069ef497306.jpg

Si riesce a comprare tutto per poche decine di euro.

Oltre a questo, ho aggiunto un piccolo led a infrarossi, come quelli che si trovano nei telecomandi. Manda una serie di impulsi luminosi che noi non vediamo ma che possono far partire delle azioni. La mia Canon 600D per esempio può ricevere l'infrarosso del telecomando per scattare la foto, mettere a fuoco e molto altro. 

Con questo semplice led si può sostituire il telecomando della macchina fotografica e azionarlo tramite Arduino alla fine di ogni porzione di giro.

Questo è il led:

7a18d8b95332c9c7952cbcf515b8bc1f.jpg

Unica accortezza: che sia perfettamente visibile dalla macchina fotografica.

Purtroppo ce ne sono di vari tipi. Vi dico quindi quello che ho usato perché sicuramente è compatibile: Grove IR sender. E' un po' caro (5 euro circa) ma garantisce una portata maggiore rispetto a quelli da un euro e funziona sicuramente.



III) parte software

Per la parte software si entra nel coding puro, con Java e Arduino.

La sostanza è molto semplice: dichiarare alcune variabili, importare librerie e far partire un loop che dice (in pseudocode): 

  • attento al bottone! (input)
  • se viene premuto il bottone fai fare un tot di passi al motore (output), 
  • manda la sequenza inrarossi, 
  • torna far fare giri al motore e a mandare sequenze IR fino a quando non hai terminato il giro. 
  • torna a stare attento al bottone
  • riposati pure per qualche millesimo di secondo.

Ecco una schermata del codice, che allego in ogni caso.

8c3ae855c86b49d301992efc234930a6.jpg

Questo è il codice come riferimento, da scaricare e modificare a piacimento.



E infine un video che riassume un po' tutto:


So bene che per molti quello che ho scritto è arabo puro, e lo era per me anche qualche anno fa. Poi mi sono appassionato e grazie alle mille risorse on line e all'aiuto di chi ne sapeva più di me mi sono davvero divertito e ho imparato molte cose. Queste informazioni sono davvero utili per costruire macchine che aiutano a scansionare texture, oggetti, eccetera. Non è un caso infatti che al nostro master (www.masterad.it) la parte di modellazione 3d è abbinata anche al coding e alla prototipazione elettronica.

 Non esitate quindi a farmi qualsiasi domanda, sperando di potervi essere di aiuto.

Un saluto,

Fabio D'Agnano