Documente Academic
Documente Profesional
Documente Cultură
MERIDA-VENEZUELA
2017
2
Agradecimientos
Primero que todo quiero agradecer a mi tutor profesor Miguel Diaz por haberme dado
3 materias, además por haber tenido un amable trato y paciencia durante el proceso de
toda esta tesis. También quiero agradecer al jurado de esta tesis. Quiero agradecer también
al profesor Jose Rujano. Y también a otros profesores que aunque no son nombrados
me dieron algunas materias que me hicieron avanzar en la maestrı́a. Por último quiero
agradecer al amable trato que me dio la secretaria del postgrado.
3
4
Resumen
Los robot paralelos tienen como principal caracterı́stica su estructura que consiste en
varias cadena cinemáticas cerradas. Este tipo de estructura permite una mejor distribu-
ción de las cargas soportadas. Ası́, los robots paralelos presumen unas caracterı́sticas muy
ventajosas en cuanto a la relación entre: peso del robot y el peso de la carga ubicada en
el elemento terminal, y tienen mejor velocidad, rigidez y precisión. Como principal con-
trapartida, los robots paralelos tienen un espacio de trabajo muy reducido con respecto a
los robots serie. Una de las principales necesidades de la industria es que los robot para-
lelos tenga máxima área alcanzable (espacio de trabajo) pero que además tenga agilidad
(llamada en esta tesis dexteridad).
Muchas de las tareas de las industria pueden ser realizadas por robots planos, donde el
movimiento de cada uno de los puntos puede ser visto en un mismo plano de proyección.
En este sentido, el robot plano de 2 Grados de Libertad (GdL) y de 5 eslabones unidos por
pares de revoluta (5R) representa unos de los más estudiados. En este trabajo, se busca
diseñar este tipo de robot de forma tal que su área alcanzable sea la máxima posible y
además una optima dexteridad. Para ello, se toma ventaja de la técnica de optimización
llamada Algoritmos Genéticos que permite determinar máximos globales sin quedar la
solución atrapada en un mı́nimo local.
Para ello se inicia con una introducción de la estructura de la tesis y sus objetivos.
Luego se presenta una breve introducción del marco teórico. También se desarrollan las
ecuaciones cinemáticas a utilizar en los algoritmos evolutivos (Algoritmos Genéticos AG).
Se desarrollan dos ejemplos de aplicación donde se optimiza el área de trabajo alcanzable
y el área diestra. Como aplicación se selecciona el robot de 2 (GdL) 5R para que realice
tareas como mesa de corte en el plano x-y. Se busca que el robot tenga mayor espacio de
trabajo con cierta dexteridad.
Debido a que el método de AG depende de un conjunto de parámetros, se ha hecho
un estudio exhaustivo de ellos y como resultado se obtiene el conjunto de parámetros
que logran que el algoritmo converja a la mejor solución. Primero se aplico el Algoritmo
Genético para optimizar el espacio de área alcanzable, y luego se aplicara nuevamente el
algoritmo para optimizar el área diestra.
Finalmente, se presenta un camino a seguir para encontrar los valores del Algoritmo
Genético para su convergencia al máximo de área alcanzable y máximo de dexteridad
buscando un termino medio entre las dos, es decir que el área de dexteridad sea un área
apreciable.
5
6
Índice general
Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1. Introducción 11
1.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2. Algunas diferencias entre esta tesis y los antecedentes . . . . . . . . . . . . 15
1.3. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6.1. Objetivos Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6.2. Objetivos Especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7. Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.8. Estructura de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2. Marco Teórico 19
2.1. Algoritmos Genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2. ¿Por qué utilizar Algoritmos Genéticos en la optimización? . . . . . . . . . 20
2.3. Definición de Algoritmo Genético . . . . . . . . . . . . . . . . . . . . . . . 21
2.4. Terminologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.1. Cromosoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.2. Genotipo y Fenotipo . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.3. Fitness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.4. Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.5. Operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5. Funcionamiento de una Algoritmo Genético . . . . . . . . . . . . . . . . . 27
2.5.1. Pasos de un Algoritmo Genético Simple . . . . . . . . . . . . . . . . 27
2.6. Un Ejemplo de Implementación . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7. Cinemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7.1. Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.2. Robot Paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.3. Grados de Libertad . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.4. Grados de libertad en mecanismos planos . . . . . . . . . . . . . . . 30
2.7.5. Espacio de trabajo Alcanzable . . . . . . . . . . . . . . . . . . . . . 31
2.7.6. Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7
8 ÍNDICE GENERAL
3. Ecuaciones Cinemáticas 33
3.1. Robot paralelo plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2. Ecuaciones de Cinemática . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1. Función trigonométrica de un ángulo cualquiera . . . . . . . . . . . 34
3.3. Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4. Casos de Estudio 41
4.1. Primer caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2. Área Alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3. Mallado para área alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4. Discretización del modelo para determinar el Área Alcanzable . . . . . . . 46
4.5. Ajuste del Algoritmo Genético para área alcanzable . . . . . . . . . . . . . 48
4.5.1. Estudio de PC para área alcanzable . . . . . . . . . . . . . . . . . . 48
4.5.2. Estudio de Porcentaje de Mutación para área alcanzable . . . . . . 49
4.5.3. Estudio de Longitud de Código Binario (SL) para área alcanzable . 49
4.5.4. Estudio del Tamaño de la población y de generaciones (iter) para
área alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.6. Optimización del Área Alcanzable . . . . . . . . . . . . . . . . . . . . . . . 50
4.7. Segundo caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.8. Estudio de Dexteridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.8.1. Mallado de dexteridad . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.8.2. Discretización del modelo para determinar el Área de Dexteridad . 55
4.9. Ajuste del Algoritmo Genético para Dexteridad . . . . . . . . . . . . . . . 56
4.9.1. Estudio de PC para Dexteridad . . . . . . . . . . . . . . . . . . . . 56
4.9.2. Estudio de Porcentaje de Mutación para Dexteridad . . . . . . . . . 57
4.9.3. Estudio de Longitud de Código Binario (SL) para Dexteridad . . . 57
4.9.4. Estudio tamaño de la población y de generaciones(iter) para Dex-
teridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.10. Optimización del Área de Dexteridad primer caso de estudio . . . . . . . . 60
4.11. Optimización del Área de Dexteridad del segundo caso de estudio . . . . . 61
4.12. Algunas aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.13. Robot paralelo en estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.14. Comprobación de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.15. Discusión de algunos resultados . . . . . . . . . . . . . . . . . . . . . . . . 69
5. Conclusiones 73
5.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2. Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
B. Código de AG 77
B.1. Algoritmo Genético (AG) . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.2. Encoding (Codificación) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.3. Decoding (Descodificación) . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.4. Selection (Selección) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
B.5. Crossover (Cruce) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
B.6. Mutation (Mutación) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Bibliografı́a 97
10 ÍNDICE GENERAL
Capı́tulo 1
Introducción
En pocos años, la robótica ha pasado de ser una mera imaginación de los seres humanos
a una realidad del mundo actual y del mercado productivo. En los primeros años era algo
incierto su futuro llegando a la era actual a una realidad imprescindible de las industrias.
Dentro de los tipos de robot están los robot paralelos que consisten en un sistema
mecánico donde dos plataformas están conectadas por al menos dos cadenas cinemáticas
abiertas. De esta forma, las cadenas cinemáticas abiertas o piernas proporcionan movi-
miento relativo entre la plataforma móvil y la plataforma base fija. Las piernas dan una
mayor rigidez al robot, a expensas de limitar su espacio de trabajo. Haciendo un sı́mil con
el cuerpo humano, un robot serial o cadena cinemática abierta puede ser vista como un
solo brazo. El brazo puede realizar diversas tareas; mas sin embargo, cuando se requiere
de mayor fuerza o de precisión el ser humano emplea los dos brazos. Cuando se utilizan
los dos brazos se está en presencia de un robot paralelo, donde la base es el torso y la pla-
taforma móvil es el elemento que esta siendo sujetado con las manos. Siguiendo este sı́mil
puede entenderse que el robot paralelo gana mayor capacidad de carga, mayor precisión
pero pierde capacidad de alcance en el movimiento de las brazos (espacio de trabajo o
workspace). Debido las ventajas que presenta (mayor rigidez, precisión), los robot parale-
los se han convertido en una alternativa indispensable para el diseño de robots tanto en
el mundo académico como en la industria (Pierrot et al., 2009).
A la par del desarrollo de la robótica y los robot paralelos, ha habido un rápido y
creciente desarrollo en la aplicación de algoritmos y procesos por computadora en los
siguientes campos de investigación: 1) la teorı́a mecanismo, 2) análisis de la movilidad,
3) sı́ntesis dimensional, 4) la cinemática y el modelo dinámico, y 5) la optimización del
diseño. La optimización cinemática del mecanismo consiste en determinar las dimensiones
que permitan obtener un mejor desempeño del robot, como por ejemplo, conseguir un
robot cuyas dimensiones conlleven a obtener un espacio de trabajo máximo. Este es el
problema abordado en este trabajo que se explica en el siguiente párrafo.
Se tiene de partida un robot plano de 2 grados de libertad de 5 barras unidas
con juntas de revoluta (5R), se requiere para una aplicación en particular
que el diseño del robot permita abarcar el mayor espacio de trabajo y que
además presente un buen desempeño cinemático. Para resolver la tarea se va
a tomar ventaja de técnicas de optimización basadas en algoritmos evolutivos
11
12 CAPÍTULO 1. INTRODUCCIÓN
1.1. Antecedentes
Merlet (1997) presenta un método para el diseño optimo de un manipulador paralelo de
tipo plataforma Gough. Este tipo de manipulador es bien conocido y el primer prototipo
fue propuesto por Gough de allı́ el nombre. Las principales caracterı́stica del robot son su
alta precisión y alta carga nominal. Se utiliza muy a menudo como sistema de simulación
de vuelo. Esta arquitectura muy inusual es difı́cil lograr un diseño ”óptimo”, es decir, la
geometrı́a del Robot que resulte ser la mejor con respecto a algún criterio es una tarea
difı́cil. En la metodologı́a de diseño propuesta se propone 1) las especificaciones de diseño
incluyen un requisito el espacio de trabajo 2)Primero se determina todas las posibles
geometrı́as del robot, y 3) de entre todas estas geometrı́as se realiza un análisis numérico
con el objeto de determinar el robot que mejor cumple las especificaciones de diseño (por
lo tanto, la metodologı́a es espacio de trabajo orientado). Este trabajo ayudará a la tesis
para desarrollar la estrategia de optimizar el espacio de trabajo.
Merlet (2006), presenta algunas de las definiciones importantes que se deben tener
presente en el diseño de robot paralelos como lo son: matriz Jacobiana, manipulabilidad,
número de condición de la matriz jacobiana y precisión de robot paralelos. El autor mues-
tra como la metodologı́a de diseño optimo tiene que considerar los indices cinemáticos.
En el trabajo se revisan también como estos indices son apropiados para robot paralelos.
Esto ayudará a la tesis hacer una revisión de distintos indices de cinemática.
Liu et al. (2006) establece que el análisis y el diseño óptimo son dos cuestiones impor-
tantes en el desarrollo de un mecanismo paralelo. El análisis de la cinemática y espacio de
trabajo son dos problemas básicos para definir y evaluar la ejecución de un mecanismo.
Dos problemas involucradas en el diseño optimo de un mecanismo son: evaluación del
desempeño y la sı́ntesis dimensional. En el proceso de diseño optimo podrı́an participar
varios criterios de rendimiento para un propósito de diseño tales como espacio de trabajo,
singularidades, destreza e indice de acondicionamiento. Tales mecanismo con estructura
simétrica han atraı́do a muchos investigadores, quienes han estudiado su análisis de po-
sición, espacio de trabajo, los modos de montaje, la singularidad y diseño cinemático.
Este trabajo permite establecer los distintos criterios de rendimientos que son usados en
el diseño de robot paralelos.
Laribi et al. (2007) realiza un análisis dimensional de un robot paralelo Delta para
un prescrito espacio de trabajo donde se muestra la determinación del espacio de trabajo
1.1. ANTECEDENTES 13
1.4. Justificación
Se realiza esta investigación porque el diseño de un robot requiere de técnicas de
optimización para determinar las dimensiones geométricas del mecanismo que cumplan
con los requisitos para la cual va ser diseñada. Uno de los criterios de diseño es optimizar
el espacio de trabajo diestro de un robot el cual se define como el conjunto de posiciones
y orientaciones en el espacio que pueden ser alcanzados por el robot con cierto nivel de
dexteridad. Este problema de optimizar es complejo ya que la función objetivo no se puede
calcular el gradiente de una manera explicita.
Lo que se busca en este trabajo es emplear algoritmos que encuentre el máximo global
y que no dependa del gradiente de la función objetivo lo cual justifica el uso de algoritmos
evolutivos que ayudan a solventar este problema.
16 CAPÍTULO 1. INTRODUCCIÓN
1.5. Limitaciones
Esta tesis se limitará al tema del diseño optimo de robot paralelos usando únicamente
como criterio el espacio diestro ya que cabe mencionar que existen otros criterios que
no serán abarcados en esta tesis. Luego la técnica a desarrollar se basan en algoritmos
evolutivos tales como Algoritmos Genéticos.
1.6. Objetivos
1.6.1. Objetivos Principal
Desarrollar una estrategia de optimización del espacio diestro de robot paralelos ba-
sados en técnicas en Algoritmos Genéticos.
1.7. Metodologı́a
1. El proyecto se inicia estudiando en que consiste los Algoritmos Genéticos como se
soluciona un problema de optimización con restricciones lineales y no lineales.
2. A partir de los conceptos de cinemática se desarrollaran las ecuaciones que permiten
estudiar el comportamiento cinemático del robot de posición.
3. Establecer una técnica de estimar el espacio de trabajo diestro, se propone técnicas
de Montecarlo y Nube de Puntos.
4. Desarrollar el Algoritmo Genético.
5. Realizar el código de la función objetivo de manera que pueda ser usado por Algo-
ritmos Genéticos.
6. Ajustar los parámetros del Algoritmo Genético para distintos métodos de selección,
cruce, mutación y otros.
1.8. ESTRUCTURA DE LA TESIS 17
9. Resultados y conclusiones.
Marco Teórico
19
20 CAPÍTULO 2. MARCO TEÓRICO
6. Cuando se usan para problemas de optimización, resultan menos afectados por los
máximos locales que las técnicas tradicionales (i.e., son métodos robustos).
2.4. Terminologı́a
2.4.1. Cromosoma
En Algoritmos Genéticos, un cromosoma tı́pico se refiere a una solución candidata
a un problema. Un cromosoma esta subdividido en genes. La codificación suele hacerse
mediante valores binarios. Sin embargo, también existen representaciones que codifican
directamente cada parámetro con un valor entero, real o en punto flotante. La figura 2.1
muestra la representación de un cromosoma.
2.4.3. Fitness
El fitness de un individuo en un Algoritmo Genético es el valor de la función objetivo
para su fenotipo. Para calcular el fitness, los cromosomas tienen que ser decodificados y
su función objetivo tiene que ser evaluada. El fitness no solo indica que tan buena es una
solución, también que tan cerca se encuentra esta de la solución óptima.
2.4.4. Población
Una población es una colección de individuos, consiste en una serie de individuos a
ser evaluados.
1. Selección:
Los algoritmos de selección serán los encargados de escoger qué individuos van a
disponer de oportunidades de reproducirse y cuáles no. Puesto que se trata de imitar
lo que ocurre en la naturaleza, se ha de otorgar un mayor número de oportunidades
de reproducción a los individuos más aptos. Por lo tanto, la selección de un individuo
estará relacionada con su valor de ajuste. No se debe, sin embargo, eliminar por
completo las opciones de reproducción de los individuos menos aptos, pues en pocas
generaciones la población se volverı́a homogénea.
En cuanto a algoritmos de selección se refiere, estos pueden ser divididos en
dos grandes grupos: probabilı́sticos y determinı́sticos. Ambos tipos de algoritmos
basan su funcionamiento en el principio indicado anteriormente (permitir escoger
una mayor cantidad de veces a los más aptos). Sin embargo, como su nombre indica,
el primer tipo adjudica estas posibilidades con un importante componente basado en
el azar. Es en este grupo donde se encuentran los algoritmos de selección por ruleta
o por torneo que, dado su importancia por ser los más frecuentemente utilizados, lo
cual serán los que describiremos con detalles. El segundo grupo engloba una serie de
algoritmos que, dado el ajuste conocido de cada individuo, permite asignar a cada
uno el número de veces que será escogido para reproducirse.
Selección por ruleta
Propuesto por DeJong, es posiblemente el método más utilizado desde los orı́genes
de los Algoritmos Genéticos Gestal et al. (2010). A cada uno de los individuos de la
población se le asigna una parte proporcional a su ajuste de una ruleta, de tal forma
que la suma de todos los porcentajes sea la unidad. Los mejores individuos recibirán
una porción de la ruleta mayor que la recibida por los peores. Generalmente, la
población está ordenada en base al ajuste, por lo que las porciones más grandes se
encuentran al inicio de la ruleta. Para seleccionar un individuo basta con generar un
número aleatorio del intervalo [0, 1] y devolver el individuo situado en esa posición
de la ruleta. Esta posición se suele obtener recorriendo los individuos de la población
y acumulando sus proporciones de ruleta hasta que la suma exceda el valor obtenido.
La probabilidad de selección pi de cada individuo se calcula por la formula siguiente
Fitness del individuo
Probabilidad de selección pi = P (2.1)
Fitness (todos los individuos)
luego se calcula la probabilidad acumulativa qi para cada cromosoma vi como
i
X
qi = pj (2.2)
j=1
24 CAPÍTULO 2. MARCO TEÓRICO
y puesto que los genes de los padres continuarán en la población aunque disper-
sos y posiblemente levemente modificados por la mutación, en posteriores cruces
se podrán volver a obtener estos padres, recuperando ası́ la bondad previamente
perdida.
Existen multitud de algoritmos de cruce. Sin embargo los más empleados son los
que se detallarán a continuación:
a) Cruce de 1 punto:
Es la más sencilla de las técnicas de cruce. Una vez seleccionados dos indivi-
duos se cortan sus cromosomas por un punto seleccionado aleatoriamente para
generar dos segmentos diferenciados en cada uno de ellos: la cabeza y la cola.
Se intercambian las colas entre los dos individuos para generar los nuevos des-
cendientes. De esta manera ambos descendientes heredan información genética
de los padres. La figura 2.2 muestra el cruce de 1 punto.
b) Cruce de 2 puntos:
Se trata de una generalización del cruce de 1 punto. En vez de cortar por un
único punto los cromosomas de los padres, como en el caso anterior, se realizan
dos cortes. Deberá tenerse en cuenta que ninguno de estos puntos de corte
coincida con el extremo de los cromosomas para garantizar que se originen tres
segmentos. Para generar la descendencia se escoge el segmento central de uno
de los padres y los segmentos laterales del otro padre. La figura 2.3 muestra el
cruce de 2 puntos.
3. Copia
La copia es la otra estrategia reproductiva para la obtención de una nueva
generación a partir de la anterior. A diferencia del cruce, se trata de una estrategia de
reproducción asexual. Consiste simplemente en la copia de un individuo en la nueva
generación. El porcentaje de copias de una generación a la siguiente es relativamente
reducido, pues en caso contrario se corre el riesgo de una convergencia prematura de
26 CAPÍTULO 2. MARCO TEÓRICO
4. Elitismo
El elitismo es un caso particular del operador de copia consistente en copiar
siempre al mejor, o en su caso mejores, individuos de una generación en la generación
siguiente. De esta manera se garantiza que el proceso de búsqueda nunca dará un
paso hacia atrás en cuanto a la calidad de la mejor solución obtenida, sino que un
cambio en ésta siempre implicará una mejora.
5. Mutación
La mutación de un individuo provoca que alguno de sus genes, generalmente uno
sólo, varı́e su valor de forma aleatoria.
Aunque se pueden seleccionar los individuos directamente de la población actual
y mutarlos antes de introducirlos en la nueva población, la mutación se suele utilizar
de manera conjunta con el operador de cruce. Primeramente se seleccionan dos
individuos de la población para realizar el cruce. Si el cruce tiene éxito entonces
uno de los descendientes, o ambos, se muta con cierta probabilidad PM. Se imita de
esta manera el comportamiento que se da en la naturaleza, pues cuando se genera
la descendencia siempre se produce algún tipo de error, por lo general sin mayor
trascendencia, en el paso de la carga genética de padres a hijos.
La probabilidad de mutación es muy baja, generalmente menor al 1 %. Esto
se debe sobre todo a que los individuos suelen tener un ajuste menor después de
mutados. Sin embargo se realizan mutaciones para garantizar que ningún punto del
espacio de búsqueda tenga una probabilidad nula de ser examinado.
Tal y como se ha comentado, la mutación más usual es el reemplazo aleatorio.
2.5. FUNCIONAMIENTO DE UNA ALGORITMO GENÉTICO 27
[Mutación]. Con una probabilidad de mutación, modificar al azar parte del cromo-
soma de los individuos, esto permite alcanzar zonas del espacio de búsqueda que no
estaban cubiertas por los individuos de la población actual.
f (x, y) = x2 + y 2 (2.3)
sujeta a condición
x + y = 3. (2.4)
Solución:
Se puede ver este problema como
Un resultado analı́tico da
(3/2, 3/2) = (1.5, 1.5) (2.6)
Si se usa para la optimización el Algoritmo Genético (hecho con el programa Matlab ver
Apéndice) da con iter= 100, PC= 0.70, PM= 0.07, SL= 12 y PS= 200, x en el intervalo
[0, 3], el resultado siguiente x = 1.4996 y entonces y = 3 − 1.4996 = 1.5004.
2.7. Cinemática
Antes de definir que es la cinemática se presentan dos conceptos importantes.
2.7. CINEMÁTICA 29
Generar la po-
Inicio
blación inicial
Evaluar la función
de adaptación de
cada individuo
Seleccionar de la
población a los indi-
viduos a reproducir
Reproducir obteniendo
descendientes (Cruzar)
Si cumple
la
F condición
de parada
Verdadero
Fin
2.7.1. Robot
Se define de manera formal en la Organización Internacional para la Estandarización
(ISO), como un manipulador multifuncional reprogramable, capaz de mover materiales,
piezas, herramientas o dispositivos especiales, a través de movimientos variables progra-
mados, para el desempeño de tareas diversas.
tiene 5 eslabones (o barras), 5 juntas (o uniones), cada junta tiene 1 grado de libertad,
por tanto, por ecuación 2.5, j2 = 0, j1 = 5 y n=5. Ası́
2.7.6. Jacobiano
El Jacobiano de un manipulador se define de la siguiente manera.
La relación entre el vector n-dimensional de coordenadas articulares θ y el vector
m-dimensional x de coordenadas cartesianas de la plataforma móvil, esta dada por la
ecuación,
F (θ, x) = 0 (2.9)
donde F es una función n+m-dimensional de θ y x y 0 es el vector cero p-dimensional
(dependiendo de las funciones coordenadas de F). Diferenciando la ecuación anterior se
obtiene una relación entre las velocidades de entrada y salida.
Jx ẋ = Jθ θ̇ (2.10)
32 CAPÍTULO 2. MARCO TEÓRICO
donde
∂F
Jx = (2.11)
∂x
∂F
Jθ = (2.12)
∂θ
tanto Jx como Jθ son matrices jacobiana de F respecto a cada coordenada. De esta relación
se puede intentar invertir Jx o Jθ , en esta tesis invertiremos Jθ y llamaremos el jacobiano
J = Jθ−1 Jx (2.13)
Ecuaciones Cinemáticas
33
34 CAPÍTULO 3. ECUACIONES CINEMÁTICAS
−→ −→ −−→ −−→
OP = OC + CD + DP (3.1)
−→ −→ −→ −−→
OP = OA + AB + BP (3.2)
con la relación anterior se tiene que,
x = xC + xD + xO (3.3)
y = yC + yD + yO (3.4)
se tomará en cuenta las siguiente definición.
AE
sin(α) = (3.5)
OA
OE
cos(α) = (3.6)
OA
Luego queda,
d
xO = − (3.7)
2
yO = 0. (3.8)
3.2. ECUACIONES DE CINEMÁTICA 35
d
x = cos(θ2 )L1 + cos(θ4 )L2 − . (3.13)
2
Para la coordenada y se tiene,
yC
= sin(θ2 ) (3.14)
L1
ası́
yC = sin(θ2 )L1 (3.15)
por otro lado,
yD
= sin(θ4 ) (3.16)
L2
por ende,
yD = sin(θ4 )L2 (3.17)
ası́,
36 CAPÍTULO 3. ECUACIONES CINEMÁTICAS
x = xA + xB + xO (3.21)
y = yB + yA + yO (3.22)
se tiene que,
d
xO = (3.23)
2
yO = 0 (3.24)
luego para las demás coordenadas,
xA
= cos(θ1 ) (3.25)
L1
xA = cos(θ1 )L1 (3.26)
por otro lado,
xB
= cos(θ3 ) (3.27)
L2
xB = cos(θ3 )L2 (3.28)
de manera que queda la coordenada x como,
d
x = cos(θ1 )L1 + cos(θ3 )L2 + . (3.29)
2
para la coordenada y se tiene,
yA
= sin(θ1 ) (3.30)
L1
ası́,
yA = sin(θ1 )L1 (3.31)
de manera parecida se obtiene,
yB
= sin(θ3 ) (3.32)
L2
yB = sin(θ3 )L2 (3.33)
se llega ası́,
3.2. ECUACIONES DE CINEMÁTICA 37
d2
L21 = x2 + y 2 + + xd + L22 − 2yL2 sin(θ4 ) − (dL2 + 2xL2 ) cos(θ4 ) (3.41)
4
esta ecuación se puede reescribir,
donde,
d2
c = L21 − (x2 + y 2 + + xd + L22 ) (3.43)
4
a = −(dL2 + 2xL2 ) (3.44)
b = −2yL2 (3.45)
cuya solución es con la rutina del arcotangente con dos argumentos Atan2 conocida,
√
θ4 = Atan2(b, a) ± Atan2( a2 + b2 − c2 , c). (3.46)
donde,
d2
c = L22 − (x2 + y 2 + + xd + L21 ) (3.48)
4
38 CAPÍTULO 3. ECUACIONES CINEMÁTICAS
d
x = cos(θ1 )L1 + cos(θ3 )L2 + (3.52)
2
y = sin(θ1 )L1 + sin(θ3 )L2 (3.53)
despejando y elevando al cuadrado,
d
(cos(θ1 )L1 )2 = (x − (cos(θ3 )L2 + ))2 (3.54)
2
d2
L21 = x2 + y 2 + − dx + L22 + (dL2 − 2xL2 ) cos(θ3 ) − 2yL2 sin(θ3 ) (3.56)
4
ası́ se define,
d2
c = L21 − (x2 + y 2 + − dx + L22 ) (3.57)
4
a = dL2 − 2xL2 (3.58)
b = −2yL2 (3.59)
c = a cos(θ3 ) + b sen(θ3 ) (3.60)
cuya solución es, √
θ3 = Atan2(b, a) ± Atan2( a2 + b2 − c2 , c). (3.61)
Para el ángulo θ1 si se hace lo mismo se llega,
d2
L22 = x2 + y 2 + − dx + L21 + (dL1 − 2xL1 ) cos(θ1 ) − 2yL1 sin(θ1 ) (3.62)
4
ası́ se define,
d2
c = L22 − (x2 + y 2 + − dx + L21 ) (3.63)
4
a = dL1 − 2xL1 (3.64)
b = −2yL1 (3.65)
se tiene que,
c = a cos(θ1 ) + b sin(θ1 ) (3.66)
3.3. JACOBIANO 39
3.3. Jacobiano
Las 4 ecuaciones que se presentan se obtuvieron de la geometrı́a del robot paralelo, de
ahı́ por suma de vectores existen dos caminos a seleccionar, una que va por el eslabón que
contiene el angulo θ2 que llamamos el primer camino de allı́ se obtuvieron dos ecuaciones
una para x y una para y, y el segundo camino va por el eslabón que contiene al angulo
θ1 ver figura 3.1 de este camino también se obtuvieron dos ecuaciones una para x y otra
para y, en los dos caminos se quiere llegar al punto P donde esta el elemento terminal del
robot paralelo, en total suman 4 ecuaciones que ya las obtuvimos en la sección 3.2 que
son:
d
x = cos(θ1 )L1 + cos(θ3 )L2 + (3.68)
2
y = sin(θ1 )L1 + sin(θ3 )L2 (3.69)
d
x = cos(θ2 )L1 + cos(θ4 )L2 − (3.70)
2
y = sin(θ4 )L2 + sin(θ2 )L1 (3.71)
se hace el mismo procedimiento de combinación de las ecuaciones, de elevar al cuadrado
y sumar las ecuaciones, como ya se hizo en la sección anterior, y se presentan las ya
obtenidas 2 ecuaciones anteriormente para los ángulos θ1 y θ2 que son
d2
x2 + y 2 + − dx + L21 + (dL1 − 2xL1 ) cos(θ1 ) − 2yL1 sin(θ1 ) − L22 = 0 (3.72)
4
d2
x2 + y 2 + + xd + L21 − (dL1 + 2xL1 ) cos(θ2 ) − 2yL1 sen(θ2 ) − L22 = 0. (3.73)
4
Se define,
d2
x2 + y 2 + 4
+ xd + L21 − (dL1 + 2xL1 ) cos(θ2 ) − 2yL1 sin(θ2 ) − L22
F (x, y, θ2 , θ1 ) = d2
x2 + y 2 + 4
− dx + L21 + (dL1 − 2xL1 ) cos(θ1 ) − 2yL1 sin(θ1 ) − L22
40 CAPÍTULO 3. ECUACIONES CINEMÁTICAS
de lo anterior se obtiene,
2x + d − 2L1 cos(θ2 ) 2y − 2L1 sin(θ2 )
Jx =
2x − d − 2L1 cos(θ1 ) 2y − 2L1 sin(θ1 )
Si se hace que las matrices queden en función de los 4 ángulos, se hace los cambios de
x,y de las ecuaciones a conveniencia, simplificando y aplicando propiedades trigonométri-
cas se llega a
2L2 cos(θ4 ) 2L2 sin(θ4 )
Jx =
2L2 cos(θ3 ) 2L2 sin(θ3 )
2L2 L1 sin(θ2 − θ4 ) 0
Jθ =
0 2L2 L1 sin(θ1 − θ3 )
y el jacobiano es,
J = Jθ−1 Jx (3.75)
queda entonces,
cos(θ4 ) sin(θ4 )
L1 sin(θ2 − θ4 ) L1 sin(θ2 − θ4 )
J =
cos(θ3 ) sin(θ3 )
L1 sin(θ1 − θ3 ) L1 sin(θ1 − θ3 )
Esta última matriz se le puede hallar el número de condición (cond(J)) puntualmente
con el objeto de determinar la dexteridad de un punto (x,y) del espacio de trabajo del
robot paralelo plano.
Capı́tulo 4
Casos de Estudio
Los valores de optimización estarán dentro de los siguientes intervalos: L1 estará entre
0.1 a 0.5, L2 estará entre 0.1 a 0.4, d estará entre 0 a 0.3 (incluyendo los valores extremos).
En la figura 4.1 se muestra el robot paralelo en área de una mesa de corte.
41
42 CAPÍTULO 4. CASOS DE ESTUDIO
Número de puntos que estan dentro del área alcanzable del robot
A= · 1.2 (4.1)
Número de puntos total
Esta formula tiene su origen en la técnica de Montecarlo, donde se le quiere calcu-
lar el área de una curva cerrada, entonces dicha curva se encierra en un rectángulo de
área conocida, se comienza hallar de manera aleatoria un conjuntos de puntos dentro
del rectángulo, algunos quedan dentro de la curva y otros fuera de la curva dentro del
rectángulo, y de allı́ se calcula un área aproximada que se obtiene de sumar los puntos que
cayeron dentro de la curva multiplicado por el área del rectángulo dividido por el número
de todos los puntos (los que cayeron dentro y fuera de la curva dentro del rectángulo),
ver Sobol (1983). La formula 4.1 es la que se usará para optimizar el área alcanzable.
Ver figura 4.2 donde se ven un conjunto de puntos de manera uniforme (puntos totales
del mallado por el método nube de puntos) del robot paralelo planar:
Figura 4.2: Mallado de Área alcanzable a calcular por Método Nube de Puntos
El área calculada con la formula 4.1 con los puntos que quedan adentro ver figura 4.3
Por el método de Montecarlo el mallado (puntos escogidos aleatoriamente) queda ver
figura 4.4
4.3. MALLADO PARA ÁREA ALCANZABLE 43
Y el área que se construye a partir de los puntos que quedan adentro por la formula
4.1 por el Método de Montecarlo ver figura 4.5
mayor o igual a cero (que depende de (x,y) y (L1 ,L2 ,d)) esto es:
d2
(2xL1 − dL1 )2 + (4y 2 L21 ) − (L22 − x2 + (xd) − − y 2 − L21 )2 ≥ 0 (4.2)
4
d2
(2xL1 + dL1 )2 + (4y 2 L21 ) − (L22 − x2 − (xd) − − y 2 − L21 )2 ≥ 0 (4.3)
4
Si se verifica lo que exige las ecuaciones (4.2) y (4.3), el punto es alcanzable si no, no
lo es. Para hallar el área alcanzable se coloca un 1 si es alcanzable y un 0 si no lo es.
Luego se se suman todos los 1 y se llega a los puntos que caen dentro del área alcanzable
del robot paralelo con ello se estima un área con la formula 4.1. Ver flujograma en figura
4.6 donde se muestra la explicación más detallada.
Se hace la advertencia de que se ha exigido que para hallar el ángulo θ1 en la ecuación
3.67 el problema está solo esta el radical que contiene dicha ecuación es decir que el
subradical sea mayor o igual a cero porque en realidad es el único problema para encontrar
dicho angulo, de manera análoga para la ecuación 3.51 para el ángulo θ2 . Esta advertencia
se hace debido a que algunos textos (o paginas web) donde aparece la definición de la
función Atan2(a,b), no está definida cuando a = b = 0. Sin embargo en el programa
Matlab la función Atan2(a,b) si está definido cuando a = b = 0, y de hecho da el valor
0. Ası́ que el único problema está en el radical de dichas ecuaciones. Esta exigencia sobre
el radical que contiene las ecuaciones , es la misma que si se hubiera resuelto la ecuación
por reducción de polinomios (ver apéndice A) ya que el radical es el mismo.
4.3. MALLADO PARA ÁREA ALCANZABLE 45
Se discretiza el área de
Se tiene el punto (L1 ,L2 ,d)
trabajo en puntos (x,y)
Se verifica si el punto
es alcanzable con
ecuaciones 4.2 y 4.3 si,
son menores que 0 se
coloca 0, si son mayores
o iguales a 0 se coloca
1 y el punto es factible
Tabla 4.1: Resultados de los Errores Relativos Porcentuales por nube de puntos
(L1 ,L2 ,d),h h=0.001 h=0.01 h=0.05 h=0.1
(0.5,0.4,0.3) 0.0689 0.6 2.88 6.52
(0.4,0.3980,0.3) 0.0537 0.73 3.63 7.6
(0.4583,0.3322,0.3) 0.0879 1.04 5.53 8.98
(0.3924,0.3924,0.3) 0.0692 0.73 2.59 4.79
(0.3435,0.3738,0.2999) 0.0845 0.91 3.04 6.41
(0.3999,0.3999,0.2234) 0.0511 0.64 2.54 5.72
(0.4934,0.3943,0.2730) 0.081 0.86 3.15 5.77
(0.2155,0.2543,0.2630) 0.0455 0.64 4.41 4.64
(0.1343,0.1534,0.1) 0.0998 0.3 4.19 8.88
(0.2,0.1,0.2999) 0 0.49 0.98 3.19
Media 0.0642 0.694 3.294 6.25
Desviación estándar(std(x)) 0.0285 0.2129 1.2399 1.8526
Desviación estándar(std(x,1)) 0.0271 0.202 1.1763 1.7575
el 2 % (entre los dos métodos, pero da más alto por Método de Montecarlo) de manera
que es una buena opción trabajar con ese tipo de mallado y con el Método de nube de
puntos.
48 CAPÍTULO 4. CASOS DE ESTUDIO
Grafico de PC
0.97
0.969
0.968
Valores de Fitness
0.967
0.966
0.965
0.964
0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1
Valores de PC
Grafico de PM
0.9695
0.969
0.9685
Valores de Fitness
0.968
0.9675
0.967
0.9665
0.966
0 0.02 0.04 0.06 0.08 0.1
Valores de PM
Grafico de SL
0.97
0.9695
0.969
Valores de Fitness
0.9685
0.968
0.9675
0.967
0.9665
8 10 12 14 16 18 20 22 24
Valores de SL
x = 0.5, 0.4, 0
4.6. OPTIMIZACIÓN DEL ÁREA ALCANZABLE 51
0.9695
0.969
0.9685
Valores del Fitness
0.968
0.9675
0.967
0.9665
0.966
0.9655
100 200 300 400 500 600 700
Valores de la Poblacion
Grafica de iter(generaciones)
0.971
0.97
0.969
Valores del Fitness
0.968
0.967
0.966
0.965
0.964
100 200 300 400 500 600
Valores de generaciones(iter)
si se calcula el área en la función aptitud del Algoritmo Genético con este valor da como
área (o fitness)= 0.9720 (no por aproximación por redondeo a 3 decimales del fitness
0.9715, si no evaluándolo en la función aptitud, de hecho con el comando format long
(que muestra más dı́gitos del resultado) de Matlab muestra que da un número mayor el
cual es 0.971999018083626) ası́ da un mejor valor que el que dı́o ejecutando el Algoritmo
Genético, por tanto este es el valor máximo que fijara. Su área alcanzable se puede observar
en figura 4.12, en esta gráfica de área la parte de color azul es el área alcanzable por el
52 CAPÍTULO 4. CASOS DE ESTUDIO
robot paralelo, la linea azul horizontal en la parte de abajo significa que el robot es capaz
de llegar a esos puntos. La gráfica es importante porque muestra los puntos (de color
azul) donde el robot puede llegar al menos por una orientación (los demás puntos no son
alcanzables por el robot).
En la optimización se uso cruce de 1 y de 2 puntos, también se uso diferentes tipos de
selección como ruleta junto a métodos estocástico, estocástico general, método Deb (ver
apendice) y se uso para el mallado Método de nube de puntos.
Las figuras 4.13 es la gráfica de generaciones del Algoritmo Genético muestran como
se encontró el área alcanzable de fitness de 0.9715 (para las varias veces que se ejecuto el
algoritmo) lo cual no es el máximo, sin embargo la gráfica de generaciones para encontrar
ese valor de máximo en el Algoritmo Genético da una idea de la convergencia a ese valor
y del que se encontró aproximando por redondeo (el cual es el máximo) el valor x de
dicho fitness. La gráfica de las generaciones es importante porque muestra como en cada
iteración que es una generación del Algoritmo Genético, el máximo va cambiando de valor.
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
Maximo
1
0.9
0.8
0.7
Valores de Fitness
0.6
0.5
0.4
0.3
0.2
0.1
0
0 50 100 150 200 250 300 350 400 450
Generaciones
d2
(2xL1 − dL1 )2 + (4y 2 L21 ) − (L22 − x2 + (xd) − − y 2 − L21 )2 ≥ 0 (4.4)
4
d2
(2xL1 + dL1 )2 + (4y 2 L21 ) − (L22 − x2 − (xd) − − y 2 − L21 )2 ≥ 0 (4.5)
4
luego para los puntos que satisfacen lo que exige las ecuaciones 4.4 y 4.5, son los puntos
alcanzable, entonces se calcula θ1 , θ2 , θ3 y θ4 (que depende de (x,y) y (L1 ,L2 ,d)), des-
pués se calcula el Jacobiano, si la matriz es invertible se obtiene el valor del número de
condicionamiento (cond(J)) de la matriz jacobiana, si no es invertible colocamos 0 a la
evaluación de ese punto (x,y), si es invertible y se obtiene el número de condición luego
se verifica si es menor que cierto valor numérico, si le asigna 1 si es menor que dicho
valor, si no 0, luego se suman todos los 1 se calcula una área que se definirá como área de
dexteridad que mide la dexteridad en conjunto del mallado para el punto (L1 , L2 ,d). Ver
flujograma que se muestra en la figura 4.14.
54 CAPÍTULO 4. CASOS DE ESTUDIO
Se utiliza la dis-
Se tiene primero cretización(de área
el punto (L1 , L2 ,d) alcanzable) de (x,y)
del espacio de trabajo
Se halla la matriz
Jacobiana que de-
pende de θ1 ,θ2 ,θ3 y
θ4 , si es invertible
Se halla el número
de condición de la
matriz Jacobiana
Si el número de con-
dición de la matriz
Jacobiana es menor que
cierto valor ponemos 1,
si no lo es ponemos 0
Sumamos todos lo
1 y hallamos el
área de dexteridad
Tabla 4.4: Resultados de los Errores Relativos Porcentuales por nube de puntos
(L1 ,L2 ,d),h h=0.001 h=0.01 h=0.05 h=0.1
(0.5,0.4,0.3) 0.0495 0.54 2.57 6.31
(0.4,0.3980,0.3) 0 0.35 1.49 1.59
(0.4583,0.3322,0.3) 0.0255 0.82 3.39 4.64
(0.3924,0.3924,0.3) 0.0207 0.27 0.0207 1.53
(0.3435,0.3738,0.2999) 0.0206 0.78 0.0825 2.52
(0.3999,0.3999,0.2234) 0.019 0.42 1.35 0.89
(0.4934,0.3943,0.2730) 0.024 0.7 2.59 6.38
(0.2155,0.2543,0.2630) 0 1.59 7.61 20.49
(0.1343,0.1534,0.1) 0.15 2.09 9.77 13.87
(0.2,0.1,0.2999) 0.0597 0.69 ******* *********
Media 0.0369 0.825 3.2081 6.4689
Desviación estándar(std(x)) 0.0439 0.5774 3.3465 6.6112
Desviación estándar(std(x,1)) 0.0416 0.5477 3.1551 6.2331
Grafico de PC
0.69
0.68
0.67
Valores de Fitness
0.66
0.65
0.64
0.63
0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1
Valores de PC
Grafico de PM
0.69
0.68
0.67
Valores de Fitness
0.66
0.65
0.64
0.63
0 0.02 0.04 0.06 0.08 0.1
Valores de PM
Grafico de SL
0.695
0.69
0.685
0.68
Valores de Fitness
0.675
0.67
0.665
0.66
0.655
0.65
0.645
8 10 12 14 16 18 20 22 24
Valores de SL
Grafica de iter(Generaciones)
8500
8450
Valores de Fitness
8400
8350
8300
8250
0 50 100 150 200 250 300 350 400
Valores de Generaciones
8450
8400
Valores de Fitness
8350
8300
8250
8200
50 100 150 200 250 300 350 400 450 500
Valores de la Poblacion
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
4.29. Otra figura del robot paralelo en estudio en una mesa de corte ver figura 4.30. Y
una última figura del robot paralelo en estudio en una mesa de corte ver figura 4.31.
8480
8478
8476
Fitness
8474
8472
8470
8468
0 10 20 30 40 50
Generaciones
Figura 4.32: Gráfica como cambia el Máximo de dexteridad caso 1 en cada iteración.
La gráfica de área alcanzable para estos valores se muestra en figura 4.33 y la gráfica
de dexteridad se muestra en la figura 4.34. Note que el indice de dexteridad es menor que
el habı́a dado en el resultado de la optimización de dexteridad en el caso 1 pero esto ya
se explicado porque sucede esto, es debido a que esta formula no trabaja en conjunto de
los puntos mallado, fue por eso que no se uso para la optimización.
Caso 2 área de dexteridad
Ejecutando el Algoritmo Genéticos del programa para los rangos del caso 2, L1 entre
68 CAPÍTULO 4. CASOS DE ESTUDIO
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
0.1 y 1, L2 entre 0.1 y 1, y d entre 0 y 0.6 (incluyendo los extremos) da como resultado
de la optimización
L1 = 0.797591117520500
L2 = 0.843839515106662
d=0.002780534480440
fitness(área dexteridad)=12182.
El resultado dado por el programa Matlab comprueba los resultados obtenidos, y el
4.15. DISCUSIÓN DE ALGUNOS RESULTADOS 69
valor del fitness tiene la misma tendencia. Sin embargo da un mejor resultado. La gráfica
del máximo en cada iteración se muestra en figura 4.35
1.21
1.2
Fitness
1.19
1.18
1.17
1.16
0 10 20 30 40 50
Generaciones
Figura 4.35: Gráfica de como cambia el máximo en cada iteración del caso 2
La gráfica de área alcanzable se muestra en figura 4.36 y la gráfica del área de dexte-
ridad se muestra en la figura 4.37. Note que esta última gráfica puede parecer con menos
dexteridad en conjunto, que la figura 4.23 (segundo caso de dexteridad) pero esto no es
cierto lo que pasa es que existe un detalle de esta gráfica es que la barra de colores en 0.4
todavı́a es de color azul, mientra que en la otra en 0.2 el color azul ya termina, es decir las
barras de colores no son iguales en el tamaño del paso de un color a otro. De hecho con
una inspección de la comparación de los dos gráficos más detallada de la barra de colores
las gráficas son muy parecidas.
1. Los cuadros de los errores porcentuales mostró que trabajar con un mallado tan fino
no tiene importancia ya que hace más lento el algoritmo. En el cuadro se muestra
que trabajar con un h= 0.01 (que son 12221 puntos) la media da menor que 2 %
entre las dos técnicas, nube de puntos como de Montecarlo (dando más alto en esta
70 CAPÍTULO 4. CASOS DE ESTUDIO
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
0.8
0.6
0.4
0.2
0
−0.4 −0.2 0 0.2 0.4 0.6
ultima técnica), de esta manera este tamaño de paso h= 0.01 es un valor con la cual
se puede trabajar y se disminuye el trabajó de computo de tiempo computacional.
5. El previo estudio de los parámetros del Algoritmo Genético como son porcentaje
de cruce PC, porcentaje de mutación PM, tamaño del string SL, junto número
del tamaño de la población inicial PS y del número de iter (generaciones) es muy
importante ya que disminuye el trabajó porque luego a la hora de optimizar se puede
volver tedioso, porque hay que tomar en cuenta que el Algoritmo Genético también
tiene distintos operadores con variaciones.
Conclusiones
5.1. Conclusiones
La creciente demanda de los Robot Paralelos por el sector industrial, ha permitido que
entes académicos se interesen en el estudio de métodos para resolver problemas actuales
en este tipo de robot debido a la complejidad en su topologı́a, ası́ como profundizar en
los diferentes temas de estudio como su espacio de trabajo.
En esta tesis se optimizó el espacio de trabajo diestro utilizando algoritmos evolutivos
(Algoritmos Genéticos).
En el presente trabajo se presentó uno de los problemas de los robot paralelos que es
su poco espacio alcanzable que se sabe que es pequeño siendo uno de las pocas virtudes
de este tipo de robot.
Esta tesis se presentó primero que todo, una introducción de los temas abordados, se
abordo primero que todo la parte teórica correspondiente a Algoritmo Genético y como
segunda parte la de cinemática, se mostró ası́ el problema de cinemática inversa con sus
respectivas ecuaciones que ayudaran ha hacer algunos algoritmos computacionales.
Se mostró como uno de los aporte de esta tesis, una ruta de como abordar el tema de
maximizar el espacio alcanzable y de como maximizar el espacio diestro perdiendo menos
espacio posible es decir un espacio apreciable alcanzable y de buena dexteridad.
Se enseñó un camino de como ajustar los distintos parámetros del Algoritmo Genético
para la convergencia del máximo.
El Algoritmo Genético maximiza las dimensiones del diseño del robot paralelo. Pri-
mero se presentó rangos de poco limite y después un segundo ejemplo con rangos más
grandes para no limitar al diseñador del Robot Paralelo. Se mostró una forma de trabajar
en conjunto de como maximizar el espacio de dexteridad con lo que definimos área de
dexteridad que fue el indice con el que se optimizo.
5.2. Recomendaciones
1. Se deja como futuro trabajo desarrollar las ecuaciones de cinemáticas para un robot
paralelo espacial.
73
74 CAPÍTULO 5. CONCLUSIONES
3. Se deja como futuro trabajo una aplicación de máxima área alcanzable y máxima
área de dexteridad, para un robot paralelo espacial.
4. Incluir aspectos dinámicos con fines de minimizar el consumo energético del robot.
Apéndice A
75
76 APÉNDICE A. SOLUCIÓN ALGEBRAICA POR REDUCCIÓN A POLINOMIOS
Apéndice B
Código de AG
1 function pop=encoding(popsize,stringlength,dimension)
2 pop=(round(rand(popsize,dimension*stringlength+dimension+2)));
77
78 APÉNDICE B. CÓDIGO DE AG
8 for j=1:dimension
9 m(:,j)=pop(i,stringlength*(j−1)+1:stringlength*j);
10 end
11 x=temp*m;
12 x=x.*bound+x bound(:,1)';
13 pop(i,dimension*stringlength+1:dimension*stringlength+dimension)=x;
14 y=funname(x);
15 pop(i,dimension*stringlength+dimension+1)= y.f;
16 pop(i,dimension*stringlength+dimension+2)=−y.c;
17 end
Tenga en cuenta que las dos últimas columnas de la variable pop consisten en el valor
de la función objetivo y la evaluación de la función de restricción. Ası́, en este paso, las
restricciones pueden ser incluidas para resolver problemas de optimización restringidos
1 function selected=selection(pop,popsize,stringlength,dimension,minf)
2 popsize new=size(pop,1);
3 fitness=pop(:,dimension*stringlength+dimension+1) ...
+pop(:,dimension*stringlength+dimension+2);
4 if min(fitness)<0
5 fitness=fitness+minf*abs(min(fitness));
6 end
7 fitness=fitness./sum(fitness);
8 fitness=cumsum(fitness);
Observe que en el código anterior, la función objetivo se desplaza por un valor igual a
minf. Por ejemplo, si minf = 1.01 la función se desplaza 1 % del valor mı́nimo de la función
de fitnees (por lo tanto, la función de fitnees evita tener valores negativos)
En este proyecto se implementaron tres métodos de selección. La primera es la ruleta,
método estocástico, con dos punteros. Esto es
1 case 'stochastic'
2 for i=1:popsize new/2
3 pointer=0.5*rand+(0:0.5:0.5)';
4 selected(2*i−1,:)=pop(find(fitness ≥ pointer(1),1),:);
5 selected(2*i,:)=pop(find(fitness ≥ pointer(2),1),:);
6 end
El tercer enfoque se basa en el método Deb donde se aplica una selección de torneos
binarios con un conjunto de reglas para desarrollar el conjunto de acoplamiento para la
nueva generación. Las siguientes reglas se aplican para comparar dos individuos:
1 case 'deb'
2 for i=1:popsize new
3 j=find(fitness≥rand,1);
4 k=find(fitness≥rand,1);
5 f1=pop(j,dimension*stringlength+dimension+1);
6 f2=pop(k,dimension*stringlength+dimension+1);
7 c1=pop(j,dimension*stringlength+dimension+2);
8 c2=pop(k,dimension*stringlength+dimension+2);
9
10 if (c1==0 && c2==0) % both are feaseble
11 if f1>f2
12 selected=[selected competitor1];
13 else
14 selected=[selected competitor2];
15 end
16 end
17 if (c16=0 && c26=0) % both are unfeaseble
18 if abs(c1)<abs(c2)
19 selected=[selected competitor1];
20 else
21 selected=[selected competitor2];
22 end
23 end
24 if (c1==0 && c2==1) % both are feaseble
25 selected=[selected competitor1];
26 end
27 if (c1==1 && c2==0)
28 selected=[selected competitor2];
29 end
30 end
80 APÉNDICE B. CÓDIGO DE AG
3 if rand < pc
4 cross=2;
5 if cross==1
6 cpoint=round(rand*(2*stringlength−1))+1;
7 child1=[parent1(:,1:cpoint) ...
parent2(:,cpoint+1:stringlength*dimension)];
8 child2=[parent2(:,1:cpoint) ...
parent1(:,cpoint+1:stringlength*dimension)];
9 end
10 if cross==2
11 cpoint=round((stringlength−1)*rand(1,dimension))+1;
12 for j=1:dimension
13 child1((j−1)*stringlength+1:j*stringlength)=[parent1((j−1)* ...
14 stringlength+1:(j−1)*stringlength+cpoint(j)) parent2((j−1)* ...
15 stringlength+cpoint(j)+1:j*stringlength)];
16 child2((j−1)*stringlength+1:j*stringlength)=[parent2((j−1)* ...
17 stringlength+1:(j−1)*stringlength+cpoint(j)) parent1((j−1)* ...
18 stringlength+cpoint(j)+1:j*stringlength)];
19 end
20 end
21 else
22 child1=parent1;
23 child2=parent2;
24 end
25 end
10 end
11 end
Como futuros trabajos recomendamos usar los métodos de Niching extienden AG sim-
ples promoviendo la formación de subpoblaciones estables en el vecindario de soluciones
óptimas. En este proyecto se implementa el método de compartición. El método consiste
en buscar en el paisaje reduciendo la rentabilidad en regiones densamente pobladas.
82 APÉNDICE B. CÓDIGO DE AG
Apéndice C
C.1. MainGA
Programa principal desde donde se ejecuta el Algoritmo Genético es:
1 clc
2 clear
3
4 global equation;
5 global selection method;
6 global niching;
7 global sigma;
8 tic
9 equation='F1';
10 selection method='general stochastic' % a.−general stochastic ...
b.−stochastic c.−dep tournament deb constriants
11 %Parameters
12 switch equation
13
14
15
16
17 case 'F1'
18 % Funcion espacio de trabajo
19 x bound=[0.1 0.5;0.1 0.4;0 0.4];
20 dimension=length(x bound(:,1));
21 xn=[0 0];
22 plotf=0;
23
24 end
25 Iter=40;
26 PC=[0.6 0.65 0.70 0.75 0.85 0.95];
27 PM=[0.1 0.07 0.05 0.02 0.01 0.0];
28 PS=[50 100 150 200 300 400 500 600 700 800 900 1000];
83
84 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN
29 SL=[9 12 15 18 21 24];
30 d=length(PC);
31 minF=[1.005 1.01 1.015 1.02 1.03 1.05];
32 %% % % % % % % % % % % % % % %
33 %lo puse yo para que no pase por niching
34 alpha=[1 10 20 50 100 1000];
35 niching=0; % puse 0 para que no pase en programa selection
36 Sigma=[0.05 0.1 0.3 0.5 0.7 1]*abs((x bound(1,1)−x bound(1,2))); %=1;
37 %=1;
38 for l=1:1
39 for j=1:1
40 maxIter=Iter;
41 popsize=PS(6);
42 stringlength=SL(3);
43 pm=PM(3);
44 pc=PC(4);
45 minf=minF(4);
46 sigma=Sigma(1,5);
47 %Generation first population
48 pop=encoding(popsize,stringlength,dimension);
49 [pop]=decoding(pop,stringlength,dimension,x bound);
50 %*********************
51 if plotf==1
52 figure(1)
53 nptos=20;
54 hold off
55 [xt,yt]=meshgrid(x bound(1,1)*1.1:
56 (x bound(1,2)−x bound(1,1))/(nptos−1):x bound(1,2)*1.1);
57 zt=−150.*xt − 175.*yt; %xt.ˆ2−yt; %f9 +1.75.*xt +1.25.*yt;
58
59 contour(xt,yt,zt,50)
60 mesh(xt,yt,zt)
61 hold on;
62 h1=plot3(pop(:,stringlength*2+1), ...
pop(:,stringlength*2+2),−pop(:,stringlength*2+3),'*');
63 axis([x bound(1,1)*1.1 x bound(1,2)*1.1 x bound(1,1)*1.1 ...
x bound(1,2)*1.1 1.1*min(min(zt)) 1.1*max(max(zt))]);
64 % view(0,90);
65 end
66 npop=selection(pop,popsize,stringlength,dimension,minf);
67 new pop=cross over(npop,popsize,stringlength,dimension,pc);
68 pop=mutation(new pop,stringlength,dimension,pm);
69 [pop]=decoding(pop,stringlength,dimension,x bound);
70 xp(1,:)=min(−pop(:,stringlength*dimension+1:
71 stringlength*dimension+dimension));
72 f(j,1)=max(pop(:,stringlength*dimension+dimension+1)); % estaba ...
min(−......)
73 fm(j,1)=mean(−pop(:,stringlength*dimension+dimension+1));
74 if plotf==1
75 set(h1,'XData',pop(:,stringlength*2+1),'YData',
76 pop(:,stringlength*2+2),'ZData',−pop(:,stringlength*2+3))
77 pause(0.0001);
78 end
C.2. FUNNAME (EVALUACIÓN EN LA FUNCIÓN OBJETIVO) 85
79 k=1;
80 i=2;
81 while (k<maxIter && i<maxIter)
82 npop=selection(pop,popsize,stringlength,dimension,minf);
83 new pop=cross over(npop,popsize,stringlength,dimension,pc);
84 pop=mutation(new pop,stringlength,dimension,pm);
85 [pop]=decoding(pop,stringlength,dimension,x bound);
86 xp(i,:)=min(−pop(:,stringlength*dimension+1:
87 stringlength*dimension+dimension));
88 f(j,i)=max(pop(:,stringlength*dimension+dimension+1));
89 fm(j,i)=mean(pop(:,stringlength*dimension+dimension+1));
90 if plotf==1
91 set(h1,'XData',pop(:,stringlength*2+1),'YData',
92 pop(:,stringlength*2+2),'ZData',−pop(:,stringlength*2
93 +3))
94 pause(0.0001);
95 end
96 if abs(f(i)−f(i−1))==0
97 k=k+1;
98 end
99
100 [ft(j),x(j,:)]=result(pop,stringlength,dimension); % esto para ...
saber resultado de cada generacion
101 %% % % % % % % % % % % % % % esto
% % % lo hice yo
102 % Sge=zeros(popsize,4); % matriz de valores funcion aptitud y ...
coordenadas
103 Sge(i,1)=ft(j);
104 Sge(i,2:4)=x(j,:);
105 i=i+1;
106 end
107 % hago el archivo.mat para saber los valores de cada generacion es
108 % decir la matriz Sge
109 save generacion.mat Sge
110 [ft(j),x(j,:)]=result(pop,stringlength,dimension)
111
112
113 end
114 label=num2str(l);
115 label2=['f2 generalStochasticPMuta',label,'.mat'];
116 save(label2);
117 end
118
119 [A]=main workspace2(x) % esto es para que grafique el area de espacio ...
de trabajo y diestro
1 function y=funname(x)
2 global equation;
3 global penalty;
4 switch equation
5
6
7
8
9 case 'F1'
10 [A]=main workspace(x);
11 y.f=A;
12 % y.f=fsuma;
13 % Penalizacion
14 y.c=0;
15 end
3 clear a
4 clear b
5 clear c
6 clear A
7 clear v
8
9
10 a=x(1);
11 b=x(2);
12 d=x(3);
13
14
15
16 xp=(−0.6:0.01:0.6);
17 yp=(0:0.01:1);
18
19 %Nube de puntos
20 p=0;
21 for j=1:length(xp)
22 for i=1:length(yp)
23 v=workspace 5R(xp(j),yp(i),a,b,d);
24 if(v==0)
25 p=p+1;
26 else
27
28 end
29 end
C.3. MAIN WORKSPACE 87
30 end
31 A=(p*(1.2)/12221);
32 end
8
9
10
11
12 xp=(−0.6:0.01:0.6);
13 yp=(0:0.01:1);
14
15
16 for j=1:length(xp)
17 % l=1;
18 for i=1:length(yp)
19 Z(j,i)=workspace 5R(xp(j),yp(i),a,b,d);
20 X(j,i)=xp(j);
21 Y(j,i)=yp(i);
22 end
23 end
24
25 % calculamos el area
26 [n1,m1]=size(Z);
27 n56=n1*m1;
28 R1=1−Z;
29
30 A=(sum(sum(R1))*(1.2)/n56);
31
32
33
34
35 figure(1);
36 hold on;
37 contourf(X,Y,Z,5);
38 colorbar;
39 colorbar('location','SouthOutside')
40 colormap('winter')
41 axis( [−0.6 0.6 0 1]);
42
43
44 %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
45 Z2=Z;
46 X2=X;
88 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN
47 Y2=Y;
48 s(1:length(Z(:,1)))=1;
49 for i=1:length(Z(:,1))
50 if (sum(Z(i,:))==(length(Z(1,:))))
51 s(i)=0;
52 end
53 end
54
55 dummy=find(s==0);
56
57 Z2(dummy,:)=[];
58 X2(dummy,:)=[];
59 Y2(dummy,:)=[];
60
73 dummy2=find(s2==0);
74
75 Z2(dummy2,:)=[];
76 X2(dummy2,:)=[];
77 Y2(dummy2,:)=[];
78
100
101 end
102
103
104 %W([1 length(W(:,1))],:)=[];
105 Nptos=length(W(:,1));
106 %X3=zeros(Nptos,Nptos)
107 %Y3=zeros(Nptos−1,Nptos);
108
109
110 for i=1:Nptos
111 step=(W(i,3)−W(i,2))/(Nptos−1);
112
113 X3(i,1:Nptos)=W(i,1);
114 % W(i,2):step:W(i,3);
115
116 Y3(i,1:Nptos)=(W(i,2):step:W(i,3));
117 end
118
119
120
121 for j=1:length(X3(:,1))
122 for i=1:length(Y3(1,:));
123 Z3(j,i)=jaco5R(X3(j,i),Y3(j,i),a,b,d);
124 end
125 end
126
127 n4=length(find(Z3));
128 fsuma=(sum(sum(Z3)))/n4;
129
130
131 figure(2);
132 hold on;
133 contourf(X3,Y3,Z3,6);
134 colorbar;
135 colorbar('location','SouthOutside')
136 axis( [−0.6 0.6 0 1]);
137 colormap('jet')
138
139 end
140 end
9
10
11 xp=(−0.6:0.01:0.6);
12 yp=(0:0.01:1);
13
14
15 for j=1:length(xp)
16 %l=1;
17 for i=1:length(yp)
18 Z(j,i)=workspace 5R(xp(j),yp(i),a,b,d);
19 X(j,i)=xp(j);
20 Y(j,i)=yp(i);
21 end
22 end
23
24
25 [m,n]=size(Z);
26 Z3=zeros(m,n); % contruyo la matriz completa incluyendo los que ...
tienen 1
27 Z12=1−Z;
28 for j=1:length(Z3(:,1))
29 [q1,q2]= find(Z12(j,:)); % encuentro los valores distintos de
30 %0 es decir valen 1(los indices de ...
q2 bien
31 % a q1 le pone 1 no me sirve
32 [g12,h12]=size(q1);
33 if (g12*h12 6= 0) % por si es vacio
34 for p=1:length(q1)
35 Z3(j,q2(p))=jaco5R(X(j,q2(p)),Y(j,q2(p)),a,b,d);
36 % Z3 ya esta construidad solo cambia valores
37 end
38 else
39 end
40 end
41
42
43 fsuma=sum(sum(Z3)) ;
44
45 end
C.4. Workspace5R
Es sub-función del programa anterior y sirve para hallar que puntos del mallado son
alcanzable.
1
2 function [v]=workspace 5R(xp,yp,a,b,d)
3
4 v=0;
5
C.5. JACOB5R 91
C.5. Jacob5R
Es una sub-función del programa Main workspace para indice de dexteridad y sirve
para calcular el numero de condición de la matriz jacobiana.
1
2 function [f]=jaco5R(xp,yp,a,b,d)
3
4
5 fac1=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 + 8 * d ˆ 2 * a ˆ 2
6 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2
7 + 32 * b ˆ 2 * a ˆ 2 − 32 * xp ˆ 3 * d −
8 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 − 8 * xp * d ˆ 3
9 − 8 * d ˆ 2 * yp ˆ 2 + 32 * xp * a ˆ 2 * d
10 + 32 * b ˆ 2 * xp * d − 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4
11 − 16 * xp ˆ 4 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4;
12 fac2=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 +
13 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2
14 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2 + 32 * b ˆ 2 * a ˆ 2
15 + 32 * xp ˆ 3 * d
16 − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 + 8 * xp * d ˆ 3
17 − 8 * d ˆ 2 * yp ˆ 2 − 32 * xp * a ˆ 2 * d
18 − 32 * b ˆ 2 * xp * d + 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4
19 − 16 * xp ˆ 4 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4;
20 if ( fac1<0 | | fac2<0)
21 f=0;
22 else
23
33 + d ˆ 2 + 4 * yp ˆ 2 + 4 * a ˆ 2));
34
86 − 32 * xp * a ˆ 2 * d − 32 * b ˆ 2 * xp * d
87 + 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4
88 − 16 * yp ˆ 4 − 16 * a ˆ 4)), (8 * xp * a
89 − 4 * d * a − 4 * b ˆ 2 + 4 * xp ˆ 2 − 4 * xp * d + d ˆ 2
90 + 4 * yp ˆ 2 + 4 * a ˆ 2))));
91
92 J= [0.1e1 / a / sin(q(1) − q(2)) * cos(q(2))
93 0.1e1 / a / sin(q(1) − q(2)) * sin(q(2));
94 0.1e1 / a / sin(q(3) − q(4)) * cos(q(4))
95 0.1e1 / a / sin(q(3) − q(4)) * sin(q(4));];
96
97 e12=isfinite(J); % Me da los valores finito que hay en J
98 %(1 si es verdadero, 0 si es falso)
99 suma2=sum(sum(e12));
100 if (suma26=4)
101 f=0;
102 else
103 %p=det(J);
104 s=svd(J); % pertenece al programa de matlab del numero
105 %de condicionamiento calcula las singularidades
106 %e=isnan(s); % de J
107 e=isfinite(s);
108 suma1=sum(e);
109 r=length(s);
110 if(suma16=r | | any(s==0)) %any(s==0) matriz singular asi la calculan el ...
programa
111 f=0;
112 else
113 f=1/cond(J); %Calcula el numero de condicion de J
114 end
115 end
116 end
117 end
2 function [f]=jaco5R(xp,yp,a,b,d)
3 x=xp;
4 y=yp;
5
6
7
8
9 q(1)= 2*atan2(2*yp*a+(sqrt((4 * yp ˆ 2 * a ˆ 2)
10 + ((2 * xp * a + d * a) ˆ 2)
11 − (b ˆ 2 − (xp ˆ 2) − (xp * d) − (d ˆ 2) / 0.4e1
12 − (yp ˆ 2) − (a ˆ 2)) ˆ 2 )),
13 2*xp*a+d*a−bˆ2+xpˆ2+xp*d+(1/4)*dˆ2+ypˆ2+aˆ2);
14 q(2)= atan2(y−a*sin(q(1)), (1/2)*d+x−a*cos(q(1)));
15 q(3)= 2*atan2(2*yp*a−sqrt((4 * yp ˆ 2 * a ˆ 2) +
16 ((2 * xp * a − d * a) ˆ 2) − (b ˆ 2 − (xp ˆ 2) + (xp * d)
94 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN
17 − (d ˆ 2) / 0.4e1
18 − (yp ˆ 2) − (a ˆ 2)) ˆ 2),
19 2*xp*a−d*a−bˆ2+xpˆ2−xp*d+(1/4)*dˆ2+ypˆ2+aˆ2);
20 q(4)= atan2(y−a*sin(q(3)), x−(1/2)*d−a*cos(q(3)));
21 %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
22
23
24
Otra forma para hallar el área dexteridad con el indice dexteridad, con las solución de
los ángulos que se ofrece.
1
2 function [f]=jaco5R(xp,yp,a,b,d)
3 x=xp;
4 y=yp;
5 fac1=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 +
6 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2
7 + 32 * b ˆ 2 * yp ˆ 2 + 32 * b ˆ 2 * a ˆ 2 − 32 * xp ˆ 3 * d
8 − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 − 8 * xp * d ˆ 3
9 − 8 * d ˆ 2 * yp ˆ 2 + 32 * xp * a ˆ 2 * d + 32 * b ˆ 2 * xp * d
C.5. JACOB5R 95
10 − 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4
11 − 16 * yp ˆ 4 − 16 * a ˆ 4;
12 fac2=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 + 8 * d ˆ 2 * a ˆ 2
13 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2
14 + 32 * b ˆ 2 * a ˆ 2 + 32 * xp ˆ 3 * d − 24 * xp ˆ 2 * d ˆ 2
15 − 32 * xp ˆ 2 * yp ˆ 2 + 8 * xp * d ˆ 3 − 8 * d ˆ 2 * yp ˆ 2
16 − 32 * xp * a ˆ 2 * d − 32 * b ˆ 2 * xp * d + 32 * xp * d * yp ˆ 2
17 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4;
18 if ( fac1<0 | | fac2<0)
19 f=0;
20 else
21
22 c2=−(bˆ2−xpˆ2−ypˆ2−(1/4)*dˆ2−xp*d−aˆ2);
23 o2=2*yp*a;
24 h2= d*a+2*xp*a;
25 q(1)= atan2(o2,h2)+atan2(sqrt(h2ˆ2+o2ˆ2−c2ˆ2),c2); % hay 2 soluciones
26 %la segunda atan2 puede ser +,−
27 q(2)= atan2(y−sin(q(1))*a,d/2+x−cos(q(1))*a);
28 c1=−(bˆ2−xpˆ2−ypˆ2−(1/4)*dˆ2+xp*d−aˆ2);
29 o1=2*yp*a;
30 h1=−d*a+2*xp*a;
31 q(3)=atan2(o1,h1)−atan2(sqrt(h1ˆ2+o1ˆ2−c1ˆ2),c1);
32 q(4)= atan2(y−sin(q(3))*a,x−d/2−cos(q(3))*a);
33
34
35
36
37
38 J= [0.1e1 / a / sin(q(1) − q(2)) * cos(q(2))
39 0.1e1 / a / sin(q(1) − q(2)) * sin(q(2));
40 0.1e1 / a / sin(q(3) − q(4)) * cos(q(4))
41 0.1e1 / a / sin(q(3) − q(4)) * sin(q(4))];
42
43 e12=isfinite(J); % Me da los valores finito que hay en J
44 %(1 si es verdadero, 0 si es falso)
45 suma2=sum(sum(e12));
46 if (suma26=4)
47 f=0;
48 else
49 %p=det(J);
50 s=svd(J); % pertenece al programa de matlab
51 %del numero de condicionamiento
52 %calcula las singularidades
53 % de J
54 e=isfinite(s);
55 suma1=sum(e);
56 r=length(s);
57 if(suma16=r | | any(s==0)) %any(s==0) matriz singular asi
58 %la calculan el programa
59 f=0;
60 else
61 f=1/cond(J); %Calcula el numero de condicion de J
62 end
96 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN
63 end
64 end
65 end
1 function [value,x]=result(pop,stringlength,dimension)
2 [value,k]=max(pop(:,stringlength*dimension
3 +dimension+1));
4 x=pop(k,stringlength*dimension+1:
5 stringlength*dimension+dimension);
6 value=value;
7 end
Bibliografı́a
Altuzarra, O., Sandru, B., Macho, E., and Amezua, E. (2010). Análisis de indicadores
cinemáticos para el diseño de manipuladores paralelos. In XVIII Congreso Interna-
cional de Ingenierı́a Mecánica. Ciudad Real.
Gestal, M., Rivero, D., Rabuñal, J. R., Dorado, J., and Pazos, A. (2010). Introducción a
los algoritmos genéticos y la programación genética. Universidade da Coruña, Servicio
de Publicacións.
Huang, M. Z. (2011). Design of a planar parallel robot for optimal workspace and dexterity.
International Journal of Advanced Robotic Systems, 8(4):49.
Laribi, M., Romdhane, L., and Zeghloul, S. (2007). Analysis and dimensional synthesis
of the delta robot for a prescribed workspace. Mechanism and Machine Theory,
42(7):859–870.
Liu, X.-J., Wang, J., and Pritschow, G. (2006). Kinematics, singularity and workspa-
ce of planar 5r symmetrical parallel mechanisms. Mechanism and machine theory,
41(2):145–169.
Lou, Y., Liu, G., and Li, Z. (2008). Randomized optimal design of parallel manipulators.
Automation Science and Engineering, IEEE Transactions on, 5(2):223–233.
97
98 BIBLIOGRAFı́A
Martı́nez, E., Peña, C. A., and Yime, E. (2010). Diseño óptimo de un robot paralelo con
configuración delta para aplicaciones educativas. Revista Educación en Ingenierı́a,
5(10):110–119.
Merlet, J.-P. (2006). Jacobian, manipulability, condition number, and accuracy of parallel
robots. Journal of Mechanical Design, 128(1):199–206.
Peña Cortes, C. A., Martinez Oviedo, E., and Cárdenas Herrera, P. F. (2011). Optimi-
zación dimensional de un robot paralelo tipo delta basado en el menor consumo de
energı́a. Ciencia e Ingenierı́a Neogranadina,, 21(01):73–88.
Pierrot, F., Nabat, V., Company, O., Krut, S., and Poignet, P. (2009). Optimal design
of a 4-dof parallel manipulator: From academia to industry. IEEE Transactions on
Robotics, 25(2):213–224.
Stan, S.-D., Balan, R., and Maties, V. (2008). Optimal design of parallel kinematics
machines with 2 degrees of freedom. INTECH Open Access Publisher Rijeka.
Wu, J., Li, T., Liu, X., and Wang, L. (2007). Optimal kinematic design of a 2-dof planar
parallel manipulator. Tsinghua Science & Technology, 12(3):269–275.