Ciclop 3D Scanner CC BY SA

Os presentamos Ciclop, el primer escáner 3D DIY de bq, y Horus, un software de escaneado 3D.

Igual que el resto de productos DIY, Ciclop y Horus tienen una licencia libre, por lo que pertenecen al Patrimonio Tecnológico de la Humanidad. Toda la información sobre el diseño mecánico, la electrónica, el software, los algoritmos, las matemáticas y los experimentos realizados estarán disponibles para la comunidad.

Esto permite no solo estudiar y entender el funcionamiento del escáner, sino además realizar modificaciones, mejoras y evoluciones a partir de él. Queremos con ello contribuir e impulsar el desarrollo de estos dispositivos.

open

El escáner se apoya en grandes proyectos de nuestro Patrimonio Tecnológico desarrollados por la comunidad, como son: GNU/Linux1, Python2, Reprap3 y Arduino4 entre otros. Tienen toda nuestra admiración, reconocimiento y agradecimiento ya que han sido fundamentales para la realización de este proyecto.

ciclop-banner

Estado de la técnica

Existen varias alternativas para capturar la geometría tridimensional de un objeto: triangulación láser, luz estructurada y visión estereoscópica entre otras. La primera es la que tiene, en comparación, una mayor precisión y resolución, aunque tiene también limitaciones en cuanto a los materiales de los objetos a escanear. Se basa en capturar con una cámara la proyección de un haz láser sobre un objeto.

En el mercado ya existen escáneres láser con precios que varían desde 500€ hasta por encima de 20.000€, pero no son libres, por lo que el usuario no puede estudiar el software ni realizar modificaciones.

Entre los escáneres libres destacan FabScan5 y MakerScanner6, pero no están disponibles como kits para su compra, por lo que se tienen que conseguir los materiales por separado.

Ciclop


Ciclop es un kit de escáner 3D libre. Por un lado otorga al usuario la libertad de poder estudiarlo y modificarlo, y por otro le da la facilidad de comprar todos los componentes en un kit, a un precio justo.

Diseño

La estructura de Ciclop se compone de piezas impresas en 3D, varillas roscadas M8, tornillos M8, tornillos M3, tuercas y arandelas. Dispone de una plataforma giratoria de metacrilato de 20 cm de diámetro donde se coloca la pieza a escanear. Está recubierta de una superficie antideslizante para evitar que se muevan los objetos durante el escaneado.

La plataforma se apoya sobre un rodamiento de bolas de 110 mm de diámetro. El movimiento se acciona mediante un motor paso a paso Nema 17.

Electrónica

El sensor está formado por una cámara web HD Logitech C270 en el centro, dos módulos láser de línea clase 17 situados a los lados y la placa controladora ZUM BT-3288 en el interior del frontal.

zum-bt328

ZUM BT-328

La ZUM BT-328 es una placa basada en Arduino que ejecuta el firmware de control del motor y los láseres. Se comunica con el PC por medio de cable micro USB o Bluetooth. En su parte superior está conectada la ZUM SCAN, una shield derivada de la Arduino CNC Shield9, que contiene 2 drivers de control de motores paso a paso, y conexión para 4 láseres y 2 sensores analógicos de luz (LDRs).

zum-scan

ZUM SCAN Shield

 Horus


Firmware

El firmware se ha desarrollado a partir de GRBL10, utilizado en otros proyectos como Marlin11 (el firmware de las impresoras 3D libres). Permite controlar el encendido y apagado de los láseres, así como el control en posición, velocidad y aceleración del motor paso a paso mediante comandos G-code.

Software

El programa principal es una aplicación de escritorio multiplataforma desarrollada en Python2. Utiliza wxPython12, NumPy13, SciPy14, Matplotlib15, OpenGL16, y una versión optimizada para Linux de OpenCV17.

Esta aplicación es el núcleo del escaneo. Gestiona las comunicaciones, la captura y sincronización de datos, el procesamiento de imagen y la generación y visualización de la nube de puntos.

Ha sido desarrollado y optimizado para GNU/Linux (Ubuntu18), Windows y Mac. Horus se compone de tres bancos de trabajo, seleccionables por el usuario.

Control

En esta sección se pueden controlar libremente cada uno de los elementos que componen el escáner: los parámetros de la cámara, los láser, los motores, etc… Está pensado para que los makers y desarrolladores puedan realizar pruebas y experimentos de los componentes del dispositivo por separado.

Calibración

El banco de calibración contiene las herramientas necesarias para calibrar el dispositivo, desde el ajuste de la cámara, hasta la triangulación de los láser y la detección de la plataforma giratoria.

Este sistema está diseñado para calcular automáticamente los parámetros internos del escáner a partir de la estructura montada por el usuario. Esto es muy importante porque al ser un escáner DIY, nunca se montarán dos escáneres exactamente iguales. Es imposible determinar a priori las dimensiones y orientaciones que el usuario le dará en el montaje. Además, el usuario puede montar un escaner con diferentes dimensiones y posiciones de los láseres y cámara. Horus se encargará de auto-calibrarse correctamente para conseguir un escaneo perfecto.

calibration

Horus: fases de la calibración

Escaneo

Esta sección permite seleccionar el tipo de escaneo: con/sin textura, uno/dos láseres, pasos por vuelta, etc. Proporciona además un entorno 3D en el que se visualiza la nube de puntos en tiempo real y una ventana de vídeo que muestra las diferentes partes del procesado de imagen.

scanning

Los tiempos de escaneo dependen del algoritmo utilizado y de la aceleración y el paso del motor. Para 800 pasos por vuelta (0.45º) los tiempos van de 2′ el más rápido a 6′ el más lento (con doble láser) en Linux.

El resultado de este proceso es un fichero PLY19, aquí se muestran algunos ejemplos más:

scans Wizard

Además de lo anterior, Horus incluye un wizard que simplifica el proceso de calibración y escaneo, mediante un sistema de guiado paso a paso.

Mallado

Para realizar el mallado a partir de la nube de puntos existen distintos programas libres como Blender20 o MeshLab21, que permiten pasar de PLY a STL22. STL es un formato que define una malla 3D compuesta por triángulos. Este fichero se puede imprimir en 3D utilizando programas como Cura23.

meshlab

Mallado con MeshLab: cálculo de las normales

Una vez convertido a STL, el modelo se puede visualizar en Horus.

mesh

Trabajo futuro

En este proyecto queremos seguir evolucionando y mejorando. Una de nuestras líneas de trabajo principales será la incorporación de los mecanismos de postprocesado 3D y mallado en Horus.

Nos interesa la opinión de la comunidad, por lo que estamos abiertos a sugerencias y mejoras a través de nuestro Grupo o de GitHub.

¡Os animamos a que os unáis al proyecto!

Publicaciones

En las próximas semanas iremos publicando con detalle todos los desarrollos, documentos y manuales relacionados con este proyecto bajo la licencia Creative Commons BY-SA  y GPL v2.

¿Estáis preparad@s?

Referencias

  1. Sistema operativo GNU/Linux
  2. Lenguaje de programación Python
  3. Comunidad RepRap
  4. Comunidad Arduino
  5. Proyecto FabScan
  6. Proyecto MakerScanner
  7. Certificado de seguridad Clase 1 IEC60825-1:2014
  8. Placa controladora ZUM BT-328
  9. Placa de potencia Arduino CNC Shield
  10. Sofware de control CNC GRBL
  11. Firmware Marlin
  12. Biblioteca gráfica wxPython
  13. Biblioteca de cálculo matricial NumPy
  14. Biblioteca de cálculo científico SciPy
  15. Biblioteca de generación de gráficos Matplotlib
  16. Biblioteca de gráficos 3D OpenGL
  17. Biblioteca de visión artifical OpenCV
  18. Sistema operativo UbuntuUbuntu GNOME,  Kubuntu
  19. Formato de malla PLY
  20. Editor tridimensional Blender
  21. Procesador avanzado de mallas MeshLab
  22. Formato de malla STL
  23. Asistente de impresión 3D Cura