Menu
in

Sentry Gun: Defensa automatizada para el hogar

Sentry Gun es mucho más que una pistola utilizada en la actualidad para jugar paintball. Este sistema, basado en una sencilla y doméstica webcam, se consolida en la práctica como un detector de movimientos capaz de discernir colores, distancias, volumen corporal, y de predecir movimientos y muchas otras particularidades que lo efectivizan en un sistema casi de ciencia ficción. Los automatismos utilizados desde Alien, Robocop y Terminator, hasta Duke Nukem y Half Life, en sus dos versiones, son la realidad de poderosos sistemas actuales de armamento militar. The Sentry Gun: cuando todo lo que intenta huir… se convierte en un blanco móvil.

Sentry Gun: Defensa automatizada para el hogar

El funcionamiento de esta “pistola centinela” se sustenta en sensores que se encargan inicialmente de trazar una suerte de mapa del lugar o espacio físico donde se encuentre montado el sistema. Luego, este sistema (a través de un software específico) comienza a interpolar sucesivas “fotografías” que va tomando del lugar, comparándolas con la referencia inicial. Cualquier cambio detectable en el mapa de bits trazado por los sensores es devuelto al sistema en forma de coordenadas cartesianas (ejes x e y). Y esa información activa servomecanismos que enfocan una pistola de pintura o de bolitas plásticas hacia el objetivo en cuestión. Por último, el software utilizado acciona el sistema de disparo hasta que los sensores detectan que no hay más movimientos en la escena.

Detectores de movimiento

Ejemplos de programas detectores de movimientos que sean freeware o shareware a partir de una webcam doméstica abundan en la Web. De hecho, hace pocos días se ha publicado el último de una larga de lista: Motion Detection. La funcionalidad básica del soft se centra en tomar secuencias fotográficas, e incluso videos completos, de toda la secuencia de movimientos perceptibles. Las zonas que generalmente se detectan cambiantes son coloreadas para una mejor visualización en un monitoreo del sistema. (Ten en cuenta que cuando compras una económica cámara Web, su disco de instalación te proporciona, además de sus drivers, utilidades que siempre están relacionadas con la vigilancia).

Lamentablemente, este tipo de programa no le permite al usuario tener acceso al conjunto de datos que representan la posición dentro del cuadro de un objeto que está moviéndose en la escena. Sólo podemos ver que hay cosas que cambian y nada más.

¿Qué estamos queriendo hacer?

Pues es muy sencillo. Sentry Gun, como te dijimos antes, es un arma centinela que puede determinar y seleccionar de manera inteligente cuerpos móviles que se encuentren en su campo de acción visual (dicho campo visual es ajustado por el operador del arma). Un ejemplo para que entres mejor en el tema es la siguiente fotografía:

Una cámara ubicada en un lugar estratégico puede devolvernos pequeños cambios (que se vayan registrando por segundo) en los mapas de bits o frames. Estas sutiles variaciones de unos pocos píxeles son muy útiles para brindarle al software abundante información que interpretará en su proceso de investigar qué características poseen los objetos que se mueven en la imagen y cuál es su naturaleza, es decir, saber si se trata de personas o no. Entonces, el sistema puede ser capaz de determinar si estamos ante una persona en movimiento o ante las ramas de un árbol o un papel rodando a causa del viento. En el caso de las personas caminando, se puede obtener una predicción de movimiento en función de la velocidad de las personas al ser captadas y procesadas en sucesivas tomas.

Toda esta información puede ser devuelta (a la salida del ordenador y por cualquiera de sus puertos) como coordenadas o instrucciones que se pueden aplicar a robustos sistemas mecánicos que actúen de la forma que el desarrollador estime conveniente. Lo más usual que se encuentra en la Web y que desarrollan los entusiastas de estas posibilidades son las armas utilizadas en competencias de paintball. Observa y comparte la diversión de un grupo de personas que arma estas aplicaciones. Ellos pertenecen al sitio Paintballsentry.com, donde encontrarás mucha información técnica, además de videos, fotografías ilustrativas, ideas, software y mucho material orientado a esta actividad. (El software para controlar los movimientos del arma no es gratuito).

Construir un sistema inteligente que sea capaz de detectar movimientos, discernir si se trata de personas en movimiento u objetos estáticos, calcular su volumen, altura, dirección, velocidad y posible punto de impacto (cuando estos objetos se hallan lanzados en velocidad), todo esto constituye un trabajo interesante, muy elaborado, y con cuidadosos detalles que deberás tener en cuenta si deseas construir algún tipo de juguete de esta naturaleza.

¿Por dónde empezar?

Como siempre decimos: “¡empecemos por lo que ya está hecho!”. Sin embargo, es una pena que lo que se promociona en la Web sea mayormente software pago y no software que nos permita iniciar el trabajo en el ordenador sin costo alguno.
Rastreando y recorriendo muchos rincones de la Web encontramos PlanetSourceCode.com con la aplicación de código abierto hecha en Visual Basic 6.0, que puedes descargar libremente desde aquí. (Tal vez necesites registrarte para poder hacerlo). Si observas con atención su funcionamiento, verás que el programa ofrece dos índices de cantidad de movimiento que son representados por píxeles coloreados de rojo y verde, bien diferenciados entre sí. Echando un vistazo al desarrollo del programa, llegamos a un sector donde la situación se pone muy interesante:

Si miras con detenimiento el fragmento expuesto, verás dónde se detectan los píxeles que cambian en la imagen. Dichos píxeles son coloreados de rojo en la siguiente línea:

Picture1.Pset ( i * inten * Tppx , j * inten * Tppy ) , vbRed
Luego, el programa hace la verdadera diferenciación entre un sencillo píxel que puede cambiar por diferencias de iluminación (al que marca de color rojo) y un objeto real que ocupa un espacio sensiblemente mayor en la imagen, abarcando varios píxeles. A través de una serie de instrucciones inteligentes, reconoce los píxeles que efectivamente han cambiado por movimiento de traslación. El soft considera que estos nuevos elementos comprenden al menos 4 píxeles alrededor del que había cambiado antes y había coloreado de rojo. A este “grupo” de píxeles que pasan a tener el protagonismo que nos interesa los colorea de verde y los considera en su conjunto (o en forma individual) como objetos que poseen “movimiento real” en la imagen. Y este evento es detectado en la nueva instrucción:

Picture1.Pset ( i * inten * Tppx , j * inten * Tppy ) , vbGreen

De esta instrucción podremos sacar las coordenadas cartesianas que necesitamos para activar nuestros servomotores y así direccionar nuestra aplicación con los valores obtenidos de Tppx y Tppy. Debes tener en cuenta que las versiones antiguas de Visual Basic manejan las coordenadas dentro de un formulario, en una unidad que se llama Twip, que deberás interpretar, transformar y adecuar para movilizar, a través del puerto que desees utilizar de tu ordenador, al mecanismo que oriente tu “armamento”. Existe en la Web mucha info (calculadores on-line) que te ayudará en esta tarea. Una buena opción sería ampliar y optimizar a nuestra medida el software ya iniciado y agregarle al programa existente un control MSCOMM para poder gobernar la aplicación a través del puerto serie, siendo también una opción interesante la velocidad de respuesta que puede darle al sistema un manejo por puerto paralelo. Si, en cambio, tienes suficientes conocimientos de programación y dominas las técnicas constructivas con soltura y pericia, no será muy complejo para ti obtener una comunicación Bluetooth entre el hardware y el ordenador, que ya puede ser un portátil dedicado exclusivamente a esta tarea.

El montaje mecánico: el alma de una aplicación eficaz

Todo lo que estuvimos mencionando hasta aquí no se arma en el aire, ni se ata con cintas adhesivas. Debes tener mucho criterio para organizar una base de apoyo sólida y una estructura fuerte y rígida, todo esto sin descuidar el peso final del sistema. No te embarques en construcciones faraónicas que no podrás movilizar fácilmente; busca un equilibrio entre un diseño moderno, robusto, liviano y fácil de transportar. Esto es algo que debe improvisarse sobre la marcha, a medida que se va construyendo (suele traer más dolores de cabeza que satisfacciones). Utiliza materiales livianos en los metales, tales como el aluminio, y utiliza el bronce en las piezas que deban ser maquinadas, especialmente para las partes móviles con rozamiento. Por otro lado, la calidad de los servomotores debe ser importante para evitar falsos posicionamientos, desgaste prematuro y atascamientos frecuentes de sus engranajes. La cámara que se encargará de detectar la escena a controlar y que estará conectada al ordenador puede ser de cualquier tipo y forma, pero como condición elemental no debe ser afectada por los movimientos que provocan los disparos en el sistema. Aquí te mostramos un ejemplo de una construcción que, si bien es efectiva, no ofrece muchas condiciones de ser la mejor, tal como expresa su autor en los comentarios de las cosas que desearía mejorar de su Sentry Gun.

El autor muestra una estructura (para sostener su arma) basada en madera, lo que le quita rigidez mecánica. Además se aprecia mucho tilt (inclinación en el eje “y”). Este fenómeno es más perceptible cuando la estructura (por él armada) intenta cambiar rápidamente de posición dentro del eje de las abcisas (eje x). Por los mismos motivos de debilidad estructural, se nota una menor (pero no por ello menos importante) inestabilidad en el eje x al intentar efectuar un enfoque preciso del objetivo a disparar. A pesar de que todas estas carencias constructivas se resuelven con una buena respuesta en velocidad del sistema, bien podría mejorarse la estabilidad mecánica para aprovechar la velocidad de acción en la decisión del disparo. Por otro lado, si lo tuyo es el Java, el autor de la Web comparte su software en este lenguaje. Habrás notado también que los sistemas mostrados en los videos poseen un puntero láser que enfoca directamente el blanco a disparar. Nosotros interpretamos que no se trata de ningún sistema especial para apuntar con mayor eficacia sino que se trata de una guía para el desarrollador cuando no se desea manchar todo con pintura. ¿Tú que opinas?

Conclusiones finales de montaje

Un buen trípode rígido y bien estanco, uno o más servomotores girando la plataforma donde se apoya el arma (pan, eje x) de derecha a izquierda, y la misma cantidad de servomecanismos para el movimiento de elevación (tilt, eje y) constituyen el ABC mecánico de un sistema estable y de precisión. Una cámara de buena resolución y de amplitud visual importante será también una pieza fundamental en la correcta detección de la información útil que se desea procesar. Servomotores de buena calidad, ingenio, y mucha dedicación a la hora de realizar el software controlador te conducirán a que un arma de estas características pueda estar en tus manos ¿Qué dices? ¿Te interesa la idea?

Escrito por Mario

Leave a Reply