INSTITUTO POLIT ´ ECNICO NACIONAL CENTRO DE INVESTIGACI ´ ON Y DESARROLLO DE TECNOLOG ´ IA DIGITAL DOCTORADO EN CIENCIAS EN SISTEMAS DIGITALES “DISE ˜ NO DE CONTROLADORES INTELIGENTES EN PROCESADORES SUAVES PARA EL CONTROL EN TIEMPO REAL DEL MOVIMIENTO DE UN ROBOT B ´ IPEDO” TESIS QUE PARA OBTENER EL GRADO DE DOCTORADO EN CIENCIAS EN SISTEMAS DIGITALES PRESENTA M.C. JORGE ARTURO QUI ˜ NONES RIVERA BAJO LA DIRECCI ´ ON DE DR. OSCAR H. MONTIEL ROSS DR. ROBERTO SEP ´ ULVEDA CRUZ ABRIL 2019 TIJUANA, B.C., M ´ EXICO
92
Embed
Jorge Arturo Quiñones Rivera 2020 - CS.pdf - Instituto ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
INSTITUTO POLITECNICO NACIONAL
CENTRO DE INVESTIGACION Y DESARROLLODE TECNOLOGIA DIGITAL
DOCTORADO EN CIENCIAS EN SISTEMAS DIGITALES
“DISENO DE CONTROLADORES INTELIGENTES ENPROCESADORES SUAVES PARA EL CONTROL EN TIEMPO REAL
DEL MOVIMIENTO DE UN ROBOT BIPEDO”
TESIS
QUE PARA OBTENER EL GRADO DE DOCTORADO EN CIENCIAS ENSISTEMAS DIGITALES
PRESENTA
M.C. JORGE ARTURO QUINONES RIVERA
BAJO LA DIRECCION DE
DR. OSCAR H. MONTIEL ROSS DR. ROBERTO SEPULVEDA CRUZ
ABRIL 2019 TIJUANA, B.C., MEXICO
INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA DE INVESTIGACIÓN Y POSGRADO
CARTA CESIÓN DE DERECHOS
En la Ciudad de México, D.F. el día 1ro. del mes de Abril del
año 2019, el que suscribe M.C. Jorge Arturo Quiñones Rivera alumno del Programa de Doctorado en Ciencias en Sistemas Digitales, con número de registro A110972, adscrito al Centro de Investigación y Desarrollo de Tecnología Digital (CITEDI-IPN), manifiesto que es el autor intelectual del presente trabajo de Tesis bajo la dirección de los Dr. Oscar Humberto Montiel Ross y Dr. Roberto Sepúlveda Cruz y cede los derechos del trabajo intitulado “DISEÑO DE CONTROLADORES INTELIGENTES EN PROCESADORES SUAVES PARA EL CONTROL EN TIEMPO REAL DEL MOVIMIENTO DE UN ROBOT BIPEDO”, al Instituto Politécnico Nacional para su difusión, con fines académicos y de investigación.
Los usuarios de la información no deben reproducir el contenido textual, gráficas o datos del trabajo sin el permiso expreso del autor y/o directores del trabajo. Este puede ser obtenido escribiendo a las siguientes direcciones [email protected] , [email protected] o [email protected]. Si el permiso se otorga, el usuario deberá dar el agradecimiento correspondiente y citar la fuente del mismo.
4.2. Velocidades maximas alcanzadas por el robot bıpedo. . . . . . . . . . . 62
A.1. Funciones escritas en C, para el control de servomotores Dynamixel. . . 71
14
Lista de Acronimos
ZMP Zero Moment Point
FPGA Field Programmable Gate Array
FIS System Inference Fuzzy
ASIC Application-Specific Integrated Circuit
HDL Hardware Description Language
FAM Fuzzy Associative Memory
HLS High Level Syntesis
HPC High Performance Computation
CLB Configurable Logic Block
IOB Input Output Block
DSP Digital System Processing
LUT Look-Up Table
SRAM Static Random Access Memory
RISC Reduced Instruction Set Computer
SoC System On Chip
IP Intellectual Property
PWM Pulse Width Modulation
PLB Peripheral Local Bus
INDICE DE TABLAS 16
AXI IAdvanced eXtensible Interface
IoT Internet Of Things
ROM Read-Only Memory
RAM Random Access Memory
AES Advanced Encryption Standard
RTOS Real-Time Operating System
RNA Artificial Neural Networks
DSC Digital Signal Controller
DOF Degrees Of freedom
PID Proportional–Integral–Derivative
RTL Register Transfer Level
Capıtulo 1
Introduccion
En la actualidad, la idea de que los robots humanoides interactuen con el hombre
ha sido uno de los mayores retos en el ambito cientıfico y tecnologico. Se espera que
estas maquinas puedan realizar las actividades tediosas y peligrosas que se presentan
en la vida cotidiana.
Obtener el modelo matematico de los robots bıpedos es sumamente complicado de-
bido al alto grado de no linealidad [1] y a la gran cantidad de parametros necesarios en
los controladores tradicionales. Por tal razon, son de gran interes las investigaciones
que proponen soluciones alternas, planteadas con algoritmos de control innovadores
mediante logica difusa [2], redes neuronales [3], y algoritmos geneticos [4] para posi-
cionamiento y control.
El estudio de robots bıpedos manifiesta una gran complejidad en relacion al control
de su locomocion, debido a la dificultad de controlar el caminar y mantener el equi-
librio generado por los movimientos de sus articulaciones, lo que representa intrınse-
camente un sistema sumamente no lineal [5]. Otro aspecto importante es la reaccion
dinamica producida por el contacto con la tierra, donde se genera una friccion con
fuerza inercial que debe ser cero para mantener el equilibro. La gran mayorıa de los
trabajos de investigacion sobre robots bıpedos se centran en desarrollar controladores
para que el robot no pierda la estabilidad al caminar, y es donde toma gran importan-
cia el concepto de ZMP [6], tambien conocido como CoP [7], que se define como un
criterio de estabilidad ampliamente utilizado en el desarrollo de robots, por ejemplo,
en el ASIMO creado por la empresa Honda Inc. [8], que representa uno de los huma-
noides mas avanzados en la actualidad. En el ciclo de la caminata bıpeda, el robot se
apoya sobre una sola extremidad y en la planta del pie se forma el polıgono de SoporteUnico. En este punto la fuerza de reaccion con la tierra es cero [9], y siguiendo el ciclo
cuando se apoya mediante los dos pies se le denomina polıgono de Doble Soporte, por
1
1.1 Antecedentes 2
consiguiente el ZMP existe y el robot no sufre una caıda mientras el centro de masa
se encuentre dentro de dichos polıgonos de soporte. En la caminata de robots bıpe-
dos existen dos formas de caminado: el caminado estatico con movimientos lentos sin
estetica [10], y el caminado dinamico, con gran eficiencia e incluso con una movilidad
mas natural [11].
En este trabajo mostramos el diseno y construccion del robot bıpedo que utiliza-
mos para realizar los experimentos, se presenta el diseno de los algoritmos de control
inteligente desarrollados para la caminata del robot, principalmente basados en logica
difusa y redes neuronales artificiales. Los controladores se implementaron en tecno-
logıa FPGA por la versatilidad que ofrecen para mezclar tecnicas de procesamiento
secuencial con multiprocesadores suaves, y procesamiento concurrente mediante len-
guajes de descripcion de hardware, lo cual permitio ejecutar las tareas en tiempo real.
1.1. Antecedentes
La investigacion de robots se remonta muchos anos atras desde que se concibio el
termino robot por Isaac Asimov en sus historias de ciencia ficcion alrededor del ano
1920, con la idea de crear maquinas capaces de servir al hombre, en tareas domesti-
cas, de servicio, peligrosas o que requieran de atencion especial [12]. En la actualidad
gracias al creciente avance en la tecnologıa han surgido robots moviles capaces de ex-
plorar el espacio, robots manipuladores que auxilian en tareas de ensamble, robots
bıpedos con la capacidad de imitar al ser humano y robots que imitan la locomocion
de los animales.
Los robots que tienen dos patas son llamados robots bıpedos, de los cuales se des-
tacan los humanoides que tienen como objetivo imitar la forma de ser y movimientos
del ser humano con la finalidad de utilizarlos en tareas peligrosas. Este tipo de robot es
muy importante en el diseno de protesis y es de gran relevancia para su investigacion
debido a la complejidad del sistema para generar una respuesta estable en su locomo-
cion. En la Figura 1.1 se muestran todas las versiones en orden cronologico del robot
ASIMO del fabricante de autos Honda, destacado actualmente como uno de los robots
mas avanzados [13].
1.2. Justificacion
En muchos paıses la robotica es un aspecto prioritario en un contexto tecnologico,
en especial los robots bıpedos se pretenden usar en la minerıa para la exploracion de
1.3 Proposito de la investigacion 3
Figura 1.1: Evolucion en orden cronologico de ASIMO.
territorios peligrosos, en la limpieza domestica, vigilancia del medio ambiente, segu-
ridad y logıstica, robots medicos y terapeutas, robots para mostradores, como guıa de
incapacitados, exoesqueletos y en un caso extremo como companero del hombre, por
lo consiguiente es necesario seguir aportando nuevas metodologıa para el desarrollo
de controladores para la caminata de robot bıpedos en FPGA, en especial con sistemas
neurodifusos, ya que la gran mayorıa de la literatura e implementaciones se usan con-
troladores clasicos. Ademas esta investigacion presenta resultados experimentales con
un robot prototipo para demostrar la practicidad y la fiabilidad de los controladores
propuestos.
1.3. Proposito de la investigacion
Desarrollar e implementar una metodologıa a base de sistemas difusos y redes neu-
ronales para minimizar el ruido inherente producido por el contacto mecanico entre
el pie del robot bıpedo y la superficie del suelo, mejorando la estabilidad y la estetica
de la caminata. Ademas de optimizar los algoritmos mediante tecnologıa de hardware
reconfigurable para corregir y favorecer la respuesta total de este tipo de sistemas.
1.4. Formulacion del problema
La trayectoria ZMP es un metodo importante para la estabilidad del proceso de
caminata del robot bıpedo ya que garantiza la estabilidad. El ZMP es un punto de
presion donde las fuerzas de reaccion inercial horizontal son cero [12]. En la Figura
1.2a, la zona rodeada por las lıneas discontinuas, pueden ser considerados como el
margen de estabilidad del ZMP, esto significa que si la trayectoria de la ZMP se queda
1.5 Hipotesis 4
en el margen estable cuando el robot se mueve, entonces el movimiento del robot se
puede considerar que es estable. En la Figura 1.2b se ilustra un ejemplo de distribucion
de varias fuerzas de reaccion sobre el pie del robot y el suelo, el ZMP, estara ubicado en
el punto de mayor concentracion de la misma, es decir el punto de proyeccion vertical
del centro de masa.
Figura 1.2: a) Area estable ZMP b) Distribucion de fuerzas de reaccion.
En la Figura 1.3 se muestra la grafica del desplazamiento frontal de unos 40 cm
aproximadamente, donde se aprecia el ruido en la trayectoria ZMP del robot bıpe-
do, provocando inestabilidad mecanica en la caminata [14], dada esta problematica
inherente es factible reducir el ruido utilizando sistemas neurodifusos y mejorar el
rendimiento en la ejecucion en tiempo real implementandolos en dispositivos progra-
mables.
1.5. Hipotesis
Es posible reducir significativamente el ruido en la trayectoria del ZMP en la cami-
nata de robots bıpedos mediante controladores inteligentes de postura implementados
en dispositivos logicos programables FPGA.
1.6. Objetivo general
Disenar algoritmos inteligentes para el control de la locomocion de robots bıpedos,
implementados en procesadores suaves utilizando tecnologıa FPGA.
1.7 Delimitaciones 5
Figura 1.3: Ruido en la trayectoria del ZMP.
1.6.1. Objetivos especıficos
Construir una plataforma experimental.
Desarrollo de metodologıas para la implementacion de controladores difusos ti-
po 1 embebidos en FPGA.
Simular e implementar en la FPGA la cinematica directa e inversa del robot bıpe-
do.
Efectuar la camina del robot experimental.
1.7. Delimitaciones
Las pruebas en tiempo real de los controladores del robot bıpedo unicamente
fueron evaluados en un prototipo construido en el laboratorio
El analisis se centro de la cadera hacia los pies de robot.
La implementacion en FPGA se baso unicamente en la plataforma de Xilinx.
Las RNA usadas fueron entrenadas de forma supervisada.
1.8 Productividad cientıfica 6
1.8. Productividad cientıfica
A continuacion se muestra la productividad cientıfica obtenida durante el desarro-
llo del trabajo de tesis:
1. Roberto Sepulveda, Oscar Montiel Ross, Jorge Quinones Rivera., Methodologyto Design Fuzzy Logic Controller for Soft-Core Embedded into FPGA, Recent
Advances on Hybrid Intelligent Systems, vol 451,89-96, Springer, Berlin, 2013.
2. Roberto Sepulveda, Oscar Montiel, Jorge Quinones Rivera, Ernesto E. Quiroz.,
WLAN Cell Handoff Latency Abatement Using an FPGA Fuzzy Logic Algo-rithm Implementation, Advances in Fuzzy Systems,vol 2012, Hindawi, 2012.
3. Jorge Arturo Quinones Rivera, Oscar Montiel Ross, Roberto Sepulveda, Oscar
Castillo., Diseno e implementacion de controladores inteligentes en procesa-dores suaves para la caminata de un robot bıpedo, Computacion y sistemas,
Tendencias en temas de investigacion informatica, vol 22, No 4, CIC IPN, Mexi-
co, 2018.
4. Roberto Sepulveda, Oscar Montiel Ross, Jorge Quinones, Ulises Orozco., Intro-duction to novel processor, del libro High Performance Programming for Soft
Computing Applications, CRC Press, Florida, 2014.
5. Montiel Oscar, Sepulveda Roberto, Castillo Oscar, Quinones Jorge., Efficient Ste-reoscopic Video Matching and Map Reconstruction for a Wheeled Mobile Ro-bot, International Journal of Advanced Robotic Systems, 2012.
6. Montiel Oscar, Jorge Quinones, Roberto Sepulveda., Designing High-Performance Fuzzy Controllers Combining IP Cores and Soft Processors,
Advances in Fuzzy Systems, Hindawi, 2012.
El contenido de esta tesis se encuentra organizado como sigue: en la seccion 2, se
revisan los conceptos basicos utiles para el desarrollo de la investigacion; en la seccion
3, se detalla la construccion, el hardware, la plataforma de computo utilizada en el
robot bıpedo, la metodologıa para la obtencion de la cinematica inversa a partir de la
cinematica directa mediante RNA y los controladores con logica difusa para controlar
la caminata bıpeda; en la seccion 4, se detallan los experimentos realizados y los re-
sultados obtenidos; finalmente en la seccion 5 se presentan las conclusiones y trabajo
futuro.
Capıtulo 2
Marco Teorico
En este capıtulo se presentan conceptos basicos sobre tecnicas de control de robots
bıpedos, tambien se detallan los sistemas de inferencia difuso, utiles para el diseno de
controladores, ası como el es estudio de redes neuronales para resolver la cinematica
del robot y conceptos sobre FPGA donde se implementan los algoritmos.
2.1. Tipos de robots
Los robots estan conformados de elementos mecanicos, actuadores, unidades de
procesamiento, control y sensores, por lo cual la estructura y los elementos utilizados
hacen distintivo a un robot de otro. En esta seccion se presenta un panorama general
de los robots mas representativos [15].
2.1.1. Robot industrial
Un robot industrial, es un manipulador programable multifuncional disenado para
mover materiales, piezas herramientas o dispositivos especiales, mediante movimien-
tos programados para la ejecucion de distintas tareas.
El sistema mecanico forma parte esencial de un robot manipulador, esta dotado de
varias articulaciones unidas por eslabones y un efector final, que a su vez es multifun-
cional debido a la aplicacion o tarea a desarrollar. El movimiento de un manipulador
puede ser de traslacion, rotacional o una combinacion de ambos. El numero de varia-
bles de posicion independientes que tendran que especificarse para localizar las piezas
del mecanismo se llaman grados de libertad [15]. Un ejemplo de ellos se muestra en la
Figura 2.1a que corresponde al manipulador FANUC modelo LR MATE 200-C.
7
2.1 Tipos de robots 8
2.1.2. Robots redundantes
Para posicionarse en cualquier punto del espacio solo es necesario tener como maxi-
mo seis grados de libertad, por lo cual si la cantidad de grados es mayor se les deno-
mina robots redundantes, disenados para operar en lugares de difıcil acceso. Debido a
la cantidad de sus articulaciones el problema de control y de planificacion crece. Los
robots anguila modelo ACM-R5 son ejemplo de ello, tal como se ilustra en la Figura
2.1b [15].
2.1.3. Robots Moviles
Son robots que consiguen su locomocion gracias a sus ruedas o patas. Los robots con
ruedas son impulsados por motores electricos capaces de alcanzar grandes velocidades,
es comun encontrar robots moviles con dos, tres o mas ruedas (Figura 2.1c) [15].
Los robots con patas logran separar su cuerpo mediante el apoyo de extremidades
en determinadas partes del terreno, con la intencion de aventajar a los robots moviles
en terrenos irregulares, con la gran desventaja de que su velocidad se ve reducida,
como ejemplo de este tipo de robot es muy comun encontrar robots hexapodos (Figura
2.1d), bıpedos (Figura 2.1e) [13] y cuadrupedos [15].
2.1.4. Robots marinos y aereos
Los robots marinos y aereos son ampliamente usados en tareas de inspeccion, tele-
metrıa y rescate, en entornos de difıcil acceso para el hombre. Gran parte de los avances
tecnologicos de estos robots son desarrollados en la milicia, sus investigaciones tienen
como objetivo crear naves no tripuladas para no poner en riesgo la vida de los soldados
en las guerras (Figura 2.1f ).
2.1.5. Robots Flexibles
Son robots que en su configuracion mecanica contienen elementos flexibles, esta
clase de robot tiene caracterısticas interesantes en relacion a su peso y de carga, pero
debido a su alta no linealidad, representa un gran problema de control. Comunmen-
te es construido con Flexinol o tambien llamado cable muscular que al aplicar una
tension de voltaje el material se contrae (Figura 2.1g ).
2.2 Robots bıpedos 9
Figura 2.1: Diferentes tipos de robots.
2.2. Robots bıpedos
La locomocion es el estudio del movimiento de los seres vivos, ya sea un animal o
una persona, tiene una gran complejidad en su arquitectura osea y muscular, tan solo
en la parte baja esta conformada por 44 huesos y 46 musculos, que intervienen en la
propulsion para generar movimientos como el caminar. Partiendo de esta arquitectura
el hombre por decadas ha intentado crear maquinas para su servicio que puedan re-
plicar los movimientos del ser humano y toma como objeto de investigacion el diseno
de robots bıpedos [16].
2.2.1. Caminado
El caminado (Walking ) se define como una sucesion cıclica de pasos sobre una su-
perficie, manteniendo el equilibrio naturalmente o con la ayuda de un control. Este
ciclo inicia cuando el talon hace contacto con la tierra seguido de dos pasos, con la
pierna izquierda y luego la derecha. En este proceso, al caminar lentamente existe un
doble soporte cuando las dos piernas hacen contacto con la superficie, pero al aumen-
tar la velocidad un ciclo desaparece, e interviene un solo pie como apoyo manteniendo
el equilibrio [17].
2.2 Robots bıpedos 10
2.2.2. Fase de soporte unico
Durante la fase de soporte unico (Single Support Phase), el pie al que se le hace re-
ferencia del soporte, es el que se encuentra apoyado sobre el suelo y relativamente esta-
cionario. Es el encargado de mantener el peso del cuerpo, de ahı su nombre,“soporte”.
El comienzo de esta fase se puede distinguir cuando la otra pierna (la que no va a hacer
el soporte) deja el suelo siendo la punta del pie lo ultimo en estar en contacto con el
suelo, y termina cuando esa misma pierna vuelve a tocar el suelo por medio del talon
como se ve en la Figura 2.2 [17].
Figura 2.2: Fase de soporte unico.
2.2.3. Fase de soporte doble
La fase de soporte doble (double support phase), se caracteriza porque los dos pies
se encuentran en contacto con el suelo compartiendo el soporte del cuerpo. El comien-
zo de esta fase se reconoce cuando el talon de una pierna toca por primera vez el suelo
y termina cuando la punta del pie de la otra pierna se despega del suelo. La duracion
de esta fase es bastante corta, pero indispensable ya que durante ella se hace el traspa-
so del soporte del cuerpo de una pierna a otra. Esto lo podemos observar en la Figura
2.3.
Figura 2.3: Fase de doble soporte.
2.3 Caso de estudio 11
2.2.4. Fase de postura
La fase de postura (Stance phase) representa el periodo de tiempo durante el cual
la pierna analizada se encuentra en contacto con el suelo. Comienza cuando su talon
toca el suelo y termina cuando los dedos del pie se despegan del suelo [18].
2.2.5. Fase de balanceo
El balanceo (Swing phase) se distingue porque es el periodo de tiempo durante el
cual la pierna analizada se encuentra en el aire balanceandose hacia el frente.
2.3. Caso de estudio
El diseno de los robots bıpedos y especialmente, los robots humanoides se inspira
en la naturaleza de la movilidad funcional del cuerpo humano. Sin embargo, la natu-
raleza compleja de la estructura del esqueleto, ası como el sistema muscular humano
no puede ser reproducida en la robotica. El numero de movilidades internas se limita
a lo esencial y el sistema de accionamiento debe ser simplificado. Un robot bıpedo o
un robot humanoide por lo tanto tienen menos DOF que un cuerpo humano. La elec-
cion del numero de actuadores para cada articulacion es muy importante. El enfoque
consiste en analizar la estructura del robot a partir de tres planos principales: frontal(Figura 2.4a ), el plano sagital (Figura 2.4b), y transversal (Figura 2.4c ). El movimiento
de caminar tiene lugar principalmente en el plano sagital, todos los bıpedos tienen la
mayor numero de articulaciones importantes en este plano [12].
El analisis de las articulaciones en el plano frontal muestra su importancia para la
estabilidad lateral del pie. La estabilidad en el plano frontal depende de la posicion
del centro de gravedad en relacion con el punto de contacto de la pierna de apoyo con
el suelo [12].
Las articulaciones en el plano transversal, solo existen en los bıpedos mas comple-
jos. Estos robots tienen desde uno hasta cinco articulaciones en el plano transversal.
[12].
2.4. Modos de caminata bıpeda
Existen dos modos para la caminata del robot bıpedo, el balance estatico y el
balance dinamico: En el balance estatico, el centro de masa del robot, se encuentra en
todo momento dentro del area de su pie apoyo sobre la tierra o el area de soporte de
2.4 Modos de caminata bıpeda 12
Figura 2.4: Planos del robot: a) Plano Frontal, b) Plano Sagital, c) Plano transversal.
sus dos pies si ambos estan en la tierra, la desventaja de este modo es que no existe
fluidez en el caminar, por lo general se utilizan pasos cortos.
Para el balance dinamico , el centro de masa del robot puede estar fuera del area
de soporte de los pies durante su marcha. Es el modo mas utilizado y se pueden usar
diferentes tecnicas para su estudio [19]:
Pendulo invertido: El caminado se puede modelar como un pendulo invertido para
lograr el equilibro dinamico, dando seguimiento constante a la aceleracion del
robot para compensar los movimientos de las piernas.
ZMP: Para lograr el balance dinamico del robot se requiere el conocimiento de todas
las fuerzas y torque del cuerpo del robot, usando acelerometros, giroscopios o
sensores de presion en la planta de los pies.
Control difuso: Se hace una adaptacion de la estructura del controlador PID clasico
reemplazandolo por un sistema de inferencia difuso.
Algoritmos geneticos: En este enfoque se crean poblaciones de robots virtuales con
los parametros dinamicos obtenidos por simulacion mecanica, los mejores se re-
producen creando nuevas generaciones, con el objetivo de optimizar y encontrar
los valores adecuados de las fuerzas y velocidades de las articulaciones, que me-
joren el rendimiento de la caminata bıpeda.
Control PID: Usa controladores clasicos PID, para mantener el angulo de inclinacion
deseado durante el desplazamiento frontal del robot.
Horizonte Artificial: Usa sistemas de vision para fijar un horizonte artificial en el
espacio de trabajo del robot, se compara constantemente con la orientacion del
2.5 Hardware Reconfigurable 13
robot durante su trayectoria y mediante los cambios de posicion de las lıneas de
referencia se determinan las compensaciones para su estabilidad.
Redes neuronales: Mediante simulaciones y entrenamiento supervisado de una red
neuronal se crea una base de datos patron con las posiciones angulares de las
articulaciones en una trayectoria guiada, hasta obtener una red que logre el ca-
minado estable.
2.5. Hardware Reconfigurable
La computacion reconfigurable explota las capacidades intrınsecas de una FPGA,
que son dispositivos que principalmente presentan la caracterıstica unica de permitir
programarse tanto en software como en hardware mediante lenguajes de programa-
cion descriptiva para resolver un problema en particular, con un gran rendimiento y
bajo costo. En esta seccion nos centraremos en describir la tecnologıa que utilizan las
FPGA´s como un recurso para implementar arquitecturas de procesadores.
2.5.1. FPGA
En las ciencias computacionales y electronica podemos procesar algoritmos me-
diante Hardware y Software. En software, el usuario desarrolla secuencias de instruc-
ciones con lenguajes de programacion para resolver una tarea especıfica utilizando
un procesador. En Hardware podemos recurrir a un ASIC, cuyas caracterısticas prin-
cipales son su alto rendimiento, bajo consumo, y tamano reducido, pero sus grandes
desventaja son su alto precio de fabricacion, su nula reconfiguracion, y recursos limi-
tados. Otra posibilidad es hacer uso de un FPGA, que tambien nos brinda prestaciones
similares a los ASIC´s, pero ademas nos permite la programacion mediante softwa-
re con lenguajes de programacion de alto nivel como C, C++, Phyton, Java, Matlab,
Labiew, etc., y por hardware con HDL como el VHDL, Verilog, ABEL, HLS, brindan-
do una gran versatilidad para realizar las implementaciones de algoritmos de manera
economica y sencilla [20].
La migracion a computadores multinucleo requirieron cambios complejos en los
sistemas y el software para lograr un rendimiento optimo. Antes del advenimiento
de multinucleo, la mayorıa de los esfuerzos para mejorar el rendimiento se realizaron
con el aumento de la frecuencia de reloj. Los incrementos de frecuencia aumentan el
consumo de energıa, que a su vez generan calor, requiriendo sistemas de enfriamiento
mas avanzados, que disminuye la confiabilidad, y se acorta la vida util del dispositivo.
2.5 Hardware Reconfigurable 14
Los FPGA, son muy utilizadas para la aceleracion de hardware en una amplia gama
de aplicaciones, tanto en servidores de alto rendimiento como en sistemas embebidos.
La disponibilidad y la eficiencia energetica de los FPGA, de alta densidad los hacen
atractivos para la comunidad de HPC, la cual se dedica a mejorar y maximizar las
capacidades de computo para resolver problemas complejos empleando tecnologıas
computacionales. Los FPGA, tienden a consumir energıa en decenas de Watts, en com-
paracion con los procesadores multinucleo y GPU que tienden a consumir energıa en
cientos de Watts. La razon principal para un menor consumo de energıa en dispositi-
vos FPGA es que las aplicaciones suelen operar entre 100-300 MHz en comparacion
con aplicaciones en procesadores de alto rendimiento que se ejecutan entre 2-3 GHz
[21].
2.5.2. Arquitectura de una FPGA
Internamente un FPGA esta compuesta por cinco elementos principales: CLB, IOB,DSP, Bloques RAM e Interconexiones (Figura 2.5). Los CLB son una gran variedad de
elementos logicos combinacionales como son las compuertas and, or, not, etc. y compo-
nentes de logica secuencial es decir Flip-Flops (tambien conocidos como cerrojos, o en
ingles Latch) dispuestos para formar ecuaciones booleanas, retardos, maquinas de esta-
dos, memorias o componentes mas complejos y estructurados. Para reducir el espacio
y aumentar la eficiencia en las ecuaciones logicas los FPGA estan dotados de una gran
cantidad de LUT, que son componentes que tienen una serie de valores preestableci-
dos de salida para responder a determinados estımulos de entrada. Las Interconexionesfuncionan como canales de comunicacion bidireccionales para propagar las senales
entre los CLB y IOB, para llevar a cabo esta comunicacion se usan transistores bypass,
multiplexores y buffer triestado [22].
Los IOB permiten programar a voluntad las senales provenientes de los CLB e IOB
a cualquier terminal fısica del encapsulado FPGA, asimismo tienen la capacidad de
ofrecer diferentes tecnologıas de tension de voltaje (cmos, lvmos,ttl, etc.) e impedancias
de entrada o salida (Pull Up, Pull Down, High Impedance, etc) por que tienen incorpo-
rados Buffers bidireccionales y buffers triestado.
Podemos usar Flip-Flops para crear memoria de almacenamiento para nuestras
aplicaciones, pero consumirıamos muchos recursos logicos, por lo cual se integra al
encapsulado memoria interna configurable llamados Bloques RAM de tipo SRAM y en
general estan dotadas con un rango de 1 a 4 Kb.
El Bloque DSP es un bloque especializado, util para mejorar el rendimiento al pro-
2.5 Hardware Reconfigurable 15
Figura 2.5: Arquitectura interna de alto nivel de un FPGA.
cesar datos que requieren una gran intensidad de procesamiento que usen multiplica-
ciones siendo los mas comunes los de 18×18 bits.
2.5.2.1. Clasificacion de arquitecturas
En funcion de su arquitectura los FPGA se clasifican de acuerdo a los siguientes
parametros: Granularidad, Esquema de reconfiguracion y Acoplamiento. La Granularidad,
se refiere al nivel de detalle en que se manipulan los datos, puede ser de tres tipos:
Granularidad fina: manipula la informacion a nivel de bit.
Granularidad media: maneja agrupaciones de bits.
Granularidad gruesa: son operaciones a nivel de palabras y registros.
El Esquema de reconfiguracion se refiere a que pueda reconfigurarse estaticamente
o dinamicamente. Los sistemas dinamicamente reconfigurables permiten reconfigura-
cion parcial de ciertos bloques logicos mientras otros estan funcionando. En los siste-
mas estaticos reconfigurables es necesario detener la ejecucion.
La clasificacion por Acoplamiento nos indica el grado de acoplamiento entre un host
y un microprocesador. En un sistema estrechamente acoplado, las unidades reconfigu-
rables son colocadas en la ruta de datos del procesador, actuando como unidades de
ejecucion. Los sistemas debilmente acoplados actuan como un coprocesador. Estan co-
nectados a un sistema de computadora host a traves de canales o algun hardware de
proposito especifico [23].
2.5 Hardware Reconfigurable 16
2.5.2.2. Proceso para el diseno
El proceso para implementar un circuito en FPGA, inicia editando el codigo fuen-
te la aplicacion en el lenguaje de preferencia para de descripcion de hardware como
HDL, Verilog, Abel, HLS, o esquematicos, diagramas de estado; estos lenguajes abs-
tractos estan disenados para ser compatibles con diferentes familias de FPGA en el
mercado. La sıntesis traduce las estructuras de los lenguajes HDL a un comportamien-
to equivalente con compuertas logicas siendo analogo a la compilacion con los sistemas
a base de microprocesador. El mapeo separa las compuertas en agrupaciones que se
adapten a los recursos de la FPGA. La colocacion asigna dichas agrupaciones a bloques
logicos especıficos para despues ser enrutados, es decir se realizan las interconexiones
internas de los bloques que se transportaran al usuario. El bitstream genera un archivo
binario que establece toda la programacion del FPGA y las configuraciones de los blo-
ques para llevarlo como ultimo paso, a la grabacion, cargando el flujo de datos hacia el
FPGA fısicamente [20].
2.5.3. Procesadores en FPGA
Para acelerar el proceso de diseno donde es necesario un gran ancho de banda o el
control intensivo de perifericos incluso el uso de algun sistema operativo para desarro-
llar aplicaciones en lenguajes de alto nivel como C, java, etc, los fabricantes de FPGA
permiten crear nucleos de procesadores usando los recursos logicos internos (Softcore)
o la opcion de incrustar nucleos fısicos dentro de los arreglos logicos (Hardcore) y ası
beneficiarse de la combinacion de diseno mediante HDL y de los procesadores. En la
Figura 2.6 se ilustran dos procesadores suaves.
Figura 2.6: Representacion del procesador Suave Microblaze de Xilinx en una FPGA.
2.5 Hardware Reconfigurable 17
2.5.3.1. Procesador suave
Un procesador suave “Soft-Processor” hace uso de la estructura FPGA para su im-
plementacion, generalmente opera en un rango de frecuencia de 20 a 650 Mhz. La
arquitectura mas sencilla en este tipo de procesadores es de 8 bits, programable exclu-
sivamente en lenguaje ensamblador, un ejemplo de ellos es el Picoblaze de la empresa
Xilinx, ideal para reemplazar maquinas de estado o aplicaciones de uso general sin
mayor complejidad; este incluye memoria interna local y utiliza muy pocos recursos
logicos para su construccion. Una de las grandes ventajas de estos procesadores, es la
capacidad de personalizacion y flexibilidad de sus perifericos, la cual permite agregar
y modificar caracterısticas en funcion de los requerimientos del producto final.
Para aplicaciones muy complejas donde se requiera procesamiento de video, audio,
centro de datos, Xilinx dispone de una arquitectura robusta llamado Microblaze, un
procesador RISC de 32 bits operando a una frecuencia nominal de 400 Mhz, en las
familias de FPGA Spartan, Virtex, Kintex, Artix en tecnologıa de 45 nm, 28 nm, 20 nm
y 16 nm. La plataforma de desarrollo software para programacion en lenguaje C y C++
es SDK y XPS, que incluye las herramientas de depuracion e implementacion.
Altera es otro de los principales fabricantes de FPGA, utiliza el procesador NIOSy NIOS II en la plataforma de Software Quartus Web Edition [24], es un procesador
de 32 bits tipo RISC, con procesamiento en punto flotante de 32 bit, con 32 niveles de
interrupcion y direccionamiento de memoria de 32 bits.
2.5.3.2. Microblaze
El CPU suave Microblaze es un microprocesador RISC de 32 bit con configura-
cion preestablecida y modificable. Los disenadores de sistemas pueden usar el kit de
desarrollo de software Xilinx (XPS y SDK) basado en el software Eclipse. El procesa-
dor MicroBlaze cumple con los requisitos para realizar diversas aplicaciones para los
mercados de robotica, industrial, medico, automotriz, de consumo, comunicaciones,
etc.
Si se desea el XPS y SDK incluye tres pre-configuraciones rapidas con librerıas pre-
compiladas para reducir el tiempo de desarrollo de arquitectura y software:
Microcontrolador: Adecuado para ejecutar codigo generico en lenguaje C.
Procesador en tiempo real: Para sistemas operativos basados en tareas tambien cono-
cidos como RTOS.
Procesador de aplicaciones: Incluye una distribucion de Linux especializado.
2.5 Hardware Reconfigurable 18
Microblaze permite personalizar los recursos de su arquitectura a traves de un
catalogo de perifericos IP y opciones del procesador, como por ejemplo modulos PWM,
UART, DMA, IIC, etc., donde solo es necesario arrastrar al diseno para agregarlos al bus
de perifericos llamado PLB, para satisfacer las necesidades especıficas de la aplicacion.
a continuacion, se mencionan algunas caracterısticas especıficas de la arquitectura del
CPU Microblaze:
32 registros de proposito general.
Bus de direcciones de 32 bits.
Palabra de instruccion de 32 bits con tres operandos y dos modos de direcciona-
miento.
Pipeline de una sola ejecucion.
2.5.3.3. Procesador duro
El nucleo del procesador duro (hard processor) se encuentra fısicamente junto al
arreglo logico programable. Este se diferencıa del procesador suave, por no utilizar los
recursos del FPGA. Es ideal para aplicaciones mas complejas e incrementa el ancho
de banda de operacion a niveles superiores de 1 Ghz. Los nucleos ARM de 32 bits
son los mas utilizados por los fabricantes por que presentan la mayor compatibilidad
con distribuciones de Sistemas Operativos como Linux, Android, Petalinux y sistemas
operativos de tiempo real.
Atmel (Ahora microchip), con sus AT94 fue de las pioneras en incorporar un proce-
sador de 8 bits de la familia AVR, en una arquitectura FPGA denominandolos FPSLIC.
La familia de dispositivos ZYNQ de Xilinx, incluye en su arquitectura un SoC con un
procesador ARM de 32 y 64 bits, con uno y dos nucleos, llegando a incluir hasta cuatro
nucleos en la familia ZYNQ UltraScale+. Altera (adquirida por Intel) incluye 4 nucleos
ARM de 64 bits en sus FPGA STRATIX 10 funcionando a una frecuencia de 1.5 Ghz.
2.5.4. Coprocesadores Suaves
Un coprocesador es un nucleo de procesamiento adicional que complementa y ayu-
da al procesador principal, asignandole tareas especificas para optimizar y acelerar el
rendimiento de las aplicaciones, dicha tareas pueden ser calculos aritmeticos comple-
jos, procesamiento de audio y video, encriptacion, controladores, etc.
2.5 Hardware Reconfigurable 19
Los FPGA son la plataforma perfecta para crear y usar nucleos de procesamiento ya
que por naturaleza realizan procesamiento concurrente, por lo cual en algoritmos que
consuman una gran cantidad de ciclos de reloj o instruccion, pueden ser optimizados
en un coprocesador disenado en HDL interactuando con el procesador principal en
el mismo encapsulado del FPGA, a esto se le conoce como Coprocesadores Suaves. El
concepto se ilustra en la Figura 2.7 .
Figura 2.7: Coprocesador suave.
2.5.5. Tarjeta de desarrollo FPGA ATLYS
Atlys es una placa de desarrollo fabricada por la empresa Digilent Inc., incluye un
FPGA Xilinx de la familia Spartan 6 modelo LX45 [25], un dispositivo de gama alta
que dispone una gran cantidad de perifericos como Gbit Ethernet, video HDMI, 128
MB de memoria DDR, conexion USB, puertos de audio, un oscilador de 100 Mhz, 48
pines de entrada o salida, leds y botones de usuario, capacidad para albergar procesa-
dores suaves como Microblaze y Picoblaze en el entorno de desarrollo Xilinx PlatformStudio e ISE Project (Figura 2.8). Por las caracterısticas mencionadas la hace ideal para
proyectos de Robotica, vision embebida, IoT, domotica, procesamiento de audio, etc.
2.5 Hardware Reconfigurable 20
Figura 2.8: Tarjeta de desarrollo FPGA Atlys
2.5.6. FPGA familia Spartan 6
La familia Spartan 6 ofrece grandes capacidades, es ideal para la integracion de
sistemas con el menor costo total para aplicaciones de gran volumen. La familia que
comprende 13 dispositivos ofrece densidades expandidas que van desde 3840 a 147443
celdas logicas, con la mitad del consumo de energıa que las anteriores familias de
Spartan, con una conectividad mas rapida y completa [26].
Arquitectura
Los CLBs estan integrados por dos sectores, dispuestos uno al costado de otro en
forma de columnas. Tres tipos de sectores son incorporadas, SLICEM, SLICES y SLI-
CEX. Cada sector contiene cuatro, acLUTs, ocho FlipFlops y logica mixta. Los LUTS
son para logica combinacional de proposito general, pero tambien soporta logica se-
cuencial, por lo cual las herramientas de sıntesis aprovechan la alta eficiencia logica,
aritmetica y las caracterısticas de la memoria. Todos los sectores tienen en comun dos
generadores logicos y dos elementos de almacenamiento, multiplexores multifuncio-
nales, acarreos logicos, compuertas aritmeticas y funciones de ROM. La RAM puede
ser generada por LUT y puede ser utilizada de forma distribuida por los sectores en for-
ma individual o en forma de registros de corrimiento de 16 bits, aunque cada Spartan
6 tiene entre 12 y 268 bloques RAM con doble puerto independiente para compartir
los datos y cada uno almacena 18 Kb. El Spartan 6 incluye bloques DSPs dedicados
para las aplicaciones que requieran muchos multiplicadores y acumuladores binarios
llamadas DSP48A1, que son multiplicadores de complemento a 2 de 18×18 bits y un
acumulador de 48 bits capaz de operar a 390 Mhz.
2.5 Hardware Reconfigurable 21
Granularidad
El Spartan 6 tiene una arquitectura de granularidad fina por que puede manejar
registros y palabras a nivel de bits.
Tecnologıa
Construido sobre una tecnologıa de proceso ya establecida sobre cobre de baja po-
tencia de 45 nm que ofrece el equilibrio optimo de costo, potencia y rendimiento. Los
pines de entrada y salida son multivoltaje que van desde 3.3 V a 1.2 V.
Caracterısticas adicionales
Las caracterısticas adicionales a la familia Spartan 6 son: Controladores de memo-
ria SDRAM, bloques mejorados de gestion de reloj en modo mixto, tecnologıa SelectIO
™, bloques de transceptores en serie de alta velocidad, PCI Express®, administracion
avanzada de energıa a nivel de sistema, deteccion automatica de opciones de configu-
racion y seguridad de IP mejorada con AES.
Reconfiguracion
La Familia Spartan 6 admite reconfiguracion parcial dinamica, por que es posible
cambiar la configuracion de una seccion de la FPGA, en tiempo de ejecucion.
Sıntesis de alto nivel
Para el diseno en FPGA los lenguajes de descripcion de hardware HDL tales como
VHDL o Verilog, permiten al disenador obtar por varios niveles de abstraccion, y to-
mar el control de los detalles para resolver un problema. El de mas bajo nivel es el
tipo estructural y es donde se realiza la conexion de componentes mediante instancias
explicitas, la incorporacion de compuertas, cerrojos, multiplexores, etc. El siguiente es
el Nivel de Transferencia de Registros (RTL), que oculta los niveles de detalle de la
tecnologıa y todas sus operaciones estan basadas en la manipulacion de registros. El
diseno mediante HDL comportamental representa el nivel mas alto, ya que se basa en
la descripcion como un algoritmo para el diseno de los circuitos (Figura 2.9). De estos
niveles de abstraccion el diseno comportamental, es el que generalmente reduce los
tiempos de implementacion por que se enfoca en la conducta final del circuito en lu-
gar de operaciones y ecuaciones logicas individuales, componentes y registros. Por lo
consiguiente toma gran importancia los entornos de desarrollo de diseno de hardware,
2.5 Hardware Reconfigurable 22
una de ellas es la Sıntesis de Alto Nivel (HLS), que utiliza sintaxis de lenguajes de pro-
gramacion como C, C++, System C, etc., adecuados para generar codigo sintetizable,
mejorando sustancialmente la productividad por que acelera la edicion del algoritmo,
simplifica la depuracion y facilita la legibilidad. [27].
Figura 2.9: Nivel de abstraccion para el diseno en FPGA.
2.5.6.1. Vivado HLS
Vivado HLS es una herramienta de software para sıntesis incluida en el paquete
llamado “Suite Design” para el diseno de hardware en FPGAs de Xilinx, que trasfor-
ma codigo de C, C++ a una implementacion RTL (Verilog o VHDL) que puede ser
implementado en dispositivos programables, dicho de una manera simple, hace posi-
ble crear hardware mediante software, que presenta grandes ventajas como un menor
tiempo desarrollo, mejora el rendimiento de algoritmos que estan basados en proce-
sadores reduciendo ası el consumo y los tiempos de ejecucion, permite la integracion
y encapsulacion mediante IP core para poder ser usados por procesadores suaves o
instancias HDL [28].
En Vivado HLS el disenador puede modificar la funcionalidad de los algoritmos
de sıntesis en la traduccion del codigo mediante la adicion de directivas (sentencias
especificas) de optimizacion que se ajustan a la complejidad del problema a resolver
con la intencion de obtener una mejora, por ejemplo, en la reduccion de densidad,
mejorar los ciclos de reloj, consumo, etc. Tambien estas directivas crean las interfaces
necesarias en el diseno para la comunicacion de la ultima capa (Top-level), que pueden
ser puertos, memorias, interfaces de perifericos para procesadores suaves. Una de las
grandes ventajas de esta herramienta, es que permite simular el codigo fuente de la
misma forma que los compiladores de procesadores usando el modo de depuracion,
2.6 Logica Difusa 23
donde interactuas con puntos de parada, observacion de variables dinamicas, y ejecu-
cion de instruccion por instruccion, ademas soporta la simulacion grafica y analisis de
senales binarias, todo esto para verificar nuestra descripcion previo a la sıntesis.
2.5.7. IP y perifericos
Los procesadores no pueden operar por si solos, es necesario rodearlos de periferi-
cos, memorias, modulos personalizados, coprocesadores, modulos PWM, etc, esto se
hace a traves de buses especializados, forman canales de comunicacion entre el proce-
sador central y los modulos esclavos, que se van agregando en funcion de las necesi-
dades de diseno. Xilinx usa el PLB en Microblaze que provee una infraestructura de
bus multimaestro y multiesclavos con un direccionamiento de 128 bits (Figura2.7). Por
su parte los dispositivos de la familia Zynq de Xilinx con procesador ARM adoptan el
protocolo de bus AXI ideal para streaming, altas velocidades de transferencia y sobre
todo una gran compatibilidad con perifericos en la industria.
Crear un sistema completo es una tarea de diseno importante por el gran consumo
de tiempo invertido, aunque en una FPGA se puede tomar una ventaja particular al
desarrollar codigo generico depurado y estable, por que hay un gran margen para la
reutilizacion del diseno, estos bloques funcionales encapsulados como IP, incluso los
fabricantes como Xilinx proporcionan bibliotecas en sus entornos de desarrollo (XPS,
Ise Project), reutilizadas de proyectos anteriores o desarrolladas por terceros con repo-
sitorios de codigo abierto o con licencia, antes de ser parte del sistema.
2.6. Logica Difusa
Lotfi A. Zadeh concibe la Logica Difusa [29][30] , que se define como una tecnica de
la inteligencia computacional que permite manejar informacion imprecisa, describien-
do conjuntos multivaluados llamados “Conjuntos Difusos” a los cuales se les asignan
etiquetas o terminos linguısticos como por ejemplo, alto, mediano, bajo, etc. La logica
difusa es muy usada en muchas disciplinas, aunque la gran mayorıa esta orientada a
sistemas de control, reconocimiento de patrones visuales, procesamiento de senales,
etc., lo cual ha sido posible gracias a la flexibilidad, tolerancia a la imprecision, su alta
capacidad en el modelado de sistemas no lineales y sobre todo a que esta basada en
el lenguaje natural, describiendo sistemas complejos mediante reglas IF-THEN, que
expresan el conocimiento del experto.
2.6 Logica Difusa 24
2.6.1. Sistema de Inferencia Difuso
El Sistema de Inferencia Difuso (FIS), es un metodo de manipulacion de informa-
cion linguıstica basado en reglas IF-THEN que se usa para modelar sistemas especıficos
y algoritmos de control, incorporando la experiencia humana en forma de sentencias
difusas. En el FIS se formulan las reglas y en base a estas reglas se realiza la toma de
decision. Un FIS esta compuesto de cuatro etapas principales, la Fuzzificacion, Base dereglas, Motor de inferencia y la Defuzzificacion, como se ilustra en la Figura 2.10.
Figura 2.10: Sistema de Inferencia Difusa.
2.6.1.1. Fuzzificacion
El modulo de Fuzzificacion es un procedimiento matematico que tiene como tarea
transformar los valores crisp de entrada (valores numericos reales) a grados de mem-
bresıa dentro de un conjunto difuso. Como primer paso, en la Fuzzificacion es necesa-
rio dividir el universo de discurso en subconjutos difusos con sus respectivas etiquetas
linguisticas para cada variable presente en el FIS. Posteriormente, deben de estable-
cerse las funciones de pertenencia (gaussianas, triangulares, trapezoidales, etc.), para
otorgar un significado numerico a cada etiqueta como ejemplo la Figura 2.11.
Figura 2.11: Variable linguıstica temperatura: con seis terminos linguısticos.
Dentro del proceso de fuzzificacion, las funciones de membresıa definidas sobre las
2.6 Logica Difusa 25
variables de entrada, permiten el mapeo de los datos presentes, determinando el grado
de pertenencia de la premisa de cada regla.
2.6.1.2. Inferencia
En la inferencia se localiza la base de conocimiento del sistema difuso, la tarea
del sistema de inferencia es mapear las entradas fuzzificadas recibidas del proceso de
fuzzificacion, a la base de reglas y producir una salida fuzzificada para cada regla. El
mecanismo de inferencia max-min es tambien conocido como metodo de Mamdani, y
es actualmente el mas utilizado por la sencillez y eficacia de su implementacion; este
metodo utiliza la t-norma min como funcion de implicacion y la t-conorma max como
operador de agregacion. El metodo de inferencia de Mamdani se basa en reglas de la
forma:
Regla 1: if x is a1 and y is b1 then z is c1.
Regla 2: if x is a2 and y is b2 then z is c2.
entonces para la conclusion inferida, en forma de funcion de membresıa, de la aplica-
cion de la base de reglas esta gobernada por la siguiente expresion:
µc′ (y) =max(min(αi ,µci (y))) (2.1)
donde el grado de activacion de la i-esima regla es:
αi =min(µia(x1), ...,µian(xn)) (2.2)
para este caso αi representa el grado de activacion de la i-esima regla, ası µiai (x1),. . . ,µian(xn) serian las funciones de membresıa de las entradas x1,. . . .xn, por ultimo µCi (y) viene
a ser la funcion de membresıa resultante de la funcion de implicacion (min).
2.6.1.3. Defuzzificacion
En ciertas aplicaciones un valor difuso no puede procesarse como tal, para apli-
caciones de control es necesario la defuzzificacion, que es el proceso inverso a la fuz-
zificacion, que calcula un valor numerico o valor crisp representativo a un conjunto
difuso de salida. En general, existen varios metodos y los mas comunes son por calculo
del centro de area, metodo de membresıa maxima, promedio ponderado, etc. Uno de
los mas simples es el metodo del centroide o centro de area que se obtiene del centro de
2.7 Redes Neuronales Artificiales 26
Xc, ocupado por el conjunto difuso (Figura 2.12). El valor es calculado en la ecuacion:
xc =
∫xµA(x) x dx∫xµA(x)dx
(2.3)
Para la implementacion discreta usamos la ecuacion 2.4 donde K representa el numero
de muestras en que se divide el universo de discurso, en donde xi ∈ U y µGout es la
funcion de membresıa de salida [31].
xc =
∑ki=0xi µGout (xi)∑ki=0 µGout (xi)
(2.4)
Figura 2.12: Metodo de Membresıa Maxima.
2.7. Redes Neuronales Artificiales
Las RNA son elementos basicos de procesamiento de informacion inspirados por
la estructura neuronal del cerebro, cuya caracterıstica clave es el aprendizaje a traves
de la extraccion del conocimiento de un conjunto de datos. Al entrenar una RNA sera
necesario ajustar los pesos sinapticos para realizar una funcion en particular. Gracias
a estas capacidades toma gran relevancia su estudio, por que son una alternativa fiable
para resolver una gran variedad de problemas que no tienen solucion por metodos
tradicionales. En esta seccion se da un breve panorama de las RNA multicapa con
aprendizaje supervisado, indispensable para resolver la cinematica inversa del robot
bıpedo.
2.7 Redes Neuronales Artificiales 27
2.7.1. RNA Multicapa
En algunos casos el perceptron simple, presenta complicaciones para encontrar una
aproximacion universal. Plantemos el uso del perceptron en el tıpico caso para la com-
puerta XOR (Tabla 2.1), la cual presenta niveles logicos verdaderos cuando las entradas
son diferentes[32][33].
X1 X2 Y0 0 00 1 11 0 11 1 0
Tabla 2.1: Tabla de verdad de la compuerta XOR.
Observamos en la grafica 2.13 que no es posible colocar una recta que separe las
regiones de nivel logico verdadero de las falsas, por esta razon se convierte en un pro-
blema no linealmente separable, exponiendo las limitaciones que tiene el perceptron
para este y algunos tipos de problemas.
Figura 2.13: Clasificacion erronea del perceptron para compuerta XOR .
Para resolver problemas mas complejos o que no sean linealmente separables como
es el caso del XOR, es posible agregar capas de neuronas en la arquitectura, obteniendo
ası una RNA multicapa, como se muestra en la Figura 2.14, en donde podemos observar
que las neuronas se agrupan en tres capas, una de entrada, una de salida, mas una capa
oculta con cualquier numero de neuronas, cada capa debe tener la misma funcion de
activacion pero pueden varias en los siguientes capas. Cada neurona esta conectada
con la anterior con su respectivo peso sinaptico w (excepto la de entrada) que a su vez
forman nodos [34].
Las redes multicapa puede estar compuesta por una o mas capas con el mismo tipo
de neurona o bien con una o multiples entradas y salidas, estas dependeran del tipo y
complejidad del problema. Las redes sin capas ocultas nos serviran para resolver casos
2.7 Redes Neuronales Artificiales 28
Figura 2.14: Red neuronal con una capa oculta.
linealmente separables, las de una capa oculta cuando la clasificacion se pueda realizar
con una curva y con dos capas ocultas la gran mayorıa de problemas. En la Figura 2.15
se ilustran ejemplos de como actuan las redes neuronales en diferentes problemas.
Figura 2.15: Regiones de decision del perceptron multicapa.
En las RNA multicapa no se utilizan las funciones de activacion bipolar como en el
caso del perceptron, debido a que debe ser estrictamente diferenciable, por este motivo
se eligen diferentes funciones para su activacion (Figura 2.16) siendo las mas comunes
la funcion Sigmoide y la funcion Tangente Hiperbolica [35].
2.7 Redes Neuronales Artificiales 29
Figura 2.16: Funciones de activacion.
La funcion de transferencia de una neurona de la red multicapa esta compuesta por
dos etapas, una provee la activacion mediante la suma ponderada de las entradas y la
otra genera la salida mediante una funcion no lineal f (x) denotada por las ecuaciones
2.5.
y = f (n∑i=1
xiwi + b) (2.5)
2.7.1.1. Algoritmo de entrenamiento por retropropagacion
Para estas redes de aprendizaje supervisado que difieren del perceptron simple,
uno de estos metodos a emplearse es el algoritmo de retropropagacion de errores
2.7 Redes Neuronales Artificiales 30
(Back-Propagation) que usa funciones de transferencia derivables, que al igual que
el perceptron simple, el objetivo sera encontrar los valores de wn en funcion de los
errores de las capas, que condicionen la respuesta deseada de la red en funcion de
los estımulos de entrada, esto se logra calculando el gradiente descendente del error
cuadratico medio, iniciando de la salida, propagandolo y actualizando los pesos capa
por capa hasta llegar a la entrada. A continuacion en el Algoritmo 1 se presenta el
proceso[36][34].
Algoritmo 1 Algoritmo de entrenamiento por retropropagacion1: Definir el numero de entradas, salidas y capas ocultas k.2: Definir el patron de entrenamiento p de entrada y la salida deseada.3: Asignar valores aleatorios para todos los pesos sinapticos w de la red.4: while Realizar hasta que el error cuadratico medio sea aceptableError =
∑p
12∑Mk=1(ypk − opk)2 do
5: Se presenta el patron de entrada xpi y salida ypo.6: Se calcula el potencial de cada neurona de las capas ocultas
Entradahpj =∑Ni=1w
hji xpi +whjo
7: Obtenemos las salidas de las capas ocultasipj = f h(entradahpj)
8: Se calcula la entrada total de cada neurona de la capa de salidaEntradaOpk =
∑Lj=1w
okj ipj +woko
9: Evaluamos la salida de la redipk = f o(entradaopk)
10: Calculamos el error para neuronas de la capa de salidaδopk = (ypk − opk) f o(entradaopk)
11: Calculamos el error para neuronas de la capa ocultaδhpj = f h(entradahpj)
∑Mk=1δ
opkw
okj
12: Se actualizan los pesos de la capa de salida, donde η es la velocidad de aprendi-zajewokjnuevo
= wokjactual + η δopk ipj13: Se actualizan los pesos de la capa oculta
wkjinuevo= wojiactual + η δhpj xpi
14: end while
2.7.1.2. Algoritmo de entrenamiento Levenberg-Marquardt
Es un metodo iterativo que utiliza matrices para el entrenamiento de redes neuro-
nales multicapa siendo una variante del metodo de Newton que encuentra las raıces
(pesos sinapticos adecuados) de funciones no lineales que en nuestro caso serıa una
funcion no lineal del error cuadratico medio de nuestra salida.
2.7 Redes Neuronales Artificiales 31
Para encontrar los pesos sinapticos se usa la expresion 2.6
Wnuevo =Wactual − [JT J +µ I]−1 JT E (2.6)
donde :
W=Matriz de pesos sinapticos
I=Matriz identidad
µ=Variacion de cambio de error
E= Matriz de Errores
J=La matriz jacobiana calculada por J = [∇E E−1]T
∇E=Matriz de gradientes.
Capıtulo 3
Diseno de controladores
Este capıtulo tiene como objetivo presentar el diseno de controladores difusos, el
calculo del ZMP y la metodologıa para calcular la cinematica mediante redes neurona-
les, para garantizar la estabilidad en la caminata del robot bıpedo, ademas se muestra
el proceso de diseno de un robot bıpedo experimental y el hardware necesario para
evaluar el rendimiento y la funcionalidad de los controladores.
3.1. Analisis del ZMP en el pie del robot bıpedo
Elegir el punto P adecuado de tal forma que el momento generado por la fuerza de
reaccion del piso compense el momento total generado por el cuerpo en su caminata,
este punto es conocido como ZMP (Figura 3.1).
El ZMP es coincidente con el COP (Centro de presion ) y el FRI ( Indicador de
rotacion de la pierna) cuyas diferencias constan en que el ZMP solo existe cuando el
pie es estable, es decir dentro del polıgono de soporte, el COP al igual que el ZMP
existe en el area del ZMP y en su frontera; el concepto FRI se dice que existe en el
polıgono, en la frontera y afuera de la frontera, por esto tambien es conocido como
falso ZMP (FZMP), el FRI proporciona gran ventaja ya que tambien existe cuando el
robot es inestable, es decir fuera del polıgono de soporte y hace posible predecir la
direccion de caıda del robot. El FRI es el punto en la superficie donde la fuerza de
reaccion del piso tendrıa que actuar para mantener el pie estacionario. En la Figura se
ilustran estas diferencias:
A partir de las acotaciones en que fueron colocados los sensores de presion en los
pies del robot, ver Figura 3.4, se fija los ejes de referencia XY, para ubicar y calcular el
punto ZMP (Xzmp,Yzmp) tomando como referencia el origen O’ (Centro del pie) y los
sensores se enumeran desde S1 hastaS4.
32
3.1 Analisis del ZMP en el pie del robot bıpedo 33
Figura 3.1: El punto P tambien es conocido como ZMP.
Figura 3.2: Diferencias entre COP, ZMP,FRI.
Las ecuaciones 3.1 son para calcular el FRI, estas incluyen la aceleracion a y el
torque ejercido HGxi en el centro de masa tomando como modelo el pendulo invertido:
xFRI =
∑imizi(ayi + g)−
∑imiyiazi −
∑iHGxi∑
imi(ayi + g))(3.1)
zFRI =
∑imixi(ayi + g)−
∑imiyiaxi −
∑iHGzi∑
imi(ayi + g))
3.1 Analisis del ZMP en el pie del robot bıpedo 34
Figura 3.3: Dimensiones y acotaciones del pie del robot bıpedo.
Para simplificar los calculos, el ZMP puede obtenerse mediante las ecuaciones 3.2
en donde∑Rx es la suma del producto de la fuerza en cada uno de los sensores por la
distancia hasta el origen O’ y∑
R es la peso total ejercido en la planta del pie.
ZMPx =∑4i=0RiXi∑4i=0Ri
(3.2)
ZMPy =∑4i=0RiYi∑4i=0Ri
Como ejemplo (Figura 3.4) se ilustra la ubicacion del ZMP con los siguientes valores
obtenidas del sensor de fuerza r1=200 gr, r2=100 gr, r3=100 gr, r4=200 gr.
Para liberar de tareas a la FPGA, el calculo del ZMP en cada pierna se realiza en el
Controlador de Senales Digitales (DSC) en leguaje C.
El pie esta compuesto por dos placas de aluminio, la placa inferior contiene cortes
que forman la base para los sensores y la placa superior tiene cuatro circunferencias
extraıdas con el mismo diametro que presionan directamente en la parte activa de los
sensores, estos se ubican en las esquinas del polıgono, ver Figura 3.5.
Para reducir la friccion y mejorar el agarre al piso en la caminata del robot bıpedo
se adhirio una capa antiderrapante en la placa inferior. El pie instalado se muestra en
3.1 Analisis del ZMP en el pie del robot bıpedo 35
Figura 3.4: Grafica en Matlab que simula la ubicacion de las coordenadas ZMP.
Figura 3.5: Distribucion de sensores en el polıgono del pie.
la Figura 3.6, en la parte trasera se coloco la tarjeta de adquisicion de datos que envıa
las senales de los cuatro sensores de fuerza hacia la FPGA.
3.2 Analisis de la cinematica directa del robot bıpedo 36
Figura 3.6: Diseno final del pie del robot bıpedo.
3.2. Analisis de la cinematica directa del robot bıpedo
La cinematica directa, determina las coordenadas de posicion en funcion de los
angulos que forma cada articulacion es decir :x
y
z
=→f
(θ1,θ2,θ3,θ4.....θn) (3.3)
3.2.1. Matriz de transformacion Homogenea
Para encontrar la cinematica directa, es comun recurrir a relaciones geometricas,
pero cuando los grados de libertad aumentan se utiliza el metodo sistematico de ma-trices de transformacion homogenea considerando como:
S1 = T S0 (3.4)
T =
R3x3 P3x1
F1x3 W1x1
=
Rotacion T ranslacion
P erspectiva Escalado
(3.5)
T4x4 =
R3x3 P3x1
0 1
=
Rotacion T ranslacion
0 1
(3.6)
3.2 Analisis de la cinematica directa del robot bıpedo 37
T =
nx ox ax pxny oy ay pynz oz az pz0 0 0 1
(3.7)
y para encontrar la orientacion del pie mediante:
α = tan−1[ayaz
]
β = sin−1[ayaz
]γ = cos−1
[ayaz
]Las matrices resultantes del producto de todas las relaciones matriciales TIz y TDer
proporcionan las coordenadas y la orientacion final x,y,z de cada extremidad:
TIz = 0A11A2
2A33A4
4A55A6
6A77A8
8A9
TDer == 0A11A2
10A1111A12
12A1313A14
14A1515A16
3.2.2. Modelo cinematico a partir del metodo de Denavit – Harten-
berg
Denavit y Hartenberg propusieron un metodo sistematico para pasar de un eslabon
a otro mediante cuatro transformaciones basicas, primero ubica los ejes del robot e
identifica las articulaciones, posteriormente obtiene los cuatro parametros siguientes:
1. Obtener θi como el angulo que hay que girar en funcion de zi−1 para que xi y xi−1
queden paralelos.
2. Obtener di como la distancia, medida a lo largo de zi−1 que habrıa que desplazar
Si−1 para que xi y xi−1 queden alineados.
3. Obtener ai como la distancia medida a lo largo de xi que coincida con xi−1 que
habrıa que desplazar el nuevo Si−1 para que su origen coincida con Si .
4. Obtener αi como el angulo que habra que girar en torno a xi para que el nuevo
Si−1 coincida totalmente con Si.
3.2 Analisis de la cinematica directa del robot bıpedo 38
A partir del diseno del prototipo del robot bıpedo mostrado en la Figura 3.7, ubicamos
y numeramos las articulaciones y eslabones con sus respectivos ejes y separamos las
dos cadenas cinematicas para el pie derecho e izquierdo.
Figura 3.7: Cadenas cinematicas del robot bıpedo.
Procedemos a obtener los cuatro parametros de acuerdo al metodo de Denavit -
Hartenberg de las cadenas cinematicas izquierda y derecha mostradas en las Tablas
3.1 y 3.2 :
Para obtener la matriz de transformacion i−1A que asocian a los eslabones, se tiene
Tabla 3.2: Parametros DH de la cadena cinematica del pie izquierdo del robot bıpedo.
Sustituyendo los parametros de DH de la Tabla 3.2 en la matriz de trasformacion 3.8
se obtienen las siguientes matrices para la cinematica del pie derecho:
0A1 =
−sinθ1 cosθ1 0 0
cosθ1 −sinθ 1 0 0
0 0 1 0
0 0 0 1
(3.9)
3.2 Analisis de la cinematica directa del robot bıpedo 40
1A2 =
−sinθ2 0 −1 0
cosθ2 0 0 0
0 −1 0 L21
0 0 0 0
(3.10)
2A3 =
−sinθ3 0 −cosθ3 0
cosθ3 0 −sinθ3 0
0 −1 0 0
0 0 0 1
(3.11)
3A4 =
sinθ4 0 −cosθ4 0
cosθ4 0 sinθ4 0
0 −1 0 −L23
0 0 0 1
(3.12)
4A5 =
cosθ5 0 −senθ5 L34 cosθ5
senθ5 0 cosθ5 L34 senθ5
0 −1 −1 0
0 0 0 1
(3.13)
5A6 =
cosθ6 −senθ6 0 L45 cosθ6
senθ6 cosθ6 0 L45 senθ6
0 0 1 0
0 0 0 1
(3.14)
6A7 =
cosθ7 −senθ7 0 L56 cosθ7
senθ7 cosθ7 0 L56 senθ7
0 0 1 0
0 0 0 1
(3.15)
7A8 =
cosθ8 0 senθ8 L67 cosθ8
senθ8 0 −cosθ8 L67 senθ8
0 1 0 0
0 0 0 1
(3.16)
3.2 Analisis de la cinematica directa del robot bıpedo 41
8A9 =
cosθ9 −senθ9 0 L78 cosθ9
senθ9 cosθ9 0 L78 senθ9
0 0 1 0
0 0 0 1
(3.17)
Ahora para la cinematica del pie Izquierdo:
0A1 =
−sinθ1 cosθ1 0 0
cosθ1 −sinθ1 0 0
0 0 1 0
0 0 0 1
(3.18)
1A2 =
−sinθ2 0 −1 0
cosθ2 0 0 0
0 −1 0 L19
0 0 0 0
(3.19)
2A10 =
−sinθ10 0 −cosθ10 0
cosθ10 0 −sinθ10 0
0 −1 0 0
0 0 0 1
(3.20)
10A11 =
sinθ11 0 −cosθ11 0
cosθ11 0 sinθ11 0
0 −1 0 −L910
0 0 0 1
(3.21)
11A12 =
cosθ12 0 −senθ12 L1011 cosθ12
senθ12 0 cosθ12 L1011 senθ12
0 −1 −1 0
0 0 0 1
(3.22)
12A13 =
cosθ13 −senθ13 0 L1112 cosθ13
senθ13 cosθ13 0 L1112 senθ13
0 0 1 0
0 0 0 1
(3.23)
3.3 Analisis de la cinematica Inversa. 42
13A14 =
cosθ14 −senθ 14 0 L1213 cosθ14
senθ14 cosθ14 0 L1213 senθ14
0 0 1 0
0 0 0 1
(3.24)
14A15 =
cosθ15 0 senθ15 L1314 cosθ15
senθ15 0 −cosθ15 L1314 senθ15
0 1 0 0
0 0 0 1
(3.25)
15A16 =
cosθ16 −senθ16 0 L1415 cosθ16
senθ16 cosθ16 0 L1415 senθ16
0 0 1 0
0 0 0 1
(3.26)
3.3. Analisis de la cinematica Inversa.
Por el contrario, la cinematica inversa, determina los angulos que deben formar las
articulaciones para poder llevar el efector final a la posicion deseada, denotada por
3.27.
θ1
θ2
.
.
.
θn
= →
f
−1( x, y , z , α, β, γ) (3.27)
Para obtener la cinematica inversa es comun recurrir a la solucion analıtica cuando
se refiere a robots de pocos grados de libertad para obtener una solucion cerrada, en
este caso, para doce grados de libertad divididos en dos cadenas cinematicas resulta
muy difıcil, si no es que imposible la obtencion de la misma, por lo cual se puede
recurrir a las redes neuronales.
La estructura de la red neuronal consta de seis entradas donde x, y, z corresponden
a la posicion deseada del efector final y α, β, γ representan los angulos de orientacion;
en la salida se tiene nueve terminos, de donde se obtienen los datos que producen la
posicion de cada articulacion (servo motor) y producir la posicion final deseada (Figura
3.3 Analisis de la cinematica Inversa. 43
3.8).
Figura 3.8: Relacion de entradas y salidas de la RNA para la resolucion de la cinematica inver-sa.
La RNA tambien tiene 10 capas ocultas y se entrenaron en el toolbox de RNA de
Matlab (Figura 3.9), mediante 75639 datos calculados de la cinematica directa, los cua-
les fueron calculados mediante el Algoritmo 2.
Figura 3.9: Toolbox de RNA en Matlab.
En la Tabla 3.3 se muestra los parametros de entrenamiento de la red:
Parametros de la red ValorEpocas 265Error cuadratico medio 1x10−8
Tamano de la matriz de entrenamientode entrada
9x75639
Tamano de la matriz de entrenamientode salida
6×75639
Metodo de entrenamiento Levenberg-MarquardtFuncion de activacion(Ocultas/Salida) tansig/purelin
Tabla 3.3: Parametros de entrenamiento de la red neuronal.
Para entrenar la RNA y resolver la cinematica inversa, se requirieron 256 epocas
iterando una matriz de datos de dimension 6×75639 mediante el algoritmo Levenberg-
Marquardt con funciones de activacion sigmoidal y lineal, en un tiempo estimado de
tres horas y media. En este proceso el error mınimo cuadrado se redujo a 1x10−8 (Ver
3.3 Analisis de la cinematica Inversa. 44
Algoritmo 2 Algoritmo para crear la matriz de datos para el entrenamiento de la RNAque resuelve la cinematica inversa
1: Se define el numero de eslabones y articulaciones.2: Asignamos el tamano de paso=8 de salto de angulo para cada articulacion.3: Fijamos los angulos de las articulaciones globales q1,q2,q3 en 180 grados.4: Asignamos los valores de las distancias L, de cada eslabon.5: Se obtienen los parametros DH (θ,d,a,α) del bıpedo.6: Sustituimos los parametros DH en las relaciones matriciales para las dos cadenas
cinematicas:TIz = 0A1
1A22A3
3A44A5
5A66A7
7A88A9
TDer == 0A11A2
10A1111A12
12A1313A14
14A1515A16
7: Inician las iteraciones evaluando los angulos utiles permitidos del robot:8: for q1 = 170 : paso : 1909: Obtenemos y almacenamos la posicion x,y,z y la orientacion α,β,γ .
10: for q2 = 155 : paso : 21011: Obtenemos y almacenamos la posicion x,y,z y la orientacion α,β,γ .12: for q3 = 150 : paso : 21013: Obtenemos y almacenamos la posicion x,y,z y la orientacion α,β,γ .14: for q4 = 180 : paso : 24015: Obtenemos y almacenamos la posicion x,y,z y la orientacion α,β,γ .16: for q5 = 155 : paso : 20517: Obtenemos y almacenamos la posicion x,y,z y la orientacion α,β,γ .18: for q6 = 155 : paso : 20519: Obtenemos y almacenamos la posicion x,y,z y la orientacion α,β,γ .20: endfor21: endfor22: endfor23: endfor24: endfor25: endfor26: Construimos la matriz de datos para el entrenamiento de la RNA los datos alma-
cenados.
3.4 Implementacion del controlador difuso para el seguimiento de trayectoriamediante ZMP 45
Figura 3.10), que equivale a una tolerancia del error en las posiciones del robot de ±1
cm.
Figura 3.10: Grafica del rendimiento de la red.
3.4. Implementacion del controlador difuso para el se-
guimiento de trayectoria mediante ZMP
En la Figura 3.11 se muestra el sistema general para efectuar la caminata de un
robot bıpedo basado en un controlador de postura ZMP difuso, cuya funcion principal
es mantener en equilibrio la posicion erguida del robot en relacion al plano terrestre.
Al iniciar el controlador se establecen los parametros de la caminata que dictan la for-
ma de caminar del robot entre ellas se fija el tamano o longitud del paso, velocidad
de la caminata, altura del robot, limites de potencia en los motores; todos los parame-
tros son preparados por el bloque de planificacion, el cual contiene los algoritmos de
sincronizacion en funcion de la capacidad mecanica del robot y principalmente gene-
ra las posiciones deseadas de las piernas del robot para llevar a cabo el avance en la
caminata. La posicion que cada articulacion debe mantener para llevar al objetivo al
efector final (pie del robot) se calcula a traves de la cinematica inversa mediante redes
neuronales previamente entrenadas con datos calculados por la cinematica directa. En
esta etapa se calculan dos cinematicas, una en direccion del centro de masa hacia los
pies y el otro de los pies al origen. Los angulos obtenidos son enviados a los motores
Dinamixel y establece la posicion final de las articulaciones. Despues de obtener una
3.4 Implementacion del controlador difuso para el seguimiento de trayectoriamediante ZMP 46
determinada posicion es necesario calcular el ZMP para poder definir la trayectoria
del centro de masa y realizar una compensacion de dicha trayectoria, como se observa
en la Figura 3.12, esto se realiza mediante cuatro sensores de fuerza colocados en la
planta del pie formando el polıgono de soporte.
Figura 3.11: Esquema del controlador difuso de postura mediante ZMP para el robot bıpedo .
Figura 3.12: Planeacion de la Trayectoria deseada del ZMP del robot bıpedo
El calculo del ZMP real es comparado con el ZMP deseado, el error generado forma
parte de la primera variable de entrada de un sistema de inferencia difuso (FIS) que
en tiempo real es derivado para obtener la segunda variable de entrada del FIS (Varia-
cion del error), ver la Figura 3.13. La respuesta del FIS actua como compensacion para
3.4 Implementacion del controlador difuso para el seguimiento de trayectoriamediante ZMP 47
establecer la trayectoria de la cadera en la referencia deseada.
Figura 3.13: Sistema de inferencia difusa del controlador ZMP basado en sensores.
La variable linguıstica de entrada “Error” esta conformada por siete terminos
linguısticos very negative, negative, small negative, zero, small positive, positive,
very positive y son distribuidos en el universo de discurso en un intervalo de -13 cm a
13 cm, como se observa en la Figura 3.14, cinco terminos linguısticos corresponden a
funciones triangulares y dos a trapezoidales.
Figura 3.14: Universo de discurso de la variable “Error”
La variable linguıstica de entrada “Variacion” esta integrada por cinco funciones
de membresıa triangular y dos trapezoidales, en un rango de -10 cm hasta 10 cm. Los
terminos empleados son: very negative, negative, small negative, zero, small positive,
positive, very positive. La variable linguıstica de salida “Compensacion” (Figura 3.16),
esta integrada por siete funciones de membresıa triangulares en un universo de discur-
so delimitado en un rango de -10 a 10. Los terminos usados son: very negative, negati-
ve, small negative, zero, small positive, positive, very positive. El sistema difuso esta
gobernado por cuarenta y nueve reglas como se aprecia en la Tabla 3.4, que establecen
la accion correspondiente para efectuar la compensacion mas adecuada. Para obser-
var la respuesta del sistema de inferencia, en la Figura 3.17 se ilustra la superficie de
3.4 Implementacion del controlador difuso para el seguimiento de trayectoriamediante ZMP 48
Figura 3.15: Universo de discurso de la variable “Variacion del error”
Figura 3.16: Universo de discurso de la variable “Compensacion”.
control del sistema.
Figura 3.17: Superficie de control del controlador ZMP
3.4 Implementacion del controlador difuso para el seguimiento de trayectoriamediante ZMP 49
ZMP’/ZMP VN N SN Z SP P VP
VN VP VP VP VP VP VP VPN VP P P SP SP SP P
SN P P SP SP Z SP SPZ P SP Z Z Z SN NE
SP SN SN Z SN SN NE NEP N SN SN SN N N VN
VERYPOSITIVE VN VN VN VN VN VN VN
Tabla 3.4: Reglas del sistema de inferencia ZMP
3.4.1. Metodologıa para implementar un coprocesador difuso en el
procesador suave Microblaze
Para ejecutar las tareas de procesamiento en el robot bıpedo tales como la resolu-
cion de la cinematica directa e inversa con RNA, el FIS para la compensacion de tra-
yectoria, el FIS para la regulacion de velocidad de motores, la adquisicion del ZMP en
base a sensores colocados en el pie del robot, y la ejecucion del controlador, demanda
una gran capacidad procesamiento para un unico procesador en el sistema embebido,
agregar mas funcionalidades en el futuro implica incrementar las exigencias y se pone
en riesgo la eficiencia general. En este caso aprovechamos el recurso de la FPGA para
mejorar la eficiencia del FIS ZMP, convirtiendo la ejecucion secuencial por hardware
concurrente, mucho mas rapido y eficiente en energıa, a traves de la conversion del FIS
escrito en C a RTL con la herramienta HLS de Xilinx. El FIS ZMP tiene dos variables
de entrada y una de salida de tipo flotante de 32 bits, con cuarenta y nueve reglas que
genera una latencia considerable en el sistema, por ello es encapsulado mediante un IP
Core esclavo que se conecta al procesador Microblaze mediante el bus local de periferi-
cos que actua como un puente de transferencia entre ellos como se ilustra en la Figura
3.18. En la Figura 3.19 se muestra los pasos a seguir para crear una arquitectura con el
procesador Microblaze y el IP Core difuso. Primero resolvemos el algoritmo del FIS de
dos entradas y una salida en lenguaje C, quedando reducido a dos funciones con datos
de tipo punto flotante “float EvaluarFM(struct FuncionDeMembrecia *, float)” y “float
fis(float, float)”. EvaluarFM retorna el dato de la evaluacion de una funcion de mem-
bresıa mediante dos parametros, el primero es una estructura que incluye el nombre,
tipo de funcion que puede ser triangular o trapezoidal y los parametros a,b,c,d de las
mismas y el segundo parametro es el valor de entrada x. La funcion fis realiza todo
el proceso difuso, que incluye la evaluacion del antecedente para la estructura de re-
3.4 Implementacion del controlador difuso para el seguimiento de trayectoriamediante ZMP 50
Figura 3.18: Coprocesador suave.
glas, la conclusion de las reglas por el metodo Mandani y la Defuzificacion a traves del
calculo del area del centroide con una resolucion de 100 muestras. El paso siguiente
consta en compilar el algoritmo en visual c y evaluar algunas entradas conocidas para
compararlas con los datos obtenidos mediante el Toolbox de logica difusa de Matlab
(Figura 3.20). Con los resultados satisfactorios, se procede exportar el codigo fuente a
Vivado HLS, realizar pruebas en el Testbench para la depuracion y validacion y ane-
xar las directivas (pragma) para especificar que las dos variables del FIS y la salida
sean convertidas a puertos de comunicacion (Registros de entrada y salida), incluso
si se desea, es posible agregar directivas para la optimizacion de bucles o estructuras.
Continuando, se ejecuta la sıntesis para la traduccion de codigo a C a lenguaje HDL
preferido, Vhdl o Verilog para proseguir a exportarlo como RTL o IP CORE. Conti-
nuando, en el software Xilinx XPS creamos la arquitectura personalizada para nuestro
controlador, que basicamente consta del procesador Microblaze, memoria de RAM de
16mb, bus de perifericos (PLB), modulo IIC , uart, GPIO y el IP CORE que contiene el
FIS en hardware. Para que finalmente se realice la sıntesis, exportamos la especifica-
cion de hardware al software SDK que ejecutara el firmware del controlador del robot
y descargamos los binarios al FPGA. Con esta metodologıa se reduce el tiempo de eje-
cucion de 1.8 ms obtenido con procesamientos secuencial, a 75 us con el coprocesador
difuso, lo que permite liberar capacidad de computo al procesador microblaze.
3.5 Implementacion de controlador difuso para la velocidad de movimiento. 51
Figura 3.19: Secuencia de incorporacion del ip core difuso a Microblaze.
3.5. Implementacion de controlador difuso para la velo-
cidad de movimiento.
Ademas del controlador de trayectoria tambien se implementa un controlador de
velocidad de movimiento, el cual se utiliza para reducir la inercia que producen los seis
motores Dynamixel coordinados para generar el movimiento en las cadenas cinemati-
cas. El objetivo es reducir la velocidad cuando se aproxima al objetivo y aumentarla
cuando este se aleja. Para ello se usan las variables linguısticas de entrada “Error” y
“Cambio de error”, para la variable de salida “RPM” que configura directamente las
RPMs de los motores cuyos parametros se encuentran entre 0 y 33.3 RPM.
La variable linguıstica de entrada “Error” representa los valores absolutos de la di-
3.5 Implementacion de controlador difuso para la velocidad de movimiento. 52
Figura 3.20: Comparacion de resultados del FIS en a) Matlab b)Visual C c)Vivado HLSd)Microblaze Ipcore.
ferencia del valor deseado y el valor actual ZMP y esta constituida por tres terminos
linguısticos que son distribuidos en el universo de discurso, y representados por una
funcion triangular y dos trapezoidales, que iniciando en 0 hasta 10 cm. Los terminos
para la variable “Error” usados son small, medium y large, como se observa en la Fi-
gura 3.21.
La variable linguıstica de entrada “Cambio de error” representa los valores abso-
lutos de la diferencia del Error actual y error anterior del ZMP, esta constituida por
tres terminos linguısticos que son distribuidos en el universo de discurso por una fun-
cion triangular y dos trapezoidales, en un intervalo 0 hasta 10 cm. Los terminos para
la variable “Cambio de error” usados son small, medium y large, ver Figura 3.22. La
variable linguıstica de salida “RPM” representa las velocidades de los motores, esta
3.5 Implementacion de controlador difuso para la velocidad de movimiento. 53
Figura 3.21: Universo de discurso de la variable de entrada “Error” del controlador de veloci-dad de movimiento.
Figura 3.22: Universo de discurso de la variable de entrada “Cambio de error” del controladorde velocidad de movimiento.
constituida por tres terminos linguısticos que son distribuidos en el universo de dis-
curso por cinco funciones de membresıa triangulares qen el rango de 0 hasta 1, y que
normalizan respectivamente los parametros de fabrica de los motores. Los terminos
para la variable “RPM” usados son: very low, low, medium, high, very high, segun se
observa en la Figura 3.23.
La accion del controlador difuso esta basada en nueve reglas las cuales se ilustran
en la Tabla 3.5, y que permiten tener una respuesta de mayor precision y suavidad en
la ejecucion de los movimientos del robot bıpedo. Para apreciar el comportamiento, en
la Figura 3.24 se muestra la superficie de control del FIS.
3.5 Implementacion de controlador difuso para la velocidad de movimiento. 54
Figura 3.23: Universo de discurso de la variable de salida “RPM” del controlador de velocidadde movimiento .
Figura 3.24: Superficie de control para el controlador de velocidad de movimiento
Error/CambioDe error Low Medium High
Small very low low mediumMedium medium medium highLarge high high very high
Tabla 3.5: Reglas del sistema de inferencia para el FIS de velocidad de movimiento.
Capıtulo 4
Resultados
4.1. Simulacion de la cinematica directa.
Para llevar a cabo la simulacion se utiliza el Toolbox de Matlab de Robotica desa-
rrollado por Peter Corke [37]. Esta herramienta proporciona muchas funciones que
son utiles para el estudio y simulacion de diferentes tipos de robots, incluyendo la ci-
nematica directa e inversa, la dinamica y la generacion de trayectorias. El toolbox man-
tiene la notacion y usa los metodos generales para la representacion de la cinematica y
dinamica que son utilizados como argumentos en las funciones escritas en el lenguaje
Matlab.
Obtenidos los parametros DH del analisis de la cinematica directa del robot bıpedo
se ingresan en la funcion del Toolbox llamada link que relaciona y crea un objeto con
las nueve articulaciones de la cinematica de una pierna y sus respectivos eslabones
necesarios para la simulacion. En la Figura 4.1 se observa la animacion del robot bıpedo
con sus respectivas articulaciones y eslabones al evaluar una posicion del efector final
(Pie izquierdo) en el plano.
4.2. Experimentacion, implementacion y metodologıa
de la cinematica inversa en hardware
El proceso de implementacion de cinematica inversa se ilustra en la Figura 4.2e
inicia con la creacion del modelo cinematico directo relacionando la morfologıa del
robot prototipo (articulaciones y eslabones) y los cuatro parametros de la metodologıa
de DH, con un modelo en Matlab usando el Toolbox de Robotica, especıficamente em-
pleando la funcion link que enlaza la morfologıa y la funcion fkine que resuelve la
55
4.2 Experimentacion, implementacion y metodologıa de la cinematica inversa enhardware 56
Figura 4.1: Simulacion de la Cinematica directa del robot bıpedo mediante el Toolbox derobotica en Matlab.
cinematica directa. Las relaciones geometricas de cada extremidad estan referidas a
un sistema de coordenadas fijo dentro de su espacio de trabajo, cuyo origen comenzara
de la cadera hacia el pie (Vector OA).
Obtenido la cinematica directa, se delimitan los angulos de rotacion en las articu-
laciones para cada extremidad a un rango util, y se evalua la cinematica en varias posi-
ciones con el objetivo de crear un conjunto de datos que sirva como patron de entrada-
salida y entrenar una RNA en el Toolboox de Matlab. Se verifica y valida los angulos
obtenidos de la RNA ingresando posiciones xyz deseadas, previamente calculadas con
la cinematica directa hasta reducir el error a mınimos aceptables. Continuando, se ex-
porta la RNA a un bloque de Simulink, donde se hace uso de la herramienta EmbeddedCoder que convierte dicho bloque, con nuestra RNA previamente entrenada a codigo
C ANSI. Para compilar los archivos generados en C, se crea un arquitectura especifica
y personalizada en la herramienta XPS de Xilinx, la arquitectura de hardware que in-
cluye el procesador Microblaze y los perifericos necesarios para procesar nuestra RNA.
Posteriormente se exporta la arquitectura a la herramienta SDK de Xilinx para editar,
compilar, depurar, y descargar a la FPGA los archivos generados en C que albergan la
RNA.
La red se entrena previamente en el ToolBox RNA de Matlab para su posterior uso
4.2 Experimentacion, implementacion y metodologıa de la cinematica inversa enhardware 57
Figura 4.2: Etapas del proceso para implementar la RNA en procesadores suaves.
en la herramienta de generacion de codigo C en los bloques de Simulink Embedded,
donde se prueban y se comparan fısicamente los resultados de la simulacion con las
pruebas de laboratorio. En la Figura 4.3 se muestran diferentes simulaciones y fotos
que evidencian las similitudes de los resultados de la simulacion y las pruebas con el
prototipo evaluando los vectores de posicion y orientacion, obteniendose resultados
favorables.
4.2.1. Cinematica inversa con cambio de referencia.
Es necesario calcular la cinematica inversa en la direccion opuesta a la cadena ci-
nematica de los pies mostrada en la Figura 4.4 (Direccion AO) para poder desarrollar
los controladores de postura ZMP y tener la plena manipulacion de la masa y reali-
zar la compensacion necesaria para ejecutar el seguimiento y mantener el equilibrio
del robot mediante el polıgono de soporte en cada ciclo de la caminata bıpeda. Con el
mismo procedimiento del calculo de la cinematica inversa en la direccion OA, se reor-
ganizan los parametros de DH se calcula la cinematica directa para entrenar la red y
se evaluan los puntos mediante el Toolbox de robotica de Peter Corke.
En la Figura 4.5 evaluamos algunos puntos en el espacio donde consideramos que
pudiese pasar el centro de masa del controlador ZMP en una movimiento hacia ade-
lante con la finalidad de establecer una postura vertical al plano de la tierra.
En la Tabla 4.1 se presenta el tiempo promedio de ejecucion de las funciones del
sistema de inferencias y las cinematicas.
4.2 Experimentacion, implementacion y metodologıa de la cinematica inversa enhardware 58
Figura 4.3: Evaluacion de la cinematica inversa en el robot bıpedo
FuncionTiempo(ms)
Evaluar Fis ZMP (IP Core) .075
Evaluar Fis RPM .122
Calculo ZMP (DSC) 0.95
Cinematica inversa (RNA) 1.17
Cinematica directa 1.37
Tabla 4.1: Tiempos de ejecucion del procesador Microblaze de las funciones principales.
4.2 Experimentacion, implementacion y metodologıa de la cinematica inversa enhardware 59
Figura 4.4: Plano sagital del robot bıpedo donde muestra una trayectoria del centro de masa.
Figura 4.5: Grafica de la evaluacion de puntos en el plano implementando la cinematica inversacon cambio de referencia.
4.3 Experimentacion con la caminata bıpeda. 60
4.3. Experimentacion con la caminata bıpeda.
Para planear la caminata se localizaron puntos estables en los planos frontal (Figu-
ra 4.6), y sagital ( Figura 4.7), para llevar a cabo la trayectoria que debe seguir el centro
de masa para realizar el ciclo de caminata dinamica mediante la manipulacion de la
cinematica inversa. Esto dio como resultado una aproximacion a un caminado estetico
similar al ser humano.
Figura 4.6: Plano frontal de la caminata bıpeda.
Figura 4.7: Plano sagital de la caminata bıpeda.
Para facilitar el modelado del robot bıpedo, el analisis se basa en el pendulo inver-
tido, en el cual se implementa un controlador con estructura PD+I difuso, las simula-
ciones del controlador se realizan en simulink y se obtiene la respuesta mostrada en la
4.3 Experimentacion con la caminata bıpeda. 61
grafica de la Figura 4.8 al estimulo de una senal de escalon unitario, logrando la esta-
bilidad de la senal de salida en un tiempo de 8 ms y con un reducido efecto de Gibbs.
Prosiguiendo con la experimentacion del controlador se ingresa un senal cuadrada
consiguiendo una respuesta deseable al seguimiento de los objetivos, ver Figura 4.9.
Figura 4.8: Simulacion del controlador ZMP para la respuesta al escalon unitario
Figura 4.9: Simulacion de seguimiento del controlador ZMP
Las pruebas realizadas de la caminata del robot se muestran en Figura 4.10, se ob-
serva la trayectoria planeada de referencia contra la senal de salida ZMP del robot
realizando una trayectoria recta con un avance de 2 cm por cada paso. Con una altura
de 46.6 cm, el robot se mantiene de forma estable sin caerse. En la Tabla 4.2 se mues-
tran las velocidades maximas alcanzadas por el robot bıpedo en una superficie plana,
4.3 Experimentacion con la caminata bıpeda. 62
concluyendo que si el robot reduce la altura se puede incrementar el avance y por lo
tanto aumentar la velocidad de la caminata.
Figura 4.10: Respuesta real del controlador ZMP en el robot bıpedo a trayectorias deseadas
[4] M.-Y. Cheng and C.-S. Lin. Genetic algorithm for control design of biped locomo-
tion. Journal of Robotic Systems, 14(5):365–373, 1997.
[5] K. c. Choil, H. j. Lee, and M. C. Lee. Fuzzy posture control for biped walking
robot based on force sensor for zmp. In SICE-ICASE, 2006. International JointConference, pages 1185–1189, Oct 2006.
[6] Miomir Vukobratovic and Branislav Borobac. Zero-moment point - thirty five
years of its life. International Journal of Humanoid Robotics, 01(01):157–173, 2004.
[7] A. Goswami. Foot rotation indicator (fri) point: a new gait planning tool to eva-
luate postural stability of biped robots. In Proceedings 1999 IEEE InternationalConference on Robotics and Automation (Cat. No.99CH36288C), volume 1, pages
47–52 vol.1, May 1999.
[8] Ltd. Honda Motor Co. The Honda Humanoid Robot. Technical report, September
2007.
[9] M. Shimojo, T. Araki, Aigou Ming, and M. Ishikawa. A zmp sensor for a biped
robot. In Robotics and Automation, 2006. ICRA 2006. Proceedings 2006 IEEE Inter-national Conference on, pages 1200–1205, May 2006.
65
REFERENCIAS 66
[10] T. McGeer. A control approach for actuated dynamic walking in biped robots.
Int. J. Robot. Res.,, 9(2):62–82, 1990.
[11] D. Braun and M. Goldfish. A control approach for actuated dynamic walking in
[12] Christine Chevallereau. Bipedal robot, modeling, design and building walking robots.Wiley, 2009.
[13] Honda. Technical information, 2011.
[14] K. Choi, H. Lee, and M. C. Lee. Fuzzy posture control for biped walking robot
based on force sensor for zmp. pages 1185–1189, Oct 2006.
[15] Anibal Ollero. Bipedal robot, modeling, design and building walking robots. Mar-
combo, Barcelona, 2007.
[16] Takankhi Sinichi, Yarnaguchi; Atsuo. Design of Biped Walking Robots Having Anta-gonistic Driven Joints Using Nonlinear Spring Mechanism. Marcombo, Japon, 1997.
[17] Qiang Huang, K. Yokoi, S. Kajita, K. Kaneko, H. Arai, N. Koyachi, and K. Tanie.
Planning walking patterns for a biped robot. IEEE Transactions on Robotics andAutomation, 17(3):280–289, June 2001.
[18] P. Nauth. A method for goal understanding and self-generating will for humanoid
robots. pages 344–349, May 2010.
[19] Thomas Braunl. Embedded Robotics,mobile robot design and application with embed-ded systems. Springer, Berlin, 2008.
[20] Scott Hauck and Andre DeHon. Reconfigurable Computing: The Theory and Practiceof FPGA-Based Computation. Morgan Kaufmann Publishers Inc., San Francisco,
CA, USA, 2007.
[21] Xilinx Inc. High performance computing using fpgas. 2010.
[22] Xilinx Inc. Reconfigurable Computing Accelerating Computation with Field-Programmable Gate Arrays. 2010.
[23] Nikolaos Voros and Konstantinos Masselos. System Level Design of ReconfigurableSystems-on-Chip. Springer Publishing Company, Incorporated, 1st edition, 2010.
REFERENCIAS 67
[24] Pong P. Chu. Embedded SoPC Design with Nios II Processor and VHDL Examples.Wiley, 1st edition, 2011.
[25] Digilent. ATLYS manual de referencia, 2018.
[26] Xilinx. ATLYS manual de referencia, 2011.
[27] Sanjay Churiwala. Designing with Xilinx® FPGAs: Using Vivado. Springer Inter-
national Publishing., Switzerland.
[28] Louise H. Crockett Ross A. Elliot. The Zynq Book. Xilinx,University of Strathclyde
Glasgow, SGlasgow, Scotland, UK, 2014.
[29] Roberto Sepulveda, Oscar Montiel, Oscar Castillo, and Patricia Melin. Funda-
mentos de logica difusa. Ediciones ILCSA, 1(1), 2002.
[30] Lotfi A. Zadeh. Fuzzy sets. Information and Control, 8(3):338–353, 1965.
[31] K. H. Lee. First Course On Fuzzy Theory And Applications. SpringerVerlag, 2004.
[32] Tariq Rashid. Make Your Own Neural Network. Packt Publishing Ltd., 1st edition,
2017.
[33] Valluru B. Rao. C++ Neural Networks and Fuzzy Logic. MIS:Press, 2st edition,
1995.
[34] Richard Santos, Jose; Duro. Evolucion Artificial y robotica autonoma. Alfaomega,
Mexico, 2005.
[35] J.S.R. Jang, C.T. Sun, and E. Mizutani. Neuro-fuzzy and Soft Computing: A Compu-tational Approach to Learning and Machine Intelligence. MATLAB curriculum se-