Você está na página 1de 10

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth


Autor: Gaizka Nuez Barandalla, estudiante de Ingeniera electrnica de la UPV Tutor: Josu Jugo, Profesor del departamento de Electricidad y Electrnica de la UPV Resumen-- En este trabajo se ha diseado un microbot utilizando la herramienta MindStorm de Lego y el entorno de desarrollo grfico LabVIEW. El microbot incorpora una serie de sensores que permiten la interaccin con el entorno, incluyendo una cmara que ha permitido disear un sistema de reconocimiento visual bsico mediante el programa informtico LabVIEW. El microbot consta de una estructura creada con piezas de Lego, que acogen los sensores, motores y el cerebro del microbot: la unidad de control NXT de Lego Mindstorm. El entorno de trabajo se basa en una estacin PC con el programa LabVIEW que adems de permitir el desarrollo de los programas que gestionan el comportamiento del microbot, se comunica mediante Bluetooth y USB con la unidad de control. La adquisicin de imgenes se efecta por medio de una cmara web. El trabajo se ha basado en el desarrollo de los programas necesarios mediante LabVIEW para el control y comunicacin va USB y Bluetooth con la unidad de control y la cmara. La estacin de trabajo permite la monitorizacin supervisin y control remoto del microbot, gracias a la funcionalidad de LabVIEW. I. Introduccin Hoy en da, todos hemos visto como unos pequeos robots se pasean por la superficie de Marte esquivando obstculos y obteniendo datos de forma autnoma, comunicndose con un ordenador tan lejano como se quiera. Para que sea posible este comportamiento de esta clase de dispositivos, que comnmente se denominan microbots, es necesario que est recogiendo informacin de su entorno y de l mismo para decidir cul va a ser la nueva accin a tomar o, comunicndose con un elemento externo, bien un ordenador, o bien una persona, que tome decisiones sobre las siguientes ordenes. Es necesario, por tanto, que el microbot tenga una cierta autonoma por medio de una memoria que almacene los programas que dirigen su comportamiento y permitan la comunicacin entre la estacin y el microbot, que no es necesariamente continua. Esta simbiosis puede ser entendida como una sonda capaz de desplazarse por si misma y que contiene tantos sensores como sus creadores hayan imaginado. Pero no es necesario irse tan lejos como a Marte para ver este tipo de mecanismo. Un simple brazo robtico tambin es controlado a distancia por una unidad de control o los actuales sistemas de domtica siguen este mismo principio. Gracias a los nuevos protocolos de comunicacin a distancias como el WIFI o el Bluetooth se ha conseguido llevar al mbito domestico este tipo de controles y cada da son mas las aplicaciones que salen al mercado. Si pensamos en aadir una cmara a un microbot de este tipo, se puede pensar en un medio para buscar personas atrapadas en terremotos introduciendo el microbot entre las grietas. O para observar medios hostiles para el ser humano desde una distancia segura, como por ejemplo un reactor nuclear o algn lugar con una atmsfera txica, entre otras muchas aplicaciones. Los en los entornos de programacin, como LabVIEW, permiten que no se requiera una excesiva

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

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.

Imagen 1: Sistema PC microbot

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

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

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]

Imagen 3: Estructura del proyecto.

Imagen 4: Apariencia del programa principal

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

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

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

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

lado de la direccin de la curvatura (Imagen 4-B).


Imagen 4: Trayectorias en sobre la linea

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

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

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.

Imagen 5: Parte de la programacin de la espiral

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.

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

Imagen 6: El microbot siguiendo la linea

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.

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

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)

Imagen 7: Procesamiento de la imagen.

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).

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

Imagen 8: Pantalla de interaccin con el microbot

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

Control de un microbot y visin artificial con LabVIEW mediante Bluetooth

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

Você também pode gostar