Visión
De Proyecto Androide
Desarrollo:
Personas no videntes
Un no vidente se las arregla bastante bien para armar su mundo en 3D. En teoría un robot podría no tener la necesidad de "ver". Aclaro que no soy quién para hablar al respecto de un no vidente.
Mecanismo de movimiento de los ojos.
Un humano tiene un par de ojos y dos grados de libertad por cada ojo. Eso le sirve para percibir el mundo en 3D.
Podría tener 8 ojos sin ningún grado de libertad y así y todo arreglárselas para percibir su mundo en 3D.
Un par de ojos sin ningún grado de libertad haría trabajar mucho al cuello. Dicha articulación mueve mucha masa ( toda la cabeza ). Consumiríamos más energía. En definitiva, los ojos necesitan sus propias articulaciones de 2 grados de libertad y trabajar alineados en paralelo. No necesitan cruzarse para medir distancias.
y=mx+b
Alineando cada ojo a una recta y midiendo ángulos se pueden obtener distancias. Pero no es necesario ya que se puede trabajar con las imágenes de cada ojo, pixeles de referencia en cada imagen y la distancia entre esos pixeles de referencia.
Leer http://robots-argentina.com.ar/Cerebro_DistanciaLaser.htm .
De cualquier manera esta ecuación nos servirá al momento de tener que predecir trayectorias de movimientos. (supongo, por ahora).
Cuadro
Conjunto de pixeles también denominado imagen, normalmente distribuidos en un plano, limitados por 4 semirrectas que forman ángulos de 90 grados y que se expresa (dicho conjunto) en una relación Alto-Ancho conocida como Aspect Ratio. (Esta es una definición mía. No es copiada).
Para el ojo humano, 25 cuadros/segundo son suficientes. (25 es la mitad de los 50 hz de línea de 220 Vef, en PAL)..... Para ntsc se usan 30 cuadros. (30 es la mitad de los 60 hz de línea 110 Vef)
En cine, 24 fps (frames per second=cuadros por segundo).
Movimiento
Para resolver movimiento necesito al menos 2 cuadros distintos (de un mismo ojo) y conocer el tiempo transcurrido entre cuadro y cuadro.
B/N (blanco y negro) VS Color
A ver que tipo de información pueden aportar estos dos casos...
Algo no cuadra...
Toma - Procesamiento - Reconocimiento de imágenes
Discusiones:
En éste punto tendremos las discusiones para que no se confundan con las definiciones que iremos publicando en el desarrollo.
Hay que empezar a trabajar algo sobre este tema de la Visión.
Seguramente deberemos adentrarnos en el tema de Toma - Procesamiento - Reconocimiento de imágenes. Creo que así debe plantearse. Desde ahí desprenderse con lo mecánico, electrónico y algorítmico.
--Adrian S.A. 08:21 7 abr 2008 (ART)
Sistema de Visión.
Se puede pensar, mecánicamente, en un par de cámaras para el sistema de visión. Cada cámara con su propia articulación de 2 grados de libertad.
Las articulaciones independientes permiten la triangulación de un punto para calcular distancias.
Las dos cámaras y sus articulaciones se montan a su vez sobre la articulación del cuello el cual tiene 3 grados de libertad.
Como sea que se obtengan las imágenes "o cuadros" éstos se almacenarán por separado para procesarlos.
De acuerdo al nivel de procesamiento de imágenes que se necesite, será la complejidad de los algoritmos. Básicamente se puede trabajar con tres grupos:
- Reconocimiento de objetos (formas y movimiento)
- de caras humanas entre los objetos
- diferenciación de rostros.
Los datos procesados por el sistema o módulo de visión llevarán algún tipo de información que contribuya con el módulo de equilibrio.
--Adrian S.A. 14:51 7 abr 2008 (ART)
Adrian: Es necesario 3 grados de libertad por ojo? me parecen que suben y bajan paralelos, solo el giro sobre un plano medio de los dos es independiente.
--Mastromec 18:42 7 abr 2008 (ART)
Si señor. Tiene Ud. toda la razón. Son 2 grados. Lo analicé mal.
--Adrian S.A. 22:56 7 abr 2008 (ART)
Cómo responde nuestro cerebro al ver esta imagen.
(Después lo borramos)
--Adrian S.A. 23:43 7 abr 2008 (ART)
Hola Chicos, disculpenme que este tiempo no estuve muy participativo, es que estuve poniendome a punto con algunos temas y a eso se sumo una conjuntivitis y el bendito speedy que no funciona en casa :S.
Les queria comentar que estuve armando algo pensando en lo de vision artificial, una base con dos servos para lograr los 2 grados de libertad que bien comentan. Estoy pensando en ajustar el presupuesto para llegar a la CMUCAM3. De todas formas tengo mucho que aprender sobre algoritmos todavia... Mi idea era manipular la vision de la camara con algun dispositivo (giroscopo o acelerometro) para transmitir los movimientos de MI cabeza hacia la camara.
Por otro lado, Y DISCULPENME POR MEZCLAR TODO PERO ESTOY EN MAQUINA PRESTADA :S, existe la posibilidad de que participe en un proyecto en la escuela en donde hice la secundaria ya que tienen un brazo robotico... despues les cuento mejor!
Estuve leyendo algunos de los MUCHOS comentarios y charlas que tuvieron, realmente tengo que leer y leer para ponerme a tiro :)
Saludos y cualquier cosa estamos en contacto! --Marianobustos 11:15 8 abr 2008 (ART)
Al final, después de analizar este asunto,me doy cuenta de que no necesito ninguna ecuación de la recta, ni pendientes, ni punto en común de las rectas que se cruzan, ni tangentes, ni nada.
Solo se necesitan 2 cámaras y medir distancia entre pixeles de las imágenes tomadas. Arriba voy a desarrollar eso.
Además se que Edu tiene un artículo muy parecido < http://robots-argentina.com.ar/Cerebro_DistanciaLaser.htm >y que usa un laser como referencia...hace mucho lo había leído.
(Estoy presuponiendo que los pixeles nos darán mas resolución que un encoder de un ojo)... mmmmmhhhhh....
--Adrian S.A. 01:02 9 abr 2008 (ART)
Quería comentar que yo tengo una CMUCam, no sé si lo dije antes. Todavía no la probé, pero ya llegará el momento.
Es un "pobrecita" CMUCam I, claro. No es súper súper, pero incluye algunas funciones útiles, como el reconocimiento de un área de color, seguimiento de ésta y demarcación de su centroide. Se comunica por un serial RS232 a niveles TTL a 9600 baudios.
La proyección momentánea de una línea de láser sobre alguna parte del ambiente ayudaría mucho a definir las distancias y mapear el entorno. Tengamos en cuenta que esto lo puede hacer el robot sincronizando con un cuadro, es decir, que si tenemos 20 cuadros por segundo tendríamos una línea de láser proyectada sobre el ambiente durante sólo 50 milisegundos. No sé si la veríamos, pero para el procesamiento ayudaría muchísimo. Y se podría dirigir a distintos sectores del ambiente para armar con rapidez un mapa.
Y también, por supuesto, procuraremos avanzar con el reconocimiento de figuras, hasta llegar al reconocimiento facial, claro. En este aprendizaje me prendo 100%
--Edu 14:50 9 abr 2008 (ART)
O sea, que haremos un escaneo del entorno. Como en el comienzo de una de las Aliens :) .
Si ponemos 4 camaras opuestas entre sí entonces ganaríamos mas tiempo.
La cuestión parece ser, al final, lograr un mapa 3D del entorno.
--Adrian S.A. 15:01 9 abr 2008 (ART)
No creo, porque primero, la idea de la rayita con láser de mi idea se basa en el sistema de dos cámaras frontales. La rayita no cambia el concepto de un sistema de visión, sólo facilita enormente el reconocimiento de un rasgo en la imagen que nos permita comparar rápidamente el paralaje en las dos cámaras. Tengamos en cuenta que a menos que lo pongamos en un entorno controlado, puede costar encontrar un rasgo saliente y hasta pueden darse confusiones.
Segundo, si hacés un mapa 3D lo hacés del entorno que vas recorriendo hacia adelante y ---muy importante--- en modo dinámico. Esto no quita que si uno quiere que nadie pueda darle un golpe en la nuca haya cámaras hacia atrás, pero creo que no es imprescindible. Con un buen servo se puede girar la cabeza 180 grados en 1 segundo o menos.
--Edu 17:33 9 abr 2008 (ART)
La toma de datos desde una cámara debería hacerse usando este protocolo
IEEE 1394 http://es.wikipedia.org/wiki/IEEE_1394
--Adrian S.A. 20:22 1 may 2008 (ART)