Manipulación de un Brazo Robótico por medio de una Tarjeta FPGA Felipe Santiago Espinosa, Yukio Rosales Luengas, Alejandro Rivera García, Adrián Humberto Martínez Vásquez Instituto de Electrónica y Mecatrónica, Universidad Tecnológica de la Mixteca, Carretera a Acatlima Km. 2.5, Huajuapan de León, Oaxaca, 69000, México Tel. 953-53-202-14, fsantiag@mixteco.utm.mx, rolygem_0706@hotmail.com, riga552@gmail.com, avmah_1035@hotmail.com Resumen En el presente documento se describe el trabajo realizado durante la implementación de una interfaz usuario-máquina, para la manipulación de un brazo robótico de cuatro grados de libertad, incorporando la opción de grabar y reproducir una secuencia de movimientos. Se utilizó una tarjeta Nexys2, la cual es manufacturada por la empresa Digilent e incluye un FPGA Spartan-3E con 500 mil compuertas. La tarjeta sirve de controlador, estableciendo la comunicación entre un teclado de computadora, que es el dispositivo de entrada, y el brazo robótico, que es el dispositivo de salida. Para la creación del programa de configuración del FPGA, se hizo uso del lenguaje de descripción de hardware VHDL; con este lenguaje está hecho el driver para el teclado y con el mismo se crearon los módulos necesarios para la correcta manipulación del brazo, incluyendo la grabación y recuperación de secuencias. Palabras Clave: Brazo Robótico, FPGA, lenguaje VHDL, teclado. I. Introducción VHDL es un lenguaje de descripción de circuitos electrónicos digitales que utiliza distintos niveles de abstracción. En las siglas VHDL, la V se debe a VHSIC (Very High Speed Integrated Circuits) y HDL corresponde con Hardware Description Language. El lenguaje VHDL fue desarrollado para la descripción, modelado y simulación de sistemas digitales [1], aunque actualmente también es empleado para la síntesis e implementación asistida por computadora. El lenguaje es un estándar de la IEEE, con la norma ANSI/IEEE 1076-1993 [2]. Otros lenguajes para la descripción de hardware son Verilog y ABEL. Además de los HDLs, los métodos alternos para diseñar circuitos digitales son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero éstos no son prácticos en sistemas complejos. El lenguaje VHDL fue empleado para la programación del FPGA Spartan-3E de Xilinx, el cual es un dispositivo con 500 mil compuertas [3] incluido en la tarjeta Nexys2, manufacturada y distribuida por la empresa Digilent [4], en la figura 1 se muestra la vista superior de esta tarjeta. Fig. 1. Vista superior de la tarjeta Nexys2. Los recursos incluidos en la tarjeta Nexys2 la hacen ideal durante el proceso de aprendizaje de FPGAs, ya que permiten crear sistemas completos en un solo dispositivo. La tarjeta contiene periféricos para su evaluación (8 LEDs, 4 displays de 7 segmentos, 4 botones y 8 interruptores deslizantes), puertos: PS/2, VGA y 2 al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3
RS232 para aplicaciones y conectores para manejar hardware externo. En este trabajo, se desarrolló un sistema para manipular un brazo robótico comercial, comandándolo por medio de un teclado de computadora estándar, dado que la tarjeta Nexys2 incluye un puerto PS/2 [5]. El sistema resultante se compone de varios módulos, ya que se le incorporó la capacidad de guardar movimientos, con su correspondiente duración, para posteriormente reproducirlos en forma automática. Se utilizó el brazo desarrollado y distribuido por la empresa Steren, con número de parte K-682 [6], cuya imagen se muestra en la figura 2. Fig. 2. Brazo robótico a manipular. El brazo incluye 5 motores, 4 de movimiento y 1 para la abertura y cierre de unas pinzas. Sin embargo, únicamente se manipularon 4 motores, 3 de movimiento y el de las pinzas, esto porque con 3 motores es suficiente para alcanzar cualquier posición en un espacio finito [7]. El control alámbrico incluido con el brazo se basa en interruptores, por lo que se desarrolló una etapa de acondicionamiento para que pudiera ser manipulado desde la tarjeta Nexys2. II. Desarrollo El sistema que se diseñó tiene la capacidad de controlar libremente cada uno de los 4 motores que le proporcionan movimiento al brazo; para esto se utilizan ocho teclas diferentes desde un teclado PS/2, dos para cada motor; también se emplea una tecla más, para iniciar el grabado de una secuencia y para su finalización e inicio de la reproducción. III. Módulos del Sistema El sistema se desarrolló bajo un enfoque modular [8], proponiendo un diagrama a bloques con los módulos necesarios, para luego codificar a cada uno con VHDL. En la figura 3 se muestra la propuesta modular del sistema; la función de cada módulo se describe a continuación. 1. El Divisor genera un reloj con una frecuencia inferior a la de la tarjeta; esto es porque la frecuencia de la tarjeta es de 50 MHz, la cual resulta inadecuada para un sistema de esta naturaleza, dado que el teclado opera en frecuencias entre 20 y 30 KHz. 2. El módulo Teclado es el responsable de hacer la comunicación entre la tarjeta y el teclado de la computadora. Lee la trama enviada por éste y entrega un código de rastreo por cada tecla presionada. Es importante mencionar que el módulo mantiene el código de rastreo de la última tecla presionada, aunque ya no lo esté. Por ello, también genera una señalización de cuando hay un nuevo código de rastreo (CR_Listo). 3. El módulo deco_comp acepta el código de rastreo que le entrega el módulo del teclado e identifica si es una de las teclas asignadas para el movimiento del brazo, de ser así, lo que hace es transformar este código en uno que se encargará de mover el brazo. También detecta si se ha presionado la tecla que indica el inicio de la grabación de movimientos, para ello se destinó a la tecla G. 4. El módulo salida_a_motor acepta el código que le entrega el módulo deco_comp y genera las salidas que mueven a los motores del brazo. También acepta los códigos provenientes de la memoria, donde se almacenará la secuencia a ejecutar, la decisión de cual código ejecutar se toma con base en las entradas de control: act1 y act2. Siendo act2 de mayor jerarquía, pues indica 2 al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3
V que se tiene que ejecutar la secuencia grabada, es decir, mientras act2 esté en alto, no importa que se presione otra tecla de activación de motores, puesto que será ignorada. Fig. 3. Diagrama a bloques del sistema para la manipulación de un brazo. 5. El módulo almacena se encarga de asegurar que el código que se guarda en la memoria es un código de movimiento, y no un código en blanco; es necesario este módulo por los tiempos perdidos en la máquina de estados. 6. El módulo control, como su nombre lo indica, es el responsable de comandar a los demás módulos del sistema. 7. El módulo cont1 cuenta el tiempo que se mantiene presionada una tecla de activación de motores. 2 al 28 de Octubre 2011, Tapachula, Chiapas, México. 8. El módulo fin_mov es empleado durante la reproducción de movimientos. Del módulo memoria obtiene una duración registrada y con base en un contador determina si ya se alcanzó el tiempo recibido, indicándolo con la activación de su salida. 9. En el módulo memoria se guardarán claves que identifican a los motores y los sentidos de movimiento, siempre que se haya activado la opción de grabar movimientos. También se guardará en la misma dirección, pero en un espacio diferente, el tiempo que duró la ISBN: 968-607-477-588-4 3 2
activación de esta tecla. Estos datos los obtiene de los módulos almacena y cont1. 10. El módulo deco es el manejador de los displays de 7 segmentos incluidos en la tarjeta. Básicamente se emplea para mostrar la dirección de acceso en la memoria, para que el usuario conozca el movimiento que se está grabando o reproduciendo. 11. El módulo direc es el contador responsable de la dirección de la memoria a la que se va a acceder. IV. Control del Sistema El control es el módulo principal del sistema, ya que es quien coordina la operación de los demás módulos. El control se basa en una máquina de estados y su operación principal la realiza mientras graba o recupera una secuencia de movimientos. En las figura 4 se muestra el comportamiento del control, en donde puede notarse un estado jerárquico, el cuál es expandido en la figura 5. Fig. 4. Máquina de Estados del Control. Fig. 5. Estados que conforman al Estado Jerárquico de la figura 4. 2 al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3 3
La grabación de la secuencia inicia y termina con la tecla G, mientras el usuario no presione esa tecla, el control se mantendrá en el estado 1, en el cual se han acondicionado sus salidas para que las acciones en las teclas de los movimientos se vean reflejadas directamente en el brazo robótico (la activación de la tecla G se indica con la señal sig). En el estado 2 el sistema espera a que ya no esté presionada la tecla G. En los 4 estados que conforman al estado jerárquico, el control generará las señales para ir grabando la secuencia de movimientos. La grabación también concluye con la tecla G. En los últimos 3 estados, después del estado jerárquico, el sistema iniciará con la reproducción de movimientos, la cual se realiza en el orden inverso en que se fueron generando. V. Acondicionamiento para el Manejo del Robot Las salidas del módulo salida_a_motor están directamente conectadas a los pines de uno de los conectores de la tarjeta Nexys2, por lo tanto, es necesario desarrollar una etapa de acoplamiento. En la figura 6 se puede ver como el control alámbrico incluido básicamente cierra unos interruptores, con lo que suministrará voltaje a los motores. Los interruptores serán remplazados por puentes H, para que los motores sean manejados desde la tarjeta Nexys2. Fig. 6. Control alámbrico del Brazo Robótico. La etapa de acondicionamiento se implementó con base en Puentes H integrados, modelo L293, en la figura 7 puede verse su diseño [9], en donde se observa que se incluyeron puentes de diodos como protección [10]. Fig. 7. Etapa de acoplamiento para el manejo de los motores. VI. Resultados El sistema cumplió los requerimientos planteados y además, resultó muy robusto. Las grabaciones y reproducciones de secuencias funcionaron adecuadamente. En la figura 8 se exhibe al brazo conectado con la tarjeta Nexys2, por medio de la etapa de acoplamiento. Además de mostrar al teclado de computadora conectado en el puerto PS/2 de la misma tarjeta. Fig. 8. Sistema implementado. En la figura 9 se pueden ver detalles en las conexiones, mostrando a la tarjeta Nexys2 completa, para ilustrar como en los displays de 7 segmentos aparece la dirección de acceso. Se conectó un teclado marca Dell, aunque no hay restricciones, se podría conectar un teclado de cualquier marca. 2 al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3
Recurso Usado Disponible Uso Slices 205 4, 656 4 % Bloques I/O 31 232 13 % Bloques RAM 0 20 0 % GCLKs 2 24 8 % Tabla 1. Resumen de los recursos. Fig. 9. Conexiones en la tarjeta Nexys2. En la figura 10 está el primer nivel del modelo de hardware, generado por la herramienta ISE de Xilinx al momento de realizar la implementación. Corresponde con la interfaz del sistema, las señales dato_ps y tec_clk no son salidas, realmente son señales bidireccionales. Fig. 10. Modelo de hardware resultante. En la tabla 1 se muestra un resumen con los recursos empleados, se observa una amplia disposición de recursos, para complementar la funcionalidad del sistema. VII. Conclusiones En este proyecto se usó un módulo ya elaborado con anterioridad, el controlador de un teclado de computadora [11]. En el diseño de sistemas basados en VHDL es común y conveniente reutilizar módulos, como en este caso. Para el correcto funcionamiento de todos los módulos fue preciso tomar en consideración la operación del módulo del teclado, ya que como se explicó con anterioridad, mantiene el código de rastreo aunque la tecla ya no esté presionada. Para ello, se realizó un cambio en la máquina de estados que afectó al módulo de memoria: cuando se reconoce un código de movimiento y éste se va a grabar, primero se incrementa la dirección de memoria y posteriormente se guarda el dato en esa localidad. De la misma manera, al momento de leer la memoria, primero se realiza la lectura y posteriormente se disminuye la dirección. Se hace la comparación con la dirección de inicio de la memoria, y de haber una coincidencia, se da por terminada la secuencia grabada, de lo contrario se repetirá el ciclo. Esto garantiza un correcto funcionamiento de la máquina de estados, que además está sincronizada con el módulo que lee el teclado. Para trabajos futuros se podría proponer el guardar varias secuencias de movimientos en la memoria y tener un menú para decidir cuál de las secuencias se ha de ejecutar. Por ejemplo, una secuencia puede mover un objeto de un lugar a otro, mientras que una secuencia diferente puede hacer que el brazo regrese a la posición inicial, para tomar nuevamente otro objeto. También sería interesante acondicionar un sistema de sensores para conocer la posición del brazo en tiempo real, y así poder acondicionar algún controlador automático tradicional, aunque a este respecto, primero sería necesario introducir en la tarjeta ciertos módulos de operaciones matemáticas para poder llevar a cabo esta tarea. 2 al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3
VIII. Referencias [1] S. Brown, Z. Vranesic, Fundamentos de Lógica Digital con Diseño VHDL. 2ª Ed., 2006, Editorial McGraw-Hill. [2] F. Pardo, J. A. Boluda, VHDL, Lenguaje para síntesis y modelado de circuitos, Ed. Alfaomega, 2000 [3] Spartan-3E FPGA Family: Data Sheet, http://www.xilinx.com/support/documentati on/data_sheets/ds312.pdf, última visita: Junio de 2011. [4] Digilent Inc. - Digital Design Engineer s Source, http://www.digilentinc.com/, última visita: Junio de 2011. [5] Digilent Nexys2 Board Reference Manual, Doc: 502-107, Copyright Digilent, Inc., June 21, 2008. [6] Brazo Mecánico con Control Remoto Alámbrico, modelo K-682, Manual de Instrucciones V0608, http://www2.steren.com.mx/doctosmx//k- 682-instr.pdf, última visita: Junio de 2011. [7] R. Kelly, V. Santibáñez and A. Loría, Control of Robot Manipulators in Joint Space, Ed. Springer-Verlag, 2005. [8] R. Romero Troncoso, Sistemas Digitales con VHDL ; Legaria Ediciones. [9] P. Miles, T. Carroll, Build Your Own Combat Robot, Ed. McGraw- Hill/Osborne, 2002. [10] A. P. Malvino, Principios de Electronica. 6ª Ed., 1999, Editorial McGraw-Hill. [11] J. C. Tepozán Ríos, Diseño de controladores para la tarjeta de desarrollo XSA-100. Tesis de Ingeniería, Universidad Tecnológica de la Mixteca, Mayo de 2004. IX. Autores M. C. Felipe Santiago Espinosa es Maestro en Ciencias con especialidad en Electrónica por parte del INAOE, Licenciado en Electrónica por parte de la BUAP, desde 1998 labora como Profesor Investigador en la Universidad Tecnológica de la Mixteca, adscrito al instituto de Electrónica y Mecatrónica. Yukio Rosales Luengas es estudiante de Ingeniería Mecatrónica en la Universidad Tecnológica de la Mixteca. Alejandro Rivera García es estudiante de Ingeniería Mecatrónica en la Universidad Tecnológica de la Mixteca. Adrián Humberto Martínez Vásquez es estudiante de Ingeniería Mecatrónica en la Universidad Tecnológica de la Mixteca. 2 al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3