Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIVERSIDAD POLITECNICA DE
MADRID
Dise~
no y
onstru
i
on de un robot arti
ulado que
emula modelos animales: apli
a
ion a un gusano
Juan Gonzalez G
omez
Abril de 2001
T
tulo:
Tutor:
Autor:
Tribunal
Madrid, a de de 2001.
A mis padres, Juan y Virginia, por
haberme in
ul
ado desde peque~no el
espritu te
ni
o-
ient
o y por poten-
iar mis aptitudes desde el prin
ipio.
Gra
ias por todo. <Lo he
onseguido!.
Agrade
imientos
En primer lugar, quiero agrade
er a D. Javier Ma
as Guarasa, mi tutor durante todo
este tiempo, su dedi
a
ion y apoyo in
ondi
ional. Siempre a sabido poten
iar a sus
alumnos, orientandolos
orre
tamente y prestando su valioso tiempo. Mu
has gra
ias .
Tambien tengo que adrade
er a aquellos profesores que supieron transmitirme su interes
por determinados temas te
ni
os. Entre ellos D. Jose Colas Pasamontes,
on el que
des
ubr los mi
ro
ontroladores y D. Eduardo Boemo que me desperto el interes por los
mi
robots. Mu
has gra
ias . Espe
ial men
ion se mere
en mis amigos y
ompa~neros de
trabajo Cristina, Pe
o y Andres. De ellos he aprendido mu
has
osas y disfruto
ada
Mu
has gra
ias
da
on su imagina
ion,
ono
imientos te
ni
os y simpata. . Dentro del
mundo empresarial, estoy muy agrade
ido, de todo
orazon, a D. Juan Jose San Martn,
padre de Pe
o, por
onar en nuestras posibilidades y apostar por nosotros, ayudandonos
a
rear Mi
roboti
a, S.L.Mu
has gra
ias . Y nalmente, en el
ampo personal, ademas
de a mis padres, Juan y Virginia, a los que dedi
o este proye
to, agradez
o a Mer
edes la
Mu
has gra
ias
pa
ien
ia y el apoyo re
ibido. .
Resumen
En este proye
to se dise~na y
onstruye un robot arti
ulado, sin patas, similar a un
gusano, que avanza en lnea re
ta, mediante ondas que se propagan desde la
ola hasta
la
abeza, de igual manera que lo ha
en los gusanos de seda. Se desarrollan modelos
teori
os de gusanos transversales, longitudinales y tridimensionales de los que se obtienen
propiedades y e
ua
iones. La genera
ion de las se
uen
ias de movimiento se realiza de
manera automati
a, apli
ando los algoritmos desarrollados a un gusano virtual para luego
reprodu
irlos en un gusano real. Cambiando los parametros amplitud, longitud de onda y
velo
idad de propaga
ion se
onsiguen diferentes se
uen
ias de movimiento. El prototipo
nal esta dotado de
uatro arti
ula
iones
ontroladas mediante una red de mi
ro
ontro-
ladores, pero esta dise~nado para ser muy fa
ilmente ampliado, tanto a nivel me
ani
o
omo ele
troni
o. El sistema
reado es una potente plataforma de desarrollo para la
investiga
ion en el
ampo de los robots sin extremidades.
Palabras
lave
Mi
roboti
a, roboti
a, gusano, apodo, serpiente, mi
ro
ontrolador, MC68HC11,
ontrol
distribuido, ele
troni
a, hardware.
Índice general
1. Introducción 1
1.1. Encuadre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Robótica, Robots y sus diferentes tipos . . . . . . . . . . . . . . . . . . 1
1.1.2. Robots animales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3. Robots sin patas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.4. Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4. Organización del tomo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
I Teoría 20
2. Propagación de perturbaciones 21
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2. Clasificación de las perturbaciones . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3. Ondas transversales unidimensionales (O.T.U) . . . . . . . . . . . . . . . . . . . 25
2.3.1. Propagación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.2. Propagación de una O.T.U sin amortiguamiento . . . . . . . . . . . . . . 28
2.4. O.T.U periódicas y sin amortiguamiento . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1. Parámetros importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.1.1. Longitud de onda (λ) . . . . . . . . . . . . . . . . . . . . . . 29
2.4.1.2. Periodo (T) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.1.3. Velocidad de propagación (v) . . . . . . . . . . . . . . . . . . 31
2.4.2. Formulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5. Ondas sinusoidales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.1. Fórmulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.2. Superposición de ondas sinusoidales . . . . . . . . . . . . . . . . . . . . 32
2.5.3. Ondas sinusoidales longitudinales . . . . . . . . . . . . . . . . . . . . . 32
2.6. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
I
ÍNDICE GENERAL II
3. Mecanismos de movimiento I:
Gusano longitudinal 35
3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2. Modelo de gusano longitudinal . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1. Parámetros de modelado . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1.1. Parámeros de los segmentos . . . . . . . . . . . . . . . . . . . 36
3.2.1.2. Parámetros del gusano . . . . . . . . . . . . . . . . . . . . . . 37
3.2.2. Caracterización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.2.1. Caracterización de los segmentos . . . . . . . . . . . . . . . . 38
3.2.2.2. Caracterización del gusano . . . . . . . . . . . . . . . . . . . 38
3.2.3. La función de contorno . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.4. Secuencias y evolución de los estados . . . . . . . . . . . . . . . . . . . 40
3.3. Caracterización del movimiento de avance . . . . . . . . . . . . . . . . . . . . . 40
3.3.1. Definición de avance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.2. Un gusano longitudinal que avanza . . . . . . . . . . . . . . . . . . . . 41
3.3.3. Las tres reglas del avance . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4. Modelo de evolución: propagación de ondas . . . . . . . . . . . . . . . . . . . . 44
3.5. Condiciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.2. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.3. Regla de no retroceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.6. Condiciones internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6.2. Regla de avance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6.3. La función de contorno triangular . . . . . . . . . . . . . . . . . . . . . 52
3.6.3.1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.6.3.2. Demostración . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.6.3.3. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.7. Estudio del avance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.7.1. Recapitulación de resultados . . . . . . . . . . . . . . . . . . . . . . . . 54
3.7.2. Función de contorno no periódica . . . . . . . . . . . . . . . . . . . . . 54
3.7.3. Función de contorno periódica . . . . . . . . . . . . . . . . . . . . . . . 55
3.8. Implementación física de gusanos longitudinales . . . . . . . . . . . . . . . . . 59
3.9. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5. Gusano transversal:
algoritmo de ajuste 86
5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2.1. Simplificaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.2. Problema de ajuste para un segmento . . . . . . . . . . . . . . . . . . . 89
5.3. Estudio de alternativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.3.1. Solución analítica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.3.2. Solución numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.4. El algoritmo de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.4.1. Propagación del algoritmo de ajuste . . . . . . . . . . . . . . . . . . . . 93
5.4.2. Aplicación a una articulación . . . . . . . . . . . . . . . . . . . . . . . . 93
5.4.3. Sentido de rotación inicial . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.4.4. El ángulo inicial de ataque . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.4.5. Pasos del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
9. Electrónica 161
9.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.2. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.3. Alternativas de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
9.4. Arquitectura hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.5. Tarjetas CT6811 y BT6811 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
9.5.1. Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
9.5.2. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9.5.3. Interconexión de las tarjetas . . . . . . . . . . . . . . . . . . . . . . . . 169
9.6. Red de microcontroladores: spinet . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.6.1. Arquitectura software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.6.2. Servicios ofrecidos por la spinet . . . . . . . . . . . . . . . . . . . . . . 171
9.7. Adaptación a la estructura mecánica . . . . . . . . . . . . . . . . . . . . . . . . 171
9.8. Alimentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.9. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
VII
ÍNDICE DE FIGURAS VIII
Introducción
1.1. Encuadre
1.1.1. Robótica, Robots y sus diferentes tipos
Hoy en día la robótica como disciplina ha crecido mucho y existe una gran cantidad de robots,
cada uno de un estilo totalmente diferente al otro. Es muy difícil hacer una clasificación general
válida para todos ellos. Con la idea de encuadrar el objeto de este proyecto se va a realizar una
clasificación, que no es en absoluto rígida y en la que las fronteras no son totalmente nítidas,
pero queo nos servirá para centrar las ideas.
Como primer criterio de clasificación se va a emplear la reentabilidad o provecho comercial
que se le puede sacar al robot, que nos permite hacer la primera división entre robots industria
les y robots de investigación. Los primeros tienen un tremendo impacto en la industria y son
por tanto económicamente rentables. Los segundos no generan beneficios, al contrario, hay que
invertir mucho dinero, pero generan conocimiento y hacen que la robótica evolucione.
Los típicos robots industriales [1] son brazos mecánicos, muy pesados, con cierto número
de grados de libertad y que se caracterizan por la versatilidad: ahora pintan, ahora sueldan, aho
ra colocan piezas,etc. según el manipulador que se les enganche. Se utilizan en las plantas de
montaje, haciendo trabajos repetitivos y que pueden ser peligrosos para los hombres. En la figura
1.1 hay una foto de un robot industrial de la marca Asea, con seis grados de libertad, tres para
posicionar el manipulador y tres para orientarlo. Para tener una visión global sobre los robots
industriales se puede consultar [2], para profundizar más [3] y si se quiere algo introductorio de
alto carácter práctico, [4].
Por otro lado, están los robots de investigación, que intentan aportar algo nuevo a la robótica:
nuevos algoritmos más inteligentes, nuevas formas de movimiento, etc. Dentro de estos robots se
puede hacer otra clasificación, agrupándolos en tres grandes familias: Robots humaniformes,
robots tipo vehículo y robots que imitan animales1 .
Los robots humaniformes no son nuevos. Se lleva hablando de ellos mucho tiempo. De
1
Por el término animal agruparemos a todos aquellos seres vivos que no son humanos: otros mamíferos, insectos,
peces, arácnidos,etc.
1
CAPÍTULO 1. INTRODUCCIÓN 2
hecho, la propia palabra robot proviene del checo y quiere decir “esclavo”. La primera vez que
se emplezó a hablar de robots fue en una novela de ciencia ficción, escrita por Karel Capek [5] en
1917 en la que se describe a unas criaturas mecánicas, robots, creados por un científico con el fin
de realizar todo el trabajo duro y pesado para el hombre. Estas criaturas se revelan al final contra
su creador. La novela marcó un hito y dió comienzo a una tendencia antirobot a la que Isaac
Asimov2 bautizó con el nombre de “Complejo de Frankenstein”, queriendo indicar el miedo que
existe a crear criaturas artificiales que puedan llegar a revelarse contra sus creadores.
Isaac Asimov, el creador del término robótica como ciencia de los robots, escribió infini
dad de cuentos cortos y novelas sobre el tema de los robots humaniformes, pero desde un punto
de vista no destructivo, tratando a los robots como máquinas inteligentes que realizan un tra
bajo muy útil para el hombre. Para garantizar la seguridad definió sus famosas tres leyes de la
robótica3 , que no puedo por menos que reproducir aquí:
1. Un robot no puede hacer daño a un ser humano, o, por medio de la inacción, permitir que
sea lesionado.
2. Un robot debe obedecer las órdenes recibidas por los seres humanos, excepto si estas ór
2
Soy un fi el lector de Isaac Asimov. Creo que ha aportado mucho a la popularización de la robótica y me veo en
la obligación de citarlo.
3
Publicadas por primera vez en la revista “Asombrosa ciencia fi cción”en 1942, y estaban incluidas en la historia
“el círculo vicioso”. Este cuento, junto a otros se puede encontrar en [6]
CAPÍTULO 1. INTRODUCCIÓN 3
Figura 1.2: Vista lateral del robot Asimo creado por Honda
3. Un robot debe proteger su propia existencia en la medida en que esta protección no sea
incompatible con la Primera y la Segunda Ley.
La idea de tener una máquina tan versátil como un ser humano es muy buena. Si todas las herra
mientas están hechas para que las manejen humanos, ¿no es una buena idea el crear una máquina
que maneje esas herramientas en vez de automatizar las propias herramientas? Por ejemplo, una
excavadora podría convertirse en un robot autónomo, o se podría sustituir el conductor por un
robot humaniforme, sin tener que cambiar la excavadora. Este razonamiento lo deja intuir muy
claramente Isaac Asimov en sus obras sobre robots.
Los robots humaniformes de hoy en día, no tienen todavía utilidad comercial, pero son de
sarrollados por grandes empresas para mostrar su elevada tecnología y conseguir que los medios
hablen sobre ellas. Son un reclamo publicitario. El mejor ejemplo está en el robot Asimo [7],
desarrollado por Honda y que se puede ver en las figuras 1.2 y 1.3.
En el M.I.T4 se está trabajando en un robot humaniforme, COG, con un comportamiento
similar al de un niño de dos años[8]. De momento han desarrollado el tronco superior del robot:
torso, brazos y cabeza.
Los robots tipo vehículo son una evolución lógica del concepto tan usual de medio de trans
porte: la mecánica ya existe, ahora convirtámosla en un robot. Se caracterizan porque disponen
de ruedas u orugas que les permiten moverse por un entorno, igual que lo hace un tanque, un
coche o una excavadora. Realmente se pueden definir como “vehículos con inteligencia”. Son
4
MIT son las siglas de “Massachusets Institute of Technology”
CAPÍTULO 1. INTRODUCCIÓN 4
robots más sencillos de construir que los humaniformes, más baratos y la mecánica está mucho
más estudiada.
Actualmente hay dos tipos de vehículos robóticos. Por un lado los modelos de iniciación,
que son muy simples y cualquier estudiante o aficionado se los puede construir. En el ambiente
universitario se emplean para que los alumnos asimilen los conceptos y aprendan electrónica,
mecánica y programación, además de, por qué no, para que se diviertan. Existen numerosos con
cursos en los que se puede participar, como Robocup [9], donde los robots juegan un partido de
fútbol, luchadores de sumo [10] [11], donde se enfrentan en terribles luchas sin tregua, carre
ras(microracing), salir de un laberinto y rastreadores son otras categorías en las que se compite,
como por ejemplo en el concurso Alcabot en la Universidad de Alcalá de Henares [12].
En la figura 1.4 se muestran escenas de un concurso de luchadores de sumo celebrado en
la UPC. Dos robots se sitúan frente a frente en un tatami circuilar, de color negro, estando el
borde delimitado por un color blanco. El objetivo es echar fuera del tatami al adversario. Para
ello los robots deben estar dotados de sensores que le permitan detectar si ellos mismos se salen
fuera, analizando el color del suelo, y sensores para detectar al adversario. Además de esto deben
disponer de mecanismos para expulsar al enemigo.
En la figura 1.5 se muestra en la parte de la izquierda el concurso de “robots limpiadores
de superficie” también celebrado en la UPC. En este caso el robot lucha contra el reloj y tiene
que recoger de un recinto cerrado tantos granos de arroz como pueda. Si además los deposita
en “la basura” obtendrá más puntos. En la foto de la derecha se muestra un robot que concursó
en Sumo y en cuya construcción participó el autor de este proyecto. Se trata de un toro que en
cuanto detecta al enemigo comienza a embestir hasta que lo expulsa del tatami.
Otro tipo de vehículos más avanzados son los de exploración, que sirven para reconocer
un entorno hostil, donde el hombre no puede llegar, y así obtener datos y realizar medidas. La
NASA está trabajando en este tipo de robots. La sonda Mars Pathfinder [14] que se envió a
Marte llevaba en su interior un vehículo autónomo para recorrer el entorno y tomar muestras de
CAPÍTULO 1. INTRODUCCIÓN 5
Figura 1.5: Izquierda: Concurso de limpiadores de superficie, UPC, 2000. Derecha: Robot de
sumo Tauroviper.
CAPÍTULO 1. INTRODUCCIÓN 6
la superficie de marte. Aunque gran parte del control de este robot se realizaba remotamente,
estaba dotado de una cierta inteligencia que lo diferencia mucho de un simple robot por “radio
control” .
La misión a marte fue un éxito, aunque el vehículo se quedó a veces “atascado”, teniendo que
hacer muchas maniobras para poder avanzar por el pedregoso terreno. Esto puso de manifiesto
dos aspectos importantes: Por un lado la viabilidad de enviar robots en vez de hombres, que es
mucho más barato y menos arriesgado. Por otro lado la necesidad de enviar robots cada vez más
versátiles y que se adapten a cualquier tipo de superficie.
En la figura 1.6 hay una foto del Microrover sobre la superficie de Marte, tomada desde la
sonda. Está analizando la roca “Yogi”. Puede verse la cantidad de piedras que hay sobre el terreno
y lo complicado que resultó para el robot poder acceder a la roca. En la figura 1.7 se muestra
una versión prototipo del Microrover que se está probando en los laboratorios de la NASA, en
un entorno que simula la superficie marciana.
miles de años y que están exitosamente adaptadas al medio en el que se desenvuelven? Esta idea
de imitar a la naturaleza es una fuente de inspiración muy fuerte para los técnicos. El problema
es que los animales son tan tremendamente complejos que el hombre sólo puede hacer burdas
imitaciones, de momento. Qué más quisieran los ingenieros de la Nasa que crear un vehículo
de exploración que fuese un “mono robot” y que pudiese realizar sus mismos movimientos. No
existirían obstáculos para la exploración de entornos hostiles fuera de la Tierra.
Una manera de clasificar los animales robots es atendiendo al número de extremidades. Están
los robots con patas y los “sin patas”. Los robots con patas intentan heredar las características
de sus animales replicados. Al tener patas son rápidos, aunque no tanto como los vehículos,
ágiles, pueden moverse por terrenos complicados y tienen la capacidad de poderse impulsar para
dar pequeños saltos. Esto es en teoría lo que podrían llegar a hacer. En la práctica son lentos y
bastante torpes, como si fuesen crías recién nacidas. Conseguir movimiento con patas no es una
tarea nada trivial. La coordinación entre las diferentes articulaciones es un problema que todavía
no está resuelto de una forma elegante. En la figura 1.8 se muestran dos robots hexápodos, con
seis patas. Se puede ver que su estructura es muy simple y dan la impresión de ser lentos y poco
ágiles. Distan mucho todavía de moverse como una hormiga real.
Según el número de patas del robot, se pueden denominar cuadrúpedos, hexápodos, octápo
dos,etc. Los cuadrúpedos tienen “personalidad propia” y difieren mucho del resto. Este tipo de
robots tienen mucho parecido con las mascotas que los humanos empleamos (gatos, perros,etc.)
por lo que son muy “amigables” y tienen mucha aceptación entre el público en general. Quizás
sea una forma de ir introduciendo la robótica poco a poco y que la gente venza el “complejo
de Frankenstain” al que hace referencia Asimov. La mascota que más sorprende es AIBO [15],
desarrollada por SONY, que se puede ver en la figura 1.9. En la foto de la izquierda está andando
ante la estupefacta mirada de un perro de verdad. Sorprende lo logrado que está el acabado final
y la coordinación tan buena que tiene. En el ambiente universitario también se han desarrollado
estos robots, con un presupuesto mucho más bajo, pero los resultados obtenidos son sorprenden
tes. Es el caso de Puchobot [16], desarrollado por D. Andrés PrietoMoreno Torres en la UPM,
CAPÍTULO 1. INTRODUCCIÓN 9
Figura 1.10: PUCHOBOT, un perro robot desarrollado por Andrés PrietoMoreno Torres
como proyecto fin de carrera, y que se puede ver en la figura 1.10. Está dotado de doce articu
laciones controladas por una red maestroesclavo de microcontroladores. El perro es autónomo
(no necesita conectarse al PC para su funcionamiento), puede avanzar, girar, sentarse, dar la pa
ta, etc. Las secuencias de movimiento se programan desde el PC y luego se envían a Puchobot
para que las reproduzca. El entorno de desarrollo es excelente y pone de manifiesto lo compleja
que es la coordinación de todas las articulaciones para conseguir el movimiento. Se trata de una
plataforma ideal para probar diferentes secuencias de coordinación y estudiar con detenimiento
el movimiento de los cuadrúpedos.
Los robots hexápodos tienen sólo dos patas más que los cuadrúpedos pero son radicalmente
opuestos a estos. Para empezar, si la coordinación de cuatro patas es compleja, la de seis lo es
muchísimo más. Normalmente los prototipos tienen seis patas pero no son independientes, sino
que bien mecanicamente o por software la patas se “aparean” de manera que cuando una avanza
la otra retrocede o cuando una se levanta la otra baja, con lo que es como si sólo hubiese tres
patas libres. Por tener mayor número de patas son mucho más estables. Esta es una propiedad
muy interesante y que los hace especialmente útiles, puesto que si pierden una pata, por ejemplo
si se estropea la electrónica o el servo, el robot puede seguir desplazándose, peor que al principio,
pero lo puede hacer. Sólo hay que hacer el experimento de quitar una pata a una hormiga y ver
qué ocurre.
Los hexápodos intentan imitar diferentes insectos, como cucarachas u hormigas. En la figura
1.11 se muestran dos hexápodos totalmente diferentes. El de la derecha es una hormiga 5 cons
tituida por doce articulaciones. La secuencia de movimiento que se emplea es tremendamente
simple y a pesar de ello el avance es muy bueno y tiene unos andares muy “graciosos”. En la foto
de la derecha aparece un robot cucaracha, que en vez de servos usa actuadores neumáticos, de
5
Sólo es una hormiga por el número de patas y las antenas, pero no por el tamaño ni el peso.
CAPÍTULO 1. INTRODUCCIÓN 10
ahí el elevado número de tubos que interconectan todas las partes. Los robots que imitan insectos
o cualquier otra cosa que no sean mascotas tienen menos aceptación entre la gente. Los suelen
denominar bajo el término “bichos” y como se parecen a los insectos que imitan, generan cierto
rechazo6 .
Estos tipos de desplazamientos pueden superponerse entre ellos. Las serpientes por ejemplo no
sólo hacen el movimiento de serpentina sino que también realizan contracciones y expansiones.
Lo mismo les sucede a los gusanos de seda con las ondas longitudinales y las transversales
perpendiculares.
Figura 1.13: Dibujos del robot serpiente de la Nasa. Derecha: se ha fragmentado para explorar
un entorno. Izquieda: La serpiente está trepando por una estructura compleja.
pequeños con autonomía propia. En la figura 1.13 se muestran dos dibujos, sacado de la web de
la Nasa. En el de la derecha, la serpiente se ha partido en tres trozos iguales y está explorando
una superficie de un planeta. En la imagen de la izquierda aparece la serpiente trepando por una
estructura compleja, donde otro tipo de robot no podría llegar.
En el Ais (Institute for Autonomous Intelligent systems) dentro del GMD (German National
Research) están trabajando con robots serpientes [22] similares a los de la Nasa (fig 1.14), cons
tituidos por diferentes secciones que se conectan para constituir una serpiente completa. Cada
sección está controlada por un procesador esclavo y todos los esclavos se interconectan median
te un bus serie (CANBus). Existe un procesador central en la red, el maestro, que coordina el
movimiento. La alimentación de la serpiente es externa a ella, teniéndose que conectar un cable.
En la figura 1.15 se muestra la serpiente atravesando un obstáculo. Las características para una
serpiente de 6 segmentos son:
Longitud: 200cm
Peso: 3Kg
Diametro: 6cm
Velocidad: 50cm/min
Existen también serpientes desarrolladas por particulares. Es el caso del Dr. Gavin Miller, que
lleva desarrollando prototipos desde 1992[23]. Sus serpientes se caracterizan por el movimiento
de “serpentina”. En la figura 1.16 se muestran los diferentes prototipos que ha realizado y en la
CAPÍTULO 1. INTRODUCCIÓN 13
figura 1.17 se muestra el tamaño real de una de sus serpientes. Para poder desplazarse por las
superficies dispone de unas pequeñas ruedas en cada uno de los segmentos.
Muy similares son las serpientes que se han desarrollado en el Mita Laboratory[24], en Japón.
En la figura 1.18 se puede ver uno de sus prototipos, constituido por muchas secciones iguales,
conectadas. También están trabajando con el movimiento de serpentina.
Para más información puede consultarse [25] donde hay muchísimos enlaces, todos relacio
nados con este tipo de robots.
1.2. Motivación
Desde pequeño me han fascinado los robots. Quizás fuese por la serie “Mazinger Z”, no lo
sé, pero la curiosidad y la necesidad de estudiar y diseñar robots me han acompañado desde que
tengo uso de razón.
De hecho, el entrar en la Escuela de Teleco no fue casualidad. En una visita al Simo, que
por aquel entonces no era tan grande como lo es ahora, ví con asombro cómo un brazo robot
transportaba objetos de un lugar a otro. Después de hablar con el que había programado el robot
y descubrir que era Ingeniero de Telecomunicación, tuve muy claro qué era lo que quería estudiar.
Y así fue como me decidí entrar en la ETSIT.
En la escuela tuve la suerte de conocer a tres de mis mejores amigos, con los que trabajo aho
ra: Cristina, Andrés y Juanjo (Peco). El destino quiso que nos conociésemos y que formásemos
un grupo, denominado por entonces como Grupo J&J. Juntos construimos placas microcontro
CAPÍTULO 1. INTRODUCCIÓN 15
ladores basadas en el 68HC11 de Motorola (Figura 1.19), así como toda la electrónica necesaria
para poder realizar robots básicos. Como miembros de la Rama de estudiantes del IEEE, co
menzamos a impartir talleres de Microbótica7 , primero en la propia escuela y después fuera de
ella [26]. Asistimos al I Concurso Nacial de robot luchadores de sumo, celebrado en la UPC en
Marzo de 1997 y en nuestro ratos libres desarrollamos nuevas placas, robots más avanzados y
escribimos un libro sobre la programación con el 68HC11[21].
Todo esto nos condujo a formar una empresa, llamada Microbótica S.L [19], dedicada a reali
zar proyectos y a vender Microbots, sobre todo en Universidades. Un robot que se ha convertido
en un “clásico” es Tritt, que destaca por su sencillez y facilidad de programación (Figura 1.21)
Continuando con las inquietudes en el campo de la robótica, Andrés decidió construir un
Perro robot[16] y yo un gusano (Figura 1.22). La pregunta que me abordaba era: ¿Es posible
construir un robot sin patas que se pueda mover?. Y la respuesta es este proyecto.
Para comprender mejor el movimiento de los gusanos y poder formalizarlo para su posterior
implementación, he vistomuchos vídeos de National Geograghic, en los que aparecen diferentes
insectos, entre ellos orugas, larvas, lombrices y gusanos de seda. Toda la parte teórica y los
resultados obtenidos se basan en la observación directa del movimiento de estos insectos.
7
La palabra Microbótica fue inventada por nosotros y nació de la abreviación de las palabras Micro y robótica,
con la idea de hacer referencia a un tipo de robot muy diferente del industrial, más simple, sencillo y económico. El
término ha tenido tanta aceptación que hasta se han escrito libros sobre el tema [20]
CAPÍTULO 1. INTRODUCCIÓN 17
PUCHO CUBE1.0
1.3. Objetivos
Los objetivos de este proyecto son los siguientes:
2. Desarrollo del cálculo automático de las secuencias de movimiento necesarias para que
se desplace en función de la onda aplicada.
3. Diseño de un software de alto nivel, para un ordenador PC, que pueda generar las se
cuencias de movimiento del gusano según cómo sea la forma de la onda que lo recorra, su
periodo y su amplitud.
1. Ser económico, de manera que cualquier persona se lo pueda construir sin tener que reali
zar una gran inversión. Hoy por hoy no se encuentra nada asequible en el mercado.
2. Ser fácil de construir. Las piezas tienen que ser sencillas y fáciles de encontrar en el
mercado.
3. Ser extensible. Si se tiene poco dinero se construye un gusano corto, pero gastándose más
dinero se puede hacer todo lo largo que se quiera. No puede haber limitaciones hardware,
software, ni mecánicas.
4. Ser sencillo, en general. Por ejemplo pocos tipos de piezas diferentes, fáciles de montar,
interconexiones electrónicas simples y fáciles de conectar, etc.
Para cumplir los puntos 1, 2 y 4 no se han implementado los mecanismos de giro descritos en la
parte teórica. El llevarlos a la práctica implica un rediseño de la estructura mecánica, dejando en
ese caso de ser sencillo y barato.
Finalmente comentar que el gusano recibe el nombre de CUBE 8
8
Este nombre no tiene nada que ver con la forma del gusano, ni tampoco signifi can nada las iniciales. Se puso
a raiz de ver la pelicula “CUBE”, que al ser tan extraña, el nombre encajaba perfectamente con el de un robot tan
poco usual.
CAPÍTULO 1. INTRODUCCIÓN 19
En todos los capítulos hay una introducción y un resumen final. Leyendo sólo
estos apartados uno se puede hacer una idea general del contenido del proyecto,
sin necesidad de entrar en demasiados detalles.
Parte I
Teoría
20
Capítulo 2
Propagación de perturbaciones
2.1. Introducción
En este capítulo introductorio se presenta el fenómeno físico de la propagación de perturba-
ciones, dando una visión general y centrándose en las ideas y conceptos que son de interés para
este proyecto. Partiendo de una perturbación genérica, se van a ir añadiendo restricciones hasta
llegar al modelo de onda que nos interesa, presentando las ecuaciones y parámetros que se van a
utilizar y haciendo un repaso de los conceptos implicados.
Supóngase que sobre un medio cualquiera se produce una perturbación en un punto deno-
minado foco de la perturbación (F). Ésta se propaga en todas las direcciones y poco a poco
se va amortiguando hasta que desaparece. El típico ejemplo es el de la piedra que cae sobre un
estanque de agua en reposo. Se generan pequeñas ondas que se propagan radialmente, con centro
en el lugar donde la piedra cayó.
El fenómeno de la propagación de una perturbación se denomina movimiento ondulatorio
y la perturbación en sí recibe el nombre de onda.
Más información sobre el movimiento ondulatorio se pueden encontrar en cualquier libro de
física general, por ejemplo [27].
21
CAPÍTULO 2. PROPAGACIÓN DE PERTURBACIONES 22
Tridimensional Bidimensional
Eje Y
Eje Z
F F
Eje Y Eje X
Eje X
Unidimensional
F
Eje X
Esto permite realizar otra clasificación: Propagación con amortiguamiento y sin él. En la figu-
ra 2.2 se muestra este concepto aplicado a una perturbación con propagación unidimensional. Sin
embargo, el modelo sin amortiguamiento, además de ser más sencillo su estudio, es necesario si
la propagación se realiza en medios activos, es decir, medios que no absorben energía de la per-
turbación sino que la aportan. Los medios pasivos son los clásicos: el aire en la propagación del
sonido, el vacío en la propagación de la luz, las cuerdas de una guitarra,etc. El lector puede estar
intrigado llegados a este punto, ¿qué medio es activo?. Por ejemplo un gusano, vivo o mecánico.
En ellos las ondas de movimiento, bien transversales o bien longitudinales, se transmiten por el
medio, que es el propio gusano, pero la energía para la propagación es aportada por el gusano y
no por un foco externo, por lo que las ondas no sufren atenuación.
Las propagación de perturbaciones unidimensionales puede ser de dos tipos: transversal o
longitudinal. La propagación transversal es aquella en la que los puntos se desplazan perpendi-
cularmente a la dirección de propagación, mientras que en la longitudinal lo hacen en la misma
dirección. Las ondas reciben los nombres de transversales o longitudinales, según cómo sea
la propagación. En la figura 2.3 se han dibujado dos ejemplos. El primer sistema está formado
por unas bolas unidas a través de muelles y colgadas del techo por una cuerda. La dirección de
propagación de las ondas es el eje x, en el mismo sentido en el que se mueven las propias bolas.
Es el mismo tipo de ondas que recorren los cuerpos de las lombrices de tierra. El segundo sistema
es una cuerda en la que se ha aplicado una fuerza sobre uno de los extremos. Esto provoca una
onda que se dezplaza de izquierda a derecha, pero los puntos de la cuerda se mueven perpendi-
cularmente a la dirección de propagación. Si miramos un corte transversal del mar, las olas son
ondas de este tipo.
CAPÍTULO 2. PROPAGACIÓN DE PERTURBACIONES 23
Propagacion unidimensional
F F
F F
Para centrar ideas, se resume a continuación la clasificación que se ha establecido, según los
diferentes criterios empleados:
Propagación tridimensional
Propagación bidimensional
Propagación unidimensional
Con amortiguamiento
Sin amortiguamiento
Ondas transversales
Ondas longitudinales
CAPÍTULO 2. PROPAGACIÓN DE PERTURBACIONES 24
Bolas
Muelles
Direccion de propagacion
Direccion de propagacion
Eje X
Eje X
Las ondas que nos interesan son las unidimensionales, transversales, sin amortiguamiento y pe-
riódicas. En los siguientes apartados partiremos de las ondas transversales unidimensionales e
iremos aplicando restricciones para obtener las ecuaciones y propiedades que interesan.
A B
Foco de la t=0
perturbacion
Eje X
F
A B
F t=1
F t=2
A
B
B
F t=3
A
F B t=4
A
F t=5
A B
F(X)=P(X,0) P(x,3)
t=0
t=3
x s x
P(X,1) P(x,4)
t=1
t=4
x x
s s
P(X,2)
P(x,5)
t=2
t=5
x
x
s s
siendo:
s: Distancia que avanza la onda en cada unidad de tiempo. s = vt, siendo v la velocidad
de propagación de la onda en el medio.3
Para un instante de tiempo genérico t, la onda habrá avanzado un espacio de vt unidades sobre el
eje x, y habrá sufrido una atenuación de 1 − A(t), por lo que la expresión de la onda queda de la
forma:
P (x, y) = (1 − A(t)) F (x − vt) (2.1)
siendo:
P(x,t): la ecuación de la onda para cualquier instante de tiempo t y para cualquier punto x.
(Perturbación)
Gusano corto
Cabeza
Figura 2.7: Un gusano corto y uno largo que son recorridos por ondas transversales de la misma
amplitud
F(x): Perturbación inicial, en el instante t=0. Es la que define la forma de la onda. (Foco)
v: Velocidad de propagación de la onda
P(x,0)
t=0
A B
P(x,t1)
t=t1
A B
X
P(x,t0) P(x,t2)
t=t0 t=t2
x=
X X
x=0 x=0 x=
P(x,t1) P(x,t3)
t=t1 t=t3
X X
x=0 x= x=0 x=
Figura 2.9: La onda P(x,t) dibujada para cuatro instantes de tiempo diferentes y sólo en el inter-
valo [0, λ]
P(x,0)
t=0
x=
X
x=0
P(0,t)
x=0
t
t=0 t=T
2.4.2. Formulación
Para caracterizar a una onda transversal unidimensal periódica y sin amortiguamiento sólo
hay que hacerlo en un intervalo de tiempo igual al periodo y en un intervalo espacial igual a la
longitud de onda:
P (x, t) = F (x − vt), ∀x ∈ [0, λ), ∀t ∈ [0, T ) (2.4)
También se verifican las siguientes igualdades:
diremos que se trata de una onda sinusoidal. Al hablar de este tipo de ondas entenderemos que
se trata de ondas transversales unidimensionales periódicas y sin amortiguamiento. Los nuevos
parámetros que aparecen son:
A: Amplitud de la onda
2π
k: Número de onda. Es el número de longitudes de onda en la distancia 2π. k = λ
F(x)=Asen(kx)
x=
2
x=
x
x=0 x=
4
En la figura 2.11 se ha dibujado una onda sinusoidal en el intervalo x ∈ [0, λ] y para t=0, con
ϕ = 0.
Teniendo en cuenta las ecuaciones 2.4 y 2.5 se obtiene la ecuación general de una onda
sinusoidal:
2.6. Resumen
En este capítulo se ha partido de la idea genérica de perturbación y se han ido realizando par-
ticularizaciones hasta obtener las ecuaciones de las ondas que son de interés para este proyecto.
De todas las perturbaciones, nos interesan las que se propagan en una dimensión (unidimensio-
nales). Con ellas se han introducido los conceptos de función foco F(x) y la función perturbación
P(x,t) en la que aparecen dos parámetros nuevos, la atenuación y la velocidad de propagación
(v).
Si nos restringimos a medios activos, la atenuación no existe y la relación entre P(x,t) y
F(x) es directa (ec. 2.2). Si además las ondas son periódicas, aparecen dos nuevos parámetros:
longitud de onda (λ) y periodo (T), que nos permite trabajar con la perturbación en los intervalos
x ∈ [0, λ) y t ∈ [0, T ).
Cualquier perturbación se puede obtener como suma de ondas sinusoidales, de ahí su impor-
tancia. La ecuación que describe las ondas sinusoidales transversales sin amortiguamiento es la
2.7 y los parámetros de interés son:
Periodo (T)
Amplitud (A)
Todos estos parámetros no son independientes sino que existen relaciones que los ligan. Así, λ,
T y v están relacionados por la ecuación: 2.3.
En las ondas transversales las partículas se desplazan perpendicularmente a la dirección
de propagación, manteniendo fija su coordenada x mientras que en las ondas longitudinales lo
hacen en la misma dirección de propagación, pero el valor medio del desplazamiento de cada
partícula es siempre nulo. Las ondas están asociadas al transporte de energía pero NO de
materia.
Capítulo 3
Mecanismos de movimiento I:
Gusano longitudinal
3.1. Introducción
En el capítulo 2 se han introducido los conceptos fundamentales sobre la propagación de
perturbaciónes. Hay una propiedad fundamental que siempre se cumple:
En este capítulo estudiaremos los gusanos longitudinales, definidos como aquellos que son
recorridos por ondas longitudinales, desde la cola hasta la cabeza. Un ejemplo podrían ser las
lombrices de tierra. El modelo desarrollado nos permitirá responder a las siguientes cuestiones
fundamentales:
35
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 36
Segmentos
Cola Cabeza
L0
0 1 2 3 4
1. Parámetros estáticos. Son iguales para todos los segmentos y siempre permanecen con el
mismo valor, no varían con el tiempo.
En la figura 3.2 se muestra gráficamente lo que indica cada uno de los parametros en un segmento.
La longitud y la contracción están relacionadas por la constante L 0 (ec. 3.1) y las dos dan una
indicación de cuánto se ha comprimido el segmento, en relación con la longitud natural.
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 37
Lo
c i (t) l i (t)
a) LT (t): Longitud total del gusano en el instante t. El valor oscila entre LT0 − AT
y LT0 + AT . Este parámetro se puede expresar en función de los parámetros de los
segmentos como:
N
X −1
LT (t) = li (t) (3.4)
i=0
L T0
0 1 2 3 4
AT
0 1 2 3 4
L T (t)
C(t)
0 1 2 3 4
3.2.2. Caracterización
Por caracterización entendemos la información mínima necesaria para describir el modelo
de gusano, de manera que a partir de un gusano se puedan obtener los parámetros de caracte-
rización y a la inversa, a partir de la caracterización se pueda obtener el gusano resultante. La
caracterización nos indica qué variables son necesarias para conocer el estado del gusano.
LT(t)
L0-A L0 L0 L0 L0
0 1 2 3 4
Todos los parámetros del gusano quedan inequivocamente definidos mediante su vector de
estado. Así por ejemplo, un gusano con un vector de estado E=(0,0,0,0,0) sabemos que está en
reposo y que su longitud es la natural (LT0 ). Es el vector que caracteriza en ese instante al gusano
de la figura 3.1. El gusano dibujado en la figura 3.4 tiene un vector de estado de (A,0,0,0,0) que
indica que el segmento 0 está totalmente contraído y que el resto están en reposo. La contracción
del gusano es C(t) = A y su longitud total:
LT (t) = LT0 − A
Esta función es estática y no depende del tiempo. Nos está dando en vector de estado en el
instante inicial. A partir de ella definiremos más adelante la función de propagación, P (x, t),
que es la misma función de contorno que se va propagando con el tiempo. Estos conceptos se
comprenderán mejor más adelante.
En la figura 3.5 se muestra una función de contorno de tipo triangular y se ha dibujado el gu-
sano asociado. El efecto de contracción de los diferentes segmentos se ha resaltado dibujándolos
más oscuros cuando más comprimidos están. El vector de estado determinado por esta función
de contorno es el : (0, A, 0, A2 , 0).
Dada una función de contorno F, queda perfectamente caracterizado el gusano en el instante
inicial, pues se conoce el vector de estado. Sin embargo, dado un vector de estado, hay infinitas
funciones de contorno que lo pueden determinan. No obstante, La relación entre función de
contorno y evolución de los estados internos del gusano es 1:1, es decir, dada una función de
contorno existe una única evolución interna y para cada evolución interna posible existe una
única función de contorno. Más adelante se comprenderá mejor esta idea.
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 40
F(x)
A
2
x
0 1 2 3 4
L0- A
L0 L0- A L0 L0
2
0 1 2 3 4
Denominaremos zona activa de la función de contorno a todos los puntos sobre el eje x que
están comprendidos entre el punto x inicial y el punto x final de la función de contorno. En el
caso de la figura 3.5 la zona activa es el intervalo [0,4].
Punto a
E( t1 ) =(0,0,0,0)
Evolucion del
Punto a estado del gusano
E( t2 ) =(0,0,0,0)
xcola (t 1 ) xcola (t 2 )
1. E(t1 ) = E(t2 )
2. xcola (t2 ) − xcola (t1 ) = D, siendo xcola (t) la coordenada x del extermo izquier-
do de la cola en el intante t.
La primera condición nos está indicando que el estado final sea igual al inicial. Esto es ne-
cesario para poder comparar ambos gusanos. Si están en estados diferentes es difícil establecer
cuánto ha avanzado el gusano entero. La segunda condición establece que el punto extremo de
la cola (punto izquierdo) debe haber avanzado una distancia D, es decir, que su coordenada x en
el estado final es D unidades mayor que en el estado inicial. Por estar los gusanos en el mismo
estado tanto al principio como al final, esta segunda condición también la cumplen el resto de
puntos del gusano.
En la figura 3.6 se ha dibujado un gusano longitudinal de cuatro segmentos que ha avanza-
do una distancia D. En el instante t1 el gusano está en el estado inicial, con un vector E(t1 ) =
(0, 0, 0, 0) y en el t2 se encuentra en el estado final, con E(t2 ) = (0, 0, 0, 0). La primera con-
dición se cumple. El extremo de la cola se ha denominado como punto a. En el estado final su
coordenada x ha aumentado en D. Se cumple la condición 2, por lo que podemos afirmar que ha
avanzado una distancia D.
Punto a Punto b
E(t1 )=(0,0,0)
E(t2 )=(A,0,0)
E(t3 )=(0,A,0)
E(t4 )=(0,0,A)
E(t5 )=(0,0,0)
A
Figura 3.7: Un gusano longitud que avanza, con sus vectores de estado en ciertos instantes
garantizar que se cumple la definición de avance, puesto que vemos que se ha desplazado A
unidades hacia la derecha. El punto b es un punto de prueba que se empleará para realizar el
razonamiento que sigue.
Estudiemos con detenimiento qué es lo que está ocurriendo en este avance. Hay tres ideas
básicas, ocultas en el dibujo:
1. Existe una evolución interna de los estados. Esto parece una trivialidad, pero si no exis-
tiese esta evolución, no habría movimiento de avance. Podemos hablar de evolución cuan-
do hay al menos dos estados diferentes. Si el gusano siempre permanece en el mismo
estado, para todo instante de tiempo, no avanzaría nunca.
2. La evolución de los estados es correcta. No sólo debe haber una evolución, sino que debe
ser la correcta. Existen evoluciones que no dan lugar a movimiento de avance, como por
ejemplo la que se muestra en la figura 3.8.
3. Determinación de la condición externa correcta. Además de que haya una evolución
interna y que ésta sea correcta, hay que garantizar que se cumple una condición externa
adecuada. En el ejemplo de la figura 3.7, en la transición entre los estados E(t 1 ) y E(t2 ),
la condición externa que se ha aplicado es que la coordenada x del punto b permanezca
constante durante toda la evolución, es decir, que el punto b debe permanecer “fijado” a la
superficie de avance durante toda la evolución, por los mecanismos que sean. En la figura
3.9 se ha dibujado el mismo gusano, en el que se produce la misma evolución interna
que en el de la figura 3.7(Todos los estados son exactamente iguales en ambos gusanos)
pero por el hecho de aplicarse otra condición externa, el movimiento de avance no ocurre.
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 43
E(t1 )=(0,0,0)
E(t2 )=(A,0,0)
E(t3 )=(0,0,0)
Figura 3.8: Gusano que evoluciona de una manera incorrecta, por lo que no avanza
Punto a Punto b
E(t1 )=(0,0,0)
E(t2 )=(A,0,0)
E(t3 )=(0,A,0)
E(t4 )=(0,0,A)
E(t5 )=(0,0,0)
Figura 3.9: Gusano que no avanza porque no se cumple la condición externa adecuada
Regla 1: Para que exista avance debe existir una evolución de los estados del
gusano
Regla 2: La evolución se debe realizar de una manera correcta.
Regla 3: Debe existir una condición externa adecuada
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 44
Cada regla nos genera una pregunta, a la que hay que contestar.
Pregunta 1: Según la regla 1 debe existir evolución. ¿Cómo generar esa evolución?
Pregunta 2: Según regla 2 la evolución debe ser correcta: ¿Qué condición interna debe
cumplir la evolución para que sea correcta?
Pregunta 3: La regla 3 afirma que debe existir una condición externa: ¿Qué condicion
externa se debe cumplir?
Respondiendo a esas preguntas podremos conocer los mecanismos que hacen posible que el
gusano longitudinal avance y de esa manera se podrá llevar a la práctica.
Las preguntas 2 y 3 hablan de condiciones. Denominaremos condiciones internas a las que
se definen sobre los parámetros internos del gusano y condiciones externas las que se aplican
sobre variables externas, como por ejemplo la coordenada x de los puntos del gusano. 1
Las condiciones 2 y 3 están relacionadas. Cualquier evolución interna puede dar lugar a des-
plazamiento siempre y cuando se den las condiciones externas adecuadas. Por ejemplo, ¿puede
una evolución aleatoria hacer que el gusano avance?. La respuesta es “depende de las condicio-
nes externas que se impongan”. La condición externa más común es que exista rozamiento con la
superficie, de manera que en esas condiciones cualquier evolución interna no genera movimiento
de avance.
E(t) = (P (0, t), P (1, t), ..., P (N − 1, t)) = (F (vt), F (1 − vt), ...F (N − 1 − vt))
Este vector varía con el tiempo y depende de un nuevo parámetro que es la velocidad de
propagación.
El efecto lo podemos ver en la figura 3.10. En la parte de la izquierda se muestra la función
de contorno inicial, en un instante de tiempo t1 . El vector de estado es: E(t1 ) = (0, A, 0, 0, 0).
El valor de la contracción es C(t1 ) = A. En la parte de la derecha aparece la misma función
1
Cualquier variable no definida en el apartado 3.2 será considerada externa, puesto que no está relacionada con
los estados internos del gusano
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 45
P(x,t) P(x,t)
t=t1 t=t2
A A
A
2
x x
0 1 2 3 4 0 1 2 3 4
0 1 2 3 4 0 1 2 3 4
de contorno que se ha desplazado 0.5 unidades hacia la derecha. El nuevo vector de estado es
E(t2 ) = (0, A2 , A2 , 0, 0) y la nueva contracción: C(t2 ) = A2 + A2 = A.
Al irse propagando la onda se van sucediendo los diferentes estados del gusano. Si el seg-
mento i se encuentra dentro de la zona activa de la función de contorno, en un instante t, el
rango de valores {P (x, t)/x > i} es la historia pasada del segmento, es decir, los valores de
la contracción que ha tenido en el pasado, y el rango {P (x, t)/x < i} es la historia futura, los
valores de la contracción en el futuro. El valor P (i, t) es el valor presente.
En la figura 3.11 se muestra un gusano de cinco segmentos que ha avanzado. La evolución
es continua pero para visualizarla se ha representando el estado en siete instantes de tiempo di-
ferentes (t1 − t7 ) y se ha dibujado la función de contorno. Inicialmente todos los segmentos se
encuentra en reposo, con un estado E=(0,0,0,0,0). En el instante t 2 , el segmento 0 se encuentra
contraido. Al avanzar la función de contorno se va expandiendo a la vez que el segmento 1 se va
contrayendo, obteniéndose el estado (0,A,0,0,0) en el instante t 3 . La evolución continúa alcan-
zando sucesivamente los estados (0,0,A,0,0), (0,0,0,A,0), (0,0,0,0,A), (0,0,0,0,0) en los instantes
t4 , t5 , t6 y t7 respectivamente.
El hacer evolucionar el gusano es muy sencillo de esta manera. Basta con tener definida una
función de contorno F en un instante inicial e ir propagándola, obteniéndose los estados internos
que componen la evolución. Con esto queda respondida la pregunta 1 formulada en el apartado
3.3.3 y se cumple la regla 1 de la caracterización del avance.
v
0 1 2 3 4
0 1 2 3 4
v
0 1 2 3 4
0 1 2 3 4
v
0 1 2 3 4
0 1 2 3 4
v
0 1 2 3 4
0 1 2 3 4
v
0 1 2 3 4
0 1 2 3 4
v
0 1 2 3 4
0 1 2 3 4
v
0 1 2 3 4
0 1 2 3 4
3.5.2. Definiciones
En el apartado 3.2.3 se definió lo que es la zona activa de una función de contorno. Sea la
función de contorno F y un instante de tiempo t, denotaremos por ZA(F,t) a la zona activa de la
función F en ese instante. Vemos que según se va propagando la función de contorno, su zona
activa también lo va haciendo.
De todos los segmentos del gusano, sólo los que tienen su número i dentro de la zona activa
están evolucionando, el resto permanecen en el mismo estado. Definimos el conjunto de seg-
mentos activos para una función de contorno F y un instante t, y lo denotamos por S A (F, t)
como:
SA (F, t) = {i ∈ {0, .., N − 1}/i ∈ ZA(F, t)} (3.8)
El número de segmentos activos depende de la anchura de la función de contorno. Puede
haber ninguno, uno, dos,...,M segmentos activos en un instante. El segmento activo que tiene
el menor número se denomina segmento activo menor y se representa por las letras sam. El
segmento activo con el mayor número es el segmento activo mayor, SAM.
Un segmento i tiene un punto en cada extremo que los denominaremos punto izquierdo I(i)
y punto derecho D(i). Cada uno tiene una coordenada en el eje de las x, que se denotan así:
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 47
Segmentos
activos P(x,t)
I(1) D(2)
0 1 2 3 4
Eje x 0 1 2 3 4
0 1 2 3 4 5 6
sam=1 y SAM=2
xI (1, t) =2 y xD (1, t) =4
∀t ∈ <, ∀i ∈ [0, ..., N − 1], (i=sam ⇒ xI (i, t) = cte) (i=SAM⇒xD (i, t) = cte)
W
“Durante toda la evolución, se tiene que cumplir al menos alguna de las siguientes
condiciones:
Esta regla sólo tiene sentido para funciones de contorno en las que la longitud de la zona activa
sea mayor o igual a dos. En estos casos podemos garantizar siempre que sam 6= SAM .
El que la coordenada x de un punto permanezca constante quiere decir que el punto debe
estar fijado a la superfie, es decir, que no se puede mover. Es un punto de apoyo. Esta regla nos
dice que en todo momento al menos tiene que existir un punto de apoyo, que no puede retroceder.
Según qué segmentos estén activos, el punto de apoyo es uno u otro.
Esto es muy similar al movimiento de andar de los hombres. Cuando se apoya el talón para
avanzar, éste queda fijado al suelo y no retrocede.
En la figura 3.13 se muestran ocho instantes de tiempos en el avance de un gusano de tres
segmentos. Se puede ver cómo van variando los puntos de apoyo. Por la condición de no retro-
ceso, cuando existen dos puntos de apoyo, al menos uno tiene que quedar fijado a la superficie
de avance.También se pueden ver el segmento menor y el mayor en cada instante. Obsérverse
que en el instante t1 el sam y el SAM valen -2 y -1 respectivamente. Esto no se corresponde
con ningún segmento. El sam y SAM sólo son válidos cuando pertenecen al intervalo [0,..,N-1],
sin embargo es necesario que tengan valores fuera de ese entorno para evitar ambigüedades. Por
ejemplo, en el instante t7 , el sam es el segmento 2 y el SAM el 3, que no existe. Si el segmento
vitual 3 no se considerase, ¿sería el segmento 2 el sam o el SAM? Puesto que en este caso en la
zona activa sólo habría un segmento, sería a la vez el sam y el SAM lo que no puede ocurrir.
A partir de ahora asumiremos que siempre se cumple la regla de no retroceso.
¿Qué condiciones debe cumplir la función de contorno para que produzca una
evolución correcta?
Hablar de evolución correcta implica que no se entre en contradicción con las condiciones exter-
nas y que se genera movimiento de avance. En este apartado se responderá a esta pregunta.
SAM v t1
sam
0 1 2 Eje x
-2 -1 0 1 2 3
Segmento activo
SAM v
t2
sam
0 1 2 Eje x
-2 -1 0 1 2 3
Punto de Segmentos
apoyo activos SAM v t3
sam
0 1 2 Eje x
-2 -1 0 1 2 3
Puntos de
apoyo SAM v t4
sam
0 1 2 Eje x
-2 -1 0 1 2 3
SAM v t5
sam
0 1 2 Eje x
-2 -1 0 1 2 3
t6
SAM v
sam
0 1 2 Eje x
-2 -1 0 1 2 3
SAM v t7
sam
0 1 2 Eje x
-2 -1 0 1 2 3
t8
v
sam
0 1 2
-2 -1 0 1 2 3
Figura 3.13: Gusano de tres segmentos que avanza, en el que se ve la evolución de los puntos de
apoyo
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 50
C(t)
Propagacion
A
Ex
n
pa
ini accio
ns
l
ion
cia
ntr
fin
Co
al
t
ESTADO t 1 t2 t3 t4 t5 t6 t7 ESTADO
INICIAL FINAL
1. Entre los instantes t1 y t2 : Hay una contracción inicial. El gusano tiene una longitud
menor que la inicial.
2. Instantes t2 − t6 : La longitud del gusano permanece constante. Pero hay una propagación
del estado de contracción.
3. Instantes t6 − t7 : Hay una expansión final, con lo que el gusano vuelve a recuperar la
longitud inicial.
Si representamos en una gráfica la evolución del parámetro contracción total C(t) en función
del tiempo obtenemos una gráfica como la de la figura 3.14. Las tres fases las denominaremos
contracción inicial, propagación y expansión final. El que la longitud del gusano permanezca
constante durante la propagación es una propiedad muy interesante. Obsérvese que los segmentos
no activos no sufren ningún tipo de desplazamiento, se quedan donde están, por lo que no generan
rozamiento con la superficie. Los segmentos activos sí se desplazan sobre la superficie por lo que
el gusano tendrá que desarrollar mecanismos para evitarlo (como por ejemplo elevar un poco los
segmentos activos sobre la superficie).
Esta propiedad tan interesante es la regla de avance y dice:
Obsérvese que esta regla no tiene por qué ser la única posibilidad. Lo que nos interesa para este
proyecto es saber que si se cumple, la evolución será correcta, pero no podemos asegurar que
todas las evoluciones correctas cumplan esta regla.
La regla de avance nos permite distinguir entre funciones de contorno “correctas” y no correc-
tas. Imaginemos que la función de contorno para un gusano de tres segmentos fuese rectangular,
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 51
C(t) P(x,t)
Propagacion Funcion de
contorno
A
Estado Estado
inicial final
t x
t1 t2 t3 t4 t5 t6 t7 0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
de altura A y con una anchura de la zona activa menor que la unidad. La contracción varía entre
0 y A y no permanece constante durante la propagación. En la figura 3.15 se ha representando la
contracción total y la función de contorno en el instante inicial t1 . El movimiento de este gusano
es indeterminado y depende de las condiciones externas. En la figura 3.16 se ha dibujado una
posible evolución del sistema, en la que se ve cómo varía la longitud total del gusano según se
desplaza la función de contorno. Inicialmente está fuera del intervalo del gusano [0,2]. Cuando
alcanza al segmento 0, éste se contrae. Al situarse la función de contorno entre los puntos x = 0
y x = 1, el segmento 0 se vuelve a expandir. El problema surge cuando la zona activa alcanza al
punto x = 1. En ese momento el segmento se contrae, por lo que pueden ocurrir varias situacio-
nes: que el segmento 0 permanezca fijado a la superficie y sea el 2 el que se arrastre, lo contrario
o una situación intermedia. Depende de las condicioens externas y no es predecible.
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 52
F(x)
x
-1 0 1
3.6.3.2. Demostración
Para demostrar que cumple la regla de avance primero la definimos analiticamente:
(
A(x + 1) x ∈ [−1, 0)
F (x) =
A(x − 1) x ∈ [0, 1]
Para convertir esta función en una onda, sustituimos la x por x − vt, lo que nos da:
(
A(x − vt + 1) x − vt ∈ [−1, 0)
P (x, t) =
A(x − vt − 1) x − vt ∈ [0, 1]
Esta nueva función es la función original F (x) que se desplaza hacia la derecha a una velo-
cidad v. Para cada instante de tiempo indica la contracción de cada segmento a los que afecta.
Para que se cumpla la proposición de avance, la contracción C(t) debe ser constante para todo t
dentro del intervalo de propagación, definido en el apartado 3.2.3.
Por tener la función de contorno una anchura de 2, La zona activa siempre involucra a dos
segmentos a la vez, un segmento en expansión y otro en contracción. Para que la suma sea
constante, lo que se expande uno se debe contraer el otro. Calculando la derivada de P (x, t) se
CAPÍTULO 3. MECANISMOS DE MOVIMIENTO I: GUSANO LONGITUDINAL 53
v
z1
Av
y0 z0
-Av
y1
x
0 1
y1 = y0 − Av
z1 = z0 + Av
La contracción en t1 es:
C(t1 ) = y1 + z1 = y0 − Av + z0 + Av = y0 + z0 = C(t0 )
3.6.3.3. Definiciones
Ya que la función triangular presentada cumple la regla de avance, es la que emplearemos a
partir de ahora. Conviene tener en cuenta algunas definiciones que nos serán de utilidad:
Punto activo (PA): Coordenada x del vértice superior de la función triangular. Este es
el punto que define la máxima contracción. Cuando el punto activo pertenece al conjunto
{0,1,...,N-1} el segmento correspondiente estará en su máxima contracción
0 1 2
Figura 3.19: Distancia recorrida por la funcion de contorno, desde el estado inicial hasta el final
Intervalo de propagación: Intervalo de tiempo desde que PA=0 hasta que PA=N-1. Ca-
racteriza la duración de la fase de propagación, en la que debe permanecer constante la
contracción.
Intervalo de expansión final: Desde que PA=N hasta que el punto mínimo de la zona
activa es N. Caracteriza la fase de expansión.
siendo:
D: Distancia que recorre la función de contorno, desde que su zona activa entra en el
intervalo [0,2] hasta que sale de él.
Valor máximo de la función de contorno: Cuanto mayor sea el valor máxima de la fun-
ción de contorno, mayor será la contracción y por tanto mayor será la velocidad. El valor
máximo es el de la contracción máxima del segmento, que es A.
Número de segmentos: Para una misma función de contorno, un gusano con menos seg-
mentos avanza más rápidamente
Anchura de la zona activa de la función de contorno: Cuanto más estrecha sea la función
de contorno mayor será la velocidad. En el ejemplo la anchura es de 2, que es el valor
mínimo.
0 1 2 3
Estado (A,0,0,0)
0 1 2 3
Estado (0,A,0,0)
0 1 2 3
Estado (0,0,A,0)
0 1 2 3
Estado (0,0,0,A)
0 1 2 3
0 1 2 3
0 1 2 3
C(E(t))
Estado (A,0,0,0)
0 1 2 3
Estado (0,A,0,0)
0 1 2 3
Estado (0,0,A,0)
0 1 2 3
Estado (0,0,0,A)
0 1 2 3
¿Por qué esperar a que salga un triángulo del intervalo [0,..,N-1] para que entre
el siguiente? Es decir, ¿Es posible reducir la longitud de onda de la función de
contorno periódica?.
C(E(t))
Segundo ciclo
Estado (A,0,0,A)
0 1 2 3
Estado (0,A,0,0)
0 1 2 3
Estado (0,0,A,0)
0 1 2 3
C(E(t))
A
t
Segundo ciclo
como:
A
VG =
T
El valor A es siempre constante y es el valor máximo de la función de contorno. Manteniendo
la v cte, cuando reducimos la longitud de onda estamos disminuyendo el periodo y por tanto el
avance de la distancia A se hace cada vez con mayor frecuencia.
Todavía se puede reducir la longitud de onda más, para aumentar la velocidad. Es el caso
en el que los triángulos están pegados unos a otros y el periodo T es mínimo. La contracción
siempre vale 2A. Los estados en los intantes t=0 y t = T2 son (A,0,A,0) y (0,A,0,A).
1. El gusano se “arrastra” por lo que hay mucho rozamiento con la superficie. Para eliminar
este rozamiento en las partes contráctiles habría que elevarlas del suelo, lo cual complica
mucho la mecánica.
2. Lograr que se cumpla la regla de no retroceso es complejo, porque hay que sincronizar muy
bien todos los mecanismos. Un punto debe estar fijado sólo en unos instantes de tiempo de
determinados.
3. El gusano no podría moverse por cualquier tipo de superficie, porque no en todas ellas
podría garantizar la condición de no retroceso
3.9. Resumen
En este capítulo se ha presentado un modelo de gusano longitudinal, se ha parametrizado y
se ha definido su estado interno. Aunque es difícil de implementar en la práctica, el modelo de
control es muy sencillo, basado en la propagación de las ondas de contorno, que van definiendo
su estado interno. Esto responde a la pregunta 1 formulada en la introducción. La propagación
de ondas se emplea para obtener las evoluciones internas, o estados de contracción del gusano.
Los parámetros más importantes del gusano son:
La función de contorno F(x), que define los estados presentes, pasados y futuros.
La contracción total C(t), que indica cuánto ha variado su longitud respecto de la longitud
natural.
El movimiento de avance se ha caracterizado, definiendo las tres reglas de avance que se tienen
que cumplir:
2. Esta función tiene que cumplir la regla de avance para conseguir que el gusano avance.
Estas reglas responden a la pregunta 2 de la introducción, indicándonos cuáles son los mecanis-
mos para que se produzca movimiento.
Se ha presentado una función de contorno, triangular, que cumple la regla de avance y que
modela perfectamente la evolución del estado interno.
Con toda esta información se ha estudiado la velocidad de avance del gusano y los parámetros
implicados, tanto para funciones de contorno periódicas como no periódicas.
Capítulo 4
4.1. Introducción
En este capítulo se estudian los mecanismos de movimiento para los gusanos transversales.
Definimos gusano transversal como aquel que se mueve mediante ondas transversales que reco-
rren su cuerpo desde la cola hasta la cabeza. Es el movimiento típico de muchos tipos de gusanos,
como por ejemplo los de seda.
Se va a crear un modelo de gusano, con unos parámetros propios y se va caracterizar su
estado interno. Esto nos permitirá comprender los mecanismos asociados a los cambios de estado
y cómo se efectúan, para poder luego implementarlos. También estudiaremos las funciones de
contorno de manera que el diseñador pueda seleccionar la más apropiada para su tipo de gusano.
Los gusanos transversales y longitudinales están relacionados entre sí. Esto también se estu-
diará en este capítulo de manera que los resultados del capítulo 3 tengan validez en los gusanos
transversales.
Las ideas centrales que se presentarán son fundamentales para la implementación posterior
de un gusano transversal.
61
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 62
Segmentos Cabeza
Cola
a1 a2 a3 a4 a5 a6
s1 s2 s3 s4 s5
Articulaciones
Cuerpo
erio
r
Corona
Vector interior
4.2.1.1. Articulaciones
Las articulaciones las representaremos mediante puntos gruesos que unen los segmentos. Sin
embargo, estos puntos negros están constituidos por diferentes elementos, que se muestran en la
figura 4.2. Las diferentes partes son:
Cuerpo y corona. La articulación está constituida por dos partes que pueden rotar una con
respecto a la otra. La parte más grande, donde se encuentran los mecanismos se denomina
cuerpo y la parte más pequeña, conectada al eje de salida es la corona.
Eje de salida: Es el eje que une ambas partes y que permite que la una gire con respecto a
la otra. Este eje no se ha dibujado en la figura 4.2.
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 63
Además de estas partes físicas, hay una serie de definiciones a tener en cuenta:
El rango de giro de la articulación es de 1800 con ϕ ∈ [−90, 90]. Obsérverse que el convenio de
signos para ϕ es el contrario del habitual: positivo en sentido horario y negativo en el antihora-
rio. Se ha tomado este convenio para hacer más intuitivos los cálculos en capítulos posteriores.
Cuando ϕ = 0 el vector interior y el exterior apuntan en la misma dirección. Este es el estado
de reposo de la articulación.
Para determinar la orientación de una articulación tomaremos por convenio el vector interior.
Hay que resaltar que ϕ está determinando el estado interno de la articulación y que por ello es in-
dependiente de la orientación en la que se encuentre. En la figura 4.3 se pueden ver articulaciones
con el mismo valor de ϕ pero en la que el vector interior está apuntando en diferentes direcciones,
es decir, la articulación está orientada en otra dirección, manteniendo el mismo estado interno.
El emplear los vectores interior y exterior nos permite representar la articulación sin tener
que dibujarla, como se muestra en la figura 4.4.
El ángulo que forman dos segmentos conectados por la articulación NO es ϕ, sino que de-
pende de dónde estén enganchados. Un segmento estará enganchado a la corona coincidiendo
su dirección con el vector exterior. Sin embargo el otro segmento se puede colocar en la misma
dirección que el vector interior o justamente en la opuesta, como es el caso del gusano que se
ha implementado. El segmento asociado a la corona se llama segmento exterior y el asociado
al cuerpo segmento interior, que no tiene por qué coincidir con el vector interior. El ángulo que
forma el segmento interior con el exterior se denomina ángulo de estado de los segmentos y se
representa por θ (Figura 4.5). Siempre se verifica la siguiente relación:
θ = 180 − ϕ (4.1)
que permite calcular el ángulo que forman los segmentos en función del estado interno de la
articulación. El rango de variación de θ es el siguiente:
(
[−90, −180] ϕ < 0
θ∈
[90, 180] ϕ>0
En la figura 4.6 se han representado tres posiciones θ = 90, θ = 180 y θ = −90, estando el
vector interior orientado hacia la parte negativa del eje de abcisas.
La definición de estos ángulos y de los signos se ha establecido así para facilitar los cálculos
y los dibujos, pero es un simple convenio que se respetará a lo largo del resto de capítulos.
A modo de resumen los parámetros de la articulación son:
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 64
0 0
=90 =90
0 0
=45 =45
0
=-45
0
=-45
Ve
Ve
cto
cto
rext
ri
nt
1
eri
er
io
or
r
a1 a2
2
Vector interior
r
terio
or ex
Vect
Figura 4.4: Dos articulaciones representadas mediante su vector interior y exterior.
=90 =90
Vector interior
Segmento interior
=90
Vector interior
Segmento interior
=180
Segmento interior
Vector interior
=-90
Segmento exterior
LT
L L L L L
Estado de la articulación (ϕ). Ángulo entre vector interior y exterior. ϕ ∈ [−90, 90]
Ángulo de estado de los segmentos (θ). Ángulo que forma el segmento exterior con el
interior.
Ambos parámetros son dinámicos, dependen del instante de tiempo t considerado y se encuentran
relacionados por la ecuación 4.1.
a) N : Número de articulaciones.
b) LT : Longitud total del gusano. Supondremos que las articulaciones son puntuales y
que el tamaño es sólo debido a los segmentos. Como todos tienen la misma longitud
L, la longitud total se puede calcular como:
LT = (N − 1)L (4.2)
2. Parámetros dinámicos.
C(t)
LP
LT
Gusano en reposo
En la figura 4.8 se han dibujado los parámetros dinámicos y su relación con la longitud total. Se
ha supuesto que se trata de un gusano continuo, que es lo mismo que decir que la longitud de los
segmentos tiende a cero, L → 0 y que hay infinitas articulaciones, N → 0.
4.2.2. Caracterización
Las articulaciones las caracterizaremos por el ángulo de estado ϕ i (t), que determina el ángulo
entre el vector interior y exterior de la articulación i. Para caracterizar el estado en el que se
encuentra el gusano utilizaremos un vector de estado E, de N componentes, una para cada
articulación. La componente i de este vector es el ángulo de estado de la articulación i, en un
instante de tiempo t:
E(t) = (ϕ1 (t), ϕ2 (t), ..., ϕN (t))
Las articulaciones a1 y aN son ficticias por lo que su valor carece de valor para la implemen-
tación, sin embargo son muy útiles para los cálculos. La articulación de cola está determinando
la orientación del gusano completo y se puede considerar que es una articulación que une el seg-
mento de cola con el eje x. La articulación de la cabeza indica la orientación de la cabeza. No
es de utilidad para el modelado, pero se puede emplear para orientar algún tipo de sensor que se
encuentre en la cabeza. Consideraremos que su estado es siempre 0.
En la figura 4.9 se ha dibujado el gusano en tres estados diferentes. En la parte superior
el gusano está en estado de reposo, con un vector E=(0,0,0,0,0,0). En los dibujos inferiores se
encuentra en dos estados diferentes: (0, 0, 0, 30, −60, 0) y (45, −45, −45, 45, 45, 0). En ellos se
ha dibujado el vector interior para ver claramente el ángulo ϕ. El vector exterior coincide con el
segmento exterior por lo que no se ha dibujado.
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 69
E=(0,0,0,0,0,0)
1 2 3 4 5 6
E=(0,0,0,30,-60,0)
5
1 2 3 6
E=(45,-45,-45,45,45,0)
3
6
1 5
3 Funcion de Contorno
2
1 4
Figura 4.10: Una función de contorno sinusoidal y el estado del gusano que determina
ZA ⊆ ZAG
Funcion de Contorno
A B
Eje x
Zona activa de la funcion de contorno
x(A) ZA x(B)
a2 a7
A B
ZA Eje x
Anchura ZAG
idea de cuánto de bien se aproxima el gusano a la función de contorno. Cuando menor sea L,
más cortos serán los subintervalos [x(ai ), x(A)] y [x(B), x(aj )] del conjunto ZAG−ZA y mejor
será la aproximación.
Los puntos extremos de la ZA los llamaremos A y B y sus abcisas las denotaremos por x(A)
y x(B). Para las articulaciones extremas de la ZAG, se empleará aI para la articulación de la
izquierda y aD para la de la derecha.
◦ N → ∞. Infinitas articulaciones.
◦ L → 0. Longitud de los segmentos tiende a cero.
◦ N → ∞. Infinitos segmentos.
◦ L0 → 0. La longitud natural de los segmentos tiende a cero
Las relaciones entre los parámetros de ambos gusanos son las siguientes:
1. LTL (t) = LP (t). La longitud total del gusano longitudinal es igual a la longitud proyección
del transversal.
2. CL (t) = CT (t). La contracción del gusano longitudinal es la misma que la del transversal.
Por ello a partir de ahora se denotará por C(t).
3. ZAL = ZAT . La zona activa del gusano longitudinal es igual a la zona activa del transver-
sal.1
Gusano Transversal
Estado de contraccion
LP
EL (t) = (c1 (t), ..., cN −1 (t)) = (Lcos(ϕi (t)), ..., Lcos(ϕN −1 (t)))
L 6
7
4
1 6
L0 L0
Segmentos activos
P (x, t) = F (x − vt)
En la figura 4.15 se ha dibujado el gusano en tres estados diferentes, obtenidos a partir del
desplazamiento de la función de contorno.
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 75
Gusano Transversal
A B
Ptos de apoyo
Figura 4.16: Gusano transversal y longitudinal generado junto con los puntos de apoyo candida-
tos.
Al menos uno de los dos puntos extremos de la ZA, punto A ó punto B, debe ser un
punto de apoyo, es decir, debe cumplirse que x(A)=cte o x(B)=cte.
Esta condición establece que en todo instante de tiempo al menos hay un punto del gusano
que nunca retrocede, por lo que el avance es posible. En la figura 4.16 se muestra un gusano
transversal y su longitudinal generado junto con los puntos de apoyo candidatos. Recuérdese que
ésta es la condición mínima. Lo normal es que los puntos que permanezcan fijados a la superficie
deban ser todos los que no se encuentran en la ZA.
Para el caso de un gusano transversal discreto, como el de la figura 4.17, la condición de no
retroceso se aplica a alguna de las dos articulaciones extremo de la ZAG, bien a I o bien aD . La
relación de estas articulaciones con los segmentos activos es:
I(sam) = asam = aI . El punto izquierdo del segmento activo menor coincide con la
articulación del extremo izquierdo de la ZAG.
D(SAM ) = aSAM +1 = aD . El punto derecho del segmento activo mayor coincide con la
articulación del extremo derecho de la ZAG.
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 77
aI aD
sam SAM
I(sam) D(SAM)
C(t) = LT − LP
siendo LT la longitud total del gusano, que es constante y LP la longitud proyección, que sí
puede variar con el tiempo. Las partes del gusano fuera de la zona activa están apoyadas sobre el
eje de abscisas y no sufren contracción. Otra manera de calcular la contracción es:
Gusano Transversal
Contraccion inicial
Propagacion
Propagacion
Expansion final
Expansion final
Figura 4.18: Propagación de la función de contorno y los diferentes estados que provoca en el
gusano transversal y longitudinal asociado
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 79
En la implementación de un gusano, éste es fijo y no se puede variar. Las distancias entre articu-
laciones (L) no se pueden variar y hay un número fijo de ellas. Por tanto, para conseguir que el
movimiento sea más perfecto, habrá que jugar con la función de contorno, seleccionando aquella
que mejor cumpla la regla de avance. En general cuando mayor sea el perímetro y menor la
curvatura, con respecto a la distancia L, el movimiento será más correcto.
Es responsabilidad del diseñador el emplear la función de contorno correcta. Para poder cono-
cer lo buena o mala que es una función de contorno que se utiliza en un mismo gusano, definimos
el parámetro Variación de la longitud proyección o VLP:
Funcion de contorno 1
VLP=50%
LP
Funcion de contorno 2
VLP=14%
LP
Figura 4.19: Comparación de dos funciones de contorno que recorren el mismo gusano utilizando
el parámetro VLP
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 81
LPmin = 225
LPmax = 247
25
V LP1 = 50
= 0,5 ⇒ V LP = 50 %
LPmin = 241
LPmax = 248
7
V LP2 = 50
= 0,14 ⇒ V LP = 14 %
Como V LP2 < V LP1 la función de contorno 2 hace que el gusano se mueva mejor.
En el caso de la primera función de contorno la longitud proyección varía en 25 unidades.
Esto ocasiona que ciertos puntos se tengan que “arrastrar” por la superficie. El caso ideal es
cuando la variación es 0: no hay ningún tipo de arrastre y el gusano se moverá igual de bien por
cualquier tipo de superficie. Sin embargo, al haber variación, el movimiento de avance depende
del tipo de superficie. Si hay poco rozamiento, los puntos se podrán arrastrar sin dificultad y el
gusano avanzará como si nada. Pero si el rozamiento es alto, los puntos no podrán arrastrarse con
facilidad y se pueden producir tensiones en las articulaciones.
Cuanto menor sea el parámetro VLP para una función de contorno F, más inde-
pendiente será el movimiento del gusano con respecto a la superficie. También el
movimiento será más predecible.
1. x(B) − x(A) ≤ L: La longitud de la zona activa es menor o igual que L. En estos casos
hay momentos en los que el gusano vuelve a un estado de reposo, es decir, que no hay
ninguna articulación activa. Por tanto no hay estado de contracción que se pueda propagar.
La incertidumbre en el movimiento es total. En la figura 4.21 se muestra un ejemplo.
En la parte superior el gusano está en reposo, pero el estado no es el inicial. En la parte
inferior la función de contorno alcanza la articulación a3 por lo que “de golpe” se activan
las articulaciones a2 , a3 y a4 . Pero en cuanto avance un poco más se volverá al estado de
reposo. En este caso no hay una correcta evolución de los estados internos.
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 82
VLP=2%
Funcion de contorno
Cola Cabeza
Figura 4.22: Función de contorno incorrecta. El perímetro es más grande que la longitud del
gusano.
Velocidad de propagación v: A mayor v mayor velocidad del gusano. Sin embargo este
parámetro depende de la velocidad con la que las articulaciones cambian de un estado a
otro, por lo que depende de las articulaciones en sí.
CAPÍTULO 4. MECANISMOS DE MOVIMIENTO II: GUSANO TRANSVERSAL 84
Gusano
Figura 4.23: Función de contorno periódica, con longitud de onda igual a la zona activa mas la
longitud del gusano
Contracción C(t): Cuando mayor sea la contracción, mayor será el avance. La contrac-
ción se cambia modificando la función de contorno. Cuando mayor sea el perímetro de la
función de contorno, mayor la contracción y por tanto mayor la velocidad.
Longitud del gusano: Un gusano más corto avanza más rápido que uno largo.
regla de avance sólo se cumple al 100 % en el caso de los gusanos continuos. En una implemen-
tación lógicamente este modelo no es posible y tiene que ser discreto. El diseñador debe elegir
con cuidado las funciones de contorno de manera que el parámetro VLP sea el mínimo posible.
También hay prestar atención a la regla de no retroceso. En el caso de gusanos longitudinales
ciertos puntos tenían que quedar fijados a la superfice en ciertos instantes y sólo en ellos. En el
caso de los transversales sólo hay que garantizar que al menos quede fijada a la superficie la
articulación aI o aD . Esto es sencillo porque sólo hay que colocar algún material que se agarre a
la superficie y no hay que realizar ninguna coordinación especial.
Las articulaciones se pueden implementar mediante servomecanismos, que se encuentran
fácilmente en el mercado y con diferentes características mecánicas. Los segmentos contrátiles
de los longitudinales son caros y difíciles de encontrar.
4.7. Resumen
Los gusanos transversales son más fáciles de implementar, debido fundamentalmente a sus
características mecánicas. El movimiento conseguido depende menos de la superficie por la que
se desplaza y es mucho más intuitivo que en los longitudinales, puesto que el gusano debe adoptar
la forma de la función de contorno.
Están constituidos por N articulaciones y N − 1 segmentos rígidos, de longitud L. Cada
articulación tiene un ángulo de estado interno ϕi (t), que determina la posición relativa de sus
partes: el cuerpo y la corona.
Para parametrizar un gusano de este tipo se utilizan los parámetros dinámicos contracción
C(t), que es similar al parámetro contracción de los longitudinales, y longitud proyección,
LP que es la longitud que tiene la proyección del gusano sobre el eje de abscisas. Estos dos
parámetros están relacionados.
Para caracterizar los estados internos del gusano se emplea un vector de estado E(t) cuyas
componentes son los ángulos de estado ϕi (t) de cada articulación. La función de contorno nos
indica cómo va a evolucionar el gusano y especifica cuáles son las posiones (x,y) que deben
ocupar las articulaciones. Estas posiciones definen un estado interno ϕ i para cada articulación.
Ambos tipos de gusanos están relacionados. Cada gusano transversal genera un gusano
longitudinal, que es su proyección sobre el eje de abcisas. Los resultados obtenidos para los
longitudinales se pueden aplicar a los longitudinales generados y por tanto afectan a los trans-
versales.
Las tres reglas de avance también se deben cumplir en los transversales. Para que exista
evolución interna se usa un modelo de propagación de ondas, en el que la función de contono
avanza a una velocidad v y va determinando los estados internos del gusano. La regla de avance
siempre se cumple en el caso de un modelo de gusano continuo, sin embargo no lo hace cuando
es discreto. Mediante el parámetro VLP se puede determinar cuánto de buena es una función de
contorno, dado un gusano y nos permite seleccionar la función de contorno que mejor garantice
esta regla. La condición externa de no retroceso también se tiene que cumplir.
Finalmente se ha estudiado la velocidad media de avance y los parámetros implicados, de
manera que el diseñador sepa cómo poder modificar esta velocidad.
Capítulo 5
Gusano transversal:
algoritmo de ajuste
5.1. Introducción
Para implementar un gusano transversal es preciso determinar primero los algoritmos nece-
sarios para poder obtener los vectores de estado E(t) y enviárselos al gusano real. Éste es el
objetivo del presente capítulo.
Primero se planterá el problema que se quiere resolver. Después estudiaremos diferentes
alternativas para solucionarlo y finalmente se presentará el algoritmo de ajuste, que permite so-
lucionarlo de una manera muy intuitiva.
86
CAPÍTULO 5. GUSANO TRANSVERSAL: ALGORITMO DE AJUSTE 87
t1 E( t1) P(x, t1 )
Propagacion de la
funcion de contorno
t2 E( t1) P(x, t2 )
t2 E( t2) P(x, t2 )
Gusano en estado
inicial
E(t1) i=1
FIN
Conociendo la solución al problema de ajuste, es muy sencillo obtener una secuencia. Sólo hay
que partir de un estado inicial conocido, desplazar la función de contorno, aplicar la solución
para obtener el siguiente estado y repetir el proceso hasta alcanzar nuevamente el estado inicial.
Esta secuencia caracteriza ese movimiento y se puede hacer que el gusano la repita cíclicamente,
consiguiéndose el movimiento de avance deseado. En la figura 5.2 se muestra el algoritmo para
generar la secuencia, basado en la solución del problema de ajuste.
5.2.1. Simplificaciones
La solución al problema de ajuste nos indica cómo pasar de un estado genérico E(t 1 ) a
otro E(t2 ), conociendo la función de contorno. Para mayor facilidad, y sin perder generalidad,
supondremos lo siguiente:
1. El estado inicial es el de reposo E(t1 ) = (0, ..., 0). La solución encontrada para este caso
particular es válida en el caso de que el estado inicial sea otro.
2. El origen de coordenadas se establece inicialmente en la articulación de cola a 1 y su abcisa
la fijaremos a cero en todo momento, x(a1 ) = 0. Va a ser la articulación de referencia
sobre la que aplicar el ajuste.
CAPÍTULO 5. GUSANO TRANSVERSAL: ALGORITMO DE AJUSTE 89
Funcion de contorno
Gusano Ajustado
Obsérvese que estamos introduciendo cada vez más restricciones que no afectan a la generalidad
del problema, pero que lo simplifican y nos ayudan a resolverrlo más facilmente.
Funcion de contorno
a1 a2 a3 a4 a5 a6
Ajuste articulacion 2
a2
a1 a3 a4 a5 a6
a2 a3 a4 a5 a6
a1
Ajuste articulacion 3
Funcion de contorno
y(a2)=F(x(a2))
Origen de a2
coordenadas
Ajuste
1
a1 a2 a1
cola. Primero se aplica la solución a la articulación a2 , luego se hace una traslación del resto del
gusano, se sitúa el origen en la articulación a2 y se vuelve a aplicar la solución para ajustar la a3 .
Así sucesivamente hasta ajustar el gusano completo.
El problema que queda por resolver se reduce a:
Dado un gusano constituido sólo por dos articulaciones unidas por un segmento
de longitud L, que se encuentra en reposo, y dada una función de contorno que
pasa por el origen situado en la cola del gusano, calcular el ángulo θ1 que hace
que la articulación a2 cumpla la relación y(a2 ) = F (x(a2 )).
En la figura 5.5 se ha dibujado el problema a resolver. El ángulo θ 1 está medido desde la hori-
zontal. El problema es ahora mucho más simple y más abordable.
x2 + y 2 = L 2 (5.1)
CAPÍTULO 5. GUSANO TRANSVERSAL: ALGORITMO DE AJUSTE 92
Punto a determinar
F(x)
circunferencia
2 2 2
x+y=L
L
a1 a2
Figura 5.6: Calculo del punto final como intersección de F(x) con una circunferencia
Esta función toma el valor 0 cuando el valor de x cumple la ecuación de ajuste. Cuanto mayor
sea el error, más alejado está el valor x del valor correcto. El valor máximo de la x es L, que
es la longitud del segmento (un valor más alto no tiene sentido) y el valor mínimo es 0, que se
obtiene cuando el ángulo de la articulación es de 900 . Por tanto sabemos que la x solución de
la ecuación de ajuste está comprendida en el entorno x ∈ [0, L]. Si el valor inicial de x es L,
es decir, que x0 = L, se obtiene un valor del error de e(x0 ). Disminuyendo el valor x en un
incremento: x1 = x0 − 4x, y calculando en nuevo error e(x1 ), se puede ver si el nuevo error es
menor que el anterior o por el contrario es mayor.
De esta manera conseguimos encontrar el valor de x que hace mínimo el error, en el entorno
[0,L].
En la figura 5.7 se ha dibujado la función de error para una función de contorno sinusoidal y
un valor L = 2:
e(x) = x2 + sin2 (x) − 4
Figura 5.7: Una función de error ejemplo, generada con el programa kplot
CAPÍTULO 5. GUSANO TRANSVERSAL: ALGORITMO DE AJUSTE 95
Funcion de contorno
1
Ajuste articulacion 1
2
Ajuste articulacion 2
3
Ajuste articulacion 3
Ajuste articulacion 4 4
Ajuste articulacion 5 5
Ajuste articulacion 6
6
Figura 5.8: Propagación del algoritmo de ajuste
CAPÍTULO 5. GUSANO TRANSVERSAL: ALGORITMO DE AJUSTE 96
Funcion de contorno
A i-1 Ai
Cuando menor sea el incremento angular, mayor será la precisión en el ajuste, pero más
tiempo se tardará en ajustar (Fig 5.9).
Utilizando una búsqueda binaría el tiempo será mucho menor. Sin embargo en los casos en
los que se aplica el algoritmo de ajuste, las articulaciones se encuentran muy cerca del punto
final por lo que es bastante rápido y no hace falta complicar el software implementando una
búsqueda binaria. El valor de 4θ tomado es de 1o consiguiéndose un compromiso entre velocidad
y precisión muy bueno.
S = F (x) − y (5.5)
Si S > 0 hay que incrementar el ángulo θ, de manera que la articulación se aproxime a la
función de contorno por abajo y si S < 0 hay que decrementarlo y entonces la aproximación es
por arriba.
B F(x)
Angulo inicial
x a
a i-1
i
tanto hay que avanzar un ángulo muy grande en incrementos muy pequeños, calculando en todo
momento la función de error.
Para solucionar esto se puede partir de un ángulo inicial de ataque diferente al que tiene la
articulación. En la figura 5.10 se muestra un ejemplo. La articulación a i se encuentra en una
posición inicial (x, y) conocida. Teniendo en cuenta el triángulo formado por los puntos B, a i−1
y ai , un ángulo inicial de ataque muy bueno es:
!
F (x) F (x)
T g(θ) = ⇒ θ = arctan (5.6)
x x
que está mucho más cercano al ángulo final de ajuste.
5.5. Resumen
Para generar secuencias de estados internos se parte de un estado inicial E(t 1 ), se desplaza
la función de contorno y se obtiene el siguiente estado E(t2 ). El proceso se repite hasta llegar
nuevamente al estado inical.
El calcular el nuevo estado a partir del anterior y de la función de contorno recibe el nombre
de problema de ajuste. Este problema se puede simplificar resolviéndolo sólo para un segmento
y aplicándolo al resto.
Se han estudiado dos alternativas para solucionar el problema de ajuste, una analítica y una
numérica. Sin embargo es más intuitivo emplear el algoritmo de ajuste, mediante el cual se
varía el ángulo de la articulación i hasta que se minimiza la función de error y la articulación
i + 1 queda ajustada. Esto se repite con todas las articulaciones.
Capítulo 6
6.1. Introducción
Hasta ahora se ha hablado de gusanos unidimensionales, que sólo se pueden desplazar a lo
largo del eje x. En la realidad, los gusanos se pueden desplazar también por planos, cambiando
de dirección. En este capítulo se presenta un modelo de gusano, al que denominaremos gusano
tridimensional, con el que se aborda el problema. Se analizan sus parámetros, se caracteriza
y finalmente se diseña un algoritmo para permitir el giro. Antes de presentar el gusano tridi-
mensional es útil tener en la cabeza los modelos ya vistos, ya que el tridimensional se puede
descomponer en otros más sencillos con los que es más fácil trabajar.
6.2.2. Parámetros
Los parámetros de modelado son los mismos que los de un gusano transversal (apartado
4.2.1):
99
CAPÍTULO 6. MECANISMOS DE MOVIMIENTO III: GIROS 100
Eje y
Segmentos
rigidos
L0
a1 a2 a3 a4 a5 a6
Articulaciones
Eje x
6.2.3. Caracterización
Cada articulación queda caracterizada por su ángulo de orientación θ i (t) y el gusano com-
pleto por el vector de orientación, Eo (t), que tiene N componentes que indican los estados de
orientación de cada articulación:
Eje y
Estado de
reposo
E o(t)=(0,0,0,0,0,0)
a1 a2 a3 a4 a5 a6
a1 a2 a3 Estado de
a4
orientacion
Eje x
a5 E o(t)=(0,0,-45,0,0,0)
a6
Eje y
Estado de
reposo
E o(t)=(0,0,0,0,0,0)
a1 a2 a3 a4 a5 a6
Estado de
a1 orientacion
-45
Eje x E o(t)=(-45,0,0,0,0,0)
a2
a3 a4
a5
a6
Figura 6.3: Gusano plano rígido con un estado diferente de la articulación de la cola
CAPÍTULO 6. MECANISMOS DE MOVIMIENTO III: GIROS 102
Gusano
Funcion de trayectoria
v 1
Gusano
v
Funcion de trayectoria
Eje y
segmentos
contractiles
a1 a2 a3 a4 a5
Articulaciones
Eje x
versal. Se aplica el algoritmo de ajuste con respecto a la función de trayectoria, empezando por
la articulación de la cola, donde está situado el origen, y avanzando hasta tener el gusano com-
pletamente ajustado. El siguiente estado se obtiene desplazando hacia la izquierda la función de
transferencia y volviendo a aplicar el algoritmo de ajuste. Si la función de trayectoria es T (x), la
función desplazada es:
P (x, t) = T (x + vt)
siendo v la velocidad con la que el gusano avanza.
6.3.2. Parámetros
Los parámetros son los mismos que para el gusano plano rígido, además de los necesarios
para los segmentos:
Eje y
a1 a2 a3
a4
a5
Eje x
ci (t): Contracción del segmento i, definida como la diferencia entre la longitud natural y
la longitud del segmento:
ci (t) = L0 − li (t)
LT0 : Longitud total natural o de reposo. Es la longitud del gusano plano cuando todos
los segmentos están en reposo.
LT (t): Longitud total del gusano. Para las longitudes despreciaremos el tamaño de las
articulaciones considerándolas puntuales.
C(t) : Contracción total, calculada como la diferencia entre la longitud total de reposo y
la longitud total:
C(t) = LT0 − LT (t)
6.3.3. Caracterización
Las articulaciones se caracterizan por el ángulo de orientación θ i (t) y los segmentos por la
contracción ci (t). Por ello son precisos dos tipos de vectores diferentes para caracterizar el estado
de un gusano plano:
Estos dos vectores forman el vector de estado del gusano plano: E(t) = [E c (t), Eo (t)]. En
la figura 6.7 se ha dibujado un gusano plano que está en un estado caracterizado por E(t) =
[(A, 0, 0, 0), (0, 0, 30, 0, 0)].
CAPÍTULO 6. MECANISMOS DE MOVIMIENTO III: GIROS 106
Instante t1
a1 a2 a3 a4
a5 Trayectoria
Instante t2
En la figura 6.8 aparece un gusano plano en dos intantes de tiempo diferentes t 1 y t2 en los
cuales se está ajustando a la función de trayectoria mientras avanza. En el instante t 1 el vector de
contracción es Ec (t1 ) = (A, 0, 0, 0) y en el t2 es E(t2 ) = (0, 0, 0, A). La contracción de la cola
se ha propagado a la cabeza y entre medias el estado de orientación ha cambiado.
Los pasos para lograr la coordinación y que el gusano evolucione de un estado E(t 1 ) a otro
E(t2 ) son los siguientes:
3. Aplicar el algoritmo de ajuste respecto de la función de trayectoria para obtener los estados
de orientación Eo (t2 )
4. Volver al punto 1.
En la figura 6.9 se muestra un ejemplo aplicado para un gusano de cinco articulaciones y cuatro
segmentos.
6.4.3. Parámetros
N: Número de articulaciones de doble estado
LP (t) : Longitud proyección. Es la longitud del gusano plano proyección del gusano tridi-
mensional.
CAPÍTULO 6. MECANISMOS DE MOVIMIENTO III: GIROS 108
E c(t 1)=(0,0,A,0) t1
E c(t 2)=(0,0,0,A)
E c(t 2)=(0,0,0,A) t2
E o(t 2 )
Z
Articulacion Segmento
Elevacion
X Y
Z Y
Orientacion
6.4.4. Caracterización
Las articulaciones se caracterizan por el ángulo de orientación θ i (t) y el de elevación ϕi (t).
Necesitamos dos vectores de N componentes para caracterizar el gusano tridimensional:
Estos dos vectores forman el vector de estado del gusano tridimensional: E(t) = [E e (t), Eo (t)].
Z
Gusano 3D Articulaciones
doble estado
X Gusano
Plano Funcion de
trayectoria
El gusano tridimensional está caracterizado por su estado interno, constituido por los vectores de
elevación y por los vectores de orientación. Para conseguir movimiento es necesario coordinar
estos estados. En la figura 6.12 se resume el proceso. Existen dos entradas muy importantes: la
función de contorno que determina la evolución de los estados de elevación y la función de
trayectoria que determina la de los estados de orientación. Para obtener el estado final hay que
coordinar estas dos evoluciones.
2. Esta secuencia se calcula a partir del gusano tridimensional cuando está en reposo y es
recorrido por la función de contorno. En este estado el gusano tridimensional es similar a
uno transversal.
CAPÍTULO 6. MECANISMOS DE MOVIMIENTO III: GIROS 111
ONDAS
TRANSVERSALES
Algoritmo de ajuste
AVANCE SOBRE
COORDINACION PLANO XY
Algoritmo de ajuste
SECUENCIA DE ORIENTACION
FUNCION DE
TRAYECTORIA Vectores de estado de orientacion
VO
3. Supondremos que la trayectoria es simple, constituida por dos segmentos que forman un
ángulo α. Lo que se quiere es que el gusano gire un ángulo α.
4. El estado de orientación inicial es Eo1 = (0, ..., 0) y el final EoS = (α, 0, ..., 0). En la
figura 6.13 se muestra la función de trayectoria empleada y el gusano plano, proyección
del tridimensional en los estados inicial y final.
Funcion de
trayectoria simple
6.7. Resumen
Para abordar el problema del giro se utiliza un modelo de gusano tridimensional. Para com-
prender bien este modelo primero se han presentado otros gusanos que están relacionados. En
primer lugar se ha estudiado un gusano plano rígido, constituido por N articulaciones y por
N − 1 segmentos rígidos, que se puede ajustar a una función de trayectoria obteniéndose unos
CAPÍTULO 6. MECANISMOS DE MOVIMIENTO III: GIROS 113
Inicio
Inicializacion
Obtener secuencia vectores de elevacion: {E e1 ,...,EeM}
j=1
Si
E o j =( ,0,...,0) ? S=j FIN
No
E=[ E e i , E o j ]
j=j+1
Siguiente i
estados de orientación. Este modelo se ha complicado un poco haciendo que los segmentos ade-
más sean contráctiles. Es el gusano plano contráctil. Con este gusano se ha estudiado cómo
conseguir que se ajuste a una función de trayectoria mientras avanza como si fuese un gusano
longitudinal normal.
Finalmente se ha presentado el modelo de gusano tridimensional, cuya proyección en el
plano xy es un gusano plano contráctil. Se ha presentado un algoritmo de giro para este gusano,
basado en la función de contorno de un gusano transversal y en la función de trayectoria a la que
se ajusta el gusano plano.
Parte II
115
Capítulo 7
7.1. Introducción
Antes de pasar a la construcción de un robot gusano, es necesario probar las indeas introdu-
cidas en la parte teórica. Para ello se ha construido un modelo de gusano virtual, con 6 articula-
ciones y 5 segmentos, pero que está pensado trabajar con gusanos de cualquier longitud.
Este programa permite probar el algoritmo de ajuste, experimentar con diferentes funcio-
nes de contorno, ver los vectores de estado y generar secuencias de movimiento a partir de la
propagación de la función de contorno.
Además de ser una herramienta para la investigación a nivel teórico, es el programa encargado
de generar un fichero con las secuencias que se enviarán al prototipo mecánico.
El emplear un programa virtual permite desligarse del gusano físico. Es decir, las secuencias
generadas son válidas para cualquier gusano, puesto que no dependen de ninguno en concreto.
Tiene la limitación de 6 articulaciones, puesto que el interfaz está diseñado para 6 articulaciones,
sin embargo el diseño interno está pensado para ser muy facilmente ampliable a cualquier número
de articulaciones.
Para más información sobre la programación de interfaces gráficos usando GTK+ consultar
[29]. Un manual bastante bueno para la programación en C es [30] y para la programación bajo
Linux/Unix [31].
116
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 117
Grabacion de Lectura de
secuencias secuencias
Aplicacion Aplicacion:
CUBE-VIRTUAL FICHERO CUBE-FISICO
Manipulacion
Generacion secuencias Control de servos
Reproduccion de secuencias
Gusano Gusano
virtual real
3. Mostrar tres funciones de contorno diferentes y cambiar sus parámetros: amplitud, longitud
de onda y velocidad de propagación.
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 118
7. Opción de enganche del gusano a la función de contorno, de manera que cada vez que
varíen los parámetros de la función de contorno o que ésta se desplace, el gusano virtual
lo hará de la misma manera. Esto permite calcular secuencias de vectores de estado.
8. Opción de grabación de una secuencia en un fichero, de manera que pueda ser leída por la
aplicación cube-físico, presentada en capítulos posteriores, para mover el gusano.
USUARIO
CUBE-VIRTUAL
CALC FUNC
DISCO
Lo que está definiendo son las coordenadas (x, y) de cada punto. Las operaciones permitidas
sobre este tipo vienen definidas por la interfaz del módulo:
De todas las funciones de contorno definidas en este módulo, la que es de interés es la onda
sinusoidal, que permite modelar los estados internos del gusano.
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 122
COLA
El gusano virtual se define como una lista doblemente encadenada de articulaciones, de manera
que para trabajar con un gusano más largo sólo hay que añadir un nuevo nodo a la lista. La
lista comienza por la cola, que es la información que almacena el módulo. También se encuentra
definida la articulación activa, que es la que el usuario tiene seleccionada para poder moverse.
En la figura 7.4 se muestra gráficamente la estructura de datos empleada para modelar el
gusano virtual.
El resto de funciones de interfaz nos permiten realizar diferentes operaciones sobre las arti-
culaciones, olvidándonos de los detalles internos.
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 123
void cube_init();
Inicialización del módulo y de todas las estructuras de datos asociadas. Se crea la lista con
las articulaciones y se inicializa.
void cube_inicializar_gusano();
Inicializacion de la lista encadenada. Se utiliza para hacer un ’reset’ y volver al estado
inicial. La función cube_init() llama a esta función, pero antes crea todas las estructuras de
datos necesarias. Cube_inicializar_gusano() sólo establece los valores iniciales sobre las
estructuras ya creadas.
int cube_long_get();
Devolver la longitud del gusano. Esta función se emplea para poder independizar el resto
de módulos de la longitud real del gusano, de manera que sólo cambiando la longitud en
este módulo no haya que modificar el resto.
void cube_cola_get_xy(double *x,double *y);
Devolver las coordenadas (x, y) de la articulación de la cola
void cube_cola_set_xy(double x,double y);
Establecer las coordenadas (x, y) de la cola. Se recalculan las coordenadas del resto de
articulaciones. Esta función sirve para situar el gusano en cualquier posición de la pantalla,
manteniendo las articulaciones en el mismo estado.
void cube_func_contorno_set(double (*func_contorno)(double));
Establecer la función de contorno activa. Se pasa como parámetro un puntero a la función
de contorno a emplear. Estas funciones se encuentran definidas en el módulo func.c.
void cube_rotar(int centro, int ang, int sentido);
Rotar el gusano respecto de una articulación centro. La rotación se realiza desde la articu-
lación centro hacia la derecha o la izquierda, según cómo se especifique en el parámetro
sentido. El funcionamiento normal es que se rote siempre la parte derecha de la articulación
centro. El valor de este parámetro puede ser DERECHA o IZQUIERDA
void cube_info_art(int num_art);
Obtener información sobre la articulación indicada. Esta información se imprime en la
consola. El propósito de esta función es la depuración del código.
double cube_error_get(int nart);
Devolver el error de aproximación de la articulación especificada. Se devuelve en tanto por
ciento.
void cube_ajustar_art(int num_art);
Aplicar el algoritmo de ajuste a la articulación especificada, utilizando como función de
contorno la activa. Se aplica el algoritmo sin calcular el ángulo inicial, es decir, se aplica a
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 124
partir del estado en el que se encuentra la articulación. Es responsabilidad del que llama a
esta función el establecer el ángulo inicial para mejorar la velocidad del algoritmo.
void cube_rotar_aprox(int nart);
Situar la articulación indicada en el ángulo inicial de aproximación con respecto a la fun-
ción de contorno activa.
void cube_rotar_aprox_rep(int nart);
Esta función es igual que la anterior pero se realiza más de una pasada, de manera que el
ańgulo todavía está más próximo al final. El objetivo de esta función es realizar pruebas
sobre el tiempo de convergencia.
void cube_ajustar(int nart);
Ajustar el gusano a la función de contorno activa. Primero se calcula el ángulo inicial y
después se aplica el algoritmo de ajuste.
double cube_articulacion_get_pos(int nart);
Obtener el ángulo de estado ϕ de la articulación especificada
void cube_articulacion_set_pos(int nart, double pos, int sentido);
Establecer el ángulo de estado de una articulación y propagar en el sentido indicado
void cube_articulacion_get_xy(int nart, double *x, double *y);
Obtener las coordenadas (x, y) de una articulación.
El campo de tiempo de espera permite definir el tiempo que debe permanecer el gusano en ese
estado, antes de pasar al siguiente. Con ello se pueden definir secuencias de movimiento, que
serán enviadas al gusano físico.
El interfaz del módulo es:
siendo w = (w1 , w2 , ..., wN ) y v = (v1 , v2 , ..., vN ) los vectores de estado. Esta distancia
nos da una idea de cúal es la articulación que está más alejada del estado final w.
unsigned long vector_tiempo_trans(vector_pos_t *v1, vector_pos_t *v2, double
ct);
Calcular el tiempo de tránsito entre dos estados, empleando una constante de tiempo. Esta
función no se utiliza en el programa cube-virtual y se explicará más adelante.
void vector_suma(vector_pos_t *v1, vector_pos_t *v2, vector_pos_t *suma);
Calcular la suma de dos vectores de estado. La suma se define como:
v + w = (v1 + w1 , v2 + w2 , ..., vN + wN )
vector_pos_t *vector_new();
Crear un vector nuevo, inicializado a cero
vector_pos_t *vector_crear(double a1, double a2, double a3, double a4, unsigned
int te);
Crear un vector con los valores indicados
void vector_free(vector_pos_t *vector);
Liberar la memoria tomada por un vector
int vector_save(FILE *f, vector_pos_t *v);
Almacenar el vector en un fichero. Se almacena en una línea ASCII, con la siguiente codi-
ficación: [v1, v2, v3, v4], te. Donde v1 − v4 son los estados de las articulaciones 1-4 y te
el tiempo de espera asociado a ese estado. Los estados de la cabeza y la cola no se graban
puesto que son articulaciones “virtuales” que en el gusano real no existen.
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 126
GtkWidget *video_init();
Inicialización de la pantalla de video. Se crea el área de dibujo, se configura y se asignan
los eventos necesarios. Todas las variables locales del módulos también se inicializan
void video_origenx_inc(int inc);
Incrementar coordenada x del origen de coordenadas
void video_origeny_inc(int inc);
Incrementar coordenada y del origen de coordenadas
void video_origen_reset();
Llevar el origen a su situación inicial
void video_refrescar();
Redibujar toda la información de la pantalla, en función del nuevo estado del gusano y del
interfaz
void video_set_func_draw(double (*func)(double));
Establecer la función de contorno que se dibujará
void video_set_art_activa(int nart);
Indicar cuál es la articulación activa. Se pinta con otro color
void video_show_ejex(gboolean dibujar);
Mostrar/ocultar el eje x
void video_show_func(gboolean dibujar);
Mostrar/ocultar la función de contorno
void video_show_cube(gboolean dibujar);
Mostrar/ocultar el gusano virtual
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 127
} main_state_t;
Sólo existe una función de interfaz, que lo construye, lo dibuja y devuelve el estado en una
variable del tipo anterior.
void create_window1(main_state_t *estado);
Cada vez que ocurre algún evento, como la pulsación de un botón, se llama a la función de
retrollamada correspondiente, implementada en el módulo principal. La función asociada a un
evento (callback function) determina, según el estado del programa, qué acciones hay que tomar.
Eje X
Función de contorno
Gusano virtual
Cada una de estas partes se puede visualizar u ocultar, según que los botones Eje x, Func y Cube
estén o no activados (definidos en la página 133).
Las articulaciones se visualizan como círculos rojos, con su número asociado. La articulación
activa se muestra con un círculo verde y es sobre la que actúan ciertas partes del interfaz, como
la barra de posicionamiento.
La articulación número 1 se encuentra situada en la coordenada x = 0, y = 0. Inicialmente
el gusano se encuentra situado sobre el eje x.
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 129
PANTALLA DE
VIDEO
BOTONES
DE
INTERFAZ
Estado de las
articulaciones
Conversiones
a aplicar
Articulacion Funcion
activa Eje x
de contorno
Gusano virtual
Articulaciones
1 2 3 4 5 6
Coordenadas (x,y) de
posicion de las
articulaciones
Grupo 1
Grupo 6
Grupo 5 Grupo 2 Grupo 3 Grupo 4
que se dibujan en la pantalla: gusano, eje x y función de contorno. Con ello podemos
centrar en la pantalla la información que nos interese ver. Normalmente estos botones no
se usarán.
Se trata de botones independientes que pueden estar en cualquiera de los dos estados
ON/OFF por lo que se pueden presentar en cualquiera de las 8 combinaciones: desde no
visualizar nada hasta visualizarlo todo (opción por omisión).
Amplitud (A)
Longitud de onda (λ)
Instante de tiempo (t)
Velocidad de propagacion (v)
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 134
F1
F2
F3
Cuanto menor sea la longitud de onda, más “lóbulos” sinusoidales recorrerán el gusano.
Cuanto mayor sea, mejor se ajusta el gusano a la función de contorno y más se cumple la
condición de que la longitud del gusano longitudinal asociado permanezca constante.
El parámetro tiempo nos define el instante en el que se encuentra la onda, ya que se va
propagando. Inicialmente se toma t = 0. Al aumentar este parámetro puede verse cómo la
onda “avanza”.
La velocidad de propagación nos da una idea del número de instantes de tiempo que tarda
la onda en recorrer una longitud igual a la longitud de onda λ.
λ
v=
T
Fijada una λ y dos velocidades v1 y v2 , con v1 < v2 , en el instante t = 0 las ondas son
iguales pero en el instante t = 1, la onda con velocidad v2 ha avanzado más que la onda
con velocidad v1 .
Por ello, el parámetro velocidad, nos está indicando cuántos estados diferentes va a tener el
gusano al recorrer una longitud igual a λ. Si v es alto, se generan pocos estados intermedios
y si es bajo muchos. Para poner un ejemplo, con un valor fijo de λ = 150, que es la longitud
de onda que se tiene por defecto y con v1 = 5 y v2 = 10, se obtienen en el primer caso 30
estados diferentes y 15 en el segundo. Esto es porque en el primer caso la distancia igual a
λ se recorre en 30 instantes de tiempo y en 15 en el segundo caso.
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 135
Play: Realizar una “reproducción” de la evolución de los estados internos del gusano,
con la función de contorno activa y con sus parámetros establecidos. Se entiende por
reproducción la siguiente secuencia de acciones:
a) Aplicar el algoritmo de ajuste al gusano, con respecto de la función de contorno
establecida
b) Incrementar el parámetro tiempo
c) Recalcular la nueva función de contorno para el nuevo instante temporal
d) Volver al punto (a)
Grabar: Realizar una reproducción sólo hasta que la onda avance una distancia igual
a la longitud de onda, de manera que el estado inicial es igual al estado final, y grabar
los vectores de estado en un fichero.
En la figura 7.13 se muestra un gusano que está enganchado a una función de contorno
sinusoidal y cómo al variar la amplitud el gusano va modificando su estado.
Correccion de offset: Este grupo permite establecer las correcciones de offset necesarias
para las articulaciones reales (articulaciones números 2-5).
Vector de estado físico: Presenta el estado del vector físico real, de aplicación para el
gusano físico concreto.
Amplitud 1
Amplitud 2
Amplitud 3
Figura 7.13: Gusano enganchado a una función de contorno a la que se le varía la amplitud
los extremos (la 1 y la 6) son “virtuales” y que no tienen sentido en un gusano físico. Se utilizan
en el modelo virtual para facilitar los cálculos. Esta proyección la definimos por la función Π(E).
De esta manera, dado un vector E = (v1 , v2 , v3 , v4 , v5 , v6 ), se obtiene el vector físico E 0 =
(v2 , v3 , v4 , v5 ):
E 0 = Π(E)
Sin embargo es necesario hacer más conversiones. El gusano virtual es perfecto, pero el
físico hay que “calibrarlo”. Por imprecisiones mecánicas, el estado físico (0,0,0,0) puede no
corresponderse exactamente con el estado (0,0,0,0,0,0). Para que la correspondencia sea lo más
precisa posible, hay que aplicar un vector que compense las imprecisiones mecáncias. Este vector
lo denominaremos vector de offset O. Si la calibración mecánica fuese perfecta, el vector de
offset sería O=(0,0,0,0). De esta manera, el vector de estado físico lo obtenemos aplicando una
segunda conversión, sumando el vector de offset:
E 0 = Π(E) + O
Pero queda una tercera conversión. El gusano físico se puede implementar de muchas formas.
Los servos pueden estar orientados con el eje de salida apuntando hacia un lado o hacia otro,
dependiendo de cómo se construya. En el gusano virtual se supone que todos los servos están
orientados de la misma manera, pero en el real no tiene por qué cumplirse. Si la orientación del
servo es la contraria que la de la articulación virtual, hay que cambiar el signo del ángulo al hacer
la conversión.
En la figura 7.16 se muestra una articulación virtual en un estado ϕ y dos servos en el mismo
estado. El de la izquierda tiene la misma orientación que la articulación virtual, por lo que se
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 142
Articulacion virtual
encuentran en la misma posición. Sin embargo el de la derecha está en la otra orientación por
lo que al aplicarle el mismo ángulo ϕ el segmento izquierdo baja en vez de subir. Para que
se encontrase en la misma posición que la articulación virtual habría que situarlo en el ángulo
−ϕ. Por este motivo es necesario realizar una tercera conversión cambiando el signo de algunas
componentes del vector de estado físico. Esta conversión viene determinada por la función S(E 0 ),
que toma un vector físico y devuelve otro aplicando las correcciones de signo pertinentes. De esta
manera, la conversión final entre los vectores de estado virtuales y físicos es la siguiente:
O: Es la corrección de offset
Cuando se “graba” una secuencia de estados en un fichero, con la opción “grabar” del grupo 9, se
están grabando los estados físicos, con las correcciones aplicadas. Estas correcciones se definen
en la parte del interfaz conversiones, como se explicó en la sección 7.5.5.
CAPÍTULO 7. SOFTWARE: MODELO VIRTUAL 143
NIVELES DE CONTROL
Gusano fisico
da determinan la contracción del gusano, y por tanto la velocidad de avance. También se puede
controlar la áltura máxima y mínima alcanzada por el gusano.
Fijados unos parámetros de amplitud, longitud de onda y velocidad, con sólo variar el factor
tiempo, se generan automáticamente los estados internos del movimiento y a partir de éstos los
estados físicos que hay que aplicar al gusano real. El resultado es que estamos a otro nivel de
abstracción. Un nivel en el que no importan los estados internos, pues se generan automática-
mente.
7.8. Resumen
Existen dos herramientas software para manejar a Cube: cube-virtual que manje un gusano
virtual y cube-fisico que maneja uno real. Las secuencias generadas por el gusano virtual pueden
ser cargadas en la aplicación cube-fisico y que el gusano real las reproduzca.
Este capítulo se centra en la aplicación cube-virtual, que permite manipular el modelo virtual
y generar secuencias a partir de diferentes funciones de contorno. Se ha mostrado la arquitectura
software, con todos los módulos software desarrollados y cómo se han combiando para lograr
la aplicación final. También se ha mostrado con detalle cómo funciona el programa, para que el
diseñador lo pueda utilizar para sus propósitos.
El gusano virtual y el físico son diferentes, y aunque las secuencias de uno valen para el otro,
es necesario realizar una serie de conversiones. A partir de los vectores de estado virtuales se
obtienen los vectores de estado físicos, que se graban en un fichero se pueden ser leídos por la
aplicación cube-físico.
Finalmente se ha hecho una reflexión sobre los diferentes niveles de abstracción del gusano y
cómo con este programa se puede llegar al nivel superior: controlar el gusano mediante funciones
de contorno y sus parámetros asociados, haciendo abstracción de todos los detalles intermedios
y de bajo nivel.
Capítulo 8
Estructura mecánica
8.1. Introducción
En este capítulo se aborda la construcción mecánica de un gusano transversal, sobre el que
se pueda aplicar el modelo de gusano virtual presentado en el capítulo 7. La estructura mecánica
debe cumplir los siguientes requisitos:
1. Modularidad. El gusano se debe construir mediante módulos iguales, de manera que sea
muy fácil su ampliación.
2. Simplicidad. Que las piezas sean sencillas y fáciles de obtener y que exista el menor
número posible de piezas diferentes.
3. Economía. Las piezas deben ser lo más baratas posibles y los materiales fáciles de encon-
trar en el mercado.
4. Robustez. Buscar que la estructura sea lo más resistente posible y que las piezas se acoplen
sólidamente.
Un libro muy bueno de robótica en general, más orientado hacia temas prácticos que teóricos es
[28].
145
CAPÍTULO 8. ESTRUCTURA MECÁNICA 146
CABEZA
COLA
Este primer prototipo permitió comprobar la viabilidad mecánica del proyecto, así como
encontrar fallos para ser mejorados en la versión 2.0, que es la que se presenta en este proyecto.
En la figura 8.1 se muestra cube-1.0, al lado de un disquete de 3.5” para apreciar su tamaño
real. Se han señalado con flechas la cola y la cabeza.
CABEZA
COLA
CUBE 1.0
CUBE 2.0
Figura 8.3: Foto con las estructuras mecánicas de Cube 1.0 y Cube 2.0
CAPÍTULO 8. ESTRUCTURA MECÁNICA 148
RUEDA
LENGUETA
CUERPO
TALADROS
CABLE DE CONEXION
En la figura 8.4 se muestra una foto, tomada junto a un disquete de 3.5 pulgadas, donde se puede
apreciar el reducido tamaño del servo.
Estos servos tienen un cuerpo y un eje de salida con una rueda atornillada a él, de tal manera
que el cuerpo y la rueda rotan uno respecto del otro. Dentro del cuerpo se encuentran los engra-
najes, el circuito de control y el motor. La rueda es extraible, quitando el tornillo que lo sujeta al
eje. En ella se realizan los taladros necesarios para unirse al resto de las piezas, como se explica
más adelante.
En el cuerpo existen dos lengüetas que sobresalen, con dos taladros cada una. Esto permite
atornillarlo a cualquier estructura.
.
8.4.1. Cabeza
La cabeza está formada por dos piezas de tipo C, unidas a la base rectangular por medio de
cuatro escuadras metálicas y al cuerpo del futaba por dos varillas roscadas de 9.5cm de longitud.
CAPÍTULO 8. ESTRUCTURA MECÁNICA 149
Piezas tipo C
Base de la cabeza
Escuadras
PLANTA
En la figura 8.7 se muestran las diferentes vistas y en la 8.8 aparece en perspectiva. En ambas
figuras no se muestras las varillas roscadas, pero sí sus taladros
8.4.2. Cola
La cola es muy similar a la cabeza, pero es más pequeña y está unida al eje de salida del
futaba, en vez de a su cuerpo, como lo está la cabeza. Las piezas de tipo B se unen a la base por
medio de dos escuadras y al eje de la articulación mediante cuatro tornillos. Ver figuras 8.9 y
8.10.
8.4.3. Cuerpo
El cuerpo es la parte más importante de Cube. Se caracteriza por estár formado por módulos
iguales, denominados módulos básicos, lo que permite que sea extensible. Cada módulo básico
está constituido por una articulación de doble eje y dos piezas de tipo A, que se emplean para
unirse al siguiente módulo.
Pieza tipo B
Base de la cola
PLANTA
Ejes de salida
Piezas tipo A
Varillas roscadas
Futaba 3003
PLANTA
Estos módulos se pueden unir unos a otros formando el cuerpo entero del gusano. Las piezas
de tipo A se unen al cuerpo del siguiente módulo mediante dos varillas roscadas de 7.5cm.
Futaba
3003
Eje Real
Varilla roscada
Falso eje
Tapa superior
Engranaje con
eje de salida
Tornillo
Tapa inferior
a) Montar la pieza con falso eje (apartado 8.4.3.2 y figura 8.14). Las piezas necesarias se
pueden conseguir en una tienda de aeromodelismo donde vendan los servos Futaba.
Las piezas necesarias son:
1) Rueda del servo
2) Tapa superior
3) Engranaje con eje de salida
4) Tapa inferior
5) Tornillo de 4mm de diametro y 2cm de longitud
b) Colocar cinta aislante negra rodeando la tapa superior y la inferior para que queden
sujetas. Esta unión es provisional, nos sirve para que no se desmonte la pieza mientras
la unimos al servo mediante las varillas roscadas.
c) Unir el servo y la pieza con falso eje. Son necesarias dos varillas de 4.6cm y dos de
7.5cm. Para el futaba que se une con la cabeza son necesarias dos varillas de 9.5cm,
en vez de las de 7.5cm. Por cada varilla corta hay que emplear cuatro tuercas, dos
en la parte interior y dos en la exterior como se muestra en la figura 8.16. Por cada
varilla larga se emplean seis tuercas.
CAPÍTULO 8. ESTRUCTURA MECÁNICA 156
Base de la cola
x1
Base de la cabeza
x1
Pieza tipo A x6
Pieza tipo B
x2 Varillas roscadas:
4.5cm
x6
7.5cm
Pieza tipo C x2 x6
9.5cm
x2
Figura 8.15: Todas las piezas necesarias para construir Cube-2.0
CAPÍTULO 8. ESTRUCTURA MECÁNICA 157
Futaba
3003
Tuercas
Varillas de 7.5cm
Varillas de 4.5cm
Tuercas
4. Realizar los taladros en las ruedas de los servos. Para ello utilizar la plantilla de las piezas
de tipo A, a las que irán atornillas las ruedas. Hay que realizar 4 taladros para el anclaje a
las piezas de tipo A y uno mayor para insertar el tornillo que une la rueda con el eje del
servo. También hay que limar el saliente que hay para que se puedan colocar las piezas
tipo A en el siguiente paso (ver figura 8.17)
5. Atornillar las piezas de tipo A a las ruedas de los futabas. Para ello es preciso limar el
saliente que hay en la cara exterior de las ruedas. Hay que atornillar las seis piezas de tipo
A y las dos de tipo B.
6. Calibrar el gusano. Colocar cuatro ruedas en los falsos ejes, tres ruedas, con sus piezas
A enganchadas en los servos 2, 3 y 4, y una rueda con la pieza B al servo 1 (ver figura
8.18). Con el programa cube-fisico situar todas las articulaciones en el estado de
reposo (cero grados). Este estado se corresponde con el del gusano en posición horizontal.
Asegurarse de que el falso eje se sitúa en el mismo estado que el eje normal y que el
recorrido que realizan es el mismo. Atornillar las ruedas a los servos.
7. Unir todos los módulos del cuerpo, mediante las piezas tipo A. Apretar bien las tuercas.
El servo 1 debe llevar atornilladas las dos piezas de tipo B. En la figura 8.19 sólo se han
dibujado las tuercas necesarias para la unión.
8. Montar la base de la cola, usando las escuadras para su unión a las piezas de tipo B.
CAPÍTULO 8. ESTRUCTURA MECÁNICA 158
Enganche para el
eje del servo
Taladro de 4mm
Taladro de 6mm
Figura 8.17: Rueda del futaba, con los taladros que hay que realizar
Tuercas de union
1 2 3 4
11. Pegar los rectángulos de alfombrilla de ratón dos a dos, de manera que se obtengan 4
bloques más gordos.
12. Unir los bloques de las alfombrillas a los módulos básicos mediante velcro, de manera
que se puedan poner y quitar. Estos bloques sirven de base al gusano, para que se apoye
correctamente sobre la superficie. En la figura 8.20 se muestra la estructura terminada, sin
la electrónica.
8.6. Resumen
Se han desarrollado dos prototipos. El primero, Cube-1.0, estaba realizado en madera y no
era ampliable, sin embargo fue muy útil para determinar la viabilidad del proyecto. El segundo
prototipo, Cube-2.0, que es el que se presenta en este proyecto, está realizado en piezas de
plástico transparente de 2mm de grosor, que se corta y taladra muy facilmente. Está diseñado
para ser ampliable a cualquier número de servos puesto que está compuesto por la unión de unos
módulos básicos que son iguales.
La estructura del gusano está formada por tres partes diferentes: cabeza, cuerpo y cola. La
cabeza está pensada para llevar la electrónica y por ello es más grande que la cola. El cuerpo está
constituido por módulos iguales que se interconectan mediante piezas de tipo A. Los módulos
están construidos a partir de servos con doble eje, que se construyen uniendo un servo del tipo
Futaba 3003 con una pieza con falso eje. Esta pieza se puede construir a partir de las propias
piezas que componen el servo y se pueden conseguir en cualquier tienda especializada.
Con todas estas piezas se ha mostrado cómo hay que construir el gusano. Especial cuidado
hay que tener en la calibración, de manera que cuando el software le indique al gusano que se
sitúe en la posición de reposo, el gusano se encuentre en posición horizontal.
CAPÍTULO 8. ESTRUCTURA MECÁNICA 160
Cabeza Cola
Electrónica
9.1. Introducción
La parte mecánica ya está resuelta en el capítulo 8. Ahora es necesario añadir una electrónica
que pueda mover los servos y que se pueda comunicar con el PC para recibir órdenes. En este
capítulo se presenta una electrónica que cubre esos dos aspectos.
El gusano tienen una serie de particularidades que hacen que la electrónica tenga que cumplir
una serie de requisitos. Con ellos se plantearán las alternativas de diseño, justificándose la solu-
ción adoptada. Esta solución está basada en redes de microcontroladores. La electrónica, además,
se tiene que adaptar correctamente a la estructura mecánica del gusano.
En [19] se encuentran los esquemas de las tarjetas empleadas en Cube, así como los manu-
ales de usuario. En [16] se emplean estas mismas tarjetas para controlar un perro robot. Para la
programación del 68hc11 se puede consultar [21] y finalmente se puede encontrar información
muy útil en [28].
9.2. Requisitos
Hay una serie de requisitos que debe cumplir la electrónica integrada en Cube:
1. Debe poder controlar gusanos de cualquier longitud. Cuantas menos limitaciones mejor.
2. Debe permitir que el gusano sea autónomo, aunque en este proyecto se utilice el PC para
implementar todos los cálculos.
3. Debe poder conectarse al PC, para utilizar software de calibrado, carga de programas,
prueba de secuencias, etc, aunque también pueda ser autónomo.
5. Debe ser muy flexible y modular, de modo que permita incorporar mejoras futuras.
161
CAPÍTULO 9. ELECTRÓNICA 162
Puerto
paralelo
Cable
paralelo
Electronica
Gusano
1. Para controlar un robot, más o menos complejo, se puede pensar en utilizar el PC conec-
tado por el puerto paralelo. En este caso la electrónica del robot sólo está constituida
por la etapa de potencia de los servos y la necesaria para adaptar niveles. Esta solución es
sencilla, pero no cumple con todos los requisistos del apartado 9.2:
a) Los pines de salida del puerto paralelo son pocos. Por cada pin se puede controlar
un servo mediante PWM, por lo que en total podríamos controlar unos 15 servos. El
gusano en este caso tiene una limitación electrónica en la longitud que puede llegar a
tener.
b) El sistema nunca podrá ser autónomo. Siempre será necesario disponer de un PC.
c) Hay que emplear un cable de puerto paralelo estándar, que tiene muchos hilos (25),
que es pesado, caro y no puede ser muy largo (unos 4m como máximo)
Cable serie
Sistema microcontrolador
Gusano
a) Sólo son necesarios tres hilos para realizar la comunicación (Tx, Rx y GND).
b) El PC envía la información de control al microcontrolador y es éste el que genera las
señales de PWM. Los microcontroladores disponen de recursos para poder generar
estas señales de forma fácil y precisa. El PC se hace así independiente de los servos.
Si estos cambian por otros, sólo hay que modificar el programa del microcontrolador,
pero el PC sigue “viendo” el mismo sistema. No es necesario modificar el software.
c) Es posible hacer que el propio micro gobierne el gusano, de forma que sea autónomo.
d) La longitud del cable de conexión entre el PC y el microcontrolador puede ser mayor
(la norma RS232 especifica un máximo de 12m)
Sin embargo, el sistema todavía está limitado a los servos que se puedan controlar con el
microcontrolador y por tanto no escala bien. Esta es la solución que se empleó en Cube
1.0, que si bien funciona muy bien, no permite insertar muchas más articulaciones. Para
poder ampliarlo había que rehacer toda la electrónica.
Cable serie
Nodo
Maestro Red de microcontroladores
Gusano
la red de 8 bits, se pueden conectar hasta 256 nodos y cada nodo es capaz de controlar 4
servos, por lo que en teoría se podrían conectar hasta ¡¡256*4=1024 servos!!.
Nodo RS-232
maestro
Reloj: 8Mhz
Temporizador de 16bits
5 Comparadores con salida hardware (Con los que es muy sencillo generar una señal
PWM para el control de los servos)
3 capturadores de entrada
CT6811 BT6811
8 canales A/D
5 puertos de entrada/salida: A, B, C, D y E.
La tarjeta CT6811 viene ya preparada para ser conectada directamente a un PC, incorporando los
circuitos de adaptación entre niveles TTL/RS232. Puede funcionar como una tarjeta entrenadora,
en la que se puede cargar un programa en la memoria RAM o bien como un sistema autónomo,
ejecutando el programa que tiene grabado en la memoria EEPROM.
La tarjeta BT6811 está pensada fundamentalmente para funcionar como un sistema autóno-
mo. Tiene dos entradas para la alimentación, una para los servos y otra TTL para la electrónica.
Ambas tarjetas se alimentan con una tensión continua entre 4.5 y 6 voltios. En la figura 9.5
se muestra una foto. El tamaño de la BT6811 es aproximadamente la mitad que el de la CT6811.
9.5.2. Descripción
En la figura 9.6 se muestran todos los elementos del interfaz de la tarjeta CT6811. Dispone
de 6 conectores acodados, de 10 pines, desde los que se puede acceder a los puertos de E/S del
68hc11. Especial interés tiene el puerto D que es donde se encuentran los pines del SPI, que
permiten conectar la tarjeta a la red de microcontroladores. La alimentación se puede realizar
bien por clemas o bien por un conector de tipo jack. Para la conexión al PC se utiliza un conector
hembra teléfonico, de cuatro vías. El cable es similar al de los teléfonos. Tiene la ventaja de que
es muy ligero y muy fácil de construir. Para la conexión al puerto serie del PC se emplea un
adaptador DB9 a teléfono.
Existen unos microinterruptores para configurar el modo de arranque del microcontrolador.
Para el gusano se empleará el modo bootstrap, situando todos los switches hacia abajo. La con-
figuración de los jumpers es la siguientes:
CAPÍTULO 9. ELECTRÓNICA 167
switches
Puerto C Puerto de de configuracion
control
Jumpers de
configuracion Puerto E
Alimentacion
Conexion
al PC
Boton de
reset
Puerto D
Led de
pruebas
Puerto A
Puerto x
Los Jumpers JP3, JP8, JP2, JP1, JP7 deben estar puestos
Los jumpers JP5 y JP6 quitados
El jumper JP7 en posición ON
El jumper JP4 en posición RST
El botón de reset permite reinicializar la placa. Esta operación también la puede realizar el soft-
ware que corre en el PC, activando la señal DTR de la norma RS232. La CT6811 dispone tambie ń
de un led conectado al bit 6 del puerto A para realizar pruebas y depurar el software.
En la figura 9.7 están los elementos de interés de la tarjeta BT6811. Dispone también de un
botón de reset para reinicialización del software, pero a diferencia de la CT6811, este reset debe
ser manual y no se puede hacer por software. Hay dos clemas para la alimentación: una para la de
la circuitería y otra para la de los servos. Es posible alimentar tanto los servos como la electrónica
a partir de las mismas clemas, sin embargo es recomendable separar ambas alimentaciones para
evitar ruido en la del micro.
En el puerto D se encuentran los pines del SPI y es donde se conecta la CT6811 maestra y el
resto de BT6811 esclavas.
CAPÍTULO 9. ELECTRÓNICA 169
Alimentacion TTL
Par de cables
Puerto D
Cable de tlf.
Puerto D Servo 4
CT6811 PC
Programa RS232
maestro Cliente
SPI Servo 1
BT6811 Servo 2
Programa
esclavo
Servo 3
Nodo a
Servo 4
PC.
2. Nodo maestro: Programa maestro.asm. Es un programa que hace de puente entre los nodos
de la red y el cliente en el PC, pasando la información recibida por la norma RS232 y
enviándosela a los nodos de la red, a través de bus SPI. Este programa lo carga el cliente
del PC en la RAM del 68hc11.
CAPÍTULO 9. ELECTRÓNICA 171
1. Test. Cambiar el estado del led del nodo indicado. Es muy útil para comprobar si la red
está funcionando y para depurar el software.
3. Control. Enviar un valor a los puertos C de los nodos esclavos. Esto permite que cada nodo
esclavo se puede conectar a un periférico al que puede mandar información de control.
Estos servicios se implementan mediante tramas que se envían desde el PC al nodo maestro y
éste a su vez las reenvía al resto de los nodos.
Para acceder a estos servicios hay que especificar el nodo esclavo y el servo dentro del nodo
sobre el que se quiere actuar, para el caso del servicio 4. Cada nodo esclavo tiene una dirección
en la spinet. En el caso de Cube sólo existe un nodo que tiene la dirección 61h 2 . Los servos
están numerados desde el 1 hasta el 4.
Tarjeta CT6811
Tarjeta BT6811
Cables de interconexión
y hay que acoplarla a Cube. En la figura 9.10 aparece la estructura mecánica junto con la elec-
trónica y las pilas, sin colocar en el gusano. Un problema importante es que el gusano está
constituido por partes móviles por lo que hay muy poco espacio. La CT6811 se ha situado en
la cabeza del gusano, encima de su base. La sujección se puede realizar con gomas elásticas o
mejor haciendo una base de plástico de las mismas dimensiones que la CT6811, atornillarla a
ella y la base unirla a la cabeza mediante velcro. Este enganche es muy robusto y permite quitar
y poner la tarjeta cuantas veces se quiera.
2
El valor hexadecimal 61h se corresponde con el carácter ascii ’a’. Con esto se indica que es el nodo ’a’.
CAPÍTULO 9. ELECTRÓNICA 172
Estructura mecanica
Cable de interconexion
entre las tarjetas
CT6811 y BT6811
Bases de los
servos
Tarjeta CT6811
Pilas Tarjeta
BT6811
Para la BT6811 se hace algo parecido. Se construye la base de plástico y se atornilla a ella.
Esta base se adhiere al futaba 4 mediante velcro. El futaba 4 es el que se encuentra más cerca de
la cabeza, de esta manera los cables de interconexión entre las tarjetas pueden ser muy cortos.
Para la alimentación de la electrónica se emplean cuatro pilas de tipo AA, de 1.5v, consiguién-
dose en total 6v. El portapilas empleado tiene las medidas justas para situarse sobre cualquiera
de los cuatro servos. Se ha empleado el número 1, el más cercano a la cola, para contrarrestar el
peso de la CT6811 y la BT6811 que están más cerca de la cabeza. Del portapilas salen los cables
de alimentación que terminan en un conector jack macho. Este conector es el que se conecta a la
tarjeta CT6811.
La alimentación de los servos se obtiene de una fuente de alimentación externa, o una batería.
Tiene que ser externa porque no hay sitio para colocarla dentro de la estructura del gusano.
Los cables de los futabas se conectan a la BT6811 y para evitar enredos se llevan por la parte
inferior de cube, introduciéndose entre las bases de los servos. En la figura 9.11 se muestra un
esquema de la situación de toda la electrónica y las pilas. Y en la figura 9.12 se presenta el gusano
final en el que se identifican los elementos y se dibujan las conexiones principales.
9.8. Alimentación
La alimentación completa del gusano es la siguiente:
Electrónica
◦ Voltaje: 6v (Pilas)
◦ Consumo: 40mA
CAPÍTULO 9. ELECTRÓNICA 174
Cable serie
Alimentacion
electronica
TTL (6v)
5V
Fuente de alimentacion
Alimentacion
servos
Servos:
9.9. Resumen
Para cumplir con los requisitos de que el gusano sea ampliable, autónomo, conectable al PC,
electrónica fácil de conseguir y económica se ha elegido la alternativa de emplear una red de
microcontroladores, muy probada en otros robots. La electrónica está constituida por un nodo
maestro, la tarjeta CT6811 y un nodo esclavo, tarjeta BT6811, que puede controlar los cuatro
servos de las cuatro articulaciones. Al tratarse de una red es muy fácilmente ampliable, se pueden
implementar gusanos de mayor número de articulaciones.
Esta red, denominada, spinet, ofrece una serie de servicios a un cliente que se ejecute en el
PC de manera que este software hace abstracción de los detalles del moviento de los servos y se
limita a establecer la posición en la que deben situarse.
Esta electrónica se tiene que adaptar a la estructura del gusano. Para ello se han se emplean
unas bases de plástico que se enganchan al gusano utilizando velcro. De esta forma es muy
fácil quitar y poner las placas. La alimentación es doble: son necesarias pilas para la electrónica,
que van en el propio gusano, enganchadas también con velcro, y una fuente de alimentación
externa para los servos, puesto que las baterías no caben físicamente en el gusano.
Capítulo 10
10.1. Introducción
El software que se describe en este capítulo es el que se utiliza en el PC para acceder al
gusano físico y mover sus diferentes servos. Nos permite realizar calibraciones mecánicas y lo
más importante, reproducir secuencias creadas, bien por el software del gusano virtual o bien
secuencias manuales.
Información sobre la programación en C se puede encontrar en [30] y para el desarrollo de
interfaces gráficos con GTK+ es muy útil [29].
10.2. Descripción
El programa creado se denomina cube-físico, en oposición al software cube-virtual,
que controla un gusano virtualo, presentado en el capítulo 7. Está diseñado para controlar un
gusano real, al que denominaremos gusano físico. En la figura 10.1 se muestra el aspecto del
programa. Permite realizar las siguientes operaciones:
1. Mover los servos independientemente, mediante barras de desplazamiento.
2. Establecer el estado de los servos especificando su vector de estado físico.
3. Generar secuencias de movimiento manuales, que se puedan reproducir, grabar y cargar.
4. Lectura de secuencias de movimientos de un fichero, bien generadas por el propio pro-
grama o por la aplicación cube-virtual.
5. Editar secuencias ya creadas, insertando o eliminando estados.
En realidad este programa sirve para manejar cuatro servos aislados, independientemente de que
se encuentren en un gusano. Es posible generar secuencias para cualquier otro robot, que esté
constituido por 4 servos. Si además se cargan las secuencias generadas por el gusano virtual, se
consigue el movimiento en el gusano físico, y se pueden analizar los diferentes estados interme-
dios.
176
CAPÍTULO 10. SOFTWARE: GUSANO FÍSICO 177
Grados
Futaba
230
115
Grados
-90 0 90
10.3.2. Secuencias
10.3.2.1. Parámetros temporales
El estado de los servos queda determinado en un instante de tiempo por el vector de estado
físico, que tiene cuatro componentes, una para cada articulación, expresadas en grados:
E(t) = (ϕ1 , ϕ2 , ϕ3 , ϕ4 )
1
A partir de ahora, cada vez que se escriba grados se entenderá que se trate de grados sexagesimales, salvo que
se indique expresamente lo contrario.
CAPÍTULO 10. SOFTWARE: GUSANO FÍSICO 179
Servo
45 45 90 90
Una secuencia es una serie de vectores de estado, cada uno de los cuales define el estado en
un instante ti :
Sec = {E(t1 ), E(t2), ..., E(ti ), E(tj ), ...., E(tM )}
Los intervalos de tiempo tj − ti están constituidos por dos componentes:
te : Tiempo de espera. Tiempo que debe permanecer el sistema en el estado E(t j ), antes
de pasar al estado E(tj+1 ).
En la figura 10.3 se ha dibujado un ejemplo de una secuencia para un servo en la que se pueden
ver las componentes tt y te . La secuencia está compuesta por tres estados diferentes:
Los estados son E(t0 ) = 0, E(t1 ) = 45, E(t2 ) = 90. El tiempo de espera se puede hacer
diferente para cada estado, de manera que por ejemplo permanezca 2 segundos en el estado
E(t1 ) y 3 en el E(t2 ).
El tiempo de espera es un parámetro determinado por el usuario. Si te = 0, se obtienen
movimientos continuos, es decir, que no hay esperas en cada estado, sino que se va evolucionando
continuamente de un estado hasta otro.
El tiempo de tránsito es una característica del futaba, que depende de su velocidad y del
ángulo girado:
tt = τ.4ϕ (10.2)
siendo:
τ : Constante de tiempo del futaba. Es el tiempo que tarda el futaba en recorrer un grado.
Se expresa en mseg.
Por las características dadas por el fabricante, se tiene que para un servo futaba, τ = 3,8mseg.
La constante de tiempo τ es un parámetro estadístico que depende de la carga del servo,
de la alimentación, etc. Por ello hay que estimarlo, llamando al valor estimado τ e . El fabricante
proporciona un valor nominal cuando el servo no está cargado y se alimenta con la tensión
nominal. Suponiendo que te = 0, es decir, que se quiere una trayectoria continua, puede ocurrir
lo siguiente:
Cuanto mayor sea la exactitud, la continuidad será peor y cuanto mayor continuidad en el movi-
mimento menor será la exactitud.
El parámetro τe es fijable por el usuario, de manera que busque el compromiso entre exactitud
y continuidad que más se ajuste a su aplicación. Esto también es muy útil para la depuración de
secuencias, ya que fijando un τe grande, se puede ir viendo la trayectoria paso a paso y analizar
los problemas.
USUARIO
CUBE-FISICO
SECUENCIAS INTERFACE
VECTORES
SPINET
DISCO Gusano
PUERTO
SERIE
que está estimando el tiempo que tarda el gusano en alcanzar el estado E 2 a partir del estado
E1 . El valor por omisión empleado en el programa cube-fisico para el parámetro τ e es de
3.8ms, pero puede ser modificado por el usuario.
En la figura 10.4 se muestra la relación entre todos los módulos. Los módulos software se re-
presentan con un rectángulo. De ellos parten unas flechas que indican los módulos que están
haciendo uso de sus funciones de interfaz.
La descripción de este tipo de datos así como del interfaz se encuentra en la sección 7.4.4. La
nueva función de interfaz incorporada es:
void sec_init();
Inicialización del módulo. Se crea la lista y se inicializan las variables internas. Es obliga-
torio que se llame a esta función antes de utilizar cualquier otra. En cualquier momento se
puede volver a llamar a esta función para volver al estado inicial.
int sec_num_vectores();
Devolver el número de vectores de estado que hay en la secuencia.
1. Menú. En esta parte se encuentra el menu File y una pantalla para mostrar información al
usuario.
3. Vector de estado físico: Establecer un vector de estado que deben cumplir los servos
Menu
Movimiento
de los
servos
Vector de
estado
fisico
Control
de
secuencias
General
Menu desplegable
10.5.2. Menú
Los diferentes elementos de esta parte del interfaz se presentan en la figura 10.6. Son:
◦ New: Crear una secuencia nueva. Se establece el nombre noname.f4 por defecto.
◦ Open: Abrir una secuencia nueva y cargarla en memoria.
◦ Save: Grabar la secuencia actual, con el nombre asignado.
◦ Save as: Grabar la secuencia con un nombre nuevo.
◦ Quit: Salir del programa.
La extensión por defecto para los ficheros de secuencias es .f4, haciéndose referencia a que
los vectores de estado que se están manejando tienen 4 componentes y están pensados para
los servos Futaba.
Botones de inicializacion
Tiempos
Figura 10.8: Parte del interfaz relacionada con los vectores de estado físicos
Esta parte del interfaz es la más “vistosa” porque resulta curioso el ver moverse los servos al
actuar sobre las barras de desplazamiento. También es una forma de llevar el gusano a un estado
extraño, adoptando formas diferentes y viendo qué estados son inestables.
Secuencias
Vector de estado: Aquí se introduce el estado para cada servo, especificándolo en grados.
Se queda introducido, pero no se hace nada con él. Para enviárselo al gusano hay que pulsar
el botón de OK.
Botones:
◦ Boton de OK: Se utiliza para enviar el vector de estado actual al gusano físico.
◦ Botón Leer: Se lee el vector de estado de las barras de desplazamiento y se visualiza.
Tiempos.
Nombre del fichero actual, con el que estamos trabajando. En caso de no haber definido
ninguno, se toma por defecto noname.f4, en el directorio desde donde se haya ejecutado la
aplicación.
Botones
Barra de progreso
◦ La barra de desplazamiento nos permite navegar por los vectores que componen la
secuencia: ir hacia adelante, hacia atras, etc. Cada vez que se cambia la posición de
esta barra, se actualizan las barras de desplazamiento que indican la posición de los
servos de acuerdo con el nuevo vector y se envían al gusano físico.
◦ Número de vector actual: Indica el vector de estado en el que nos encontramos.
◦ Botón de inicio: Permite ir directamente al vector de estado 0.
Grupo de botones:
10.5.6. General
Esta parte del interfaz está formada por (figura 10.10)
Barra de progreso: Indica el estado de carga del programa servidor para el micro maestro
de la red.
Botones:
1. Alimentar la electrónica con las pilas y los servos mediante una fuente externa.
4. Apretar el botón de play para una reproducción continua o el de play # para sólo una vez.
5. Volver al paso 2.
Mediante la barra de desplazamiento de las secuencias se puede navegar por los diferentes esta-
dos, insertando nuevas posiciones o cambiando los datos.
CAPÍTULO 10. SOFTWARE: GUSANO FÍSICO 191
10.6. Resumen
Para controlar el gusano físico es necesario un software que envíe la información sobre la
posición de los servos a la red de microcontroladores. Esta información la puede introducir direc-
tamente el usuario, mediante un interfaz amigable, para hacer calibraciones o generar secuencias
de movimiento manuales. Las secuencias también se pueden cargar desde un fichero externo,
generado por la aplicación cube-virtual.
Para la reproducción de las secuencias hay que tener en cuenta dos parámetros muy impor-
tantes, el tiempo de tránsito y el tiempo de espera. El tiempo de espera lo define el usuario, y
nos está indicando el tiempo que queremos que el gusano permanezca en un estado determinado.
El tiempo de tránsito depende del servo y mide el tiempo que tardan los sevos en posicionarse
en un nuevo estado. Este parámetro es estadístico y hay que estimarlo a partir de la constante de
tiempo del servo y de la distancia entre los vectores de estado físicos. Existe un compromiso
entre continuidad del movimiento y exactitud en las posiciones. El diseñador debe seleccionar el
valor de la constante de tiempo estimada que más se ajuste a su aplicación.
El programa cube-fisico dispone de un interfaz muy sencillo que permite cargar, generar,
reproducir y manipular las secuencias que se envían al gusano físico.
Capítulo 11
11.1. Conclusiones
En este apartado analizaremos todo lo que se ha conseguido en relación con los objetivos
planteados inicialmente, que fueron:
Este proyecto nació como un reto personal del autor. Junto con mis compañeros de Microbótica 1 ,
desarrollamos una electrónica y mecánica que nos permitió construir microbots móviles y con
patas. Sin embargo no se tenía experiencia en el campo de los ápodos, o robots sin patas.
Para comprobar la viabilidad del proyecto, se desarrolló un primer prototipo, Cube-1.0, con 4
articulaciones y la electrónica necesaria. Se implementó un software para reproducir una secuen-
cia generada manualmente, que hacía que el gusano se desplazase. Primer objetivo cumplido.
Se empezó a estudiar la manera de generar las secuencias automáticamente, obteniéndose una
primera versión del algoritmo de ajuste, que permite que el gusano adopte la forma de cualquier
función. Desplazando esta función, conocida como función de contorno, y ajustando el gusano a
ella, se conseguía obtener los diferentes estados que permitían que el gusano avanzace. Segundo
objetivo cumplido. Se implementó en un software que calculaba las secuencias y las enviaba al
gusano. Tercer objetivo cumplido.
1
Más conocidos en la ETSI telecomunicación de la UPM como Grupo J&J: Andrés, Juanjo, Cristina y Juan.
192
CAPÍTULO 11. CONCLUSIONES Y LÍNEAS FUTURAS 193
Finalmente se realizó un estudio sobre los mecanismos de giro. Cuarto y último objetivo
cumplido.
En la versión final de este proyecto, los objetivos no sólo se han cumplido sino que se han
generado unos resultados intermedios que abren unas líneas de trabajo muy interesantes en
el campo de los ápodos:
1. La estructura mecánica de Cube-1.0 era muy artesanal y estaba orientada sólo a un gu-
sano de 4 articulaciones. Este prototipo se modificó para obtener un diseño modular, que
permitiese construir gusanos de cualquier longitud, utilizando muy pocas piezas diferentes,
sencillas de realizar y muy económicas. El prototipo final, Cube-2.0, tiene 4 articulacio-
nes, las mismas que Cube-1.0, sin embargo el no tener más articulaciones es ahora una
cuestión puramente económica: sólo hay que comprar más servos y clonar las piezas ya
existentes. No hay que rediseñar la estructura, aunque sí hay que modificar el interfaz de
usuario del software.
1. Un gusano físico, de cuatro articulaciones, que se desplaza en línea recta y que es total-
mente ampliable, tanto a nivel mecánico como a nivel electrónico (ver figura 11.1).
2. Un software que permite controlar los servos desde el PC, generando secuencias manuales,
que se pueden grabar en ficheros y cargarlas para su posterior reproducción(ver figura
11.2).
El movimiento de avance logrado, calculado con el gusano virtual y ejecutado por el gusano
físico, es muy bueno. Se pueden ver perfectamente las ondas que lo recorren y cómo va avanzan-
do sin apenas arrastrarse, lo que le permite desplazarse por cualquier tipo de superficie. Puede
superar obstáculos que no sean de demasiada altura y subir por superficies inclinadas.
CAPÍTULO 11. CONCLUSIONES Y LÍNEAS FUTURAS 195
1. Mecánica: Desarrollar una estructura modulable para los gusanos tridimensionales. Los
módulos básicos deben ser sencillos e iguales, constituidos por dos servos que permitan
la orientación del módulo en cualquier dirección del espacio. La misma electrónica desa-
rrollada sirve para estos módulos. En la nasa están trabajando en este tipo de estructuras
[18].
2. Electrónica: Dotar al nodo maestro de mayor potencia de cálculo para que no haga fal-
ta disponer de un PC para el movimiento del gusano físico. Para este propósito pueden
utilizarse placas microcontroladores con Linux empotrado, que además permiten adaptar
casi directamente el software desarrollado en el PC al propio sistema empotrado. Para más
información consultar [32].
3. Software:
4. Nivel teórico: Hacer un estudio para que el gusano tridimensional puede seguir trayec-
torias no sólo en el plano xy, sino también en un espacio tridimensional, realizando tra-
yectorias más complejas como por ejemplo helicoidales que le permitan trepar o avanzar
por cilindros de un diámetro determinado.
El trabajar con sistemas empotrados con un sistema operativo dentro es fundamental para desa-
rrollar robots autónomos complejos donde la coordinación de los servos no es trivial y se necesita
un software más potente que genere las secuencias.
El construir un gusano tridimensional es muy útil no sólo en el campo de los ápodos. En
realidad se trata de un “segmento orientable” que puede tener muchas otras aplicaciones como
por ejemplo introducir una cámara en rincones poco accesibles o construir robots con miembros
de este tipo, como pulpos o calamares. En ellos los miembros no sólo sirven para desplazarse
sino para otras funciones: reconocimiento del terreno, arragarse a objetos, trepar, etc.
Este proyecto pretende dejar establecidas las bases para trabajar con este tipo de robots,
partiendo de uno más simple y que se ha implementado con éxito.
Apéndice A
4 carcasas del servo, con sus correspondientes engranajes 1 . Estas piezas, junto con los
servos permiten contruir una articulación con doble eje.
◦ 8 de 4.6cm, para la unión de los servos con las carcasas del doble eje.
◦ 8 de 7.5cm, para la unión del cuerpo de servo con el resto de piezas.
◦ 2 varillas de 9.5cm para unir un servo con la pieza de la cabeza.
◦ 6 de tipo A.
◦ 2 de tipo B.
◦ 2 de tipo C.
◦ 1 base de la cola.
◦ 1 base de la cabeza.
◦ 1 base para la tarjeta CT6811.
◦ 1 base para la tarjeta BT6811.
198
APÉNDICE A. LISTADO DE PIEZAS Y MATERIALES DE CUBE-2.0 199
50cm de velcro adhesido, para unir los servos a las almohadillas y las tarjetas BT6811 y
CT6811 a la estructura mecánica.
Características de Cube-2.0
Todas las medidas se han realizado sobre el prototipo final, con toda la electrónica y pilas
acopladas.
Dimensiones en estado de reposo:
◦ Longitud: 38cm
◦ Anchura: 7.5cm
◦ Altura: 6cm
Peso: 700gr
Alimentación:
◦ Electrónica: 4.5-6v
◦ Servos: 5-6v
Consumo:
◦ Electrónica: 40mA
◦ Servos: 800mA
200
Apéndice C
PORTA EQU $0
PORTB EQU $04
PORTC EQU $03
DDRC EQU $07
inicio
201
APÉNDICE C. PROGRAMAS PARA EL 68HC11 202
LDAA #$3C
STAA DDRD,X * El SPI configura las salidas automáticamente
main
JSR leer_car * leo carácter por el puerto serie
JSR enviar_spi * mando la orden a la BT6811
BRA main
*.................................
*. Rutina que recibe un caracter .
*. por el puerto serie .
*.................................
leer_car
BRCLR SCSR,X $20 leer_car
LDAA SCDR,X
RTS
*.................................
*. Rutina que envia un caracter .
*. por el puerto serie .
*.................................
enviar_car
BRCLR SCSR,X $80 enviar_car
STAA SCDR,X
RTS
*.......................................
APÉNDICE C. PROGRAMAS PARA EL 68HC11 203
enviar_spi_pausa
PSHY * pausa entre datos
LDY #$18 * valor de 150 microseg
pausa DEY
CPY #$0
BNE pausa
PULY
enviar_spi
LDAB PORTD,X
ANDB #$DF
STAB PORTD,X * Mandamos activarse al esclavo
LDAB PORTD,X
ORB #$20
STAB PORTD,X * Desactivamos al esclavo
RTS
*.........................
*. Rutina de pausa .
*.........................
esperar
PSHY
LDY #$C400
sigue DEY
CPY #$0
BNE sigue
PULY
RTS
END
APÉNDICE C. PROGRAMAS PARA EL 68HC11 204
*...........................................................................
* . FUTABA. Version 1.0 .
* ..........................................................................
* . Programa para la gestion de 4 servomecanismos Futaba S3003 .
* ..........................................................................
**************************************************
* Identificador del módulo esclavo *
**************************************************
***********************************************************************
* Registros y Puertos del 68hc11 *
***********************************************************************
***********************************************************************
* Constantes del programa *
***********************************************************************
APÉNDICE C. PROGRAMAS PARA EL 68HC11 205
***********************************************************************
* Máscaras de acceso *
***********************************************************************
***********************************************************************
* Variables del programa *
***********************************************************************
ORG $0
posi1 RMB 2
posi2 RMB 2
posi3 RMB 2
posi4 RMB 2
salidas RMB 1 ; máscara que indica las salidas hardware activas
**********************************************************************
* ------------------------------------------------------------------ *
* | PROGRAMA PRINCIPAL | *
* ------------------------------------------------------------------ *
**********************************************************************
***********************************************************************
* Inicialización del programa *
***********************************************************************
inicializar
LDS #$FF ; inicializo el puntero de pila
LDX #$1000 ; para acceder a los registros de control internos
APÉNDICE C. PROGRAMAS PARA EL 68HC11 206
LDAA #$FF
STAA DDRC,X
CLRA
STAA TCTL1,X ; Comparadores sin salida hardware
LDAA #OC1 ; Activo el comparador 1
STAA TMSK1,X
LDD #2000
STD posi1
STD posi2
STD posi3
STD posi4
LDAA #$FF ; @@
STAA PORTB,X ; @@
*************************************************************************
* BUCLE PRINCIPAL *
*************************************************************************
inicio
BSR recibir_spi
CMPA #M_ES ; verifica que la trama sea para él
BEQ analizar
BSR recibir_spi
BSR recibir_spi
BSR recibir_spi
BRA inicio
analizar BSR recibir_spi ; leo dos carácteres por el puerto serie SPI
CMPA #’l’
APÉNDICE C. PROGRAMAS PARA EL 68HC11 207
BEQ cambia_led
CMPA #’e’
BEQ servicio_activa
CMPA #’p’
BEQ servicio_posicionar
CMPA #’c’
BEQ salida_puertoc
BRA inicio
*************************************************************************
* SUBRUTINAS DEL PROGRAMA *
*************************************************************************
* ...........................................................
* . Rutina que cambia el estado del LED .
* ...........................................................
cambia_led
BSR recibir_spi
BSR recibir_spi
LDAB PORTB,X
EORB #$10
STAB PORTB,X
BRA inicio
* ...........................................................
* . Rutina que activa o desactiva los motores .
* ...........................................................
servicio_activa
BSR recibir_spi
STAA salidas
BSR recibir_spi
BRA inicio
* ...........................................................
* . Rutina que envia un byte al puerto de salida C .
* ...........................................................
salida_puertoc
BSR recibir_spi
STAA PORTC,X
BSR recibir_spi
BRA inicio
* ...........................................................
* . Servicio posicionar motor .
* ...........................................................
servicio_posicionar
APÉNDICE C. PROGRAMAS PARA EL 68HC11 208
* ...........................................................
* . Rutina que recibe un dato por el SPI .
* . La rutina espera hasta recibir el dato .
* . Entradas: Ninguna .
* . Salidas: El acumulador A contiene el dato .
* ...........................................................
recibir_spi
espera BRCLR SPSR,X $80 espera ; espero que el dato se haya recibido
LDAA SPDR,X
RTS
******************************************************************
* Rutinas de interrupcion de los COMPARADORES *
******************************************************************
* .........................................................
* . Comparador 1: Establece el principio de los pulsos .
* .........................................................
* . Podemos poner BSET porque las interrupciones de los .
* . otros comparadores estan desactivadas. En caso .
* . contrario habría que utilizar load y store. .
* .........................................................
int_oc1
BSET TFLG1,X OC1 ; Poner a cero el flag de interrupción
LDAA PORTB,X
ORA salidas
ANDA #$18 ; Si salida 4 habilitada ponerla a
STAA PORTB,X ; nivel alto
LDD TCNT,X ; Actualizar comparador 5 (FUTABA 4)
ADDD posi4 ; Establecer tiempo anchura del pulso
STD TOC5,X
LDAA PORTB,X
ORA salidas
ANDA #$1C ; Si salida 3 habilitada ponerla a
STAA PORTB,X ; nivel alto
LDD TCNT,X ; Actualizar comparador 4 (FUTABA 3)
ADDD posi3 ; Establecer tiempo anchura del pulso
STD TOC4,X
LDAA PORTB,X
ORA salidas
ANDA #$1E ; Si salida 2 habilitada ponerla a
STAA PORTB,X ; nivel alto
LDD TCNT,X ; Actualizar comparador 3 (FUTABA 2)
ADDD posi2 ; Establecer tiempo anchura del pulso
STD TOC3,X
LDAA PORTB,X
ORA salidas
ANDA #$1F ; Si salida 1 habilitada ponerla a
STAA PORTB,X ; nivel alto
LDD TCNT,X ; Actualizar comparador 2 (FUTABA 1)
ADDD posi1 ; Establecer tiempo anchura del pulso
STD TOC2,X
RTI
* .....................................................................
* . ¡OJO¡ No podemos poner BSET porque podria desactivar las otras .
* . interrupciones de los comparadores antes de ser atendidas .
* .....................................................................
* . Rutina de servicio de interrupcion del COMPARADOR 2 .
* . POSICION DEL FUTABA 1 .
* ................................................................
int_oc2
LDAA #OC2 ; pongo a cero el flag de interrupción
STAA TFLG1,X
APÉNDICE C. PROGRAMAS PARA EL 68HC11 210
* ................................................................
* . Rutina de servicio de interrupcion del COMPARADOR 3 .
* . POSICION DEL FUTABA 2 .
* ................................................................
int_oc3
LDAA #OC3 ; pongo a cero el flag de interrupción
STAA TFLG1,X
* ................................................................
* . Rutina de servicio de interrupcion del COMPARADOR 4 .
* . POSICION DEL FUTABA 3 .
* ................................................................
int_oc4
LDAA #OC4 ; pongo a cero el flag de interrupción
STAA TFLG1,X
* ................................................................
* . Rutina de servicio de interrupcion del COMPARADOR 5 .
* . POSICION DEL FUTABA 4 .
* ................................................................
int_oc5
LDAA #OC5 ; pongo a cero el flag de interrupción
STAA TFLG1,X
***************************************************************************
* Inicializacion de los vectores de interrupcion *
***************************************************************************
END
Apéndice D
Álbum de fotos
CUBE-1.0
Foto 1: Cube-1.0 sobre una mesa Foto 2: Cube 1.0 desplazandose sobre el suelo
Foto 3: Cube 1.0 desplazandose por otra superficie Foto 4: Cube 1.0 junto a la hormiga
212
APÉNDICE D. ÁLBUM DE FOTOS 213
Foto 8: Cube 2.0 visto desde el otro lado Foto 9: Estructura mecanica de Cube 2.0
Foto 10: Detalle de la estructura mecanica Foto 11: Estructura y electronica de cube 2.0
APÉNDICE D. ÁLBUM DE FOTOS 214
Foto 14: Cube quiere jugar con Curro Foto 15: Cube sobrepasa a Curro, sin que se inmute
Foto 16: Comparacion entre Cube y el rabo de Curro Foto 17: Curro olfateando a Cube. ¡Que bicho tan raro!
Bibliografía
215
BIBLIOGRAFÍA 216
[17] UIUC Hexapod Project. Beckman institute for Advanced Science and
Technology. University of Illinois at Urbana-Champaign [en línea].
http://soma.npa.uiuc.edu/labs/nelson/hexapod.html. [Consulta: 9 mar. 2001].
[19] Empresa Microbótica, S.L [en línea]. http://www.microbotica.es. [Consulta: 5 sep. 2000].
[23] Dr. Gavin Miller [en línea]. http://snakerobots.com. [Consulta: 10 mar. 2001].
[25] Página índice con muchos enlaces a proyectos de serpientes robóticas [en línea].
http://ais.gmd.de/~worst/snake-collection.html. [Consulta: 8 ene. 2001].
[27] “Física general 1”. José M. de Juana. Ed. Alhambra Universidad. 1990.
[28] “Mobile Robots. Inspiration to implementation”. Joseph L. Jones. Bruce A. Seiger. Anita
M.Flynn. Ed. A.K Peters. 1999.
[29] “Desarrollo de aplicaciones Linux con GTK+ y GDK”. Eric Harlow. Prentice-Hall. 1999.
[31] “Unix, programación avanzada”. Fco. Manuel Márquez. Ed. Ra-ma. 1996.
[33] “Control de sistema empotrado basado en uClinux a través de http: desarrollo de servidor
web e interfaces gráficas”. Borrador de PFC de Da . Cristina Doblado Alcázar. ETSIT. UPM.
2001.