Étape 3: logiciel
C’est où le gros du travail est arrivé. Afin de rendre ce processus entier au travail, j’allais avoir besoin :
- Logiciel pour récupérer les données de la Kinect
- Logiciel pour envoyer un message réseau à la Pi pour lui dire de faire pivoter
- Logiciel sur la facture pro forma pour rendre les broches GPIO provoquent une étape haut/bas, qui dirait à son tour le contrôleur de moteur pas à pas à l’étape
Heureusement, le Kit de développement logiciel pour la Kinect a été assez simple. (Je suis un développeur c# par le commerce). J’étais un peu inquiet pour la partie réseau des choses, mais la bibliothèque de réseautage Lidgren (également disponible en c#) s’est avéré pour être très pratique. Sur la Pi, j’ai installé Mono et créé un petit client app qui servent également la bibliothèque réseau Lidgren à étudier pour une demande entrante. J’ai été en mesure d’utiliser un système GPIO fichier basé (toujours en c#) pour dire le contrôleur de moteur pas à pas à faire sa chose.
Une fois, j’ai eu toutes les données numérisées 3D d’une rotation complète de l’objet en cours d’analyse. Pour chaque capture instantanée des données scannées, j’ai transformé en l’espace de coordonnées même. A partir de là, je me suis retrouvé en utilisant une approche axée sur le voxel de combiner les données : je traiter trois points de profondeur adjacentes comme un triangle et se croisent ce triangle dans une structure de données octree. Finalement, ce que je me suis retrouvé avec était un octree montrant quelles régions du 3D espace étaient « solides » et ceux qui était « vides ». A partir de là, j’ai couru l’algorithme du marching cubes et utilisé pour générer un maillage étanches à l’eau.
Une des parties délicates devenait le scanner correctement étalonné. Fondamentalement, j’ai eu à le faire en regardant les choses : je mettre un petit objet sur le scanner, scanner, faire pivoter et voir comment il a comparé. Si elle avait l’air éteint, je dois régler mon « mesurée » la distance entre le Kinect et le centre de la plateforme de numérisation et répétez le processus.