Escolar Documentos
Profissional Documentos
Cultura Documentos
especializacin facilitando de este modo el diseo y la creacin de los microbots. II. Descripcin del sistema En la imagen 1 se observa el sistema completo que va a estar formado por un PC, un receptor/emisor Bluetooth, el microbot y la cmara. Otro tipo de topologa usada es creando la conexin por cable USB. As, el programa desarrollado mediante esta ltima topologa al ser mas rpida el establecimiento de la conexin mediante USB. El programa principal es capaz de detectar que tipo topologa se est utilizando y crear la conexin. La comunicacin con la cmara se crea usando los cdigos de comunicacin directa facilitados por la empresa que la dise.
II.1. Microbot En la imagen 2 se puede observar el microbot y los componentes por los que est formado. A continuacin, se detallan los componentes individualmente.
Imagen 2: Microbot
A. Unidad de control. La unidad de control es un brick de Lego Mindstorm alimentado por 6 pilas de 1.5V. Tiene 3 salidas que controlan los motores y 4 entradas para adquirir datos de los sensores que se le aadan. Tiene una pantalla LCD en la que se puede observar el estado del microbot as como acceder a
programas cargados en memoria. Los botones que pose pueden ser programados para la finalidad que se deseen, pero originalmente sirven para navegar por el men y apagar la unidad de control. B. Sensor de Luz. De la marca Lego. Sirve para calcular la luz reflejada o la absorbida. Tiene un led que, a gusto del programador, se puede encender para iluminar, por ejemplo, cuando hay falta de luz. Dependiendo de la luz reflejada (o absorbida) se pueden adivinar colores. Esta opcin se utiliza para realizar el programa de seguimiento de linea. C. Sensor ultrasonidos. Tambin de la marca Lego. Emite ultrasonidos y adivina la distancia de posibles obstculos, su rango mximo son 255 centmetros. Aunque sea poco preciso, para la finalidad del microbot es suficiente. Se utilizar para evitar que el microbot choque con obstculos D. Motores Motores DC de la marca Lego. Pueden soportar una potencia mxima de 100mW. Internamente tienen un tacmetro y un PID. No ha sido posible el ajustes de los parmetros del PID ya que estaba protegido por contrasea. E. Cmara Cmara Web de comunicacin va Bluetooth. Es usada para detectar formas simples y colores. Las imgenes adquiridas por este medio se visualizaran en la pantalla del ordenador. Uno de los objetivos principales del trabajo era centrarse en el reconocimiento visual y relacionarse con el medio mediante la cmara, pero debido a problemas con la distribucin de esta, no se obtuvo la cmara tan pronto como se deseaba y el trabajo tuvo que centrarse en otro tipo de objetivos. II.2. Entorno de programacin y monitorizacin El medio de programacin utilizado es LabVIEW, un programa que permite la adquisicin y tratamiento de datos mediante una programacin grfica. Aprovechando las ventajas de la programacin estructural de LabVIEW, se planea un proyecto totalmente estructurado (imagen 3). Fue necesario un periodo de aprendizaje y familiarizacin con este lenguaje. [1]
III. Trabajo desarrollado A continuacin se describen los algoritmos desarrollados utilizando el entorno de programacin grfica LabVIEW A. Control de motores Como se ha comentado antes, los motores llevan incorporado un PID pero que no es accesible al requerir una contrasea. Despus de estudiar la respuesta de los motores, bast con incluir un controlador proporcional para que el motor se comportase en los lmites deseados. Los lmites marcados no fueron exigentes al no requerir el propsito del microbot una gran precisin o rapidez. El programa toma como variables el n del motor a controlar, la potencia deseada y los centmetros a recorrer. Si obviamos los centmetros a recorrer dicindole 0, el motor quedara en funcionamiento hasta recibir la orden de parar. Cada 5ms el VI guarda el estado del motor en un archivo, a modo de variable global, para que cualquier otro VI pueda obtener la informacin de ese motor. B. Conexin/desconexin Bluetooth Este fue el apartado mas crtico de todo el proyecto. La combinacin Lego + LabVIEW + Bluetooth no est bien depurada y genera errores y fallos constantemente. Lego proporciona una libreras de comunicacin mediante Bluetooth para aplicar con LabVIEW pero debido a los constantes errores que generaban se decidi finalmente modificarlas, en cierta medida, para adaptarlas exclusivamente al proyecto. Una de las mayores complicaciones en este apartado fue la manera que tiene Windows de gestionar los puertos virtuales del Bluetooth. Al hacer una lectura de un sensor o al querer acceder al control de un motor, Windows interpretaba que eran puertos nuevos y los creaba en consecuencia hasta saturar los recursos del sistema y generar un error. Otra caracterstica de Windows que creaba un error es que el S.O. graba un registro de las conexiones realizadas por Bluetooth y la siguiente vez que se intenta conectar un dispositivo con un nombre que ya esta en el registro, Windows intenta hacerlo con la configuracin ya existente. Para evitar estos errores se reestructuro las libreras suministradas por Lego aadiendo retardos para esperar la gestin del S.O., se forz las comunicaciones por los mismos puertos y se borra el registro creado por Windows al cerrar el programa principal de mi microbot. Como salida del VI de Conexin de BT se obtiene la VISA que identifica el microbot dentro de LabVIEW. C. Mando a distancia Una vez creado un VI que controlase el motor se puede crear cualquier programa llamando a ese VI olvidndose del motor en s. Por tanto, para probar esa caracterstica, se creo un programa para que fuese capaz de controlar el microbot mediante el teclado. Para ello se hace una llamada al puerto donde est conectado el teclado y se obtiene la informacin que se procesar para saber la tecla pulsada. El microbot se controla pulsando combinaciones de las teclas direccionales. Y los movimientos que se han programado son: 1. Adelante 2. Adelante y derecha 3. Derecha 4. Atrs y derecha 5. Atrs
6. Atrs e izquierda 7. Izquierda 8. Adelante e izquierda El microbot se mueve al pulsar las combinaciones de las teclas y se para tan pronto como se dejen de pulsar estas. Si se pulsan 3 teclas o mas el microbot se para evitando de este modo falsas ordenes. D. Sigue-Lneas El propsito es crear un algoritmo capaz de seguir una lnea contrastada mediante el uso de un solo sensor de luz, a diferencia de los microbots sigue-lineas habituales que constan de 2 sensores y tienen, por eso, una programacin mas fcil. La mayor prioridad al crear esta rutina fue la de reducir al mximo la bsqueda de la lnea cuando el microbot la perdiese. Para ello se aplicaron varias estrategias. La primera de ellas es la que cuando encuentre un borde de la lnea corrija su trayectoria siguiendo una curva que hace que su nueva trayectoria sea paralela a los bordes de la lnea (imagen 4-C). De este modo los rebotes dentro de la lnea se reducen a un nmero muy inferior al que se alcanzara si en vez de curvas fuesen rectas. Se aadi un bit para que se memorice la direccin a la que ha girado la ltima vez para buscar la lnea, izquierda o derecha. Se introdujo un algoritmo para que predijese si el microbot esta, en ese mismo momento, en una recta o en una curva. La idea es que si est en una curva tiene muchas posibilidades que, de salirse, la lnea est en la misma direccin de bsqueda que la anterior vez que se ha salido (imagen 4-A).En la recta pasara lo contrario, al salir de una curva y entrar en una recta, el microbot tiene una pequea deriva que hace que cuando salga, la lnea quede al otro
En caso de no encontrar la lnea en ese lado, buscara en el otro sentido. De no encontrarla tampoco, el microbot la buscara siguiendo una espiral cuadrada hasta encontrarla. El algoritmo a grosso modo es el siguiente: Mientras color= negro entonces Avanza Fmientras Si recta entonces direccin=NOT direccin fsi Esta sobre la lnea entonces avanza hasta salirse Si ha detectado que era una recta cambia la direccin hacia donde debe buscar. En una curva deber girar hacia donde gir la ltima
Mientras color=blanco entonces Gira( direccin,90) Si color=Blanco entonces Direccin=NOT direccin Gira(direccin,180) Si color=Blanco entonces Espiral(direccin) Fsi fsi fmientras
vez para seguirla. Buscar la lnea, de encuentrarla para. Si no es para un lado mira al otro, y cambia la direccin de la ltima direccin girada Si no la encuentra, entra en la espiral aprovechando el ltimo giro.
Cada vez que se hace una lectura del sensor de luz, se enva el resultado al archivo de variables globales al igual que se hacia con los estados de los motores.
D.1. Diferencias entre conexiones USB/Bluetooth. El algoritmo anterior se hizo con conexin USB, mas rpida de establecer y que no presentaba problemas. Sin embargo, el algoritmo, una vez probado con el Bluetooth, no se comportaba correctamente debido a los retardos producidos por esta conexin. Cuando el microbot detectaba la lnea y le enviaba al PC esa deteccin, en el momento de recibir la respuesta del PC el microbot haba perdido la lnea al haber continuado con la orden anterior. Por lo que se entraba en un bucle en donde el microbot no hacia mas que dar vueltas aleatorias. Se pens que lo mas sencillo era reducir la velocidad del microbot, pero la necesaria para el correcto funcionamiento era tan baja que haba veces que se entraba en la zona muerta del motor. Finalmente, se reprogram cambiando el algoritmo, aunque sin variarlo a nivel macroscpico, aadiendo paradas a los motores y un mayor nmero de llamadas al sensor de luz. An as, resulto ser mas eficiente el algoritmo con USB que con Bluetooth. E. Anticolisin Al tener un sensor de proximidad, se ha desarrollado un VI que detecta cuando existe un peligro de colisin y genera una parada de emergencia que hace que el microbot se pare y no pueda avanzar hacia delante. La evaluacin del peligro se hace de manera dinmica, se tiene en cuenta la velocidad que tiene el microbot y la proximidad del objeto. Para salir de la parada de emergencia, basta con retroceder hasta que se salga de la zona de emergencia. Al igual que con los otros componentes la informacin adquirida por el sensor es enviada al archivo de variables globales.
F. Adquisicin y representacin de datos. Se cre un VI sencillo que no hace mas que leer constantemente los datos del archivo de variables globales y representarlos en diferentes grficas. Los datos que se reciben son: - El nivel de batera - El valor de los tacmetros de los motores - La distancia del objeto mas cercano - El nivel de luz reflejada G. Adquisicin de imgenes de la cmara Este ha sido otro de los puntos problemticos del trabajo. LabVIEW no da soporte con sus libreras a la adquisicin y tratamiento de imgenes obtenidas mediante cmaras con conexin Bluetooth por lo que se tuvo que crear esas libreras. Se instalo un puerto COM para establecer la conexin con la cmara por este medio y la comunicacin se produjo al nivel mas bajo con los comandos que haban sido mandados por los constructores de la cmara. $CAM0001 $CAM0002 $CAM0003 $CAM0004 $CAM0005 Se establece el modo de recepcin de comandos Modo de cmara VGA Captura comando Enva el tamao de imagen Enva la imagen.
*Debido a la confidencialidad que exigi la constructora, los comandos detallados en el cuadro no corresponden a los reales.
Al realizar esta serie de comandos la cmara enva los datos sin procesar de la imagen, es decir en formato RAW, que consta de los valores de cada color RGB en cada pxel. Para la representacin de la imagen en LabVIEW, se llamaba al programa HyperTerminal mediante una librera existente en LabVIEW y se transmitan esos comandos. Los datos recibidos se representaban en una grfica que trata la informacin de cada pxel dando a cada color RGB los valores obtenidos. Para crear un video, aunque existe una serie de comandos para capturarlo, se creo un bucle que repeta este proceso continuamente. De este modo era posible manipular cada fotograma individualmente. H. Deteccin de colores mediante cmara.
Se ha creado un algoritmo que permite detectar colores primarios RGB, es decir, rojo, verde y azul. Para ello se separa la imagen en sus 3 capas RGB y se obtiene, por tanto, 3 imgenes en blanco y negro que corresponderan a la informacin de cada color. La informacin almacenada en cada capa son valores de 0 a 255 por cada pxel. Siendo el 255 blanco absoluto y el 0 negro absoluto. Esto se traducira a que si la capa pertenece al verde, 255 sera verde absoluto y el 0 la ausencia de verde en ese pxel. Para explicar el proceso se va a tomar como ejemplo la bsqueda de color rojo, sin perder generalidad. Al observar la capa perteneciente al rojo, se sabe pues que los pxeles tendrn mas rojo cuanto mas cerca estn del valor 255. Hay que recordar que hay colores que aunque no sean rojos contienen rojo, por ejemplo el violeta, que contiene rojo y azul, o el blanco que contiene todos los colores. Para diferenciar entre el rojo y combinaciones de rojo, se le resta, pxel por pxel, el valor del mismo pxel en las otras capas. Por ejemplo, en el caso del violeta para un pxel, puede que su valor RGB sea (126,12,185). 128-12-185= -69. Uno rojo puede tener un valor (213,25,12), 213-2512=176. Al hacer esta operacin con todos los pxeles, se determina que pxeles estn cerca de 255 y cuales cerca del 0, lo que se conoce en el mundo fotogrfico como saturar la imagen. Despus de este paso, tendremos una imagen de unos y ceros, donde el 1 representa lo que es rojo y el cero lo que no. Solo nos queda hacer una bsqueda de los uno. (Imagen 4)
Posteriormente, habiendo encontrado los pixeles con valor 1, se busca una (o ms de una si hay mas de una superficie roja) curva que envuelva a todos los pixeles con valor 1. Esa curva se representa sobre la imagen original y aparece rodeando al objeto, en este caso la bola. I. Control del microbot mediante la cmara. Para aprovechar la librera de deteccin de colores, se ha desarrollado la idea de controlar, a modo de mando a distancia, el microbot mediante la posicin en el espacio de un objeto de un determinado color. Mediante la cmara se detecta el objeto, por ejemplo rojo, y calcula el centride de ese objeto, es decir, se toma el valor medio de los pxeles que forman la figura y se representa en el monitor del ordenador mediante una cruz a modo de puntero. Mediante el puntero se interacta con una ventana donde estn representadas unas flechas direccionales que se activan al ser tocadas por el puntero y envan la orden de movimiento al microbot (Imagen 8).
IV. Siguiente Paso Debido al retraso en obtener la cmara web y los problemas para establecer las comunicaciones Bluetooth, no se ha podido desarrollar tanto como se hubiese deseado la visin artificial. Se han creado las librerias para detectar colores, se hubiera querido desarrollar otra que detectase formas simples. El siguiente paso poda haber sido la deteccin de rostros utilizando las libreras de bsquedas de colores y formas. Para ello bastaba buscar color blanco, de encontrarse al menos 2 elementos blancos de forma ovalada, se hubiese supuesto que hubiesen sido ojos. Sabiendo la distancia entre los esos objetos detectados, se hubiese adivinado una distancia a la que podra estar el rostro y se hubiesen buscado cejas a una distancia determinada prediciendo donde iban a estar. Despus de haber encontrado las cejas, podramos adivinar donde est la boca. Se podra incluso haber creado un algoritmo para ver las expresiones mas simples del rostro mediante los desplazamientos relativos de los elementos faciales. V. Conclusiones Los microbots son dispositivos relativamente sencillos de implementar pero permiten realizar tareas complejas ayudados de los mltiples sensores que se pueden utilizar. El hecho de poder llevar una cmara mvil en una estructura que es capaz de tener cierta autonoma para evitar daos, permite que observemos desde la distancia lugares u objetos peligrosos sin poner en riesgo a ninguna persona. A su vez existe una continua evolucin en la comunicacin inalambrica Bluetooth, Wifi, codificacin... Con este trabajo se ha querido hacer una primera toma de contacto con estos dispositivos y experimentar de primera mano como un microbot es capaz de seguir una linea o de reconocer formas y colores mediante una cmara web. Se hubiera preferido que las conexines hubiesen estado mas desarrolladas y que las librerias para esta estuviesen creadas en LabVIEW. Se huiesen evitado tantos problemas y el esfuerzo se podra haber centrado en el desarrollo de la programacin del microbot. La infinidad de aplicaciones con las que se pueden relacionar a los microbots y los avances de los ltimos tiempo, no es de extraar que en un futuro cercano nos acostumbremos a ver este tipo de dispositivos en lugares antes insospechados
10
VI. Bibliografa [1] LabVIEW 6i Programacin grfica para el control de instrumentacin Antonio Mnuel Lzaro [2] Image Acquisition and Processing with LabVIEW Christopher G. Relf [3] NI-IMAQ for USB Cameras User Guide [4] Command Protocol API for GenieEye [5] http://forums.ni.com [6] http://legoengineering.com [7] http://www.cs.utexas.edu/~scottm/firstbytes/ [8] http://lego.fokke.net/ [9] http://www.chiefdelphi.com/forums [10] LabVIEW for NXT Advanced Programming Guide [11] LEGO MINDSTORMS NXT Communication protocol [12] LEGO MINDSTORMS NXT Direct commands [13] LEGO MINDSTORMS NXT ARM7 Bluetooth Interface specification [14] LEGO MINDSTORMS NXT Bluetooth Developer Kit