scanner 3D pour le mips (hardware)
concevoir et réaliser un scanner 3D à moindre coup pour le mips! La partie software pourrais être réalisée, dans un second temps, dans le cadre d'un projet tuteuré avec l'UPPA.
Étapes du projet
1 Elaborer un cahier des charge avec le client (c'est dire que l'on attend l'avis de tous les membres pour nous guider^^)
1 bis Se cultiver et se renseigner sur les technologies existantes
2 Trouver du matériel, tester des capteurs, des actionneurs... et choisir la meilleure solution
3 Concevoir et réaliser un châssis
4 Assemblage
5 Début du projet tuteuré sur la partie software
Rapport d'activité au sein du fablab
- Formation découpe laser et impression 3D
- Rapport du jeudi 23/10/14:
Afin d'être cohérent, nous allons fabriquer un scanner pour des objets de l'ordre du même volume que ceux réalisés par l'imprimante 3D:
Longueur: 24.6 cm Largeur 15.2 cm Hauteur 15.5 cm
Pour scanner un objet sans contacts plusieurs principes existent, nous pouvons les classer en 2 catégories:
- Scanner sans contact actif: On va émettre un rayonnement sur la pièce et détecter sa réflexion. Différents types de source de rayonnement sont utilisés : lumière (laser), ultrason ou rayon X.
- Scanner sans contact passif: On va détecter le rayonnement ambiant réfléchi, c'est à dire que l'on va filmer l'objet sous plusieurs angles, puis le reconstituer grâce à des algorithmes, des programmes en détectant sa silhouette ou par stéréoscopie.. (cf. exemple appli AutoCad)
(cf. wikipedia)
On va préférer utiliser un scanner actif, nous ne sommes pas expert en programmation et en imagerie. Nous allons essayer de simplifier au maximum les données a traités informatiquement au cours de l'acquisition.
Nous souhaitons donc acquérir un nuage de points (de coordonnées xyz par rapport à une origine) puis le transformer en une pièce numérique au format stl par exemple.
La première étape consiste donc à mesurer, une multitude de fois, la distance entre la paroi de l'objet et une origine choisie. Pour y parvenir 2 technologies paraissent accessible :
- Laser: un point est ciblé sur la pièce, une caméra filme ce point depuis un autre angle. Le faisceau forme un triangle entre le laser qui émet, le point de réflexion sur l'objet et la caméra qui détecte, nous pouvons trouver la distance entre la point de réflexion et le laser ou la camera par trigonométrie. Pour accélérer le processus nous pouvons utiliser un laser générateur de ligne (grâce à une lentille cylindrique) qui balaye toute la hauteur de l'objet.
(cf. principe d'un scanner par triangulation)
Pour cette 1ère journée nous avons démonté une diode IR sur un lecteur cd, nous avons vu le signal avec la caméra d'un téléphone: c'est trop diffus, il faut un laser générateur de ligne.
- Lumière structurée: un vidéoprojecteur projettent un motif lumineux sur le sujet (par exemple des lignes verticales et horizontales). Une caméra légèrement décalée du projecteur, enregistre sa déformation. Une technique similaire à la triangulation est utilisée pour calculer la distance, et donc la position des points la représentant. Le motif balaie le champ de vision afin d'enregistrer, une bande à la fois, les informations relatives aux distances.
(cf. wikipedia encore)
On retrouve ces technologie dans la reconnaissance de mouvement sur les consoles: triangulation pour la wiimote et lumière structurée pour la kinect.
Le signal émit pour ces 2 consoles est infrarouge, donc invisible à l'œuil nu. De plus, pour la wiimote, la camera est plus ou moins monochrome, c'est à dire qu'elle ne voit uniquement le signal IR émit par la sensorbar, toutes les autres couleurs ne sont pas a traiter.
Nous pensons donc que pour simplifier le système, on pourrait utiliser une caméra IR ou mettre des filtres devant la camera afin de capter uniquement la couleur du signal émit.
Concernant le matériel utilisé: afin de rester cohérent avec notre formation nous envisageons d'utiliser arduino pour la partie hardware et si nécessaire avec freertos pour gérer le multitâche. Pour la partie software, nous étudions le language C en cours, la bibliothèque OpenCV contient des fonctions pour le traitement d'image. (cours sur le traitement d'image)
Concernant la mécanique il faudrait que l'objet à scanner tourne sur lui même (autour de l'axe vertical), mais nous pensons qu'il serait bien que le capteur tourne aussi autour de l'axe horizontal afin de sonder les éventuels creux sur le dessus de l'objet
Ensuite nous devons réfléchir au signal reçu par la caméra. Concernant la résolution, dans l'idéal, il faudrait que l'épaisseur du laser corresponde à un pixel sur l'image obtenue. Il faut que l'on détermine sur quel format d'image travailler.
L'objectif des prochaines séances est de filmer un point laser et de remonter à une mesure de distance.
Trois scanner par triangulation laser open source sur lequels nous pouvons nous appuyer: Fabscan, Pyscan3D, et MakerScanner
28/10/2014
Récupération d'un niveau laser de chantier HS, nous allons démonter les 2 lasers générateurs de lignes à l'intérieur.
30/10/2014
Pour cette deuxième journée, nous avons démonter les deux lasers de chantier qui ont pour fonction de générer des lignes; dans le but de trouver les tensions de seuil ainsi que la tension optimale pour les alimenter ( environ 2.5 V)
Ensuite nous avons découvert la carte RASPBERRY PI :
1°) Nous avons installé Raspbian sur la carte, à l'aide d'une carte SD et d'un ordinateur fonctionnant sous LINUX. Ensuite nous avons configurer Raspbian afin d'avoir les menus en Francais, ainsi qu'un bon fonctionnement des fonctions disponibles. De plus, nous avons autorisé la Camera sur la Carte.
2°) Nous avons raccordé une caméra de 5 Mégapixels sur la carte, ensuite en branchant la carte sur Internet, nous avons télécharger et installé le logiciel Raspistill qui permet de contrôler les fonctionnalités de la cameras ( vitesse, ouverture, sensibilité etc...). Raspistill nous a permis de visualiser sur une tv raccordée à la Raspberry, les informations captées sur la caméra.
3°) Test des ports GPIO : nous réaliser un programme a l'aide de l'éditeur VIM, téléchargé un compilateur gcc, et la bibliothèque Wiringpi, afin de contrôler les lasers en C . Le programme réalisé consistait à faire clignoter un laser avec un délais de 0.5 s.
Conclusion:
La carte Raspberry Pi nous permet d'utiliser la caméra beaucoup facilement qu'avec une carte Arduino uno. On peut contrôler les ports GPIO et ainsi les lasers, grâce à un l'editeur VIM, la bibliothèque Wiringpi ( et le compilateur gcc, qui permettent d'écrire des instructions en language C.
Nous avons donc choisis d'utiliser une carte Raspberry Pi, qui est beaucoup plus puissante qu'une carte Arduino Uno. De plus la carte et les caméras sont présentes aux Fablab.
Objectifs des prochaines séances :
- Isoler la couleur rouge des lasers sur la caméra avec la bibliothèque Opencv.
- Contrôler des moteurs Pas à Pas ou des servos moteurs a l'aide de la Raspberry.
- Commencer à trouver des solutions techniques pour le châssis.
séances du 06/11 13/11 15/11 et 20/11
Nous avons pris en main la carte Raspberry Pi, avec l'aide des référents, au cours de ces séances.
Nous avons appris à prendre le contrôle de la carte depuis un PC grâce au protocole SSH et à monter le système de fichier du Rasp sur le PC via SSHFS.
Nous nous somme familiarisé avec OPENCV, et nous avons conçu un programme en C avec la bibliothèque qui permet de binariser une image. La prise en main des fonctions et des structures de OPENCV n'a pas été évidente, merci à David qui à crée un makefile pour simplifier la compilation.
La binarisation d'une image consiste à réduire tous les pixels de différentes couleurs en deux classes de pixels. En effet le trait rouge du laser (code rgb 255,0,0) prends la valeur blanc (code rgb 255,255,255), alors que l'ensemble de autres pixels sont coloré en noir. On obtient donc une image simple en noir en blanc (donc binaire) dans laquelle le trait du laser est parfaitement visible. main binarisation
Pour tester notre binarisation on a écrit plusieurs programme qu'on lance grâce à un script shell :
- Allumage du laser
- Photo via raspistill
- Laser éteint
- Binarisation de la photo
Lors des premiers tests il y a du bruit sur le résultats. En jouant avec différents paramètres, nous avons remarqué que plusieurs facteurs influent sur le résultat :
- La distance entre le laser+caméra et la cible
- La luminosité extérieure
- La couleur et le matériau de l'objet (qui influent sur le degré d'absorption ou de réflexion)
Nous pouvons faciliter la binarisation en prenant l'image dans le noir. Mais nous cherchons à avoir un système robuste et polyvalent. De se fait, après plusieurs tests, nous avons obtenu un bon compromis en paramétrant la saturation, la luminosité et le contraste de l'image capturée par raspistill. Ainsi la binarisation fonctionne sur dans toutes les conditions pour un grand nombre de matériaux. paramètres raspistill
La prochaine étape consiste à réaliser un programme qui va retourner la position du trait du laser pour chaque ligne de pixels de l'image.
D'autre part nous avons commencé à étudier le moteur pas à pas : documentation
Nous allons le piloter dans un premier temps depuis arduino. Nous utiliserons un double pont en H comme interface.
Jeudi 04/12/2014
Nous avons commencé la conception mécanique de la structure sur solidworks. Des mises en plan seront bientôt disponibles.
Nous avons commencé à coder le programme qui renvoie la position du laser sur l'image.
La suite des activités n'a pas été rapporté. Néanmoins, le projet à beaucoup avancé durant la période dédié dans le cadre de la licence pro mécatronique. Nous avons réalisé la structure du scanner. Les différentes fonctionnalités ont été testés séparément. Nous avons conçu plusieurs programmes pour piloter les actionneurs avec l'arduino. Il y a aussi une base de programme de traitement d'image sur la RaspberryPI.
Malheureusement, par manque de temps, et à cause de poursuite d'étude ailleurs, nous ne pouvons plus continuer ce projet. La structure du scanner est au FabLab. La partie numérique sera disponible en ligne, nos rapports avec des explications technique seront publiés.
N'hésitez pas à nous contacter si vous avez besoin d'informations pour continuer et terminer ce scanner 3D.
Nous tenons à remercier E Normandin ainsi que tout le personnel du FabLab pour son aide au cours du projet. Bien que le scanner ne soit pas terminé, ce projet a été une expérience très enrichissante, nous avons appris beaucoup de chose. Nous espérons que ce projet aboutira un jour.
- online doc scan 3D — Par ekhi — Dernière modification 18/08/2015 19:00
- elements scanner 3d — Par ekhi — Dernière modification 18/08/2015 19:00
- Prog arduino — Par ekhi — Dernière modification 18/08/2015 19:00
- doc electronique — Par ekhi — Dernière modification 18/08/2015 19:00
- rapport — Par ekhi — Dernière modification 18/08/2015 19:00
- home raspi — Par ekhi — Dernière modification 18/08/2015 19:00
- sources opencv — Par ekhi — Dernière modification 18/08/2015 19:00
- kicad — Par ekhi — Dernière modification 18/08/2015 19:51
Nous commençons a faire des choix technologiques, qu'en pensez vous?
On attends vos des idées, vos critiques, pour nous guider, et pour arriver à un scanner simple et performant :) !