manipulación de un brazo robótico por medio de una ... -...
TRANSCRIPT
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, [email protected],
[email protected], [email protected], [email protected]
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
V�� Semana Nacional de Ingeniería Electrónica
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
V�� Semana Nacional de Ingeniería Electrónica
2� al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3��
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.
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
V�� Semana Nacional de Ingeniería Electrónica
2� al 28 de Octubre 2011, Tapachula, Chiapas, México. 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.!
V�� Semana Nacional de Ingeniería Electrónica
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.
V�� Semana Nacional de Ingeniería Electrónica
2� al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3��
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.
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.
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.
V�� Semana Nacional de Ingeniería Electrónica
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.
!
!
!
!
V�� Semana Nacional de Ingeniería Electrónica
2� al 28 de Octubre 2011, Tapachula, Chiapas, México. ISBN: 968-607-477-588-4 3��