miércoles, 3 de agosto de 2011

FOLLETO DE VISION ARTIFICIAL.

FOLLETO DE VISION ARTIFICIAL


INDICE:

1- SENSORES DE COLOR
Entendiendo el color.
Color de los objetos.
Sensor básico de color.
Correspondencia de semejanza vs. Umbral
Armando y programando el sensor de color.
Distancia de detección con sombras.
Modulación.

2- VISION ARTIFICIAL (COMPUTARIZADA)
Introducción a la Visión por Computadora.
Parte 1: La Visión Biológica.
El Ojo.
Conos y Bastones.
Ojos Compuestos.
Nervio Óptico “Procesamiento de Imagen”
Procesamiento del Cerebro.
Algo más sobre el Procesamiento Cerebral.
Procesamiento Estereoscópico.


3- PARTE 2: PROCESAMIENTO DE IMAGEN POR COMPUTADORA.
Captura de la Imagen.
Pixeles y Resolución.
La Matrix.
Disminución de la Resolución.
Umbral y Heurística.
Inversión de la Imagen.
Brillo y oscuridad.
Adenda: 1D, 2D, 3D, 4D


4- PARTE 3: ALGORITMOS DE VISIÓN POR COMPUTADORA.
Visión por Computadora vs. Visión de Maquinas.
Detección de Perfiles o Bordes (Edge Detectión).
Detección de Formas/ Siluetas y Reconocimiento de Patrones.
(Shape Detection and Pattern Recognition)
Masa Media y Detección de Mancha
(Middle Mass and Blob Detection).
Clasificación de Pixeles (Pixel Classification)
Correlacion de imagen (compatibilidad de plantillas)
(Image Correlation (Template Matching)
Reconocimiento Facial (Facial Recognition).
Visión Estereoscópica (Stereo Vision).
Caso 1: Cámaras Paralelas.
Caso 2ª: cámaras no paralelas, rotación sobre el eje Y.
CASO 2b: Cámaras no paralelas, Rotación sobre el eje Xs.
CASO 2c: Cámaras No Paralelas, Rotación sobre el eje Z.


5- PARTE 4: ALGORITMOS PARA EL MOVIMIENTO.
Detección de movimiento (movimiento de bulto)
(Motion Detection (Bulk Motion)
Seguimiento (TRACKING).
El cruzamiento (croosover)
Flujo óptico (optical flow)
Aplicaciones para el Flujo Óptico
Medidas de Altura (para velocidades constantes)
Altitude measurement (for constant Speed)
Medidas de velocidad para altura constante.
Velocity measurement (for constant altitude).
Seguimiento (Tracking).
Análisis de cuadros 3D (3D Scene Analysis)
Problemas con el flujo Óptico.
Supresión del Fondo (Background Subtraction)
Seguimiento de Características (Feature Tracking)
Seguimiento Visual Asistido (Visual Servoing)
Histograma-concepto.

60 PAGINAS EN PDF..costo consultar
Informes  reyhalcon@hotmail.com

martes, 26 de abril de 2011

SENSOR DE LUZ CON LEDS.

Fabricación de un Sensor de luz con un diodo led y un Opamp



Una de las primeras lecciones que un estudiante de electrónica aprende es que un LED proporciona luz mediante el flujo de corriente. ¿Pero, sabe que un LED puesto en polarización inversa proporciona un flujo de corriente al “sentir” la luz? ¡Sí! Es verdad.
Conecte un LED rojo ultra brillante de alta calidad sin ninguna batería u otro  circuito a un multimetro en el modo de medida de voltaje. Ponga el LED hacia una fuente de luz, como una lámpara de escritorio. ¿Mida el voltaje? Ahora, tape el LED. ¿Ve una disminución en la lectura de voltaje?
Un LED (diodo emisor de luz) es un semiconductor fotosensible con una lente. El LED actua Como un fotodiodo.
Los fotodiodos son usados en robots y dispositivos como sensores de luz. Los fotodiodos tienen un espectro de longitud de onda  a la cual ellos son más sensibles, por lo general  en  infrarrojos. Pero, sorprendentemente, un LED invertido es lo más sensible al mismo color de luz visible que este normalmente emite. Por ejemplo, si un circuito usa un LED verde invertido, fluirá mayor cantidad de corriente cuando sea expuesto a la luz verde.
Amplificación del fotodiodo
Lamentablemente, aún en las mejores condiciones, los fotodiodos (y LEDS invertidos) no proporcionan mucho flujo de corriente. La salida del fotodiodo tiene que ser amplificada para que la señal de detección de la luz sea utilizable en otros circuitos. Un fotodiodo amplificado por un transistor integrado, se llama fototransistor.
Se puede conectar un fotodiodo independiente a la entrada de un transistor independiente. Pero, no es fácil controlar la ganancia del  amplificador de un solo transistor, y habría problemas con el ruido en la señal y la cantidad de corriente de entrada requerida. En cambio, el mejor método para amplificar señales de baja potencia de una manera repetible y alta calidad es con un Opamp (amplificador operacional).
Colocando todo esto junto, se puede hacer un sensor de color con  un LED invertido y un opamp.
  • LED1: Normalmente un LED tiene la flecha del diodo apuntando hacia abajo, hacia la tierra porque la corriente convencional fluye así. Pero, estos LEDs invertidos, apuntan hacia arriba. A mayor cantidad de luz que lo ilumine, más corriente fluirá.
  • · IC1: El opamp toma la señal débil del LED invertido, lo amplifica, y lo envía a través de su pin de salida. IC1 debe ser un opamp con un nivel ultrabajo de corriente de entrada. Esto quiere decir que el ic puede trabajar con muy poca corriente de entrada, lo que es recomendable  ya que el LED invertido sólo puede producir poca corriente.
  • · R1: Esta es una resistencia de valor sumamente alto. El siguiente circuito en este artículo sólo requiere 30 megohmios.

La Resistencia R1 permite que una pequeña parte de la salida del opamp regrese a la señal de entrada. Sin R1, la alta ganancia del opamp amplificaría tanto la señal del LED1 que su salida simplemente seria el máximo valor de 5V constante todo el tiempo. Pero, tomando una muestra de corriente y realimentándola a través de R1, se reduce la señal del LED lo suficiente para que el voltaje de salida del opamp esté siempre a un nivel utilizable entre 0V y 5V.
R1 es como el control de volumen. Pone una resistencia baja y la salida se hace muy ruidosa (sobresaturada). Pone una resistencia demasiado alta y la salida se hace demasiado débil para ser útil.
  • C1: debido a que este circuito trabaja con extremos (baja señal de entrada, alta resistencia, alta ganancia), este puede oscilar involuntariamente. pero con una pequeña cantidad de capacitancia (picofaradios) se puede estabilizar la señal.
Diagrama esquemático de un sensor con led de color y opamp.
Los párrafos anteriores nos mostraron los efectos fotovoltaicos de un led invertido, y el método teórico para convertirlo en un sensor, ahora veremos la implementación practica.
Aunque este circuito todavía esta basado en el fotodiodo y un opamp, el circuito completo también incluye:
1. Un LED emisor que actúe como una fuente luminosa de longitud de onda definido. Con este LED, se puede reflejar el color correcto para los LEDS invertidos.
2. Más leds invertidos para aumentar la potencia de la señal de entrada
3. Un led rojo ultra brillante, ya que el color rojo requiere menos energía que otros colores visibles para proporcionar un flujo útil de corriente.
4. la otra mitad del opamp ha sido configurada como un comparador para prender y apagar un LED que indique cuando este ve la luz de color.
El circuito puede trabajar con un solo LED invertido de cualquier color sin requerir un led del mismo color como fuente luminosa. Pero, por comenzar usemos esta configuración, así es más probable tener resultados satisfactorios en el primer intento. Posteriormente, si se escoge un color diferente (como verde o azul) se deberá usar valores de resistencia más altos y mucho más LEDS.
Esquema completo
Este parece complejo, pero note que hay muchas partes adicionales para mejorar el experimento.
  • C1 y C2; condensador estándar cerámico de 0.1 uf y condensador de tantalio de 10 uf para reducir el ruido eléctrico, y así tener una línea de alimentación limpia.
  • LED5 y R5; un led y su Resistencia limitadora de corriente en la configuración usual para tener una fuente de luz. Asegurarse que el LED5 sea del mismo color que LED1. R5 puede reducirse a 220 ohm para tener más luz. Estas dos partes no son necesarias para el sensor, pero son útiles para efectos de experimentación, al proporcionar luz del mismo color.
    • LED1 x 2; dos leds rojos ultra brillantes en posición invertida para que actúen como foto sensores. Se pueden agregar leds adicionales para aumentar la corriente de detección. Se recomienda usar leds ultra brillantes ya que estos tiene lentes claros, los leds normales tienen lentes opacos, los que no podrían dar buenos resultados.
    • IC1; el flujo de corriente de los leds, es conectado al opamp el cual amplifica esta señal, el recomendable es el national LM6482.
    • R1 x 3; las 3 resistencias de 10 megohmio en serie crean una Resistencia de 30 megohmio. Esta resistencia permite que una pequeña cantidad corriente de salida regrese al opamp y los leds, de manera que la salida del opamp siempre permanezca dentro de un límite útil entre 0 y 5 voltios. Si el voltaje de salida es muy bajo, usar resistencias adicionales, si el voltaje es muy alto bajar el valor resistivo.

      R8; potenciómetro variable de 10 khm. Con Gnd conectado en un pin y 5 v conectado en el otro, así tendremos un valor de salida ajustable entre 0 y 5 v en el pin central. Cualquier voltaje que se seleccione con este potenciómetro será comparado con la salida amplificada del led invertido (ic1 pin 6) el LED9 se apagara y prendera indicando cual voltaje es mayor. Esta parte del circuito no es necesario para el sensor pero facilita el experimento ya que indica la detección en forma visual.    
    • R6; una Resistencia de 1 megohmio, que realimenta una pequeña cantidad de la salida del opmp para proporcionar la comparación de histéresis. Básicamente hace que el opamp permanezca estable.
      sin esta resistencia, el LED9 oscilara rápidamente cuando el voltaje del potenciómetro R8 y el voltaje del sensor LED1 sean iguales. Es preferible tener una señal estable en el caso de que se envíe esta señal a un micro o a otro dispositivo digital.
    • R7; esta Resistencia de 100khm balancea el nivel de señal del potenciómetro R8 con la realimentación de R6. Sin esta resistencia, cuando R8 llegue a un valor bajo (de 1ohm) R6 no tendrá ningún efecto en el voltaje del pin 5.
    • LED9 y R9; son un led y su resistencia limitadora de corriente configurados para proporcionar una fuente de luz. El LED9 puede ser de cualquier color, pero no se deberá escoger colores diferentes que los de LED1 y LED5. Si es necesario se puede reducir el valor de R5 a 220 ohm para tener mayor brillo. Estas partes no son necesarias para el sensor, pero facilita el experimento ya que indican cuando LED1 sense la luz.

lunes, 22 de febrero de 2010

ROBOT OMNIRUEDAS


ROBOT OMNI-RUEDA – FUZZY
QUE ES UN ROBOT OMNI-RUEDA?
Es Un robot que usa omni-ruedas y puede moverse en cualquier dirección, en cualquier ángulo, sin girar de antemano. Si se quiere un robot que pueda girar, usar un robot de omni-rueda. Si se quiere un robot que puede hacer girar mientras avanza en el mismo sentido, entonces este es el tipo de robot.

LAS OMNI-RUEDAS
¿Entonces, cómo trabaja un robot que se puede mover omnidireccionalmente? El truco es que usa ruedas especiales... La omni-rueda no es en realidad una sola rueda, son muchas ruedas en una. Hay una rueda grande principal, y a lo largo de su parte periférica hay muchas ruedas pequeñas adicionales que tienen el eje perpendicular al eje de la rueda principal. La rueda principal puede girar alrededor de su eje como cualquier rueda normal, pero ahora que hay ruedas perpendiculares adicionales a ella, la rueda principal también puede moverse en forma paralela a su propio eje.
Abajo hay algunas imágenes de las omni-ruedas disponibles en el mercado. El tamaño de rueda y el diámetro son dependientes de parámetros como la velocidad del robot, el peso, etc.









También se debe estar familiarizado con el material de la rueda. Al parecer el plástico es demasiado liso y las ruedas no consiguen mucha tracción, por lo que se deberá asegurarse que las ruedas pequeñas periféricas estén fabricadas de algún material de alta tracción, como el caucho o el poliuretano.
Si usted está interesado en los cálculos para saber que diámetro de rueda es el mejor, se recomienda leer el tutorial sobre la Dinámica de los Robots. Solicítelo a esta página.

ROBOTS HOLONOMICOS VS. NO-HOLONOMICOS
Hay sólo dos tipos de robots móviles, los robots Holonomicos y los robots No-Holonomicos. Los robots No-holonomicos son los que no pueden moverse al instante en cualquier dirección, como un coche. Este tipo de robot tiene que realizar un juego de movimientos para cambiar de dirección. Por ejemplo, si usted quiere que su coche se mueva de costado, usted debe realizar un complejo "movimiento de estacionamiento en paralelo". Para que el coche de la vuelta, se debe hacer girar las ruedas y avanzar. Este tipo de robot tendría 1.5 grados de libertad, esto quiere decir que puede moverse en ambas direcciones X y Y, pero requiere movimientos complejos para alcanzar la dirección X.

Sin embargo un robot Holonomico puede moverse al instante en cualquier dirección. Este no tiene que hacer movimientos complejos para alcanzar una dirección en particular. Este tipo de robot tendría 2 grados de libertad en la cual puede moverse libremente en el plano X como el Y. Un brazo de robot típicamente es Omni-Direccional también, pero con muchos más grados de libertad.

                                                                                    
3 RUEDAS VS. 4 RUEDAS
La mayor parte de robots de omni-rueda consisten en una plataforma triangular y tres ruedas. Pero es posible, y a menudo mejor, usar cuatro ruedas. Hay una buena razón por qué tres ruedas son mejor - tres ruedas y tres motores son más baratos que cuatro de cada uno.
Sin embargo hay un problema inherente con los vehículos de cuatro ruedas, y es el hecho que cuatro puntos no son garantía que estén sobre el mismo plano. Tres puntos si. ¡Si el robot de cuatro ruedas encuentra el terreno desigual, hay una buena posibilidad que una de las ruedas no esté en contacto con la tierra. Pero hay muchas soluciones simples para esto. Uno de ellos es usar resortes de amortiguación. Un diseño de omni-rueda usa una base delgada y flexible de aluminio capaz de doblarse con el terreno, sobre la cual fueron montados los servos. Pero el diseño de cuatro ruedas es preferible.

VENTAJAS DE CUATRO RUEDAS.
En primer lugar, cuatro ruedas son más eficientes. Con un diseño de tres ruedas, es imposible conseguir la eficacia del 100 % de sus ruedas. Esto es porque en diseños de tres ruedas, solo una rueda alguna vez estará alineada con la dirección de movimiento. Pero con cuatro, dos ruedas pueden moverse con la eficacia del 100 %, mientras las otras dos permanecen libres, para mayor velocidad y movimiento eficiente. En todos los otros ángulos también serán más eficientes que con un robot omni-rueda de tres ruedas.





Como se puede apreciar en el diseño de cuatro ruedas, dos ruedas están girando y contribuyendo al 100% del movimiento, mientras que por el otro lado las otras dos no se mueven y actúan como ruedas de cola de castor. Por esta razón un robot, de cuatro omni ruedas es mas rápido usando menos energía.
Otra razón principal del por qué cuatro ruedas son más fáciles es por motivos computacionales. Cuatro ruedas están en 90 grados el uno al otro, mientras tres ruedas están en 120 ángulos de grado. ¿Qué significa esto? los diseños de cuatro rueda, las tienen directamente frente la una de la otra, lo que significa que solamente un par de ruedas necesita un solo cálculo, con una rueda que recibe un número negativo mientras la otra recibe positivo. Los diseños de tres ruedas no tienen ningún par de ruedas, lo que significa que serán necesarios tres cálculos..

CONTROL DE UN ROBOT OMNI RUEDA.
Para que un robot omni-rueda pueda dirigirse en un ángulo determinado, cada rueda debe girar en una velocidad y dirección particular. Ya que el robot se mueve en ángulos, este tendrá que hacer cálculos trigonométricos para determinar estas velocidades de rueda. Sin embargo los Cálculos trigonométricos son no siempre posibles, ya que el control de un robot de omni-rueda depende muchísimo de su capacidad de tratamiento computacional. Si se usa un ordenador personal o palmpilot como controlador de robot, este podría hacer miles de cálculos por segundo.
Sin embargo la mayor parte de microcontroladores no pueden hacer esto. Un microcontrolador (como un PIC O AVR), no hacen esto. Pueden hacer aproximadamente tres cálculos por segundo. Pero lamentablemente el robot también tiene que leer de los sensores, servos, interpretar datos, y muchas otras cosas. Una solución a esto, seria usar lo que llaman una TABLA TRIGONOMÉTRICA DE CONSULTA. Básicamente se hacen los cálculos a mano y se guardan en la memoria, y en el programa se refiere a esta como una lista. Esta no deberá tener una precisión del 100 %, o ser un código elegante, pero si deberá ser mucho más rápido - y estar equilibrado en velocidad y precisión. Una precisión dentro de 10 grados trabajara bastante bien.
Como control de posición, esto es imposible con un robot omni-rueda. Los omni-rueda trabajan sobre la base del desliz de sus ruedas, utilizan cosas como codificadores para posición. Se hace que el robot detecte su entorno para rastrear su movimiento con precisión, el IMU'S, giroscopios, el rastreo visual, etc. trabajarán bien. La optimización del control del actuador es un poco complicada. Hay varias cosas que se tienen que considerar:
-Control de Angulo. Para que un robot omni-rueda se dirija en una cierta dirección, cada motor tiene que ir en una cierta velocidad en relación a los demás. La velocidad no importa, solamente la relación entre motores.
-Velocidad del Motor. Más rápido gira el motor, mas rápido avanza el robot.
-Control Rotacional. Para que un robot omni-rueda pueda girar en una velocidad en particular, se debe subir o bajar igualmente la velocidad de cada motor.
-Velocidad Máxima de Motor. Los motores sólo pueden ir rápido. Cuando se hacen proporciones y adiciones de control rotacional, debe asegurarse que no se esta ordenando que un motor vaya más rápido de lo que el pueda.

Angulo Global. Se puede o no querer controlar el ángulo del robot con respecto a su entorno.
¿Cómo se hace esto? Bueno solo hacer estos cálculos en el siguiente orden:

1) Calcular la relación del motor para calcular el ángulo de movimiento.
2) Calcular la velocidad rotacional constante. Solo sumar o restar alguna constante a la velocidad de movimiento del motor para girar en sentido CW o en sentido CCW.
3) Comprobar y corregir para asegurarse que no se exceda la velocidad máxima del motor. Supongamos que la velocidad máxima es 100, pero sus cálculos de cuatro ruedas piden velocidades de motor en 50,-50,-110, y 110. Bien la proporción es 50/-50/-110/110. Deberá ser X/-X/-100/100, con un valor de X desconocido, basado en una velocidad máxima de 100. Usando algebra, la ecuación entonces es:

50/110 = X/100
X = 45.45 =~46

La velocidad del motor será 46/-46/-100/100.

Nuevamente, este cálculo es más difícil para un robot omni-rueda de tres ruedas, pero el cálculo puede ser hecho de la misma manera. También se puede hacer más lento el robot cambiando en el software la velocidad máxima.

Desventajas del Omni ruedas.
Lamentablemente hay varias desventajas en la omni-tracción. Las Omni-ruedas tienen pobre eficiencia ya que no todas las ruedas giran en la dirección del movimiento del robot. También hay altas pérdidas por la fricción. El control de posición no trabajará debido a los resbalones. Y hay pérdida computacional por el cálculo de ángulos con trigonometría.

Procedimiento de Construcción de un robot Omni-Ruedas.
Si le gustaría tener su propio robot omni-rueda de cuatro ruedas, las imágenes debajo le muestran como construir uno. En primer lugar, esta es la forma como conectar la omni-rueda a los servos. Taladrar agujeros en la rueda, y conectar el eje del servo con tornillos:

Debajo están las imágenes tomadas durante la fabricación, servirán si se desea construir un robot omni-rueda parecido. Notar que el revestimiento blanco es HDPE (High Density PolyEthylene), y el metal son hojas delgadas de aluminio. Se usan espaciadores largos para unir la parte superior e inferior. Se usan dos pilas NiMH de 6V, una para alimentar los motores, la otra para alimentar los sensores y el microcontrolador.







Características Adicionales en Fuzzy.
La Fuzzy Lógic, o Lógica Difusa, es una buena alternativa para iniciarse con la IA en un robot. Básicamente mientras más sensores tenga el robot, este deberá tomar decisiones "más inteligentes" Prácticamente se le da un juego de "emociones":

Cansado: baja velocidad
aburrido: al azar activar otras emociones
temor: evite cosas que se mueven.
Claustrofobia: mantenerse en areas iluminadas, abiertas.
Hambre: alerta de batería baja, ser más eficiente.
Curiosidad: explore más.
Frustración: intente algo nuevo para alcanzar el objetivo

Sensores Usados.
Tres telémetros exploradores IR SHARP trazaran un mapa de todo delante de ellos. El Trazar un mapa 2D es hecho en 180 grados, detectando objetos a una distancia de hasta 20ft, y con una velocidad de actualización de 3Hz. Esto hizo tomar decisiones inteligentes y satisfactorias para la navegación. Aquí se puede identificar todos los objetos, y el tamaño de los objetos delante de ellos para determinar si hay bastante espacio entre los objetos para pasar o si deberá dar la vuelta.
Tres sónares, que serán usados principalmente como sensores de colisión. Si esta es la primera vez que usa el sónar, entonces este es un buen experimento educativo. Dos sónares de ángulo amplio son más que suficientes.
Usar dos pares de detectores IR si se desea modificar el robot como seguidor de línea.


domingo, 14 de febrero de 2010

SONAR para ROBOT

SONAR
Todos sabemos como trabaja un sónar, el ejemplo mas típico y modelo para el desarrollo de este sistema es el murciélago. Este emite un sonido (chillido ultrasónico), entonces “ve” el entorno escuchando la llegada de los sonidos que regresan, con los que dibuja un mapa mental. Esto es porque el sonido requiere tiempo para viajar distancias. Más lejos la distancia, más tiempo toma el sonido para regresar. Estas instrucciones sobre sónar le guiaran como para poner en práctica el sónar en su ROBOT.




Como trabaja el Sonar.
El microcontrolador le dice a su sónar que empiece a emitir. Entonces el sónar emite un sonido inaudible, después de transcurrido el tiempo descubre el eco de vuelta. Entonces inmediatamente envía una señal de voltaje al microcontrolador, el que manteniendo la cuenta del tiempo que pasa, puede calcular la distancia del o los objetos detectados.
Disponibilidad y Costo
Hoy un sónar para Robot puede ser comprado muy barato, normalmente alrededor $20-$30 cada uno.
Calculando la Distancia con el Tiempo
La velocidad del sonido en el aire es aproximadamente 343 m/s, la temperatura y la humedad no afectan mayormente estos parámetros. Esto es aproximadamente 0.9ms/foot. La velocidad de sonido en el agua salada es aproximadamente de 1500 m/s, y en agua dulce de 1435 m/s. Ejemplo: Supongamos que un robot está sobre la tierra y tiene un sónar. El sónar envía un sonido a un objeto que está alejado a una distancia desconocida. Esto quiere decir que el sonido tiene que viajar esta distancia desconocida dos veces (ida y vuelta). Ahora supongamos que el microcontrolador dice que el tiempo transcurrido es de 0.03 segundos. ¿A cuántos metros de distancia esta el objeto del robot?
Calculando:
Velocidad del sonido * tiempo transcurrido / 2 = distancia al objeto

343 m/s * 0.03 s / 2 = 5.145 m


El Proceso de Sónar.
El microcontrolador envía señales de onda cuadrada para controlar la línea del sónar.
El Sónar detecta la onda cuadrada con la orden de empezar, con la cual el sónar inicia su proceso.
-Después de algunos ciento de us de retraso desde la orden de inicio, la parte electrónica empieza a trabajar.
-El Microcontrolador inicia un temporizador (para contar el tiempo que toma el sonido para viajar)
-El Sónar emite un tren de pulsos en una determinada frecuencia
-Pulsos de Parada.
-Se detecta un eco de retorno (o se llama una interrupción si no hay eco de retorno)
-El Sónar inmediatamente emite una onda cuadrada sobre la línea de salida al Microcontrolador.
Este detecta la onda cuadrada.
El Microcontrolador detiene al timer.

Conociendo el tiempo transcurrido, usa la ecuación para calcular la distancia.

Pseudo CODE en C
Salida high (pin_D5); //señal de comando pin en estado alto
retardo us (12); // esperar que el circuito del sónar detecte el estado alto del pin.
Salida low (pin_D5); // señal de comando pin en estado bajo
Retardo us (210); // tiempo que toma el sónar para emitir el sonido después de recibir una orden.
Colocar TIMER1 (0); // puesta a cero del timer si no hay desbordamientos
mientras (get TIMER1()100); // espera hasta que la salida vaya a nivel bajo o el tiempo se sobrepase.
Distancia=get TIMER1()//factor de conversión; //convertir el tiempo transcurrido a pulgadas.
Requerimientos de Energía.
Normalmente un sónar típico solo requiere líneas para la tierra, alimentación, para la señal de comando, y para las señales recibidas (ecos). El módulo de sónar típico consume aproximadamente 100 ma en el modo de standby, esto significa que no esta emitiendo ningún pulso. Sin embargo cuando esta en uso, el consumo de energía salta instantáneamente hasta 2 Amperios.

Parecidos a los motores, ellos pueden absorber grandes cantidades repentinas de corriente que causa repentinas caídas de voltaje sobre las pilas (p. ej. un pin hace que el microcontrolador se reinicialice). Este enorme salto puede causar estragos en los microcontroladores y otros circuitos que compartan la misma fuente de energía. Un microcontrolador no trabajará y solamente se reinicializará si el voltaje cae demasiado bajo.

Sin embargo, si se diseña la fuente de energía con un condensador, este deberá suprimir estos picos repentinos pero de corta duración de voltaje. Se debería tener una fuente para los motores, pero si se toma la alimentación de otra fuente separada de energía, es aconsejable colocarle un condensador de ~500uF en el cable de salida de alimentación.


DISTANCIA (Máxima y Minima)
cuando es emitido el pulso de sonido este se extiende Radialmente, por lo que la fuerza de la señal se reduce por 1 / (distancia^2) conforme el pulso se aleja del transductor. Esto quiere decir que la máxima distancia que puede medir el sensor cae rápidamente al mínimo. Por lo general hay circuitos de amplificación añadidos al sónar para compensar esto, pero aun así la distancia máxima de un sónar típico barato es no es mayor que 6-25 pies.

Hay también una distancia mínima, esto significa que si un objeto está muy cerca (dentro de una pulgada o dos) del emisor del sónar, este no detectará el objeto (o al menos no con exactitud). Esto es porque el sonido es realmente rápido, tan rápido que la electrónica no puede trabajar con la rapidez necesaria con el tiempo que toma el sonido para regresar al sensor. Para evitar esto, asegurarse que el sónar este instalado una pulgada o más atrás del frente del robot, o este no detectará y evitara colisiones con la pared.
Reflectancia del Sonido / Propiedades de Absorción de los Materiales.
Lamentablemente, los ecos no son completamente un producto de la distancia. Hay muchos otros factores que pueden cambiar las lecturas. El sonido reflejado de una almohada y de una pared sólida no será el mismo. Si el objeto está en un ángulo cerrado, mucho menos sonido sería reflejado. Las propiedades superficiales de los objetos también pueden hacer una diferencia. Una alfombra y un espejo darían lecturas diferentes. El sonido también puede "perderse" al saltar alrededor de varias paredes durante algún tiempo, y luego volver al sónar como " un eco fantasma" o aún peor, esto podría causar activaciones falsas haciendo que el robot "vea" objetos que realmente no existen.


Utilización de Sonar Múltiple.
Supongamos que el robot tiene múltiples sensores de sónar sobre el. ¿Cómo hacer para que un sónar no detecte el eco causado por otro sensor de sónar? Una solución sería dirigir el sónar en ángulos diferentes (fuera del ángulo de detección del tipo de sónar que se usa). Típicamente esto estaría alrededor de ~20 grados.
Otra solución a este problema sería tener cada sónar funcionando en una frecuencia diferente de sonido (esto no es fácil hacer!). Finalmente, hay la solución por software. Con este método cada sónar funcionaria a diferentes tiempos. El robot esperaría que un sónar reciba un eco, más un tiempo adicional para que se disipen los ecos fantasmas, antes de que el siguiente sónar sea activado. Pero, si se tiene mas de 2 o 3 sónares, esto puede tomar una enorme cantidad de tiempo! Entonces se pueden cosas como instalar sónares que funciones al mismo tiempo en los lados opuestos del robot. O hacer algún patrón de funcionamiento para cada sonar de manera que cada sónar tenga una minima posibilidad de interferencia con el otro.


Interpretación Avanzada de Señal.
Los datos de sónar pueden ser procesados en la misma forma que un Telémetro IR Sharp.

jueves, 11 de febrero de 2010

FOLLETO DE VISION ARTIFICIAL.

FOLLETO DE VISION ARTIFICIAL


INDICE:



1- SENSORES DE COLOR
Entendiendo el color.
Color de los objetos.
Sensor básico de color.
Correspondencia de semejanza vs. Umbral
Armando y programando el sensor de color.
Distancia de detección con sombras.
Modulación.

2- VISION ARTIFICIAL (COMPUTARIZADA)
Introducción a la Visión por Computadora.
Parte 1: La Visión Biológica.
El Ojo.
Conos y Bastones.
Ojos Compuestos.
Nervio Óptico “Procesamiento de Imagen”
Procesamiento del Cerebro.
Algo más sobre el Procesamiento Cerebral.
Procesamiento Estereoscópico.


3- PARTE 2: PROCESAMIENTO DE IMAGEN POR COMPUTADORA.
Captura de la Imagen.
Pixeles y Resolución.
La Matrix.
Disminución de la Resolución.
Umbral y Heurística.
Inversión de la Imagen.
Brillo y oscuridad.
Adenda: 1D, 2D, 3D, 4D


4- PARTE 3: ALGORITMOS DE VISIÓN POR COMPUTADORA.
Visión por Computadora vs. Visión de Maquinas.
Detección de Perfiles o Bordes (Edge Detectión).
Detección de Formas/ Siluetas y Reconocimiento de Patrones.
(Shape Detection and Pattern Recognition)
Masa Media y Detección de Mancha
(Middle Mass and Blob Detection).
Clasificación de Pixeles (Pixel Classification)
Correlacion de imagen (compatibilidad de plantillas)
(Image Correlation (Template Matching)
Reconocimiento Facial (Facial Recognition).
Visión Estereoscópica (Stereo Vision).
Caso 1: Cámaras Paralelas.
Caso 2ª: cámaras no paralelas, rotación sobre el eje Y.
CASO 2b: Cámaras no paralelas, Rotación sobre el eje Xs.
CASO 2c: Cámaras No Paralelas, Rotación sobre el eje Z.


5- PARTE 4: ALGORITMOS PARA EL MOVIMIENTO.
Detección de movimiento (movimiento de bulto)
(Motion Detection (Bulk Motion)
Seguimiento (TRACKING).
El cruzamiento (croosover)
Flujo óptico (optical flow)
Aplicaciones para el Flujo Óptico
Medidas de Altura (para velocidades constantes)
Altitude measurement (for constant Speed)
Medidas de velocidad para altura constante.
Velocity measurement (for constant altitude).
Seguimiento (Tracking).
Análisis de cuadros 3D (3D Scene Analysis)
Problemas con el flujo Óptico.
Supresión del Fondo (Background Subtraction)
Seguimiento de Características (Feature Tracking)
Seguimiento Visual Asistido (Visual Servoing)
Histograma-concepto.

60 PAGINAS EN PDF. INFORMES reyhalcon@hotmail.com

VISION ARTIFICIAL-Sensores de Color

EL COLOR EN REALIDAD NO EXISTE!!!!!!!!

¿Entonces... En cuanto al azul y verde y el naranja? …….son inventos de la imaginación…… ¿Confuso?..... La luz, una onda electromagnética, viene en longitudes de onda diferentes. Estas longitudes de onda entran en el ojo, la energía es absorbida por las células al fondo del ojo. La energía de la luz entonces es convertida en energía química, ya que es procesada por millones de neuronas especializadas, y después de unas fracciones de segundo mágicamente el cerebro dice que la longitud de onda de 450 nm es azul y la longitud de onda de 520 nm es verde.
 
COLOR DE LOS OBJETOS.
Nuevamente, los objetos en realidad no tienen ningún color - es un invento de la imaginación. Por ejemplo, cuando se mira una manzana roja, la manzana no es en realidad roja. Lo que sucede es que la superficie molecular sobre la manzana refleja las longitudes de onda que aparecen rojas en el cerebro y absorbe otras longitudes de onda molecularmente de modo que no puedan ser vistas.

¿Ahora si su robot quiere ver una manzana roja, cómo haría esto?.... RESPUESTA, Bueno, necesita un sensor que puede ver el color rojo..... ¡ERROR! En realidad, necesita un sensor que pueda "ver" la diferencia entre el rojo y otro color.

SENSOR BASICO DE COLOR.


Supongamos que se tiene un sensor que puede ver muchos colores diferentes, como una fotorresistencia. ¿Cómo usar este sensor para descubrir manzanas rojas entre manzanas verdes o descubrir lentejas de chocolate de colores? Bien, considerar las comparaciones de resplandor.




Cómo se haría esto? Bien, conseguir un led azul, un led verde, y un led rojo. Entonces alumbrar a los chocolates con un led a la vez, y registrar los valores del resplandor. Obviamente, los chocolates azules darán los valores de resplandor más altos cuando ilumina el led azul, pero dará valores bajísimos de otra manera.
Pero.... cómo se sabría la diferencia entre el amarillo y el naranja?.... Bien, el color naranja esta más cercano al color rojo en el espectro de luz, y como tal reflejara más luz roja que el color amarillo.

CORRESPONDENCIA DE SEMEJANZA vs. HUMBRAL.


En realidad se deben calibrar los sensores antes de que trabajen. Esto quiere decir que se debe usar el sensor para detectar el objeto, registrar las lecturas, luego hacer una carta usando estos datos. Así cuando el robot esta en funcionamiento y detecta el mismo objeto, puede comparar la semejanza de la nueva lectura con la lectura de calibración.
ARMANDO Y PROGRAMANDO EL SENSOR DE COLOR.


Para detectar dos colores de un número infinito de sombras, solamente se necesita un led y un sensor. Por ejemplo, en un detector de emisor infrarrojo se verá un diodo emisor claro (led) y un diodo detector negro (fototransistor):



SI DESEA  EL FOLLETO COMPLETO DE VISION ARTIFICIAL (60 PAGINAS EN PDF) EL COSTO ES DE 10.00 NUEVOS SOLES. INFORMES: reyhalcon@hotmail.com

miércoles, 3 de febrero de 2010

ROBOTS-Reconocimiento de Voz

CIRCUITOS DE RECONOCIMIENTO DE VOZ
En un futuro próximo, el reconocimiento de voz será el nuevo método para controlar aplicaciones en juguetes, instrumentos, computadotas y robótica. Hay un enorme mercado comercial que espera que esta tecnología madure.Este artículo detalla la fabricación de un circuito de reconocimiento de voz autónomo, entrenable que puede ser interconectado para controlar sistemas eléctricos, robots, instrumentos de prueba, la TV, el grabador de vídeo, etc. El circuito es "entrenado" (programado) para reconocer las palabras que se desea reconozca.


El controlar y comandar una aplicación (el ordenador, el grabador de vídeo, el sistema de seguridad, el TV, etc.) usando comandos de voz lo hace más fácil, aumentando la eficacia y la eficiencia de trabajar con este dispositivo.
En su reconocimiento de voz de nivel básico permite al usuario realizar tareas paralelas, p. ej. si las manos y los ojos están ocupados en otra tarea, y seguir trabajando con el pc o cualquier otra tarea. Este circuito permite experimentar con muchas facetas de la tecnología de reconocimiento de voz.
El corazón del circuito es el circuito integrado de reconocimiento de voz HM2007. El chip proporciona las opciones de reconocer 40 palabras de 0.96 segundos de duración o veinte palabras de 1.92 segundos de duración. Este circuito permite al usuario escoger ya sea las palabras de 0.96 segundos de longitud (vocabulario de 40 palabras) o la segunda opción de longitud de palabras de 1.92 (vocabulario de 20 palabras). Como memoria el circuito usa una RAM estática de 8 X 8 kB.
El chip tiene dos modos operacionales; modo manual y modo de CPU. El modo de CPU es diseñado para permitir trabajar al chip bajo una pc. Esto es un acercamiento atractivo al reconocimiento de voz por compùtadora porque el chip de reconocimiento de voz funciona como un coprocesador a la CPU principal. Las funciones de escucha y reconocimiento no ocupan el tiempo de la CPU. Cuando el HM2007 reconoce una orden, puede enviar una interrupcion a la CPU de la pc y luego retransmitir el código de la orden. El chip HM2007 puede ser implementado en cascada para proporcionar una biblioteca más grande de reconocimiento de palabras. El circuito SR-07 del ejemplo funciona en el modo manual. El modo manual permite construir una tabla de reconocimiento de voz autónomo que no requiere una pc y puede ser integrado en otros dispositivos para utilizar el control de voz.

APLICACIONES.

- Mando y control de aplicaciones y equipos.
- Sistemas telefónicos de ayuda.
- entrada de Datos
- Control por voz de juguetes
- Sistemas de seguridad de reconocimiento de voz.

PROGRAMA.
Normalmente la mayor parte de los sistemas de reconocimiento de voz disponibles hoy son programas que se usan en las pcs. Estos programas funcionan continuamente en el sistema operativo de las pcs (windows, OS/2, etc.). Estos programas requieren que el ordenador sea equipado con una tarjeta de sonido compatible. La desventaja en este metodo es la necesidad de una pc, y no es económicamente viable para los fabricantes añadir sistemas informáticos para controlar una lavadora o el grabador de vídeo. Además hay una sensible reducción en la velocidad de operación y en la función de la pc cuando se habilita el reconocimiento de voz.

APRENDIENDO A ESCUCHAR.
Tomamos nuestra capacidad de escuchar como algo natural. Por ejemplo somos capaces de escuchar a una persona hablando entre varios en una fiesta. Nuestro subconsciente filtra las conversaciones extrañas y el ruido. Estas capacidades de filtración están fuera de las capacidades de los sistemas actuales de reconocimiento de voz. El reconocimiento de voz no es el entendimiento de las palabras. El entendimiento del significado de las palabras es una función intelectual más alta. Una pc puede responder a un una orden verbal, pero eso no significa que entiende la orden verbal. ¡El sistema de reconocimiento vocal un día tendrá la capacidad de distinguir matices lingüísticos y el significado de las palabras.

DEPENDIENTE / INDEPENDIENTE
El reconocimiento de voz es clasificado en dos categorías, el dependiente del operador y el independiente del operador.

DEPENDIENTE DEL OPERADOR.
Los sistemas son entrenados por el individuo que usará el sistema. Estos sistemas son capaces de abarcar una mayor cantidad de órdenes y tiene el 95 % de exactitud para el reconocimiento de las palabras. La desventaja de esto consiste en que el sistema sólo responde con exactitud al individuo que entrenó el sistema. Este es el método más común empleado en el software para PCS
INDEPENDIENTE DEL OPERADOR.
Es un sistema entrenado para responder a las palabras independientemente de quien las diga. Por lo tanto el sistema debe responder a una gran variedad de modelos de palabras, inflexiones y pronunciación de la palabra objetivo. La cantidad de palabras de ordenes es por lo general inferior que el sistema dependiente sin embargo mantiene la alta exactitud dentro de los límites de procesamiento. Las exigencias industriales mas a menudo necesitan los sistemas de voz independientes, como el sistema AT*T usado en los sistemas telefónicos.

RECONOCIMIENTO DE ESTILOS.
Los sistemas de reconocimiento de voz tienen otra característica que concierne el estilo de palabras que ellos pueden reconocer. Esta característica es el estilo, son tres estilos de palabras: aislado, unido y continuo.

AISLADO los sistemas de reconocimiento de voz solamente pueden manejar las palabras que son habladas separadamente. Estos son los sistemas de reconocimiento más comunes disponibles hoy. El usuario debe hacer una pausa entre cada palabra u orden hablada. El circuito de reconocimiento es configurado para identificar palabras aisladas de 0.96 segundos de longitud.

CONECTADO es el punto medio entre el reconocimiento de la palabra aislada y la palabra continua. Permite a los usuarios hablar múltiples palabras. El HM2007 puede ser configurado para identificar palabras o frases de 1.92 segundos de longitud. Esto reduce el número del vocabulario de reconocimiento de palabras a 20.

CONTINUO es la conversación natural que usamos en la vida diaria. Es sumamente difícil para un sistema reconocedor el seguir el texto cuando las palabras parece que se combinasen. ¿Por ejemplo, " Hola, cómo esta usted? " suena como " Hola. comtaste " los sistemas de reconocimiento Continuo que están en el mercado todavía estan en continuo desarrollo.

CIRCUITO DE RECONOCIMIENTO DE VOZ.
El circuito de demostración HM2007 funciona en el modo manual. Este modo usa un teclado numérico simple y un display digital para la comunicacion y la programacion del chip HM2007.

figura 1
teclado: el teclado es de 12 pulsadores.

Cuando el circuito es energizado, el HM2007 verifica la RAM estática. Si toda la prueba esta bien, el display digital muestra "00" y se enciende el led rojo (LISTO). Lo que indica que está en espera de una orden.

ENTRENAMIENTO.
Para entrenar el circuito, se comienza por presionar sobre el teclado numérico el número de palabra que se quiere entrenar. El circuito puede ser entrenado para reconocer hasta 40 palabras. Usar cualquier número entre 1 y 40. Por ejemplo presionar el número "1" para entrenar la palabra número 1. Cuando se presiona el número (s) sobre el teclado numérico el led rojo se apagará. Y el número es mostrado sobre la pantalla digital. Luego presione " *" para el entrenamiento. Cuando es presionado " *" prepara el chip para escuchar una palabra de entrenamiento y el led rojo se enciende nuevamente. Ahora decir claramente en el micrófono la palabra que se quiere que el circuito reconozca. El led debería parpadear momentáneamente, esto es una señal que la palabra ha sido aceptada.

Seguir entrenando nuevas palabras en el circuito, usando el procedimiento descrito. Presionar "2" después "*" para entrenar la segunda palabra etcétera. El circuito aceptará hasta cuarenta palabras. No se tiene que entrar las 40 palabras en la memoria para usar el circuito. Se puede usar tantos espacios de palabra como se desee.

PRUEBA DE RECONOCIMIENTO.
Ya que el circuito esta continuamente en escucha. Repetir una palabra entrenada en el micrófono. El número de la palabra sera mostrado en la pantalla digital. Por ejemplo si la palabra "directorio" fue entrenada como la palabra número 25, diciendo la palabra "directorio" en el micrófono, se mostrara el número 25.

CODIGOS DE ERROR.
El chip proporciona los siguientes códigos de error:

55 = palabra muy larga.
66 = palabra muy corta.
77 = palabra no almacenada.

ENTRENANDO AL HM2007
LIMPIANDO LA MEMORIA
Para borrar todas las palabras en la memoria RAM presionar "99" en el teclado numérico luego presionar " *" . La pantalla digital mostrara rápidamente los números del 1 al 40, limpiando la memoria.

Para borrar un solo espacio de palabra presionar el número de la palabra que se quiere limpiar, luego presionar " *".

CONSTRUCCION DEL CIRCUITO.
El diagrama esquemático es mostrado en la figura 1. Se necesitan tres placas de PCB para este proyecto, ver la lista de componentes. Los componentes son montados sobre el lado superior de la placa, ver la Figura 3. Iniciar la construcción soldando las bases IC sobre la placa. Después montar y soldar todas las resistencias. Ahora montar y soldar el cristal de 3.57 MHz y el led rojo. El Terminal largo del led es positivo. Después soldar los condensadores y el regulador de voltaje 7805. Soldar los siete ejes de fijación de posición del teclado numérico a la tarjeta de circuito impreso principal como se muestra en la figura 2 y 3. Después soldar los 10 ejes de fijación de la placa del display a la tarjeta de circuito impreso principal.


                                                                 figura 3

SISTEMA INDEPENDIENTE.
Este circuito de demostración permite experimentar con sistemas dependientes así como independientes. El sistema normalmente es entrenado como dependiente. Para entrenar el sistema para reconocimiento independiente (Multiusuario) usar la técnica siguiente. Usar cuatro espacios de palabra para cada palabra objetivo. Arreglar las palabras de modo que las palabras puedan ser reconocidas solamente descifrando el digito menos significativo del número sobre la pantalla digital.
Para lograr esto, los espacios de palabra 01, 11, 21 y 31 son asignados a la primera palabra objetivo. Sólo descifrando el dígito menos significativo del numero, en este caso 1 "de X" "1" (donde X es cualquier número del 0 - 3) se puede reconocer la palabra objetivo.
Hacer esto para los espacios de palabra restantes. Algunas veces, la segunda palabra objetivo usará los espacios de palabra 02, 12, 22 y 32. Seguir de esta manera hasta que todas las palabras sean programadas.

Si es posible, usar diferente personas que hablen al sistema. Esto permitirá al sistema reconocer diferentes voces, inflexiones y pronunciaciones de la palabra objetivo. Hay ciertas advertencias que deben tomarse en cuenta. Primero del número de palabras del vocabulario para el sistema independiente. La efectividad del vocabulario decae de cuarenta a diez palabras. El circuito de descifrado que reconoce el numero de la palabra y realiza la función debe ser diseñada para reconocer los códigos de error 55, 66 y 77 y no confundirlos con los espacios de palabra 5, 6 y 7.

SISTEMA DE SEGURIDAD.
El HM2007 no fue diseñado para su empleo en un sistema de seguridad de voz. Pero esto no impide experimentar con el para este objetivo. Se puede usar tres o cuatro palabras clave que deben ser habladas y reconocidas en la secuencia correcta para activar un circuito que abra una cerradura o permita la entrada.

MODO CPU.
El chip de reconocimiento HM2007 esta hecho para ser conectado a un sistema pc, para esto conectar el chip al bus de la pc, el puerto paralelo o el serie no son un problema. Sin embargo el circuito requerirá el drive necesario para el entrenamiento, control, el almacenaje y el reconocimiento.