

Quanto è difficile costruire uno scanner 3D?

Sono un appassionato di tintinnii. L'hardware mi piace, ma il software è sempre un problema, come dimostra il mio ultimo esperimento: Sto cercando di costruire uno scanner 3D.
Sfogliando Thingiverse, mi sono imbattuto in questa cosa. Il designer QLRO ha costruito uno scanner 3D aperto, basato su Arduino e Android. Anch'io voglio qualcosa di simile.
Come funziona lo scanner?
Lo scanner 3D consiste in una piattaforma stampata in 3D che viene azionata da un motore passo-passo. Posiziona l'oggetto che desideri sulla piattaforma e uno smartphone Android lo fotografa da diverse angolazioni mentre la piattaforma ruota. Una volta scattate le foto, le trasferisci dallo smartphone al computer per creare un'immagine tridimensionale con Meshroom, un software di ricostruzione 3D. Sembra semplice? Lo penso anch'io, soprattutto perché il designer QLRO sottolinea che il suo design è minimalista e funzionale.
Lontano da tutto ciò. Ho quasi esaurito i capelli e quelli che mi sono rimasti me li sto quasi strappando durante il progetto.
Ecco cosa serve
Prima di tutto, stampo la piattaforma. È composta da sei parti e comprende un meccanismo a ingranaggi. Grazie alla mia stampante 3D Creality CR-10S Pro, le parti vengono stampate in poco più di otto ore.

Inoltre, ho bisogno di un motore passo-passo che aziona la piattaforma tramite il meccanismo a ingranaggi e di un driver per motore passo-passo che consenta la comunicazione tra il motore e Arduino. Questo prodotto contiene entrambi in un unico prodotto.

Per far girare la piattaforma, ho bisogno di un Arduino. Ho ancora un Arduino Nano dal mio progetto musicale su floppy.
La costruzione della piattaforma e il collegamento del motore passo-passo con il driver del motore passo-passo e con Arduino avvengono rapidamente. Come ho detto, di solito non ho problemi con l'hardware. Finora tutto funziona senza problemi. Quindi possiamo continuare.

Ho uno smartphone Android, un computer e una rete che comprende lo smartphone e il computer a casa. È ora di installare il software.
Hardware sì, software no
In termini di software, devo installare Meshroom sul mio computer in modo che le foto scattate dallo smartphone possano essere assemblate in un'immagine tridimensionale.
È necessario anche l'IDE di Arduino. Ho bisogno del software per caricare uno script in Arduino per far girare il motore passo-passo.
Infine, mi serve anche Python per computer e smartphone.
Questo è il punto di partenza per me. Ho già lavorato con gli script Python in passato, ma ogni volta mi ci è voluta un'eternità per far funzionare i miei progetti.
Questo è il problema principale: affinché il computer e lo smartphone comunichino tra loro, devo eseguire uno script su entrambi. Sto già avendo problemi a trasferire lo script dal computer allo smartphone Android. In QPython, l'applicazione che mi permette di eseguire script Python sullo smartphone, mi viene mostrato uno script vuoto. In altre parole: se lo eseguo, non succede nulla.
Mi sto strappando i capelli per la prima volta. Ma non per l'ultima volta.
Per qualche motivo, QPython non riesce a leggere lo script trasferito. Cerco quindi di creare direttamente lo script in QPython. Purtroppo il copia incolla da Git Hub non funziona, perché nell'editor di QPython viene incollato tutto su una riga. Quindi copio prima in Google Docs e poi nell'editor: un'idea stupida, come scoprirò in seguito. Al momento penso solo: "Sì, ora è tutto corretto". Ha aggiunto alcune righe in più, ma sono state subito ripulite.
Ho lasciato che entrambi gli script venissero eseguiti a scopo di esperimento. Con lo script di Android, che si chiama Server.py, ricevo già un messaggio di errore alla riga con la porta COM che devo specificare.
Cosa ho sbagliato? Mi stanno cadendo di nuovo alcuni capelli.
Dopo un po' di tentativi ed errori e dopo aver chiesto al mio collega Jon Andri Hoppler, che a differenza mia conosce bene Python, il problema si risolve rapidamente. Jon può anche aiutarmi qualche riga più avanti, con il server. Ma poi arriva qualcosa che né io né lui comprendiamo:

In realtà qui dovrebbe funzionare tutto. Qual è il punto? Non devo nemmeno più strapparmi i capelli, cadono automaticamente. Se continua così, alla fine del progetto non avrò più capelli.
Mi scervello a lungo. Finché finalmente mi ricordo perché lavoro con Notepad++ per gli script sul computer: qui non c'è nulla di formattato. Forse ho copiato la formattazione sbagliata in Google Docs? Cancello gli spazi prima del codice ed eseguo nuovamente lo script. Sì, mi ritrovo con una riga in più.
Elimino gli spazi anche qui. Anche in questo caso, ottengo una riga in più. Ripeto l'operazione per il resto dello script. Lo eseguo di nuovo. Finalmente: lo smartphone è pronto per comunicare con il computer. Eseguo lo script Client.py e vedo quello che voglio vedere: la piattaforma ruota, QPython dice "Foto scattata" dopo ogni foto e l'avanzamento viene visualizzato anche sul computer.
Sì!!!
Tutto è bene quel che finisce bene?
Il mio smartphone scatta 180 foto. Secondo il designer QLRO, questo è necessario per ottimizzare la qualità del modello 3D. La prima cosa che metto sulla piattaforma è un ponte Brio, proprio quello che hai in giro come padre.
Poi collego il mio smartphone per scattare 180 foto.
Poi collego lo smartphone al PC per trasferire le immagini e creare un modello tridimensionale con Meshroom. Le immagini dovrebbero trovarsi nella cartella QPython.
Dovrebbero.
Dovrebbero esserci.
Non riesco a trovare nessuna immagine. WTF? Riprovo. Ancora nessuna immagine. Modifico la posizione di archiviazione nello script e avvio nuovamente il processo. Ancora nessuna immagine. Ero così felice che finalmente funzionasse e che avessi ancora dei capelli. Ora ce ne sono di nuovo un po' di meno, tra l'altro.
Dopo aver fatto qualche ricerca nei commenti sulla questione QLRO, mi sono reso conto che avevo dato i permessi a QPython sul mio smartphone, ma non alla fotocamera. L'ho fatto e ora funziona davvero. Finalmente ho 180 foto di un ponte Brio sul mio smartphone - l'ho sempre desiderato.
Ora devo "solo" convertire le singole immagini in un'immagine tridimensionale utilizzando Meshroom. Di nuovo un software. Lo temo. Tuttavia, provo almeno a importare le immagini. Merda, ricevo un messaggio di errore: "Non è un file PNG" per tutte le 180 immagini. Ora ne ho decisamente abbastanza e ho bisogno di spazio prima di diventare completamente calvo. Riproverò tra qualche giorno. Ti dirò se e come ha funzionato nel seguito. Più tardi, questa settimana. Lo prometto.


Tecnologia e società mi affascinano. Combinarle entrambe e osservarle da punti di vista differenti sono la mia passione.