Preguntas frecuentes#
¿Cuáles son las diferencias entre la CMUcam1 y la CMUcam2?#
Introducción#
La CMUcam2 incluye toda la funcionalidad de la CMUcam1 en forma mejorada y mucho más. A continuación describimos brevemente la nueva funcionalidad y las diferencias. Quizás también quiera consultar la respuesta a la pregunta de cómo decidir si comprar una CMUcam1 o una CMUcam2.
Descripción general del hardware#
Hay dos diferencias principales de hardware que son importantes: la CMUcam2 usa un procesador diferente al de la CMUcam1 y la CMUcam2 incorpora un chip de búfer de fotogramas mientras que la CMUcam1 no.
La CMUcam2 usa el procesador SX52 y la CMUcam1 usa el procesador SX28, ambos son de la serie de procesadores SX de Ubicom. En ambos casos, el procesador funciona a 75 MHz, por lo que no hay diferencia en la velocidad del procesador ni en la potencia computacional. Las ventajas del procesador SX52 son que tiene más RAM (262 frente a 136 bytes), más ROM (4096 frente a 2048 palabras) y más pines de E/S. Más RAM y ROM significaba que podíamos escribir código más complejo, lo que nos permitió incorporar más funcionalidad en la CMUcam2. El mayor número de pines de E/S significaba que teníamos más pines disponibles para otras funciones, como más servos, más puentes de configuración, etc.
La gran diferencia entre los dos sistemas es que la CMUcam2 incluye el chip de búfer de fotogramas AL422B de AverLogic, mientras que la CMUcam1 no. Esto permite que el hardware de la CMUcam2 capture rápidamente un único fotograma completo y lo almacene en la memoria del búfer de fotogramas. Esto tiene varias ventajas:
Procesamiento más complejo. En la CMUcam1 el procesador tenía que procesar el flujo de datos de píxeles sobre la marcha a medida que lo emitía el módulo de cámara. Este diseño ayudó a reducir la complejidad y el costo del hardware del sistema. Sin embargo, limitaba la complejidad del procesamiento porque tenía que realizarse en tiempo real entre píxeles o entre filas de la imagen. Debido a que el procesador de la CMUcam2 accede a los datos de píxeles desde el búfer de fotogramas a su propio ritmo, puede realizar un procesamiento más complejo por píxel.
Procesamiento más rápido. La otra cara de no tener que permanecer sincronizado con el flujo de píxeles del módulo de cámara es que el procesador no tiene que esperar al módulo de cámara cuando necesita datos de píxeles. Eliminar este tiempo de espera significa que el procesador de la CMUcam2 puede realmente procesar un fotograma más rápido de lo que puede la CMUcam1, aunque el procesador no sea más potente.
Múltiples operaciones por fotograma. Debido a que la imagen almacenada en el búfer de fotogramas no cambia, la CMUcam2 puede realizar múltiples operaciones sobre un solo fotograma. Así, por ejemplo, podría detectarse movimiento, calcularse estadísticas de región y rastrearse múltiples colores, todo en un solo fotograma.
Mejores volcados de fotogramas. Debido a que la CMUcam1 tenía que sincronizar los datos del volcado de fotogramas transmitidos con el flujo de datos del módulo de cámara, solo podía enviar una columna de datos por fotograma de la cámara. Esto significaba que diferentes partes de la imagen se capturaban en momentos diferentes, por lo que los objetos que se movían rápidamente aparecían difuminados en los volcados de fotogramas de la CMUcam1. Dado que la CMUcam2 transmite la imagen a partir de los datos fijos del búfer de fotogramas, esto ya no es un problema.
Mejor manejo de velocidades en baudios más bajas. Tener un búfer de fotogramas también significa que la temporización de los datos transmitidos por la CMUcam2 puede desacoplarse por completo de la temporización de los datos leídos del módulo de cámara. Esto significa que los datos de la CMUcam2 de los volcados de fotogramas y de los modos de línea de mapa de bits no cambian cuando cambia la velocidad en baudios de las comunicaciones; la CMUcam2 comunicará los mismos datos de fotograma o de mapa de bits al procesador anfitrión sin importar la velocidad en baudios. Sin embargo, el número de fotogramas procesados por segundo aún puede cambiar con velocidades en baudios más lentas, porque todavía necesita finalmente terminar de enviar todos los datos de un fotograma antes de que puedan procesarse los siguientes.
Mejor funcionamiento del módulo de cámara. Para que el procesador de la CMUcam1 pudiera permanecer sincronizado con el flujo de datos del módulo de cámara, la velocidad de fotogramas del módulo de cámara tuvo que reducirse a 17 fps. El búfer de fotogramas que utiliza la CMUcam2 nos permite operar el módulo de cámara a la velocidad de fotogramas completa. Una ventaja de esto es que el ajuste automático de la exposición y del balance de blancos de la cámara puede operar más rápidamente porque solo puede realizar un único ajuste por fotograma y ahora hay más fotogramas por segundo. La segunda ventaja es que la salida de vídeo analógico en blanco y negro (que solo funciona cuando el módulo opera a la velocidad de fotogramas completa) puede utilizarse mientras la CMUcam2 procesa los datos de imagen, lo que no era posible con la CMUcam1.
Descripción general de la funcionalidad#
La CMUcam2 implementa toda la funcionalidad de la CMUcam1 y también añade mucha funcionalidad nueva. A continuación se presenta un resumen.
Seguimiento de color. La CMUcam2 implementa el seguimiento de color igual que lo hacía la CMUcam1. Al igual que en la CMUcam1, se implementa un modo de línea de mapa de bits opcional que transmite un mapa de bits de los píxeles rastreados. También hay algunas mejoras. Hay un nuevo modo de línea opcional que proporciona estadísticas de los píxeles rastreados para cada fila, incluidas las posiciones media, mínima y máxima de los píxeles rastreados. Esto es muy útil para el seguimiento de líneas. También hay un nuevo modo opcional en el que la interpretación de los límites de seguimiento puede invertirse. En este modo, los píxeles fuera de los límites de seguimiento se consideran «buenos». Esto es útil para rastrear un objeto contra un fondo homogéneo – piense en los efectos especiales de pantalla azul. También es útil para detectar bordes cuando está habilitada la diferenciación de píxeles (descrita a continuación). La opción de filtrado de ruido también se ha mejorado para permitir el ajuste de la cantidad de filtrado en situaciones ruidosas.
Estadísticas de imagen. La CMUcam2 implementa el cálculo de las estadísticas de media y variación de las regiones de la imagen igual que lo hacía la CMUcam1. Al igual que en la CMUcam1, se implementa un modo de línea opcional que transmite la media de cada línea de la imagen. También hay un nuevo modo de línea mejorado que opcionalmente incluye información de variación línea por línea.
Detección de movimiento. Completamente nuevos en la CMUcam2 son los comandos de detección de movimiento (diferenciación de fotogramas). Estos comandos pueden utilizarse para indicar a la CMUcam2 que capture una versión de baja resolución de la imagen actual y la compare continuamente con las nuevas imágenes entrantes. Los paquetes de la CMUcam2 informan si alguna parte de la imagen cambia más de una cantidad especificada, lo que podría indicar potencialmente movimiento. Estos paquetes pueden describir el centroide y la extensión de los bloques de imagen que han cambiado o proporcionar un mapa de bits de qué bloques de imagen han cambiado. Este modo también puede combinarse con la diferenciación de píxeles (descrita a continuación) para hacer que la detección de movimiento sea más robusta ante los cambios de iluminación.
Histogramación. Completamente nuevos en la CMUcam2 son los comandos de cálculo de histogramas. Estos comandos pueden utilizarse para capturar un histograma unidimensional de un solo canal de color con una resolución de hasta 28 casillas. Los histogramas proporcionan información útil que resume la apariencia de una imagen. Con programación adicional en el procesador anfitrión, esta información puede utilizarse para ayudar a detectar obstáculos, objetos específicos o ubicaciones.
Ventaneo de imagen. La CMUcam2 implementa la capacidad de restringir el procesamiento a una pequeña región (subventana) de la imagen completa igual que lo hacía la CMUcam1. En la CMUcam2 esta función es aún más útil porque puede utilizarse para examinar detenidamente subventanas de una sola imagen almacenada en el búfer de fotogramas. Además, reducir el tamaño vertical de la ventana puede utilizarse para aumentar enormemente los fotogramas procesados por segundo al reducir considerablemente el número de píxeles que la CMUcam2 necesita procesar.
Personalización de paquetes de salida. La CMUcam2 implementa una personalización de paquetes mucho más flexible que la CMUcam1. Hay comandos que permiten al usuario personalizar cada paquete generado por cada comando para devolver solo los valores necesarios para una aplicación particular. Esto puede disminuir enormemente la cantidad de datos transmitidos al procesador anfitrión y procesados por él en muchas situaciones.
Diferenciación de píxeles. Completamente nuevo en la CMUcam2 es un modo de diferenciación de píxeles opcional. En el modo de diferenciación de píxeles, los píxeles se preprocesan antes de pasarse al resto del código de la CMUcam2. Este paso de preprocesamiento envía al resto del código nuevos valores de píxel que son la diferencia entre el valor del píxel actual y el anterior. Básicamente, lo que esto hace es filtrar todo excepto los bordes verticales de la imagen. Esta es una operación muy potente y, con programación adicional en el procesador anfitrión, puede utilizarse para ayudar en la detección de obstáculos y el seguimiento de líneas.
Submuestreo. Completamente nuevo en la CMUcam2 es un modo de submuestreo opcional. En el modo de submuestreo, el software de la CMUcam2 reduce la resolución de la imagen de la cámara antes de procesarla. La ventaja de esto es que hay muchos menos píxeles que procesar y transmitir. Debido a que se realiza por software, el submuestreo resulta solo en un aumento muy pequeño de la velocidad de procesamiento. El gran beneficio está en reducir la cantidad de datos transmitidos. En el caso de un volcado de fotograma de imagen, el submuestreo puede reducir fácilmente el tamaño de los datos y, por tanto, reducir el tiempo de transmisión en un factor de 2 o 4 o más. De manera similar, cuando se utilizan los modos de línea de mapa de bits, el tamaño de la imagen de mapa de bits puede reducirse enormemente, disminuyendo la cantidad de datos que un procesador anfitrión tiene que recibir y procesar.
Control de servos. La CMUcam1 original solo admitía un único servo y ese servo solo funcionaba correctamente a velocidades en baudios específicas y cuando la CMUcam1 estaba en modo de transmisión continua. La CMUcam2 admite hasta cinco servos. El código del controlador de servos de la CMUcam2 está implementado como un proceso en segundo plano, por lo que las salidas de los servos siempre permanecen estables y puede utilizarse como se utilizaría cualquier otro controlador de servos. Además, la CMUcam2 puede configurarse para controlar automáticamente los servos de panorámica e inclinación. En este modo, la CMUcam2 actualizará las posiciones de los servos cada vez que se le ordene calcular los datos de seguimiento de color.
Ahorro de energía. Completamente nuevos en la CMUcam2 son los modos de ahorro de energía. En algunas aplicaciones no se requiere que la CMUcam2 procese datos de imagen de forma continua. En estos casos, se puede ordenar a la CMUcam2 que entre en una variedad de modos de apagado (o suspensión). No se producirán comandos de seguimiento ni control de servos cuando la CMUcam2 esté en uno de estos modos. Enviar un simple comando serie despierta la cámara de nuevo en unos pocos milisegundos.
¿Cuál es la diferencia entre usar el módulo OV6620 y el OV7620 con la CMUcam2?#
Introducción#
En términos de capacidades, el sensor OV7620 es un sensor de mayor resolución (664x492 ubicaciones de sensor en bruto) que el sensor OV6620 (356x292 ubicaciones de sensor en bruto). Pero este hecho tiene muy poco que ver con las cuestiones que surgen al considerar cuál de estos sensores se adapta mejor a su aplicación de la CMUcam2. A continuación se presenta una lista de consideraciones.
Resolución#
Aunque es cierto que el sensor OV7620 es un sensor de mayor resolución que el OV6620, debido al tamaño de memoria fijo del búfer de fotogramas de la CMUcam2, la CMUcam2 solo admite una única resolución de 160x239 para el sensor OV7620. La CMUcam2 admite un modo de baja resolución de 88x143 y un modo de alta resolución de 176x255 para el sensor OV6620. Así que usando el OV6620 en modo de alta resolución se puede lograr en realidad un funcionamiento de mayor resolución que el modo de resolución única disponible para el sensor OV7620.
Velocidad de fotogramas#
Otro problema relacionado con la resolución es la velocidad de fotogramas máxima al procesar continuamente un flujo de imágenes. Cuanto menor es la resolución, menos píxeles necesitan procesarse y mayor es la velocidad de fotogramas alcanzable. Aunque puede lograrse un aumento de la velocidad de fotogramas cambiando la tasa de submuestreo y el tamaño de la ventana virtual, el número real de píxeles que emite el sensor tiene un efecto mucho mayor. Debido a esto, la CMUcam2 puede alcanzar una velocidad de fotogramas mucho mayor cuando el OV6620 se opera en su modo de baja resolución que en el modo de resolución única disponible para el OV7620.
Salida de vídeo analógico#
Otra diferencia entre los dos sensores es el formato de la salida de vídeo analógico de ambos sensores. El sensor OV6620 emite en formato analógico PAL y el sensor OV7620 emite en formato analógico NTSC. En ambos casos, la salida es en blanco y negro.
Es importante señalar que en la mayoría de los usos de la CMUcam2 la salida analógica no se utilizará. En una aplicación típica, los resultados del procesamiento de la imagen o los píxeles en bruto se transmiten digitalmente a través del puerto serie a la computadora anfitriona o al microcontrolador, por lo que esto no es un problema. Sin embargo, si el vídeo en blanco y negro en vivo es importante, entonces quizás quiera tener en cuenta el formato de la salida de vídeo analógico.
Resumen#
Nuestra recomendación es que el módulo OV6620 es la mejor opción para casi todas las aplicaciones, especialmente teniendo en cuenta su menor costo y el tiempo de procesamiento más rápido alcanzable con este módulo. En las raras aplicaciones donde se requiere salida de vídeo analógico monocromo NTSC, quizás quiera considerar el OV7620.
¿Hay algún problema conocido con las versiones actuales del firmware de la CMUcam2?#
Sí. En la versión 1.00 el comando «RM» (Raw Mode) no funcionaba correctamente. La versión 1.01 corrige ese problema.
El firmware de la CMUcam2 es actualizable, pero se necesita un programador SX-Key (o compatible) para hacerlo. Los archivos «hex» de las imágenes de la ROM están disponibles en la página Descargas.