Paso 3: Software
Esto es donde sucedió la mayor parte de la obra. Para hacer todo este proceso a trabajar, iba a necesitar:
- Software para tomar los datos del Kinect
- Software para enviar un mensaje de red a la Pi a que gire
- Software en el Pi para hacer los pines GPIO causar un paso arriba/abajo, que a su vez diría el controlador motor paso a paso a paso
Afortunadamente, el Kit de desarrollador de Software para el Kinect era bastante sencillo. (Yo soy un desarrollador de C# por comercio). Me preocupaba un poco la parte de red de cosas, pero la biblioteca redes Lidgren (también disponible en C#) demostró para ser muy útil. En el Pi, instalar Mono y creado una aplicación de cliente pequeño que también se utiliza la biblioteca de red Lidgren para buscar una solicitud entrante. Yo era capaz de usar un sistema de archivo basado en GPIO (en C#) para decir el controlador de motor paso a paso para hacer su cosa.
Una vez tuve todos los datos escaneados 3D de una rotación completa del objeto que está escaneando. Para cada instantánea de datos escaneados, transformó en el mismo espacio de coordenadas. De allí que terminé usando un enfoque basado en voxel para combinar los datos: tratar tres puntos adyacentes de la profundidad como un triángulo y se cruzan ese triángulo en una estructura de datos del octree. Finalmente lo terminé con fue un octree que muestra que las regiones de 3D espacio eran "sólidos" y los que estaban "vacíos". Desde allí, corrió el algoritmo cubos que marchan y utiliza para generar una malla impermeable.
Una parte difícil fue obtener el analizador calibrado correctamente. Básicamente tuve que echando un vistazo a las cosas para ello: I poner un objeto pequeño en el escáner, escanearla, girarlo y ver cómo comparan. Si parecía apagado, tengo que ajustar mi "medido" distancia del Kinect para el centro de la plataforma de exploración y repita el proceso.