Laser Scanner 3D SkanDal
Ce wiki a été archivé en 2018.
Le nouveau wiki se trouve à: ressources.labomedia.org Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia. |
Les lasers sont dangereux: Laser Scanner 3D SkanDal Sécurité.
Le premier Scanner 3D totalement documenté, à 2 Lasers piloté par des scripts en Python, sous Licence GPL V2. Copyright Labomedia.
3D Scanner, with 2 Laser and python scripts, made with only 3D Printing pieces.
Pour lancer, double clic sur scan, lancer dans un terminal.
Des commentaires peuvent être déposé sur la page de discussion.
Sommaire
Principe
2 laser ligne génèrent des plans verticaux à 45° par rapport à l'axe vertical de la caméra, coupe la pièce suivant 2 lignes. Les points de ces lignes permettent de calculer la position dans l'espace de tous les points sur l'objet.
L'objet est fixe sur un plateau fixé en direct sur un moteur pas à pas de 200 pas par tour. Le moteur fait 2 tours dans le même sens, un tour avec le laser gauche seul allumé, un tour avec le laser droit allumé.
Le scanner est dans une chambre noire pour ne voir que la ligne laser.
- laser gauche on
- moteur fixe, shot
- avance d'un pas
- attente une seconde pour qu'il n'y ai plus de vibration
- enregistrement de l'image caméra
- avance d'un pas
- etc ...
jusqu'à 200 pas
- avance d'un pas
- laser gauche off, laser droit on
- enregistrement de l'image caméra
- etc ...
jusqu'à 200 pas
Galerie
Galerie laser rouge et webcam horizontale
Galerie laser bleu et webcam verticale
Galerie des protos
Les étapes du logiciel pour un scan
- Enregistrement de 400 images en niveau de gris dans le dossier /work/image/p_monprojet, 400 images.
- Lecture des images, calcul des coordonnées des points des lignes laser de toutes les images, enregistrement des x, y dans des fichiers txt dossier /work/txt/p_monprojet.
- Lecture des fichiers txt, calcul des coordonnées dans l'espace de tous les points, génération du fichier PLY /work/ply/m_monprojet.ply.
Ces étapes enregistrées permettent de reprendre une étape pour améliorer l'ensemble, sans avoir besoin de tout refaire.
Un scan peut aussi se faire en un clic.
Théorie
Les calculs ne sont pas compliqués mais les explications parfois un peu ardues.
Précision
La position horizontale du point vue par la caméra est multiplié par un nombre > 1 et proche de 2, pour obtenir la position réelle. Le calcul diminue la précision de la vue caméra.
Précision théorique avec une caméra 1280 x 800
En hauteur, 600 pixels pour 100 mm, 1 pixel = 0.16 mm
En largeur, 1280 / 2 = 640 pixels pour 50 mm, mais avec le cadrage sur la hauteur, il reste 300 pixels pour 50 mm final soit 50/300 = 0.16 mm pour 1 pixel. Les points au delà de 300 sont supprimé dans le calcul.
La précision théorique est au mieux + ou - 0.2 mm. Le matériau scanné, la réflexion du faisceau laser, ou son absorption (comme avec un lego rouge) influe beaucoup.
Précision due au moteur 200 pas
Pour un cylindre de diamètre 100 mm:
- 200 step pour 360°, donne 1.8° entre 2 frames
- 1.8° sur 100 mm, donne pi * 100 * 1.8 / 360 = 1.5 mm
Les points horizontaux scannés sur un cercle de diamètre 100 mm sont espacés de 1.5 mm.
Objectif de précision
L'objectif est de + ou - 0.5 mm. La précision globale est limite, il faut être très soigneux dans la réalisation: Détails des réglages.
Pièce avec zones concaves
Les zones concaves ou cachées derrière une autre partie de l'objet ont de fortes chances de ne pas être scannées. Scannez un cube par curiosité: la moitié des faces est cachée et ne sera pas modélisée ! Installer un deuxième laser ne coûte quasi rien, par contre il faut que les 2 meshs obtenus se superpose le mieux possible.
2 lasers et et 2 tours
Pour que les 2 meshs soient bien imbriqués, la géométrie du montage doit être parfaite, en pratique cela veut dire à 2 ou 3 dixièmes de mm près. Les laser, l'axe de la caméra doivent tomber pile poil sur l'axe du moteur sur toutes la hauteur de vision de la caméra.
Principe
- Un deuxième tour dans la continuité du premier.
- "Off" sur le laser gauche, "On" sur le laser droit, juste après le shot 199.
- Flip horizontal des images enregistrées.
- Calcul de la ligne laser pour toutes les images de la même manière.
- Ajout des points de la frame n et de la frame 200 + n + 1/4 de tour (2 * 45°).
- Pour toutes les lignes y, calcul de la moyenne des x. Si un seul point, le point est compté tel.
- Calcul des coordonnées x y z.
Caractéristiques des pièces à scanner
- Dimension: La pièce doit tenir dans un cylindre de diamètre 100 hauteur x 100 mm
- Poids: 300 grammes maxi
Zen of scan
- La pièce n'a pas à être centrée sur le plateau.
- La caméra et le laser pointent pile-poil vers l'axe de rotation du plateau.
- Les scripts enregistrent toutes les images, les résultats des traitement de ces images, et sort un fichier *.PLY exploitable dans Meshlab. Calculer les faces est compliqué, il faut laisser ce travail à un spécialiste, Meshlab, qui est sous License GPL V2.
Matériel
La liste du matériel nécéssaire, mais il faut récupérer le maximum possible.
Les pièces à fabriquer sur une Imprimante 3D.
Logiciel
Les sources, l'installation, l'utilisation.
Conversion du fichier PLY en STL dans Meshlab
Nous conseillons un logiciel performant pour construire un STL à partir des points, licence GPL, Meshlab:
Essai en cours avec meshlabserver et un script .mlx
Ressources
- http://gmv.cast.uark.edu/scanning/point-clouds-to-mesh-in-meshlab/
- http://en.wikiversity.org/wiki/MakerBot/Cleaning_Up_Point_Cloud_Meshes_in_Meshlab_For_3D_Printing
Nettoyer le mesh
Construction des normales
Filters -> Point Set -> Compute Normals for point set
Options:
- Number of neighbors = 50
- Flip normals w.r.t viewpoint enable
- Get: View Dir
Création des faces
Filters -> Point Set-> Surface Reconstruction: Poisson
- Octree Depth = 6
- Solver Divide = 6
- Samples per Nodes = 1
- Surface offstting = 1
Laser bleu, webcam verticale, développemnt
Laser Scanner 3D SkanDal Laser Bleu, Webcam verticale, Développement
Ressources
- FabScan: The 100-Euro 3D Laser Scanner
- Le PYTHON en bref de Alexandre GALODÉ.
- https://github.com/mvhenten/pylatscan
Commentaires
La page de Discussion est faite pour ça.