Robots: Visión estereoscópica en tiempo real por medio de una cámara única

Este escueto artículo, basado en un original en inglés de Nelson Bridwell (Mirage Robotics, LLC). Lamentablemente su artículo ya no está en internet, o no lo encuentro en el enlace que tenía), aporta, creo yo, algunos conceptos interesantes, y nos muestra una idea aplicable a nuestros trabajos.

Una de las dificultades de la visión estereoscópica en tiempo real, para nada trivial, es lograr la adquisición simultánea de imágenes sincronizadas a partir de dos cámaras en dos posiciones separadas.

La posibilidad de lograr esto con una cámara única y un espejo, ubicados en una disposición de geometría simple, es una solución poco conocida.

Vista lateral de la distribución geométrica del espejo y la cámara

Vista lateral de la distribución geométrica del espejo y la cámara

Estéreo cabeza abajo

Debido a que los obstáculos y objetos de interés por lo general no están ubicados por encima de un robot móvil, puede ser una buena idea montar la cámara en la parte superior, debajo de un espejo cuya parte reflectora apunta hacia el piso. Esto nos aportará una visión estéreo despejada del espacio de navegación.

Imagen de ejemplo

Imagen de ejemplo

Esta disposición puede tener el beneficio adicional de aislar la cámara del resplandor de la luz del ambiente, lo que resultará en un mayor rango de intensidades en los objetos de alrededor.

También debería minimizar el oscurecimiento del espejo a causa de la acumulación de polvo en su superficie.

Vista lateral del montaje sobre un robot

Vista lateral del montaje sobre un robot

Visión estereoscópica múltiple

Visión múltiple

Existiendo una variedad de bibliotecas de procesamiento de imagen, la determinación de distancia y posición no debería ser una gran dificultad si se programa en un microcontrolador con capacidad suficiente para recibir los cuadros de video y compararlos. Por ejemplo, habría que echarle una mirada a MATLAB_Arduino. Otra opción (mucho más simple porque la cámara ya se ocupa del procesamiento de las imágenes) sería utilizar una cámara Pixy para medir distancia, ya que solo es necesario comparar valores aportados por la Pixy en formato texto, con las posiciones XY de un polígono; o un par de cámaras para obtener posición en el entorno y distancia. Todo en tiempo real.

La cámara Pixy es provista con un cable especial para enchufarla directamente en un Arduino, y un cable USB para conectarla a una Raspberry Pi, para que se pueda comenzar rápidamente. Y si no trabaja con Arduino o Raspberry Pi, no hay problema. La Pixy tiene varias interfaces (SPI, I2C, UART y USB), y sus comunicaciones son simples, por lo que en poco tiempo se logra la comunicación de la cámara con el microcontrolador elegido.

Más adelante publicaré un artículo con mis experiencias y diseños realizados en base a la cámara Pixy.