SIMULACI ´
ON Y ANIMACI ´
ON
BIOMEC ´
ANICA
DE UN HUMANOIDE
Alumnos:
Enzo Altamiranda Graterol
[email protected]
Teresa Fontanella De Santis
[email protected]
Tom´
as Mehdi
[email protected]
Tutor:
Dr. Daniel Ricardo Parisi
Instituto Tecnol´ogico de Buenos Aires - ITBA
Departamento de Ingenier´ıa Inform´atica
1 Introducci´on 4
2 Herramientas 5
2.1 Motor f´ısico . . . 5
2.1.1 Funcionamiento . . . 5
2.1.2 Modelo de fricci´on y su verificaci´on . . . 5
2.1.2.1 Verificaci´on del coeficiente de fricci´on . . . 6
2.1.2.2 Verificaci´on del coeficiente de restituci´on . . . 10
2.1.3 Ventajas . . . 11
2.1.4 Desventajas . . . 11
2.2 Librer´ıa de algoritmos gen´eticos . . . 12
2.3 C´odigo fuente . . . 12
3 Modelo utilizado 12 3.1 Composici´on f´ısica del humanoide . . . 12
3.2 Articulaciones . . . 13
4 Actuadores 14 4.1 Gen´erico . . . 14
4.2 Coseno doble frecuencia . . . 15
4.3 Fourier de orden 2 . . . 16
4.4 Fourier de orden 9 . . . 16
5 Condiciones iniciales y de contorno 17 5.1 Funci´on partida . . . 17
5.2 Fase sincronizada . . . 17
6 Algoritmo gen´etico 17 6.1 Individuo . . . 18
6.1.1 Par´ametros . . . 18
6.1.2 Valores . . . 18
6.1.3 Implementaci´on de individuos . . . 19
6.1.4 Constituci´on del cromosoma . . . 19
6.2 Fitness . . . 20
6.2.1 Altura . . . 20
6.2.2 Velocidad . . . 21
6.2.3 Direcci´on . . . 21
6.2.4 Simetr´ıa . . . 21
6.2.5 Pies abajo . . . 22
6.3 Operadores del algoritmo . . . 22
6.3.1 M´etodos de selecci´on . . . 22
6.3.2 M´etodos de cruza . . . 22
6.3.4 Otras caracter´ısticas . . . 23
7 Resultados obtenidos 23 7.1 Evoluci´on delfitness promedio seg´un tipo de individuos . . . 24
7.2 Velocidad seg´un tipo de individuos . . . 24
7.3 Altura seg´un tipo de individuos . . . 25
7.4 Comparaci´on de tipo de individuos . . . 25
7.5 Videos . . . 26
8 Conclusiones 26
Referencias 27
Resumen
Este proyecto tiene como objetivo crear una simulaci´on y animaci´on de un humano
virtual, con las siguientes propiedades:
− Biomec´anica: que tanto su estructura (peso, altura y posici´on de cada una de sus partes) como su interacci´on con el entorno, respondan a comportamientos f´ısicos reales y exactos.
− Inteligencia artificial: que aprenda a caminar por s´ı mismo, utilizando para ello
m´etodos desoft computingcomo algoritmos gen´eticos.
1.
Introducci´
on
Siempre ha sido de inter´es la simulaci´on biomec´anica de seres vivos, especialmente en las
ciencias naturales (zoolog´ıa, medicina, etc.).
Ahora bien, ´ultimamente se ha incrementado el inter´es en otras ´areas de aplicaci´on, como los
videojuegos (creaci´on de personajes con reacciones m´as reales), y la ingenier´ıa (verbigracia: dise˜no
de espacios cerrados, con mayores medidas de seguridad).
Una caracter´ıstica muy importante de este proyecto es que el humanoide no es producto de
una animaci´on realizada por un artesano, que mueve cada uno de los segmentos manualmente,
repitiendo este trabajo cada vez que cambia su fisonom´ıa; sino un objeto compuesto de segmentos
f´ısicos, que interaccionan entre s´ı y con el entorno por medio de las leyes f´ısicas; agregando as´ı
realismo a la situaci´on simulada. La otra propiedad es que el b´ıpedo aprenda por s´ı solo a caminar
en l´ınea recta, sin tener en su trayectoria ning´un obst´aculo, de la misma manera que lo har´ıa un
ser humano en la realidad.
Este problema se puede abordar de diversas maneras. Existen varios trabajos al respecto, algunos
de los cuales sirvieron como base para realizar el presente informe. Por ejemplo, en el paper de
Marek Wojtyra[1] se usa un sistema de control para mantener el equilibrio de la parte superior
del humanoide (passive walkers).
En el trabajo realizado por Thomas Geijtenbeek y otros [2], se utilizan algoritmos gen´eticos para
seleccionar la anatom´ıa de b´ıpedos de cualquier forma (considerando m´usculos con distintos
materiales).
Asimismo, existe un trabajo previo de Kevin Kenny y otros [3], tambi´en empleando algoritmos
gen´eticos, para crear un maniqu´ı de un cuadr´upedo virtual y dotarlo de los mecanismos para que
aprenda a caminar por su propia cuenta.
Continuando con esta ´ultima l´ınea de investigaci´on y extendi´endola a b´ıpedos, en este proyecto
tambi´en se busc´o aplicar algoritmos gen´eticos, y lograr la caminata usando un modelo de humano
virtual basado en un conjunto de segmentos (cuerpos r´ıgidos), unidos entre s´ı por articulaciones,
cuyo desplazamiento depende de torques aplicados a dichos cuerpos, y sus par´ametros se ajustan
a partir de la evoluci´on del algoritmo.
El presente informe, describe y analiza pormenorizadamente: en la secci´on 2, las herramientas
aplicadas; en la 3, el modelo del humanoide utilizado; en la 4 y 5, los diferentes tipos de actuadores
y funciones de partida y contorno; en la 6, el algoritmo gen´etico; y en la 7 y 8, los resultados
2.
Herramientas
2.1.
Motor f´ısico
Se llama motor f´ısico o physics engine a un “software capaz de realizar simulaciones de
ciertos sistemas f´ısicos, como la din´amica del cuerpo r´ıgido, el movimiento de un fluido y la
elasticidad”[4].
Actualmente, existen muchos motores f´ısicos: ya sea de c´odigo propietario (PhysX,Havok), como
open-source (Bullet Physics,Box2D,Newton,OGRE). Considerando an´alisis relacionados [5][6],
y el hecho de que el espacio simulado fuese en 3D, se decidi´o que Bullet Physics[7] es el m´as
id´oneo. Est´a implementado en C++ y ha sido utilizado en varios juegos (Grand Theft Auto IV
yV, etc); en los efectos especiales de pel´ıculas (Hancock,Bolt, etc.); y proyectos cient´ıficos, como
la herramientaopen-source Tensegrity Robotics Toolkit de la NASA1; entre otros.
Si bien (como se ver´a m´as adelante)Bullettiene problemas asociados con el coeficiente de
restitu-ci´on, posee una muy buenaperformanceen la detecci´on de colisiones, la din´amica y la resoluci´on
deconstraints. Esto se debe, en parte, a diferentes algoritmos iterativos de orden lineal (donde
el m´as importante esSequential Impulse), decaching y tambi´en a la utilizaci´on de un modelo
de fricci´on de Coulomb aproximado [8]. Adem´as, el motor f´ısico brinda la posibilidad de regular
la precisi´on requerida en estos c´alculos (sin olvidar que, con iguales recursos, a mayor
preci-si´on, mayor capacidad de c´omputo requerida y, ergo, mayor tiempo). Dado que la construcci´on
del humanoide implica definir caracter´ısticas y restricciones de movimiento de cada uno de sus
segmentos, lo antes mencionado fue crucial para la elecci´on deBullet Physics en este proyecto.
2.1.1. Funcionamiento
El motor f´ısico se encarga de la simulaci´on de cuerpos r´ıgidos y la interacci´on entre los mismos.
En particular debe calcular el resultado de colisiones, arreglar el solapamiento de los cuerpos en
el espacio de simulaci´on, estimar las fuerzas producidas debido a la fricci´on, y mantener el
cumplimiento de restricciones que puedan existir entre los cuerpos (por ejemplo, un v´ınculo para
formar una articulaci´on). Para lograrlo,Bullet modela, a partir de un conjunto de ecuaciones,
las distintas restricciones que deben ser respetadas.
Estos modelos reciben como dato la velocidad lineal y angular de cada objeto, y las fuerzas
que act´uan sobre los mismos. Dada esta informaci´on, se resuelve el sistema de ecuaciones, cuya
soluci´on representa las magnitudes de las fuerzas a accionar sobre el mismo, a fin de satisfacer
todas las restricciones. Para encontrar esta soluci´on, entran en juego los distintos m´etodos de
complejidad lineal mencionados en la subsecci´on anterior.
Este procedimiento, se lleva a cabo en cadatimestep de la simulaci´on; donde un timestep es el
intervalo de tiempo que transcurre entre un c´alculo de magnitudes y otro. Mientras menor sea
eltimestep, el simulador ser´a m´as preciso pero tambi´en consumir´a m´as tiempo de c´omputo.
2.1.2. Modelo de fricci´on y su verificaci´on
Hay reglas f´ısicas relacionadas con el entorno y que son muy importantes para la caminata:
el modelo de fricci´on, con sus respectivos coeficientes de fricci´on y restituci´on.
En base a los modelos f´ısico-matem´aticos que representan a cada uno de los dos fen´omenos en
cuesti´on (y que se explicar´an a continuaci´on), y pensando en posibles futuras simulaciones de
varios humanoides chocando e interactuando entre s´ı; se llevaron a cabo dos ensayos para verificar
el funcionamiento del simulador f´ısicoBullet.
2.1.2.1. Verificaci´on del coeficiente de fricci´on
Para determinar el modelo utilizado porBullet para simular las fuerzas resultantes sobre un
cuerpo por acci´on de la fricci´on, se simul´o un cubo, demcube = 1kg ylcube= 1m, que tiene una
velocidad inicial constante (vi) en el eje horizontal, que gradualmente se detiene por acci´on de
la fricci´on, hasta llegar al reposo (Fig. 1).
Figura 1: Visualizaci´on del sistema del cubo
Para esta prueba se utiliz´o el modelo matem´atico que representa la posici´on del cuerpo en el eje
horizontal en funci´on del tiempot, representado por la siguiente ecuaci´on:
x(t) =xi+vit+
1 2at
2 (1)
En este caso, el cuerpo empieza su movimiento en el origen, por lo tanto la posici´on inicial (xi)
es cero. vi es la velocidad inicial, y a, la aceleraci´on. Debido a la fricci´on entre el cuerpo y el
suelo, se genera una fuerza de rozamientoFµd
2 (ec. (2)) en la misma direcci´on que la velocidad
del s´olido y en sentido contrario.
−Fµd=µdFN (2)
dondeFN =mges la fuerza normal que act´ua sobre la caja de masampor acci´on de la gravedad
g= 10ms, yµd es el coeficiente de fricci´on din´amico.
Finalmente, se obtiene la aceleraci´on:
a= Fµd
m =
−µdFN
m =
−µdmg
m =−µdmg (3)
Considerando las ec. (1) y (3), se puede obtener el modelo matem´atico que predice el movimiento
de la caja:
x(t) =xi+vit−
1 2µdgt
2 (4)
El intervalo de tiempo f´ısico (o timestep) utilizado es ∆t = 601s. El timestep de animaci´on (es decir, cada cu´anto tiempo se guardan en un archivo los datos logrados) es ∆t0=0.1 y el tiempo
de simulaci´on es des= 100∆t.
Seguidamente, se muestran los gr´aficos obtenidos al correr los experimentos num´ericos con los
siguientes valores:vi ={1, 3 y 10}ms yµd={0.25, 0.50 y 0.75}. Se compara la distancia en el
eje Z de la caja en Bullet, con su distancia en el mismo eje seg´un la ec. (4).
(a)
(b)
(c)
Figura 2: Resultados logrados de simular el sistema descripto en Fig. 1, usandovi= 10ms y:
(a)
(b)
(c)
Figura 3: Resultados logrados de simular el sistema descripto en Fig. 1, usando vi= 3ms y:
(a)
(b)
(c)
Figura 4: Resultados logrados de simular el sistema descripto en Fig. 1, usando vi= 1ms y:
(a)µd =0.25, (b)µd=0.50, y (c)µd=0.75
Las Fig. 2 y 3 demuestran que los resultados de las pruebas fueron favorables. Los valores
obtenidos a partir de la simulaci´on se corresponden (en mayor o menor medida) con los alcanzados
modelos para ejecutar las simulaciones. Vale observar que, cuanto mayor es la velocidad inicial
(vi), mayor es la similitud entre los dos casos.
No obstante, los gr´aficos que corresponden a la Fig. 4, presentan una discrepancia mayor entre
la simulaci´on y el modelo. Este hecho puede deberse al mecanismo utilizado por Bullet para
resolver la fricci´on de un cuerpo a velocidades muy bajas.
2.1.2.2. Verificaci´on del coeficiente de restituci´on
El segundo ensayo simula una esfera a una altura determinada sobre el suelo, que tiene una
velocidad inicial (vi) en el eje perpendicular al piso, y que eventualmente colisiona contra el
mismo. Se desea comprobar que, la colisi´on entre el cuerpo y el suelo respete que la velocidad
final (vf) de la esfera despu´es del choque, sea proporcional a su coeficiente de restituci´on (e)
dado por la ecuaci´on:
e=vf
vi
(5)
Para efectuar la colisi´on con el suelo, se emple´o una esfera s´olida ubicada a 4 metros del suelo,
cuya masa y radio sonmsphere= 1kg yrsphere= 1m, respectivamente (Fig. 5). A la esfera se
le asigna, adem´as, un coeficiente de restituci´on determinado.
Se eligi´o un ambiente sin gravedad (g = 0ms2). De esta forma, se podr´a tener en cuenta s´olo la
velocidad inicial (vi) y la velocidad final (vf) para el c´alculo del coeficiente de restituci´on (e)
(ver ec. (5)).
El intervalo de tiempo f´ısico (otimestep) utilizado es ∆t=0.001s. Eltimestep de animaci´on (es
decir, cada cu´anto tiempo se guardan en un archivo los datos logrados) es ∆t0=0.1 y el tiempo
de simulaci´on es des= 100∆t. El coeficiente de fricci´on esµ=0.75.
Figura 5: Visualizaci´on del sistema de la esfera
El ensayo tiene como par´ametros de entrada:vi (velocidad inicial) yesim (coeficiente de
restitu-ci´on esperado). Por otro lado, se obtienevf (velocidad de la esfera al finalizar la simulaci´on); y
luego se calculanemedida (coeficiente de restituci´on obtenido a partir de la ec. (5)) yrel, que es
el error relativo entre los coeficientesesim yemedida, calculado de la siguiente manera:
rel=
esim−emedida
esim
(6)
En la Tabla 1 se puede observar lo arrojado por los experimentos num´ericos que se efectuaron;
vi esim vf emedida rel
-0.5 ms
0.2 0.000249 m
s 0.000498 0.997
0.5 0.000219 ms 0.000438 0.999
0.8 0.001037 m
s 0.002074 0.997
-3.5 ms
0.2 0.000057 m
s 0 1
0.5 0.000018 ms 0 1
0.8 0.3 ms 0.0857 0.893
-4 ms
0.2 0.000473 ms 0.00012 1
0.5 0.000424 ms 0.00011 1
0.8 1.23 ms 0.3 0.625
-5 m s
0.2 1 ms 0.2 0
0.5 2.5 m
s 0.5 0
0.8 4 ms 0.8 0
-10 ms
0.2 2 ms 0.2 0
0.5 5 ms 0.5 0
0.8 8 ms 0.8 0
Tabla 1: Coeficientes de restituci´on obtenidos (emedida) de simular el sistema descripto en Fig. 5
Los resultados exponen una limitaci´on del motor f´ısico: no representa correctamente las colisiones
el´asticas entre esferas y cuerpos r´ıgidos, que ocurren a velocidades bajas. Esto queda en evidencia
en la Tabla 1. En cada una de ellas el error fue de casi 1. La raz´on por la que ocurre este hecho
se debe a queBulletutiliza un algoritmo de colisi´on que frena la velocidad de un objeto que est´a
a punto de colisionar. Haciendo esto puede evitar que los s´olidos se traspasen y de esta forma se
pueden realizar c´alculos de fuerza m´as precisos.
En el caso de los ensayos, las esferas poseen una velocidad muy baja, cuando est´an a punto de
colisionarBullet reduce a´un m´as esta velocidad y eventualmente quedan con una velocidad tan
baja que al chocar contra el suelo se aplica el efecto restitutivo a esta velocidad casi nula y se
resuelve que la esfera debe quedar en reposo, cuando en realidad deber´ıa poseer una velocidad
baja, pero no despreciable.
2.1.3. Ventajas
Las ventajas del motor f´ısico son:
− C´odigo abierto: mayor conocimiento sobre las f´ormulas y m´etodos implementados en el motor.
− Soporte de la comunidad cient´ıfica.
− Licencia libre.
2.1.4. Desventajas
Como toda herramienta, Bullet tiene aspectos negativos, entre los que se encuentran:
− Documentaci´on poco clara y desordenada.
− Utilizar una librer´ıa gr´afica comoOpenGLacoplada a una simulaci´on de Bullet, puede
pro-ducir resultados distintos, que si se usa un programa de visualizaci´on externo como OVITO.
2.2.
Librer´ıa de algoritmos gen´
eticos
Se utiliz´o la conocida librer´ıa de algoritmos gen´eticos para C++ GaLib, desarrollada por
Matthew Wall del MIT [9].
Ofrece funcionalidades como: programaci´on paralela, diversos m´etodos de selecci´on (elite,
rou-lette), estrategias de reemplazo (de padres, aleatorio, del peor), entre otras.
Cabe aclarar que, antes de optar por GaLib, se hab´ıa adoptado la librer´ıa de algoritmos gen´eticos
de Mladen Jankovic, pero finalmente fue descartada, debido a errores obugs en la misma (y que,
cada vez, resultaban ser m´as inmanejables).
2.3.
C´
odigo fuente
Al estar Bullet implementado en C++, el c´odigo fuente tambi´en est´a desarrollado en ese
lenguaje. EnBullet, se define unWorld (o mundo f´ısico) en donde se puede insertar, entre otras
cosas, cuerpos r´ıgidos. En este caso en particular, el mundo consta de un plano (el suelo), y el
b´ıpedo (compuesto por cuerpos r´ıgidos y otros elementos f´ısicos) ubicado sobre ´el.
El software creado incluye: construcci´on del humanoide, siendo ´este capaz de desplazarse por
medio de actuadores (que se ver´an en la Secci´on 4); el desarrollo del algoritmo gen´etico (definici´on
de los individuos, funci´on de fitness, m´etodos de selecci´on, etc.); visualizaci´on gr´afica del mejor
humanoide logrado por el algoritmo gen´etico; y la posibilidad de realizar gr´aficos referidos a la
evoluci´on del algoritmo gen´etico (fitness por cada generaci´on, etc.).
Se acompa˜nan a esta presentaci´on: el c´odigo fuente y el manual de instalaci´on y uso.
3.
Modelo utilizado
Dentro de los diversos modelos existentes ([1][2]), en este trabajo se procur´o utilizar uno que
fuera sencillo pero representativo a la vez.
Se modela al cuerpo del b´ıpedo, con el motorBullet Physics, como un conjunto de segmentos
unidos entre s´ı por articulaciones. A cada uno de ellos se les aplica un torque en el centro de
masa de cada segmento (denominado actuador). Que la caminata se produzca o no, depende
del tipo de actuador empleado (la funci´on utilizada para el torque), y de sus par´ametros. El
objetivo es encontrar dichos par´ametros. Para eso se usan los algoritmos gen´eticos, un m´etodo
de inteligencia artificial. De este modo se obtiene, de forma an´aloga a la selecci´on natural, los
individuos que mejor se adapten a la caminata. Tanto los actuadores como el algoritmo gen´etico
se explicar´an m´as adelante.
3.1.
Composici´
on f´ısica del humanoide
Como ya se expres´o, el humanoide fue modelado enBullet como un conjunto de segmentos
(cuerpos r´ıgidos), unidos entre s´ı por articulaciones.
Sobre la base de la anatom´ıa humana, se dividi´o el cuerpo del humano virtual en: cabeza, tronco,
miembro superior (brazo, antebrazo y mano), pelvis y miembro inferior (muslo, pierna y pie).
Figura 6: Segmentos del humanoide
En la Tabla 2 se presenta la composici´on f´ısica de cada uno de los segmentos del humano virtual,
de acuerdo a la biomec´anica [10].
Cantidad Forma Largo (en m) Masa (en kg) Uniones
Segmen
to Pelvis 1 Esf´erica 0.08655 9.9718 Cadera
Miembro inferior
Muslo 2 Esfero-cil´ındrica 0.4015 10.3368 Cadera y Rodilla Pierna 2 Esfero-cil´ındrica 0.4015 3.1609 Rodilla y Tobillo
Pie 2 Esfero-cil´ındrica - 1.0001 Tobillo
Tabla 2: Composici´on f´ısica de cada segmento del humanoide
3.2.
Articulaciones
Para unir los distintos segmentos entre s´ı, se utilizaron articulaciones bisagra con 1 grado de
libertad, en el eje X, para que los segmentos puedan moverse en dos ejes: el Z, donde ocurre la
caminata, y el Y, perpendicular al piso (Fig. 7(a) y (b)).
A su vez, para cada caso en particular, se definieron cotas para los ´angulos que pueden existir
entre los segmentos (ver Tabla 3). Esto es muy importante, no s´olo porque se adec´ua a datos
biol´ogicos, sino porque, de otro modo la caminata no podr´ıa lograrse: si los ´angulos son demasiado
altos, la caminata se produce girando las piernas por encima de la pelvis; si por el contrario, son
demasiado bajos, las piernas van a estar muy r´ıgidas, originando pocos pasos y muy cortos.
Asimismo, se le impide rotar a la pelvis, y se restringe la amplitud con la que puede moverse la
cadera (de −4π a π4). Esto se realiza porque, en caso contrario, el b´ıpedo necesitar´ıa un sistema de control para mantener el equilibrio, y eso excede el alcance de este trabajo.
(a) (b)
´
Angulo m´ınimo Angulo m´´ aximo
Articulaci´on
Cadera -π4 π4
Rodilla -π π
Tobillo 0 0
Tabla 3: Rango de valores de ´angulo de cada articulaci´on del humanoide
4.
Actuadores
A cada uno de los segmentos correspondientes al muslo y la pierna del b´ıpedo, se le aplica
un torque (o actuador) en el eje X (perpendicular a la trayectoria), como se ve en Fig 8. As´ı,
pueden moverse para arriba o para abajo (con respecto a la articulaci´on a la que pertenecen).
A fin de simplificar el modelo, el humanoide tiene el mismo tipo de actuador utilizado en todos
los segmentos.
Es necesario aclarar que la caminata producida por el humanoide es plana (en 2D). Esto se debe
a que la trayectoria pensada para el b´ıpedo es una l´ınea recta, y logrando que los segmentos se
muevan en un solo eje es suficiente para cumplir con dicha trayectoria. Tambi´en contribuye el
hecho de que el torque se aplique en una sola dimensi´on. Por otra parte, los actuadores definidos
a continuaci´on son peri´odicos, y por eso no se pueden aplicar en el eje Z de los segmentos (se
ne-cesitar´ıan actuadores reactivos, para poder detectar cuando el humanoide se est´a cayendo, etc.).
Para indicar el m´odulo de dicho torque, se dise˜naron diferentes funciones (todas ellas peri´odicas),
mencionadas en las subsecciones que siguen.
Figura 8: Aplicaci´on de los actuadores en los segmentos del b´ıpedo
4.1.
Gen´
erico
Es el actuador m´as sencillo, tanto matem´atica como computacionalmente.
f(t) =A1sin(ω1t+φ) +A2cos(ω2t+φ) +C (7)
dondef(t) es la funci´on del actuador evaluada en el instante de tiempot,A1yA2son amplitudes,
ω1 y ω2 son frecuencias (en 1s), φes la fase en radianes, yC es un t´ermino independiente (ver
Fig. 9 (a) y (b)).
La faseφes la misma en el seno y en el coseno, para evitar que se formen otro tipo de funciones
(a) (b)
Figura 9: Ejemplo de actuador gen´erico aplicado en: (a) muslo, y (b) pierna
4.2.
Coseno doble frecuencia
Basada en [3], esta funci´on peri´odica utiliza medio ciclo de una funci´on sinusoidal, y medio
ciclo de otra (ambas pueden tener frecuencias distintas). Esto podr´ıa tener sentido porque en una
caminata, un miembro inferior primero avanza hacia adelante y luego se extiende hacia atr´as, y
es razonable que esos dos movimientos se produzcan a frecuencias distintas (Fig. 10 (a) y (b)).
La idea es lograr una funci´on peri´odica a partir de una que no lo es (ya quetes lineal). Para eso,
se utiliza la funci´onψ(t) (ec. (8)) que aplica una transformaci´on a los n´umeros reales, para que
se encuentren dentro del rango del ciclo completo (con las dos frecuencias).ω es la frecuencia de
f(t) en 1
s (ec. (10)), que utiliza medio ciclo con frecuenciaω1 y medio ciclo con frecuenciaω2.
ψ(t) =t+φ−
$
t+φ π/ω1+π/ω2
%
(π/ω1+π/ω2) ψ:R→
0,2π ω
(8)
ω= 2ω1ω2
ω1+ω2
(9)
f(t) =
(
Acos(ω1ψ(t)) +C siω1ψ(t)< π
Acos(ω2(ψ(t)−(π/ω1) + (π/ω2))) +C en otro caso
(10)
(a) (b)
4.3.
Fourier de orden 2
Este actuador utiliza una serie de Fourier de dos t´erminos. Dado que origina un resultado
que, si bien es peri´odico, puede no ser de naturaleza sinusoidal, lo cual puede ser beneficioso para
realizar otro tipo de movimientos.
f(t) =A1sin(ωt+φ) +B1cos(ωt+φ) +A2sin(2ωt+φ) +B2cos(2ωt+φ) +C (11)
dondeA1,A2,B1 yB2 son amplitudes (ver Fig. 11 (a) y (b)).
(a) (b)
Figura 11: Ejemplo de actuador fourier de orden 2 aplicado en: (a) muslo, y (b) pierna
4.4.
Fourier de orden 9
Es una extensi´on del actuador anterior, pero con 9 t´erminos. Por ser de mayor grado, brinda
una mayor precisi´on. Sin embargo, es m´as dificil de manejar computacionalmente; y, adem´as, que
sea m´as preciso no garantiza que con ´el se pueda lograr una buena caminata (ver Fig. 12 (a) y (b)).
f(t) =A1sin(ωt+φ) +B1cos(ωt+φ) +A2sin(2ωt+φ) +B2cos(2ωt+φ)
+A3sin(3ωt+φ) +B3cos(3ωt+φ) +A4sin(4ωt+φ) +B4cos(4ωt+φ)
+A5sin(5ωt+φ) +B5cos(5ωt+φ) +A6sin(6ωt+φ) +B6cos(6ωt+φ)
+A7sin(7ωt+φ) +B7cos(7ωt+φ) +A8sin(8ωt+φ) +B8cos(8ωt+φ)
+A9sin(9ωt+φ) +B9cos(9ωt+φ) +C
(12)
dondeAi yBi con 1≤i≤9 son amplitudes.
(a) (b)
5.
Condiciones iniciales y de contorno
Como las funciones peri´odicas se˜naladas en los actuadores, no fueron suficientes para lograr
la caminata, se le adosaron las funciones que se detallan seguidamente.
5.1.
Funci´
on partida
La caminata se divide en dos partes bien definidas:
La primera denominada funci´on partida, es opcional y representa el primer paso dado por el
b´ıpedo. En ella, el humanoide comienza con una posici´on (las dos extremidades bien extendidas)
diferente a la que tendr´a en el resto de la caminata. Se aplican actuadores gen´ericos en cada uno
de los cuatro segmentos movibles (muslos y piernas). Para simplificar el modelo, se decidi´o que
esta etapa durara 0.7 segundos. Dicho valor fue extra´ıdo de forma experimental.
La segunda es el resto de la caminata, y debe ser c´ıclica y peri´odica (para poder eventualmente
repetirse ad infinitum). Aqu´ı se puede utilizar cualquiera de los actuadores vistos en la secci´on
anterior, pero solo un tipo de ellos es aplicado a los segmentos.
5.2.
Fase sincronizada
En una caminata, las piernas deben guardar simetr´ıa: mientras una va hacia adelante, la otra
va hacia atr´as (y viceversa). Esto, de acuerdo con los actuadores definidos en la secci´on
ante-rior, implica que las funciones de movimiento de cada pierna est´en desfasadas en medio ciclo (π2):
fi(t) =f(t) (13)
fd(t) =f(t+
π
2) (14)
siendof(t) la funci´on de movimiento (o actuador) en el momentot, yfi yfdlas funciones de la
pierna izquierda y derecha, respectivamente.
6.
Algoritmo gen´
etico
Los algoritmos gen´eticos son m´etodos adaptativos, que pueden ser utilizados para resolver
problemas de b´usqueda y optimizaci´on. Est´an inspirados en la teor´ıa darwiniana de la selecci´on
natural. La entidad a optimizar constituye un individuo dentro de una poblaci´on; que puede
ser cruzado con otros individuos para obtener un “hijo”, que presenta caracter´ısticas de sus
“padres”. A trav´es de una funci´on defitness se decide cu´ales de ellos son los m´as “aptos”, que
luego pasar´an a una nueva generaci´on de individuos. Este proceso se repite hasta obtener un
individuo lo suficientemente apto, que representa a la entidad optimizada.
El objetivo de este proyecto es optimizar la caminata del humanoide. Ergo, en el algoritmo
gen´etico aplicado, el individuo est´a definido por rasgos del b´ıpedo, y la funci´on de fitness se
6.1.
Individuo
La informaci´on gen´etica de cada individuo, est´a definida a partir de un vector que contiene de
forma contigua, los par´ametros de la funci´on partida (optativa) y los asociados a los actuadores
(obligatorios), que act´uan sobre cada uno de los segmentos (muslos y piernas) del humano virtual.
6.1.1. Par´ametros
Tanto la funci´on partida como los actuadores tienen como par´ametros: amplitud (A o B);
frecuencia (ω); fase (φ), que indica d´onde comienza el paso y se mide en radianes; y t´ermino
independiente (C).
La Fig. 13 muestra la estructura del individuo y su composici´on para un humanoide con funci´on
partida y actuador gen´erico.
Individuo
Funci´on partida Actuador gen´erico
Pierna izquierda
A1A2ω1 ω2φ C
Muslo izquierdo
A1A2ω1ω2φ C
Pierna derecha
A1A2ω1ω2φ C
Muslo derecho
A1A2ω1ω2φ C
Pierna
A1A2ω1ω2φ C
Muslo
A1A2ω1ω2φ C
Figura 13: Esquema de un individuo
6.1.2. Valores
Cada uno de los segmentos tiene una composici´on f´ısica distinta (largo, masa, etc.), raz´on por
la cual no necesariamente sus genes deban tener los mismos rangos de valores, tal como puede
apreciarse en las Tablas 4 y 5.
Segmento Tipo de gen M´ınimo M´aximo
Muslo Amplitud -30 30
Pierna Amplitud -60 60
Muslo y Pierna Frecuencia 0.01 10
Muslo y Pierna Fase −π π
Muslo y Pierna T´ermino independiente -10 10
Actuador Segmento Tipo de gen M´ınimo M´aximo
Gen´erico
Muslo Amplitud -30 30
Pierna Amplitud -60 60
Muslo y Pierna Frecuencia 0.01 10
Muslo y Pierna Fase −π π
Muslo y Pierna T´ermino independiente -10 10
Coseno doble frecuencia
Muslo Amplitud -50 50
Pierna Amplitud -30 30
Muslo y Pierna Frecuencia 0.01 5
Muslo y Pierna Fase −π π
Muslo y Pierna T´ermino independiente -30 30
Fourier de orden 2
Muslo Amplitud -60 60
Pierna Amplitud -30 30
Muslo y Pierna Frecuencia 0.01 10
Muslo y Pierna Fase −π π
Muslo y Pierna T´ermino independiente -10 10
Fourier de orden 9
Muslo y Pierna Amplitud -60 60
Muslo y Pierna Frecuencia 0.1 2
Muslo y Pierna Fase −π π
Muslo y Pierna T´ermino independiente -10 10
Tabla 5: Rango de valores que puede tomar cada gen, seg´un el tipo de actuador
6.1.3. Implementaci´on de individuos
Para favorecer el an´alisis de las distintas caracter´ısticas arriba indicadas, se implementaron
varios individuos, cada uno de ellos con propiedades distintas (Tabla 6).
Individuo
Tipo 1
Tipo 2
Tipo 3
Tipo 4
Tipo 5
Actuador
Gen´
erico
Gen´
erico
Coseno doble
frecuencia
Fourier de
orden 2
Fourier de
orden 9
Funci´
on partida
No
S´ı
S´ı
S´ı
S´ı
Fase sincronizada
S´ı
S´ı
S´ı
S´ı
S´ı
Tabla 6: Tipo de individuos
6.1.4. Constituci´on del cromosoma
Los distintos actuadores y la funci´on partida tienen los par´ametros presentados en la secci´on
6.1.1. Sus respectivas cantidades pueden verse en la Tabla 7.
En la Tabla 8 se muestra la composici´on del cromosoma de cada individuo, que depende de los
actuadores y la funci´on partida usados. En ella se puede observar c´omo seg´un el tipo de
indivi-duo, var´ıa la cantidad de genes, es decir, la longitud del cromosoma. Vale aclarar que la funci´on
actuadores, s´olo se definen dos (uno para los muslos y otro para las piernas).
Par´ametro
Amplitud Frecuencia Fase T´ermino
independiente
Actuador
Gen´erico 2 2 1 1
Coseno doble frecuencia 1 2 1 1
Fourier de orden 2 4 1 1 1
Fourier de orden 9 18 1 1 1
Funci´on partida 2 2 1 1
Tabla 7: Cantidad de par´ametros seg´un tipo de actuador y funci´on partida
Individuo
Tipo 1 Tipo 2 Tipo 3 Tipo 4 Tipo 5
P
ar
´ametro
Amplitud 4 12 8 16 44
Frecuencia 2 6 8 6 6
Fase 2 6 6 6 6
T´ermino independiente 2 6 6 6 6
Totales 10 30 28 34 62
Tabla 8: Cantidad de par´ametros seg´un tipo de individuos
6.2.
Fitness
El papel de la funci´on defitness(F) en un algoritmo gen´etico es evaluar qu´e tan bueno es un
individuo. En este caso, est´a definida como un producto de cinco m´odulos o propiedades: altura
(H), velocidad (V), direcci´on (D), simetr´ıa (S) y pies abajo (P A):
F =H·V ·D·S·P A (15)
Los cinco tienen la misma importancia y por eso, como se ver´a a continuaci´on, est´an definidos de
forma similar (con una funci´on exponencial y pueden valer entre 0 y 1). Con todo esto, dado que
elfitness est´a pensado como un producto, basta con que uno de los m´odulos sea muy chico para
“anular” al individuo (es decir, otorgarle un valor que tiende a cero). Sin embargo, los diferentes
m´odulos no son completamente independientes entre s´ı: por ejemplo, si la altura es demasiado
baja, posiblemente la velocidad y la direcci´on no sean adecuadas.
6.2.1. Altura
Es un factor relacionado con la altura del individuo en toda la simulaci´on, y se expresa:
H =
PT n=0e−
C(htn−ht0) 2
N (16)
Se calcula a partir de la diferencia entre la altura en cada instante de la simulaci´on, con su altura
inicial (la altura est´a definida como la posici´on de la pelvis en el eje Y). Cuanto mayor sea esa
diferencia, m´as r´apido el individuo cae, y por eso este m´odulo tiende a cero. Por el contrario,
valdr´a uno si la diferencia es ´ınfima (lo que significa que el humanoide mantiene su misma altura
durante la caminata).
6.2.2. Velocidad
Indica qu´e tan cercana es la velocidad del individuo con respecto a una velocidad objetivo
(en este caso, es de 0.7 m/s), y se expresa de la siguiente forma:
V =
PT n=0e
−C(vtn−VO)2
N (17)
dondet0 es el tiempo inicial,tT el tiempo final,vtn es la velocidad de la pelvis en el instante de tiempotn, yVO la velocidad objetivo en el eje Z (el eje de la caminata).
Sigue una l´ogica y c´alculo similares al factor de altura: a mayor discrepancia de la velocidad
real del humanoide conVO, menor (y m´as cercano a cero) es el valor arrojado por el m´odulo de
velocidad.
6.2.3. Direcci´on
Se˜nala qu´e tan similares son la direcci´on objetivo (un vector unitario, que en este caso se
encuentra en el eje Z) y la direcci´on con la que camine el humanoide. Se calcula como sigue:
D=
PT n=0e−
C(vtn·VO−1)2
N (18)
dondet0 es el tiempo inicial,tT el tiempo final, vtn el versor de la direcci´on del humanoide en
el momentotn yVO el versor de la direcci´on objetivo.
El producto escalar entre los versores responde a la Similitud Coseno: cosθ= A·B
AB, dondeAy
Bson vectores que no se encuentran normalizados, yθ es el ´angulo formado entre ellos. As´ı, si
cosθ = 1, significa que los vectores est´an paralelos entre s´ı (que es el efecto buscado en el caso
de la direcci´on).
Al producto escalar se le resta 1, para que el m´odulo sea consistente con la funci´on exponencial
utilizada y que valga 1 cuandoθ= 0, y 0 cuandoθ=π. Cabe aclarar que se trata al ´angulo en
forma sim´etrica, ya que, por ejemplo cos(−π/6) = cos(π/6).
6.2.4. Simetr´ıa
Este indicador marca qu´e tan equidistantes se encuentran los pies de la cadera, a lo largo de la
caminata. Aplicando solamente los m´odulos antes mencionados, provocaba resultados en donde
una pierna quedaba m´as distante de la pelvis que la otra, lo que produc´ıa que el humanoide se
terminara arrastrando, posiblemente afectando a la velocidad.
Para mayor simplicidad, la simetr´ıa S se calcul´o a partir de los pies (y no de las piernas). Se
tomaron en cuenta s´olo los ejes X y Z, porque son los relacionados a la velocidad y a la direcci´on,
respectivamente.
S=
PT n=0
1 2[e
−C(lfZ+rfZ|2)+e−C(lfX+rfX|2)]
dondelfX ylfZ es la distancia desde el pie izquierdo hasta la pelvis en los ejes X y Z,
respecti-vamente; y en donderfX yrfZ es lo mismo, pero para el pie derecho.
6.2.5. Pies abajo
Con los m´odulos se˜nalados anteriormente, se busca que el humanoide camine con una
velo-cidad y direcci´on determinadas, que no se caiga y que mantenga simetr´ıa mientras ejecuta sus
movimientos. Pero, todo esto dar´ıa, en el mejor de los casos, una caminata estilo “estrella”.
Sin embargo, una caracter´ıstica fundamental en una caminata normal es que las piernas (ergo,
los pies tambi´en) no sobrepasen la cadera. Si bien ´esta es una propiedad negativa (expresa lo que
no debe tener una caminata), y se puede correr el riesgo de restringir demasiado, su ausencia da
resultados peores.
P A=
PT n=0
1 2(α[e
−C(ldf2)+e−C(rdf2)]
N (20)
dondeldf yrdf son las diferencias entre la posici´on inicial de los pies y la altura en el momento
tn de los pies izquierdo y derecho, respectivamente, yα=max(min(lf, rf)−hip,0),1), siendo
lf,rf yhiplas alturas del pie izquierdo, pie derecho, y la cadera (es decir, vale 0 si la altura del
pie izquierdo o derecho supera a la de la cadera, y 1 en otro caso).
6.3.
Operadores del algoritmo
Permiten controlar en detalle el proceso de optimizaci´on. En particular, se busca un balance
entre la diversidad de los individuos, el aumento delfitness a lo largo del algoritmo, y evitar la
convergencia hacia una poblaci´on sobre la cual no se puede seguir mejorando.
6.3.1. M´etodos de selecci´on
De la vasta cantidad de m´etodos de selecci´on que existen se utiliz´o Roulette, m´etodo es-toc´astico que selecciona un individuo de la poblaci´on total al azar, con una probabilidad
propor-cional a sufitness.
Para no perder la mejor soluci´on encontrada en cada generaci´on, se activ´o el Elitism, t´ecnica en la cual el individuo con mayorfitness permanece intacto en la siguiente generaci´on.
6.3.2. M´etodos de cruza
El m´etodo de cruza (ocrossover) utilizado es el siguiente: De dos individuos (los padres), se
originan dos nuevos individuos (los hijos). Se toma cada uno de los genes de los padres y se elige,
con una probabilidad uniforme, uno de ellos para un hijo y el otro para el otro hijo.
La probabilidad de que este proceso ocurra es de 0.9.
6.3.3. Mutaci´on
En el caso de la mutaci´on, para cada gen del individuo, se decide con cierta probabilidad si
se lo muta o no. En caso afirmativo, se cambia ese gen por un valor aleatorio (que est´e dentro
de su rango definido).
6.3.4. Otras caracter´ısticas
En el algoritmo gen´etico se utilizan 1000 generaciones, de 50 individuos cada una. Adem´as,
la simulaci´on de cada individuo (necesaria para calcular elfitness) es de 4 segundos.
7.
Resultados obtenidos
En la Fig. 14 se representan los individuos definidos con sus caracter´ısticas.
Individuo Tipo 5 Total par´ ame-tros: 62 Con funci´on partida Actuador Fourier de
orden 9 Fase sin-cronizada
Tipo 4
Total par´
ame-tros: 34 Con funci´on partida Actuador Fourier de orden 2 Fase sin-cronizada Tipo 3 Total par´ ame-tros: 28 Con funci´on partida Actuador coseno doble frecuencia Fase sin-cronizada Tipo 2 Total par´ ame-tros: 30 Con funci´on partida Actuador gen´erico Fase sin-cronizada Tipo 1 Total par´ ame-tros: 10 Sin funci´on
partida
Actuador gen´erico
Fase sin-cronizada
Figura 14: Individuos definidos en el algoritmo gen´etico
Sobre ellos se realizaron pruebas, corriendo el algoritmo gen´etico, y evaluando el resultado
alcanzado posteriormente (ya sea num´erica o gr´aficamente).
A continuaci´on se analizan distintos aspectos relevantes. Vale aclarar que, en el caso de la altura
y la velocidad, se muestran los resultados de los mejores caminantes de cada tipo; y en el caso
7.1.
Evoluci´
on del
fitness
promedio seg´
un tipo de individuos
En la Fig. 15 se muestra el fitness promedio por generaci´on, producido por corridas t´ıpicas
del algoritmo gen´etico, seg´un los tipos de individuo definidos. Si bien los resultados no son
concluyentes, s´ı vale la pena decir que los individuos con actuador gen´erico (tipo 1 y 2) y coseno
doble frecuencia (tipo 3), logran alcanzar unfitness m´as alto que el resto.
Por otra parte, puede notarse que los rangos manejados casi alcanzan el 0.7 (y no a 1, su cota
superior). Esto se debe a que la funci´on de fitness est´a definida como un producto de ciertos
m´odulos: suponiendo que cada uno de ellos estuviera al 92 %, se tendr´ıa 0.925= 0.659.
Figura 15: Evoluci´on delfitness promedio seg´un tipo de individuos
7.2.
Velocidad seg´
un tipo de individuos
Seguidamente, se muestra para cada tipo de individuo, su velocidad instant´anea de la pelvis
a lo largo del tiempo.
Figura 16: Velocidad instant´anea seg´un tipo de individuos
Como puede observarse en el caso de los individuos 4 y 5 (Fourier de orden 2 y 9, respectivamente),
se producen picos pronunciados en la velocidad. Eso repercute en que la velocidad media no sea
0.7m/s(que es la velocidad objetivo), y ergo, en el m´odulo de velocidad delfitness(provocando
En el individuo de tipo 1, tambi´en se producen picos un poco menos pronunciados, pero luego
de los 10 segundos, no se registra ninguna velocidad. Eso sucede porque el humanoide queda
suspendido cuando intenta caer.
La velocidad del individuo de tipo 2 oscila de forma irregular, pero no tiene picos muy elevados.
Por ´ultimo, en el individuo de tipo 3, la velocidad oscila de forma c´ıclica, continuada y armoniosa
(no hay picos altos).
7.3.
Altura seg´
un tipo de individuos
Como puede identificarse en la Figura 17, la altura de los individuos es otra caracter´ıstica
para diferenciarlos en su rendimiento.
Figura 17: Altura (posici´on de la pelvis) seg´un tipo de individuos
En efecto, los individuos de tipo 4 y 5 (que utilizan actuadores de Fourier de orden 2 y 9,
respectivamente), son los que caen de forma m´as abrupta, y aunque intentan levantarse, vuelven
a caer con la misma intensidad.
A su vez, el individuo de tipo 1 (actuador gen´erico sin funci´on partida) mantiene su altura, hasta
que a los 10 segundos queda suspendido a una altura levemente menor. Esto ocurre porque las
restricciones a los grados de libertad de la cadera impiden que caiga.
El individuo de tipo 2, con actuador gen´erico y funci´on partida, logra mantener la altura, hasta
que cae y no vuelve a levantarse (lo cual es l´ogico, ya que en ese movimiento suelen emplearse
los brazos y las manos).
En lo que respecta al individuo de tipo 3, que utiliza como actuador la funci´on coseno doble
frecuencia, mantiene su altura de forma constante, pero con oscilaciones leves y continuadas en
el tiempo. De los cinco, es el que da mayor cantidad de pasos.
7.4.
Comparaci´
on de tipo de individuos
Seg´un lo visto, queda claro que los actuadores de Fourier no dieron buenos resultados.
Asimismo, es necesario incluir la funci´on partida (es decir, separar a la caminata en un “primer
paso”, y el ciclo), ya que si bien su ausencia puede originarfitness m´as altos, genera inestabilidad
a los pocos segundos (como en el individuo de tipo 1).
El individuo de tipo 3 logra un movimiento c´ıclico y repetitvo, que deriva en una caminata ad
7.5.
Videos
De los cinco individuos presentados, los que mejor pudieron realizar la caminata fueron tres,
a saber: tipo 1 y 2 (gen´erico con y sin funci´on partida), y tipo 3 (coseno doble frecuencia).
Para poder visualizar mejor su comportamiento, se acompa˜nan los videos.
Individuo Tipo 1:https://www.youtube.com/watch?v=J6j8UNlbg3w
Individuo Tipo 2:https://www.youtube.com/watch?v=t7jtbVL7eyY
Individuo Tipo 3:https://www.youtube.com/watch?v=SpPLKDec91I
8.
Conclusiones
El objetivo principal de este proyecto de investigaci´on fue lograr producir la simulaci´on y
animaci´on biomec´anica de la caminata de un humano virtual. Para eso, se eligi´o el motor f´ısico
Bullet Physics, lo que requiri´o no solo aprender sobre su funcionamiento y los m´etodos f´ısicos
implementados, sino tambi´en realizar pruebas para verificar qu´e tan pr´oximos eran el modelo
fisico-matem´atico ideado y el utilizado por Bullet.
Una vez modelado el humanoide, se implementaron individuos con diferentes caracter´ısticas (en
especial, actuadores), para facilitar la comparaci´on. En la secci´on 7 se verifica que las funciones
utilizadas en los actuadores son decisivas para lograr una caminata.
Los actuadores que mejores resultados dieron, fueron aquellos en donde se empleaba dos
frecuen-ciasω en vez de una.
Si bien el individuo de tipo 1 con actuador gen´erico y sin funci´on partida logra dar algunos
pasos (en promedio ocho), agregar dicha funci´on (es decir, separar la caminata en dos partes, y
considerar una funci´on del primer paso), logr´o en algunos casos mejores resultados, como ocurre
con los individuos de tipo 2 y tipo 3, que efect´uan una mayor cantidad de pasos (en promedio
doce y m´as de treinta, respectivamente).
Tambi´en se comprob´o que los individuos con actuadores gen´erico y coseno doble frecuencia son
los que mejor caminan, manteniendo su altura por m´as tiempo y confitness m´as alto. Sin
em-bargo, son caminatas muy distintas: la del primero resulta ser con pasos largos; mientras que la
del segundo realiza m´as pasos y m´as cortos.
Los individuos con actuadores Fourier de orden 2 y 9 fueron los que peores resultados arrojaron,
tanto en elfitness promedio, como en la cantidad de pasos logrados.
Por otra parte, en lo que respecta a la l´ınea de investigaci´on que se sigui´o del modelo del cuadr´
upe-do virtual, se logr´o con algunas variaciones la caminata en un b´ıpedo; pero el costo fue sacarle
grados de libertad en el movimiento y evitar la rotaci´on de la cadera, produciendo as´ı una
cami-nata plana. Esto significa una limitaci´on del modelo. Si se agregara un grado de libertad m´as,
ser´ıa necesario aplicar un sistema de control para manejar el equilibrio del humano virtual, lo
cual exced´ıa el alcance de este trabajo.
Entre los trabajos a futuro para integrar a este proyecto, se encuentran lograr que la caminata
se produzca en 3 dimensiones; y analizar el comportamiento de varios humanoides chocando e
interactuando entre s´ı.
Finalmente, la caminata de una persona, algo que parece simple y sencillo, muestra su
verdade-ra complejidad cuando debe ser simulada por medio de actuadores aplicados a un conjunto de
Referencias
[1] Marek Wojtyra, Multibody Simulation Model of Human Walking - Warsaw University of
Technology, 2003
[2] Thomas Geijtenbeek, Michiel van de Panne y A. Frank van der Stappen,Flexible
Muscle-Based Locomotion for Bipedal Creatures, 2013
[3] Kevin Kenny, M´aximo Videla y Axel Wassington,Proyecto Final para la obtenci´on del t´ıtulo
Ingeniero en Inform´atica: Simulaci´on y animaci´on de un cuadr´upedo virtual - ITBA, 2014
[4] Wikipedia:https://es.wikipedia.org/wiki/P hysics engine
[5] Andreas Gerndt y otros,An Evaluation of Open Source Physics Engines for Use in Virtual
Reality Assembly Simulations. Fecha de publicaci´on: 2012
[6] Tom Erez y otros,Simulation Tools for Model-Based Robotics: Comparison of Bullet, Havok,
MuJoCo, ODE and PhysX
[7] Sitio web de Bullet Physics:http://www.bulletphysics.org/
[8] Erin Catto,Iterative Dynamic with Temporal Coherence. Fecha de publicaci´on: 2005
[9] Sitio web de GaLib:http://lancet.mit.edu/ga/
[10] http://www.exrx.net/Kinesiology/Segments.html
Agradecimientos
A la Dra. Silvia Alicia G´omez, directora de la carrera de Ingenier´ıa Inform´atica, por su apoyo
incondicional durante todos estos a˜nos. Asimismo, a todos los docentes que tuvimos a lo largo de
la carrera, por la calidad y excelencia acad´emica recibidas, que nos permiti´o realizar un proyecto
final que integra los conocimientos y capacidades adquiridos. Y muy especialmente a nuestro
tutor Dr. Daniel Ricardo Parisi, a quien tambi´en le agradecemos su valiosa colaboraci´on y su