horus

horus_splash

Horus es una aplicación multiplataforma orientada al control de escáneres 3D libres. Proporciona una interfaz gráfica para gestionar las comunicaciones, la captura y sincronización de datos, el procesamiento de imagen, los procesos de calibración y la generación y visualización de nubes de puntos.

Ha sido desarrollado y optimizado para GNU/Linux1 Ubuntu2. Sin embargo también se ha probado en sistemas Windows y estará soportado para Mac. El software está programado en Python3. Utiliza wxPython4, NumPy5, SciPy6, Matplotlib7, OpenGL8 y una versión optimizada para Linux de OpenCV9.

Horus es software libre. Su código está publicado en GitHub, liberado bajo la licencia GPL v210. Esta licencia garantiza que se cumplen las libertades fundamentales en el uso del software libre. Todo código liberado bajo la licencia GPL pertenece automáticamente al Patromonio Tecnológico de la Humanidad.

Instalación


Horus se puede instalar en los sistemas operativos Ubuntu, Windows y Mac.

Por favor, sigue las siguientes instrucciones para instalar la aplicación: Instalación [en].

Primer contacto con Horus


Ventana de bienvenida

Al iniciar por primera vez la aplicación aparecerá un mensaje de bienvenida.

horus-welcome

Esta ventana proporciona acceso rápido a las funciones principales como lanzar el wizard, escanear o acceder a la configuración avanzada. Incluye también un acceso rápido a modelos recientes (nubes de puntos o mallas).

Ventana principal

La ventana principal contiene una barra de menu, una barra de herramientas y un combo para cambiar de banco de trabajo (workbench).

horus-main-window

La aplicación incluye las opciones de cargar y guardar perfiles con el estado de la aplicación, así como resetear los valores por defecto. Además contiene un acceso a las preferencias donde se podrán ajustar los parámetros de conectividad, cargar el firmware en el procesador o seleccionar el idioma de la aplicación.

En la sección de escaneo se habilitan las opciones de cargar, guardar y eliminar modelo. Un modelo es un objeto 3D que puede ser una nube de puntos PLY11 o una malla de triángulos STL12.

Lanzando el wizard


A través del wizard se pueden realizar de forma simplificada los procesos de conexión, calibración y sintonización de parámetros de escaneo.

horus-wizard

Configuración avanzada


Esta sección se refiere a los bancos de trabajo de control y calibración.

Control Avanzado

Este banco de trabajo permite un control libre de todos los componentes del escáner por separado: la cámara, los láser y el motor. Tambien permite leer el valor de unos sensores LDR, que se han añadido para hacer un futuro ajuste inteligente de los parámetros de la cámara.

horus-control

En la sección de control de la cámara se pueden ajustar los siguientes parámetros:

  • Brillo: luminosidad de la imagen
  • Contraste: diferencia relativa de intensidad
  • Saturación: intensidad del color de la imagen
  • Exposición: tiempo de apertura del objetivo en milisegundos.
  • Framerate: imágenes capturadas por segundo
  • Resolución: tamaño de la imágen. Siempre en relación 4:3
  • Distorsión: corregir distorsión de la lente según la calibración.

Se pueden encender y apagar los láser izquierdo y derecho, además de leer directamente el valor de cada uno de los sensores LDR. Este valor va de 0 a 1023 en función de la intensidad de luz que detecte cada sensor.

La sección del motor motor permite habilitar/deshabilitar el motor y realizar un movimiento de giro configurando en ángulo de giro, la velocidad angular y la aceleración angular.

¡Atención! El motor habilitado consume casi la misma corriente que el motor en movimiento. Hay que tener en cuenta que si se deja el motor habilitado mucho tiempo se calentará éste y el driver de control.

Finalmente aparece una terminal de comandos G-code, que son los comandos de comunicación con el procesador. Para más información de los comandos de firmware consultar en el post de Horus Firmware.

Calibración Avanzada

El banco de trabajo de calibración permite ajustar los parámetros de la cámara para obtener una calibración óptima y realizar los tres procesos que determinan los parámetros fundamentales del escáner: calibración del sensor de la cámara y la lente, calibración entre la cámara y los módulos láser y calibración entre la cámara y la plataforma giratoria. Además se pueden personalizar los valores del patrón de calibración para utilizar distintos patrones.

Calibración de la cámara

En esta calibración se obtienen los parámetros internos de la cámara. Estos son:

  • Distancias focales (horizontal y vertical)
  • Centro óptico (horizontal y vertical)
  • Distorsión de la lente

Esta calibración es opcional, puesto que todas las cámaras son prácticamente idénticas y los valores experimentales están muy cerca de los valores teóricos. Sin embargo se deja la opción para usuarios avanzados.

Para realizar la calibración se deben tomar varias muestras del patrón en distintas posiciones. Con esos datos se determinarán los parámetros intrínsecos.

horus-intrinsic-calibration

Calibración de los láseres

En esta calibración se determinan las ecuaciones de los planos que forman cada uno de los láser, concretamente la normal del plano y la distancia mínima al origen. No importa la posición y orientación de los láser puesto que gracias a esta calibración se determinan con precisión milimétrica, estén donde estén.

Esta calibración es fundamental para determinar la nube de puntos respecto al sistema de la cámara. Es un proceso automático que dura pocos segundos.

horus-laser-calibration

Calibración del disco

En la calibración extrínseca se obtiene la matriz de transformación homogénea del disco giratorio respecto a la cámara, es decir, la posición y rotación del disco.

Al igual que la anterior calibración es un proceso rápido y automático. En el caso del escáner rotativo es también una calibración fundamental para el proceso de escaneo.

horus-extrinsic-calibration

Comenzando a escanear


El banco de trabajo de escaneo consiste principalmente en una barra de herramientas y un visor 3D interactivo.

Al comenzar a escanear se visualiza en tiempo real la nube de puntos del objeto escaneado.

horus-start-scanning

El visor de video permite visualizar las distintas fases del procesamiento de imagen.

horus-scanning-video

 

El proceso de escaneo tiene sus propios parámetros de ajuste, tanto de la cámara, como de los láser, del motor y los algoritmos de procesamiento de imagen y nube de puntos.

Se puede seleccionar el algoritmo de escaneo (sólo geometría, o geometría y textura), el número de láseres a utilizar (izquierdo, derecho o ambos), pasos por vuelta, etc.

horus-scanning-parameters

Reconstrucción de la malla


Una vez obtenida la nube de puntos con Horus en formato PLY se puede utilizar Meshlab13 o Blender14 para el post-procesado y reconstrucción de la malla.

Meshlab es un programa de software libre de procesamiento y tratamiento de mallas 3D. Concretamente se pueden realizar operaciones como eliminar ruido, calcular las normales de los puntos, alinear varias nubes de puntos, reconstruir la malla, aplicar texturas, etc.

meshlab-normals

meshlab-mesh

Trabajo futuro

Tenemos muchos objetivos con respecto a la funcionalidad de esta aplicación. Las líneas principales de trabajo son:

  • Incorporar un sistema completo de post-procesamiento de nubes de puntos
  • Desarrollar una interfaz de reconstrucción y mallado 3D
  • Realizar instaladores de la aplicación para un mayor número de sistemas operativos
  • Implementar un sistema de plugins para simplificar la incorporación de nueva funcionalidad
  • Y muchas más ideas nuevas e interesantes!

Os animamos a aportar ideas y sugerencias, así como a contribuir al proyecto.

¡Que el escáner os acompañe!

Referencias

  1. Sistema operativo GNU/Linux
  2. Sistema operativo UbuntuUbuntu GNOME,  Kubuntu
  3. Lenguaje de programación Python
  4. Biblioteca gráfica wxPython
  5. Biblioteca de cálculo matricial NumPy
  6. Biblioteca de cálculo científico SciPy
  7. Biblioteca de generación de gráficos Matplotlib
  8. Biblioteca de gráficos 3D OpenGL
  9. Biblioteca de visión artifical OpenCV
  10. Licencia libre GPLv2
  11. Formato de malla PLY
  12. Formato de malla STL
  13. Procesador avanzado de mallas MeshLab
  14. Editor tridimensional Blender

20 comentarios

  1. Pingback: Jesús Arroyo, el ingeniero de 25 años que ha creado el escáner 3D de bq | SorayaPaniagua Ⓢ

  2. hola mira he instalado el horus en windows 7 y se instala bien pero cuando le das a ejecutar no se inicia el programa bueno se inicia sale la pantalla cmd y al momento salen varias lineas pero se cierra rapidamente

      1. i did one post in group, :)

        it’s possible makes hours work ? its simple ?
        i dont write codes :( but fabscan will change to raspberry pi plataform, i said this today after order 10 shields. i dont see your shield to sell :(.

        snif!

          1. Jesús Arroyo

            Probably someone in the community will implement this in the future.

            Stay tuned 😉

  3. Hola Jesús.
    Me acabo de comprar un Ciclop. Yo utilizo la distribución OpenSUSE, pero sólo encuentro disponibles el ppa para Ubuntu.
    ¿hay alguna otra forma de bajar Horus?

    Muchas gracias y un saludo

    1. Jesús Arroyo

      Hola Eduardo,
      Se puede ejecutar Horus desde el código. Para ello debes compilar nuestro OpenCV siguiendo estas instrucciones: https://github.com/bq/horus/wiki/Documentation#build-custom-opencv e instalar las dependencias y ejecutar directamente el código: https://github.com/bq/horus#development.
      No hemos hecho pruebas en OpenSUSE, pero si no hay problemas con las dependencias es muy probable que funcione correctamente.
      PD: Si tienes alguna duda o sugerencia más escribe a https://groups.google.com/forum/?hl=en#!forum/ciclop-3d-scanner.
      Gracias.
      Un saludo.

  4. Buenos días,

    ¿Podría instalarse Horus en una Raspberry o BananaPi ?
    Creo que sería una manera de que todo quedara más compacto, eliminando las molestas conexiones a un ordenador.

    Saludos

  5. hola, hay una manera de cargar imagenes o usar las librerias de horus para escanear sin una cyclop, por lo que he visto el escaner “sense” es puro software y un laser infrarojo, quiero hacer pruebas de eso.

    saludos

  6. sgruben

    Hola bazza,

    En nuestro repositorio puedes encontrar todas las librerías de Horus ;). Dichas librerías están creadas para Ciclop, el cual obtiene la imagen a través de la cámara web.

    Saludos,

  7. Hola, estoy armando una ciclop a casi la mitad de tamaño y la calibración de la plataforma me falla, puede ser que el software tenga algunos limites del tamaño de la maquina?

    mi idea es llegar a resoluciones menores a las 100micras

    foto de la miniciclop

     

     

    1. SGracia

      Hola, bazza:

      En efecto, Horus está pensado para las medidas “originales” de Ciclop, es decir, deberíamos tener una distancia aproximada desde la cámara hasta el centro de la base de unos 30cm.

      1. Eso lo pude cambiar puse a mano los datos, en las preferencias, pero creo que el angulo del laser podria estar molestando, queria saber si esta explicando en algun lado las distancia y angulos de la ciclop, para no tener que calcularlos, no me di cuenta de medirlo antes de probar achicarlo.

        captura de pantalla

  8. Pingback: CowTech Ciclop is a $99 3D Scanning Kit – 3D Printing

  9. Pingback: 3d 스캐너 구입기 2 조립 – Happy Things Maker

Los comentarios están cerrados.