

À quel point est-il difficile de construire un scanner 3D ?

Je suis un bricoleur passionné. J'aime le matériel, mais j'ai parfois du mal avec les logiciels, comme le montre ma dernière expérience : J'essaie de construire un scanner 3D.
En parcourant Thingiverse, je suis tombé sur cette chose. Le designer QLRO a construit un scanner 3D ouvert, basé sur Arduino et Android. J'en veux un aussi.
Comment fonctionne le scanner?
Le scanner 3D se compose d'une plate-forme imprimée en 3D qui est entraînée par un moteur pas à pas. Vous placez l'objet de votre choix sur la plateforme et un smartphone Android le photographie sous différents angles pendant que la plateforme tourne. Une fois les photos prises, vous les transférez du smartphone à l'ordinateur pour créer une image tridimensionnelle dans Meshroom, un logiciel de reconstruction 3D. Cela semble simple ? Je le pense aussi, d'autant plus que le designer QLRO indique que son design est minimaliste et fonctionnel.
Loin de là. Je n'ai déjà presque plus de cheveux et ceux qui me restent, je me les arrache presque pour le projet
Ce qu'il faut
Pour commencer, j'imprime la plateforme. Elle est composée de six pièces et comprend un mécanisme d'engrenage. Grâce à mon imprimante 3D Creality CR-10S Pro, les pièces sont imprimées en un peu plus de huit heures.

Par ailleurs, j'ai besoin d'un moteur pas à pas qui entraîne la plateforme via le mécanisme d'engrenage, et d'un pilote de moteur pas à pas qui permet la communication entre le moteur et Arduino. Ce produit contient les deux en un.

Pour que la plateforme tourne, j'ai besoin d'un Arduino. J'ai encore un Arduino Nano de mon projet de musique sur disquette.
Le bricolage de la plateforme et la connexion du moteur pas à pas avec le pilote du moteur pas à pas et l'Arduino sont rapides. Comme je l'ai dit, je n'ai pas de problème avec le matériel. Jusqu'à présent, tout fonctionne bien. Cela peut continuer ainsi.

J'ai bien sûr chez moi un smartphone Android, un ordinateur et un réseau sur lequel se trouvent le smartphone et l'ordinateur. Il est temps de mettre le logiciel à jour.
Aye le matériel, nay le logiciel
Sur le plan logiciel, je dois installer Meshroom sur mon ordinateur pour que les photos prises par le smartphone puissent être assemblées en une image tridimensionnelle.
Il faut également installer Arduino IDE. J'ai besoin de ce logiciel pour lancer un script sur l'Arduino afin de faire tourner le moteur pas à pas.
Enfin, j'ai besoin de Python pour l'ordinateur et le smartphone.
C'est là que tout commence pour moi. J'ai déjà travaillé avec des scripts Python, mais à chaque fois, cela me prenait une éternité pour faire fonctionner mes projets
Le gros problème cette fois-ci : pour que l'ordinateur et le smartphone communiquent entre eux, je dois exécuter un script sur chacun d'eux. J'ai déjà du mal à transférer le script de l'ordinateur vers le smartphone Android. Dans QPython, l'application qui me permet d'exécuter des scripts Python sur le smartphone, un script vide s'affiche. En d'autres termes, si je l'exécute, il ne se passe rien.
C'est la première fois que je m'arrache les cheveux. Mais pas pour la dernière fois.
Pour une raison quelconque, QPython ne peut pas lire le script transféré. J'essaie donc de créer le script directement dans QPython. Malheureusement, le copié-collé depuis Git Hub ne fonctionne pas, car tout est collé sur une seule ligne dans l'éditeur de QPython. Bon, je le copie d'abord dans un Google Docs, puis dans l'éditeur - une idée stupide, comme je le découvrirai plus tard. Pour l'instant, je me dis : "Oui, tout est correct maintenant". Quelques fois, il a ajouté des lignes supplémentaires, mais elles sont vite effacées.
Pour essayer, je fais tourner les deux scripts. Pour le script Android, qui s'appelle Server.py, j'obtiens déjà un message d'erreur à la ligne du port COM que je dois indiquer.
Qu'est-ce que j'ai fait de mal ? Quelques cheveux s'échappent à nouveau.
Après avoir tâtonné et demandé à mon collègue Jon Andri Hoppler qui, contrairement à moi, s'y connaît un peu en Python, le problème est rapidement résolu. Quelques lignes plus bas, au niveau du serveur, Jon peut également m'aider. Mais ensuite, quelque chose que ni lui ni moi ne comprenons arrive :

En principe, tout devrait fonctionner ici. Quel est l'intérêt ? Je n'ai même plus besoin de m'arracher les cheveux, ils tombent automatiquement. Si ça continue, je n'aurai plus de cheveux du tout à la fin du projet.
Je me creuse la tête pendant longtemps. Jusqu'à ce que je me souvienne pourquoi je travaille avec Notepad++ pour les scripts sur ordinateur : rien n'est formaté ici. Aurais-je copié un formatage incorrect dans Google Docs ? Je supprime les espaces avant le code et exécute à nouveau le script. Yes, j'avance d'une ligne.
Je supprime également les espaces. Je progresse à nouveau d'une ligne. Je répète le jeu pour tout le reste du script. Je le laisse s'exécuter à nouveau. Enfin : le smartphone est maintenant prêt à communiquer avec l'ordinateur. Là, je fais tourner le script Client.py et je vois ce que je veux voir : la plateforme tourne, QPython affiche "Photo prise" après chaque photo et l'ordinateur affiche également la progression.
Yes!!!
Tout est bien qui finit bien?
180 photos sont prises par mon smartphone. Selon le concepteur QLRO, c'est nécessaire pour obtenir une qualité optimale du modèle 3D. Je commence par placer un pont Brio sur la plateforme - ce qu'un père a toujours sous la main.
Je connecte ensuite mon smartphone à mon PC pour pouvoir transférer les images et créer un modèle tridimensionnel avec Meshroom. Les images devraient se trouver dans le dossier QPython.
Cela devrait être le cas.
Je ne trouve pas d'images. WTF ? J'essaie à nouveau. De nouveau, pas d'images. Je modifie l'emplacement dans le script et relance le processus. Toujours pas d'images. J'étais pourtant si heureux que cela fonctionne enfin et que j'aie encore des cheveux. D'ailleurs, il y en a de moins en moins maintenant.
Après avoir fait quelques recherches dans les commentaires de QLRO, je me rends compte que j'ai donné à QPython des permissions sur mon smartphone, mais pas sur la caméra. Je me rattrape et maintenant ça marche vraiment. J'ai enfin 180 images d'un pont Brio sur mon smartphone - j'en ai toujours rêvé.
Il ne me reste plus qu'à convertir les images individuelles en une image tridimensionnelle avec Meshroom. Encore un logiciel. Cela me fait peur. Pourtant, j'essaie au moins d'importer les images. Zut, j'obtiens un message d'erreur : "Not a PNG file" pour chacune des 180 images. Maintenant, j'en ai définitivement assez et j'ai besoin de prendre du recul avant de devenir complètement chauve. Je réessaierai dans quelques jours. Je vous dirai dans la suite si ça a marché et comment. Cette semaine encore. Promis.


La technologie et la société me fascinent. Combiner les deux et les regarder sous différents angles est ma passion.