Trabajo de Fin de Grado Grado en Ingeniería en Tecnologías Industriales
Simulación computacional interactiva en tiempo real de una bicicleta con suspensión sobre terreno irregular
Autor: Jesús Ortega Almirón
Tutor: Dr. José Luis Escalona Franco
Dep. Ingeniería Mecánica y Fabricación Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2014
Trabajo de Fin de Grado Grado en Ingeniería en Tecnologías Industriales
Simulación computacional interactiva en tiempo real
de una bicicleta con suspensión sobre terreno irregular
Autor:
Jesús Ortega Almirón
Tutor:
José Luis Escalona Franco
Profesor titular
Dep. de Ingeniería Mecánica y Fabricación
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla Sevilla, 2014
Trabajo de Fin de Grado: Simulación computacional interactiva en tiempo real de una bicicleta con suspensión sobre terreno irregular
Autor: Jesús Ortega Almirón
Tutor: José Luis Escalona Franco
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Acuerdan otorgarle la calificación de:
Sevilla, 2014
El Secretario del Tribunal
i
Resumen
En este trabajo se pretende llevar a cabo la simulación dinámica del mecanismo de
una bicicleta, centrándose principalmente en modelado de la suspensión y el suelo
irregular. Se utiliza MatLab para implementar y resolver numéricamente las ecuaciones de
movimiento, haciendo uso de las funciones en simbólico. Para ello, se parte del modelo
simplificado de la bicicleta y se rediseña el programa con el fin de poder incluir efectos
adicionales para incrementar la fiabilidad de la simulación, pero pudiendo llevar a cabo la
simulación en tiempo real. Se contemplarán efectos como los debidos a los amortiguadores
delantero y trasero, suelo no plano y geometría toroidal de los neumáticos. Este rediseño se
realiza con miras a seguir profundizando en el modelo de la bicicleta en el futuro, por
ejemplo considerando un modelado más preciso del contacto del neumático y la carretera.
Es por ello que la función de este trabajo es también servir como guía futura de partida
para posteriores evoluciones del modelo.
ii
iii
Índice
Resumen i
Índice iii
Índice de Figuras v
1. Introducción 1
2. Descripción del modelo de partida 2
3. Sólidos y cinemática 5 3.1. Geometría del suelo 5 3.2. Geometría de los neumáticos 7 3.3. Orientación de los sistemas y centros de gravedad 9 3.3.1. Cuadro, sólido 3 9 3.3.2. Manillar, sólido 4 11 3.3.3. Suspensión trasera, sólido 7 13 3.3.4. Suspensión delantera, sólido 8 15 3.3.5. Ruedas trasera y delantera, sólidos 2 y 5 respectivamente 17 3.3.6. Cuerpo del ciclista, sólido 6 20 3.4. Conjunto de sólidos 21 3.5. Restricciones 22 3.5.1. Restricciones de contacto 22 3.5.2. Restricciones de rodadura sin deslizamiento 24
4. Solicitaciones y dinámica 27 4.1. Ecuaciones dinámicas 27 4.2. Término inercial 28 4.3. Términos de fuerza 29 4.3.1. Término volumétrico 29 4.3.2. Término gravitatorio 29 4.3.3. Término aerodinámico 30 4.3.4. Acción del ciclista 30 4.3.5. Fuerzas de suspensión 32 4.3.5.1. Suspensión trasera 34 4.3.5.2. Suspensión delantera 35
5. Resolución numérica 36 5.1. Clasificación de coordenadas 36 5.2. Problema de posición 38 5.3. Problema de velocidad 39 5.4. Aceleraciones 40 5.5. Integración 42
6. Simulación interactiva 43
7. Comparación y conclusiones 49
Referencias 53
iv
Anexos 55 Anexo A Códigos para el suelo 55 Anexo B Códigos para el neumático 57 Anexo C Códigos para la orientación y posición de los sólidos 58 Anexo D Códigos para las restricciones 59 Anexo E Códigos para la dinámica 60 Anexo F Códigos de la función de derivadas 62 Anexo G Códigos de la función principal y cálculo de posición estática 66 Anexo H Códigos de los tipos de visualización 68
v
ÍNDICE DE FIGURAS
Fig 2-1. Esquema del modelo de partida 3
Fig 3-1. Ejemplo de geometría del suelo (para parámetros a, b, c y d de 0.4, π/8, 2.6 y π /120 respectivamente) 6
Fig 3-2. Coordenadas para situar los puntos de la superficie de la rueda 7
Fig 3-3. Ejemplo de geometría de neumático rodando sobre el suelo 8
Fig 3-4. Orientación del sistema 3 10
Fig 3-5. Esquema del manillar respecto del cuadro. 12
Fig 3-6. Esquema de la amortiguación trasera 13
Fig 3-7. Esquema de la amortiguación delantera 15
Fig 3-8. Esquema de la rueda trasera 17
Fig 3-9. Esquema de la rueda delantera 18
Fig 3-10. Esquema de la bicicleta completa 21
Fig 3-11. Esquema del par de leva 3D 22
Fig 4-1. Esquema de fuerzas de suspensión entre dos sólidos 32
Fig 4-2. Esquema de suspensión trasera 34
Fig 4-3. Esquema de suspensión delantera 35
Fig 6-1. Esquema de control 43
Fig 6-2. Axonométrico siguiendo al ciclista 44
Fig 6-3. Axonométrico fijo 45
Fig 6-4. Axonométrico siguiendo al ciclista desde atrás 46
Fig 6-5. Cónica siguiendo al ciclista 46
Fig 6-6. Cónica fija apuntando al ciclista 47
Fig 6-7. Cónica siguiendo al ciclista desde atrás 48
Fig 7-1. Reacción rueda delantera en modelo de partida sin perturbar 49
Fig 7-2. Reacción en ambas ruedas en modelo actual sin perturbar 50
Fig 7-3. Reacción rueda delantera en modelo de partida con perturbación 50
Fig 7-4. Reacción en ambas ruedas en modelo actual con perturbación 50
Fig 7-5. Reacción en ambas ruedas en modelo actual sin perturbación 51
Fig 7-6. Reacción en ambas ruedas en modelo actual con perturbación 51
1
1. INTRODUCCIÓN
a bicicleta consiste en un mecanismo que, en una primera aproximación, dispone de
tres grados de libertad. Sin embargo, el ciclista sólo controla dos de ellos, lo cuál
supone que el tercero se estabilice automáticamente haciendo de la bicicleta un
mecanismo intrínsecamente estable.
La estabilidad de la bicicleta ha sido por ello objeto de estudio y análisis por diversos
autores [1]. No obstante, la dificultad que radica en el estudio analítico del sistema ha hecho
fracasar numerosos intentos antes de la llegada de métodos numéricos. Los efectos giroscópicos y
tridimensionales son fundamentales en el comportamiento del sistema, lo que hace imposible
desligarlos y abordar un modelo analítico simple de dos dimensiones. Incluso sin considerar el
efecto giroscópico o el debido al ángulo de avance, generalmente considerados primordiales para la
estabilidad de la bicicleta, ésta puede ser estable [2]. Así, a pesar de la aparente sencillez del
mecanismo por la facilidad de conducción, es poco conocido su funcionamiento, y queda patente en
maniobras como el contramanillar, que se realizan de manera intuitiva a pesar de su complejidad
dinámica, [3].
Sin embargo, el estudio de la estabilidad del sistema queda fuera del alcance de este trabajo.
Éste se centrará en un rediseño del programa disponible, de modo que permita seguir ampliando la
complejidad del modelo, así como incluir efectos no considerados en él. De este modo, se permitirá
una simulación mucho más realista del sistema, para posteriores estudios dinámicos. Además, se
pretenderá incorporar dichas mejoras a la simulación en tiempo real.
El programa previo sobre el que se va a trabajar se divide en 3 partes. Una parte simbólica
que genera las funciones para las matrices, restricciones, jacobianos y solicitaciones necesarias. El
programa principal carga los parámetros conocidos necesarios y llama al integrador con unas
condiciones iniciales. La función de derivadas aplica las ecuaciones cinemáticas y dinámicas
haciendo uso de las funciones simbólicas, permite al integrador resolver el sistema y dibuja el
mecanismo en cada instante. En los Anexos se recoge parte del código más relevante comentado.
L
Descripción del modelo de partida
2
2
2. DESCRIPCIÓN DEL MODELO DE PARTIDA
l modelo de partida consiste en una simplificación de la bicicleta como un
mecanismo formado por cuatro sólidos rígidos aparte del suelo, basado en el
modelo de Whipple [4]. El cuerpo del ciclista se encuentra integrado como parte
del cuadro de la bicicleta. Los sólidos que se diferencian son los siguientes:
-Rueda delantera.
-Rueda trasera.
-Cuadro.
-Manillar.
-Suelo.
El funcionamiento de este modelo se basa en las siguientes consideraciones:
-El suelo siempre es plano y horizontal.
-Ambas ruedas son modeladas como círculos rígidos. Cada rueda contacta con el suelo en
un único punto y la rodadura se produce sin deslizamiento.
-Las extremidades del ciclista no introducen términos de inercia.
-Las fuerzas externas son las debidas al pedaleo, el giro del manillar, la gravedad y un
término debido al aire.
-No existe fricción.
El modelo de partida descrito se ilustra a continuación en la siguiente figura [5]:
E
3
3
Fig 2-1. Esquema del modelo de partida
Este modelo parte del suelo y recorre la rueda trasera, el cuadro, manillar y rueda delantera para
posicionar los sólidos del mecanismo.
En primer lugar, para posicionar la rueda trasera respecto del suelo se utilizan dos sistemas
auxiliares, 1 y 2. La orientación del sistema 1 se obtiene por medio de un giro respecto del absoluto o
global alrededor del eje Z un ángulo ϕ. La orientación del 2 se obtiene mediante otro giro respecto del 1
alrededor del eje xi1 un ángulo θ. Finalmente, la orientación de la rueda trasera resulta de un último giro
respecto del 2 alrededor del eje yi2 un ángulo ψ. La posición de la rueda queda fijada con dos
coordenadas más, e , que sitúan el punto de contacto C en el plano horizontal del sistema global,
quedando situado el centro de la rueda a partir del radio.
El posicionamiento del cuadro es mucho más simple, consiste en un único giro respecto del
sistema 2 alrededor del eje yi2 un ángulo β, quedando situado su centro de gravedad a partir de la
posición relativa respecto del centro de la rueda trasera, conocida.
Descripción del modelo de partida
4
4
El manillar se orienta mediante un giro respecto al sistema del cuadro alrededor del eje z3 un
ángulo γ. Su centro de gravedad queda fijado entonces a partir de su posición relativa respecto del centro
de la rueda trasera, conocida.
Por último, la rueda delantera se orienta por medio de un giro respecto del sistema del manillar
alrededor del eje y4 un ángulo ε. Su centro queda fijado a partir de su posición relativa respecto del
manillar, conocida.
Es necesario añadir una última coordenada ξ, que representa un giro respecto del sistema de la
rueda delantera alrededor del eje y5. Esta coordenada es necesaria para el par de leva de la rueda
delantera.
De este modo, se tiene un total de 9 coordenadas:
ξεγβψθϕCC yx
Si se dispone de 4 sólidos rígidos es posible calcular las coordenadas mínimas necesarias a partir
de los pares cinemáticos. Son 2 pares de leva y 3 de rotación, por lo que:
715224531264 =−−=⋅−⋅−⋅
Al tener en cuenta 2 vínculos no holónomos debido a la rodadura sin deslizamiento de ambas
ruedas:
3227 =⋅−
Si se parte de las 9 coordenadas utilizadas para definir el modelo, esto supone 6 ecuaciones de
restricción necesarias, 2 debidas al par de leva delantero y 4 de rodadura sin deslizamiento.
Debido a que éste es sólo el modelo de partida no se profundizará más en él ni en su
implementación numérica en MatLab.
Nótese que este modelo es posible sólo con un suelo horizontal y plano. Esto limita sobremanera
la simulación, ya que es imposible adaptar dicho modelo a un suelo con geometría arbitraria. Es por ello
que se replantea dicho modelo con el fin de incluir geometría tridimensional para el suelo, a parte de
otras mejoras.
5
5
3. SÓLIDOS Y CINEMÁTICA
l modelo final está formado por 6 sólidos más el suelo. El motivo de añadir dos
sólidos es tener en cuenta los amortiguadores delantero y trasero. La adición de
dichos sólidos supondrá 2 nuevos grados de libertad, que se estabilizarán
automáticamente gracias a la rigidez y amortiguamiento de los amortiguadores.
3.1. Geometría del suelo
Para definir la mencionada geometría arbitraria del suelo se hará uso de 4 parámetros: a, b, c
y d. La altura del suelo se modelará como una función senoidal doble en las direcciones X e Y. Los
4 parámetros controlan amplitud y frecuencia en cada dirección, según la siguiente expresión:
( ) ( )YdcXbaZ ⋅⋅+⋅⋅= sinsin (1)
De este modo, el vector en coordenadas absolutas de cada punto del suelo será:
( ) ( )[ ]TYdcXbaYX ⋅⋅+⋅⋅= sinsinRp (2)
Para introducir los pares de leva es necesario obtener también los vectores tangentes respecto a
ambas coordenadas X e Y, que, derivando [6]:
( )[ ]TXbbaX
⋅⋅⋅=∂∂= cos01Rp
t1 (3)
( )[ ]TYddcY
⋅⋅⋅=∂
∂= cos10Rp
t 2 (4)
Los valores X e Y del punto de contacto de cada rueda suponen 4 coordenadas en total, que se
denominarán ds1 , ds2 , ts1 y ts2 para los valores X e Y de la rueda delantera y trasera respectivamente.
La función de geometría del suelo “GeomSuelo” se muestra en el Anexo A, así como la sección de
código empleada para dibujarlo. En la siguiente figura se observa un posible suelo definido y dibujado
de este modo.
E
Sólidos y cinemática
6
6
Fig 3-1. Ejemplo de geometría del suelo (para parámetros a, b, c y d de 0.4, π/8, 2.6 y π /120
respectivamente)
Esto es sólo un ejemplo de geometría para el suelo, puede sustituirse la función elegida por
cualquier otra que se adapte mejor a las necesidades del caso, o incluso generar un suelo por puntos de
manera aleatoria.
7
7
3.2. Geometría de los neumáticos
La geometría de los neumáticos será toroidal (neumáticos toroidales han sido incorporados
ya en estudios como [7], en un análisis cinemático con restricciones ideales) y cada sección
transversal del toro corresponderá a una elipse [8], de ecuación:
2
0
2
0
2
0 11
−+=→=
−+
−T
RrrR
rr
T
τττ (5)
donde r0 no es el radio de la rueda sino el radio de la rueda menos el semieje vertical de la elipse.
Fig 3-2. Coordenadas para situar los puntos de la superficie de la rueda
Y cada sección del toro es recorrida por la coordenada ζ . De este modo, la posición relativa de
cada punto de la superficie de la rueda respecto al sistema de referencia de la rueda viene dada por:
( ) ( )[ ]Tζτζτ sin)r(cos)r( ⋅−⋅= τpR (6)
donde la expresión de r es la de la ecuación (5).
Al igual que en la geometría del suelo, es necesario calcular los vectores tangentes respecto a
ambas coordenadas:
( ) ( )[ ]Tζτζτ cos)r(0sin)r( ⋅−⋅−=∂∂=
ζpR
tζ (7)
( ) ( )T
ζd
dζ
d
d
⋅−⋅=∂
∂= sin)r(
1cos)r(
ττ
ττ
τRp
t τ (8)
donde
Sólidos y cinemática
8
8
2/12
21
)r(−
−⋅−=TT
R
d
d ττττ
(9)
Son necesarios por tanto 3 parámetros, r0, R y T para definir la geometría de cada rueda como se
ha mostrado anteriormente, lo que supone 6 parámetros adicionales. Además, cada rueda necesita 2
coordenadas para recorrer la superficie, ζ y τ , lo que añade 4 coordenadas más al modelo: dζ , dτ ,
tζ y tτ para la rueda delantera y trasera respectivamente. La función de geometría del neumático
“GeomNeum” se muestra en el Anexo B, así como la sección de código empleada para dibujarlo. En la
siguiente figura se observa un posible neumático definido y dibujado de este modo.
Fig 3-3. Ejemplo de geometría de neumático rodando sobre el suelo
9
9
3.3. Orientación de los sistemas y centros de gravedad
El nuevo diseño del modelo para una geometría de terreno arbitraria implica una definición
de coordenadas relativas distinta ya que ahora no se parte de la simplificación de un suelo plano y
horizontal.
3.3.1. Cuadro, sólido 3
Para abordar un posicionamiento y orientación de los sistemas de referencia de cada sólido
consistente con las nuevas consideraciones y compatible con la evolución posterior del modelo, se
comienza posicionando el cuadro de la bicicleta, sólido 3, respecto al sistema global de referencia.
El posicionamiento del centro de gravedad del cuadro se fija por medio de 3 coordenadas,
rx, ry y rz, que representan la posición en los 3 ejes coordenados del sistema global.
Para la orientación del sólido, se utilizarán otras 3 coordenadas, 3ϕ , 3θ y 3ψ . Estas
coordenadas se definen de modo análogo a los ángulos de Euler [9], pero tratando de evitar la
posibilidad de una configuración singular. De este modo, se definen las coordenadas de orientación:
En primer lugar, un giro respecto al eje Z un ángulo 3ϕ
−=
100
0cossen
0sencos
33
33
3ϕϕϕϕ
ϕA
Segundo, giro respecto al eje X’ un ángulo 3θ
−=
33
33
cossen0
sencos0
001
3
θθθθθA
Por último, un giro respecto al eje Y’’ un ángulo 3ψ
−=
33
33
cos0sen
010
sen0cos
3
ψψ
ψψ
ψA
Sólidos y cinemática
10
10
De este modo, a diferencia del uso de ángulos de Euler, no es posible encontrar una posición
singular a no ser que el cuadro estuviese completamente volcado, punto en el que no tendría sentido
la simulación. Esto es así porque la “línea de nodos” equivalente para este sistema estaría definida
por la intersección de los planos <XY> y <x3z3> , planos que permanecen casi perpendiculares
mientras la bicicleta no vuelque. Esto se ilustra en la siguiente figura:
Fig 3-4. Orientación del sistema 3
Por tanto, la posición del centro de gravedad es:
[ ]Trzryrx=3GR (10)
Y la orientación del sistema 3 queda definida por la siguiente matriz de rotación:
3333 ψθϕ AAAA = (11)
Esto supone la incorporación de 6 coordenadas para el cuadro.
11
11
3.3.2. Manillar, sólido 4
El siguiente sólido a situar será el manillar, sólido 4. Para orientar el manillar en el sistema
global se realizarán dos giros respecto al cuadro. Un primer giro alrededor del eje y3 un ángulo
conocido β :
−=
ββ
ββ
β
cos0sen
010
sen0cos
A
Y un segundo giro respecto del sistema girado, alrededor de su eje z un ángulo γ :
−=
100
0cossen
0sencos
γγγγ
γA
Nótese que el ángulo β no es una coordenada, sino un parámetro conocido, basado en datos
experimentales, mientras que γ sí supone la adición de una coordenada. En lugar de hacer coincidir
el eje z de los sistemas del cuadro y del manillar, se ha optado por realizar el giro de β para poder
orientar posteriormente el cuerpo del ciclista de un modo más sencillo.
Para el posicionamiento del centro de gravedad en globales es necesario hacer uso de
parámetros consistentes en distancias medidas en la bicicleta, los vectores 3Gr y
4Gr , conocidos (en
este trabajo se parte de los valores calculados de dichos vectores, así como del resto de parámetros
geométricos y dinámicos necesarios de la bicicleta y del ciclista. Estos pueden hallarse de diversas
maneras [10]). En la siguiente figura se observa su posición.
Sólidos y cinemática
12
12
Fig 3-5. Esquema del manillar respecto del cuadro.
Estos vectores están expresados en el sistema de referencia girado un ángulo β respecto al 3.
Por ello, para expresar la posición del centro de gravedad del manillar respecto del sistema global de
coordenadas es necesario introducir estos vectores girados. Así, 4GR queda del siguiente modo:
( )33 3 GGGG rrAARR
44−+= β (12)
La orientación del sistema 4 queda definida por la siguiente matriz de rotación:
γβ AAAA 34 = (13)
Esto supone la incorporación de 1 coordenada al sistema, debida a la libertad de giro del
manillar respecto del cuadro gracias al par de rotación entre ellos.
13
13
3.3.3. Suspensión trasera, sólido 7
A continuación se procederá a situar los sólidos de la suspensión. En primer lugar, la
suspensión trasera. Ésta añade un sólido adicional que se interpone entre el eje de la rueda trasera y
el cuadro, que ya no están conectados directamente.
La orientación también se realiza a partir del sólido 3, mediante un giro respecto a éste
alrededor del eje y3 un ángulo c1:
−=
11
11
cos0sen
010
sen0cos
1
cc
cc
cA
La posición del centro de gravedad de este sólido se realiza a partir del centro de gravedad
del sólido 3, considerando parámetros consistentes en distancias que se obtienen
experimentalmente: los vectores 3Gr , ya definido, y
7ru , que se observa en la siguiente imagen.
Fig 3-6. Esquema de la amortiguación trasera
Sólidos y cinemática
14
14
El vector 7r
u está expresado en el sistema de referencia del sólido 7, por lo que será
necesario girarlo también para tenerlo en cuenta en la expresión del centro de gravedad del sólido 7.
7rGGG uArAARR 73 337−−= β (14)
La orientación del sistema 7 queda definida por la siguiente matriz de rotación:
137 cAAA = (15)
Esto supone la incorporación de 1 coordenada al sistema, debida a la libertad de giro del
sólido 7 de la suspensión trasera respecto del cuadro, gracias al par de rotación entre ellos.
15
15
3.3.4. Suspensión delantera, sólido 8
Tras situar el sólido de la suspensión trasera se procederá con la delantera. Ésta añade un
sólido adicional que se interpone entre el eje de la rueda delantera y el manillar.
A diferencia de la suspensión trasera, lo que aquí se permite no es un giro sino un
desplazamiento relativo al manillar, esto es, existe un par prismático entre el sólido 4 y el 8. Como
en el par prismático no está permitido giro alguno, esto supone que la orientación del sólido 8
coincida con la del 4, compartiendo matriz de rotación.
48 AA = (16)
La posición relativa del centro de gravedad del sólido 8 respecto del 4 dependerá de
parámetros geométricos pero también de la coordenada c2, que representa el desplazamiento de la
amortiguación delantera. Esta coordenada se ha definido como la componente del eje z8 de la
posición relativa del sólido 4 respecto del 8. De este modo, el vector de posición relativa entre
ambos sólidos, 8Gr , está formado por un parámetro conocido y por la coordenada que se acaba de
definir.
[ ]Tcx 28 08
−=Gr (17)
Fig 3-7. Esquema de la amortiguación delantera
Sólidos y cinemática
16
16
El vector 8Gr está expresado en el sistema de referencia 4 por lo que será necesario girarlo
también en la expresión del centro de gravedad del sólido 8.
848 4 GGG rARR += (18)
Esto supone la incorporación de 1 coordenada al sistema, debida a la libertad de
desplazamiento del sólido 8 de la suspensión delantera respecto del manillar, gracias al par
prismático entre ellos.
De este modo se han definido y posicionado ambas suspensiones. Cada una de ellas permite
un grado de libertad adicional, el de la trasera es un giro y el de la delantera un desplazamiento.
Podría parecer que se introducen 2 grados de libertad adicionales, y así es, aunque esto no supone
problema para la estabilidad ya que son las fuerzas de rigidez y amortiguamiento de cada
suspensión las que se encargan de limitar la evolución de dichos grados de libertad. Esto se verá
más adelante en la definición de solicitaciones.
17
17
3.3.5. Ruedas trasera y delantera, sólidos 2 y 5 respectivamente
A continuación se procederá a situar las dos ruedas de la bicicleta. En primer lugar se
orientará la rueda trasera, sólido 2. Para ello se parte de nuevo del sistema 3, y se define el 2 por
medio de un giro respecto del 3 alrededor del eje y3 un ángulo ψ .
−=
ψψ
ψψ
ψ
cos0sen
010
sen0cos
A
La orientación del sólido 2 correspondiente a la rueda trasera queda fijada mediante la
siguiente matriz de rotación:
ψAAA 32 = (19)
El centro de gravedad de la rueda coincide con su centro geométrico y con el eje de la rueda,
es decir, con el par de rotación con el sólido 7, de la suspensión trasera. Para posicionar este punto
son necesarios parámetros conocidos de la geometría. En este caso es necesario el vector 7Gr , que
está expresado en el sistema de referencia 7.
Fig 3-8. Esquema de la rueda trasera
Sólidos y cinemática
18
18
Dado el vector 7Gr , la posición del centro de gravedad de la rueda trasera será:
772 7 GGG rARR −= (20)
Para la rueda delantera, sólido 5, se procederá de forma análoga. La orientación se define
por medio de un giro respecto del sistema 8 alrededor del eje y8 un ángulo ε .
−=
εε
εε
ε
cos0sen
010
sen0cos
A
Pero la orientación del sistema 8 coincide con la del sistema 4, por tanto, la orientación del
sólido 5, correspondiente a la rueda delantera, queda fijada mediante la siguiente matriz de rotación:
εAAA 45 = (21)
El centro de gravedad de la rueda coincide con su centro geométrico y con el eje de la rueda,
es decir, con el par de rotación con el sólido 8, de la suspensión delantera. Para posicionar este
punto son necesarios parámetros conocidos de la geometría. En este caso es necesario el vector 5Gr ,
que está expresado en el sistema de referencia 8.
Fig 3-9. Esquema de la rueda delantera
19
19
Dado el vector 5Gr , la posición del centro de gravedad de la rueda delantera será:
585 4 GGG rARR += (22)
Esto supone la incorporación de 2 coordenadas al sistema, una por cada rueda, debidas a la
libertad de giro de cada rueda respecto de ambas amortiguaciones, debido a los pares de revolución
entre rueda y sólido.
Los puntos de contacto de cada rueda necesitan dos coordenadas adicionales para cada
rueda, debido a que su geometría es tridimensional, como se vio anteriormente.
Sólidos y cinemática
20
20
3.3.6. Cuerpo del ciclista, sólido 6
Por último se situará el sistema correspondiente al cuerpo de ciclista, considerado como
sólido.
La orientación de este sistema parte del 3, mediante un giro alrededor del eje x3 un ángulo
η .
−=ηηηηη
cossen0
sencos0
001
A
La orientación del sólido 6 queda definida por la siguiente matriz de rotación:
ηAAA 36 = (23)
La posición del centro de gravedad se sitúa a partir de la del centro de gravedad del sistema
3, por medio de un vector 6Gr , consistente en parámetros geométricos.
636 6 GGG rARR += (23)
La expresión (23) es válida suponiendo que el eje de giro del cuerpo del ciclista coincida
con el punto 3GR . En caso contrario, habría que sumar otro vector con la posición relativa de dicho
eje respecto del centro de gravedad del sólido 3. En este caso se asume que coincide y se posiciona
en el sillín.
Debido al ciclista, se ha incorporado una nueva coordenada debida al giro del ciclista
respecto del cuadro. Sin embargo, no será tratada como una coordenada libre ya que se fijará su
valor. Para el simulador offline se supondrá el cuerpo del ciclista anclado al cuadro y para el
interactivo el valor del ángulo podrá cambiar, pero con el valor fijo como parte del control.
21
21
3.4. Conjunto de sólidos
De este modo, todos los sólidos, sin contar el ciclista y el suelo quedan configurados como
aparece en la siguiente figura.
Fig 3-10. Esquema de la bicicleta completa
El cuadro introduce 6 coordenadas: rx, ry, rz, 3ϕ , 3θ y 3ψ . El manillar introduce 1: γ . La
suspensión delantera y trasera 1 cada una: c1 y c2. Las ruedas 1 cada una: ψ y ε . El ciclista 1: η .
El punto de contacto de las ruedas necesita 2 para cada una: dζ , dτ , tζ y tτ . El punto de contacto
en el suelo necesita 2 para cada rueda: ds1 , ds2 , ts1 y ts2 . Esto suma un total de 20 coordenadas, de
las cuáles hay 5 grados de libertad [11].
Los códigos en simbólico para la definición de los sólidos de este apartado se encuentran en el
Anexo C.
Sólidos y cinemática
22
22
3.5. Restricciones
Se parte de 19 coordenadas (como se ha dicho, no se considera la del ciclista) y 5 grados de
libertad, por lo que la diferencia debe consistir en ecuaciones de restricción. De las 14 ecuaciones
de restricción, se van a dividir en restricciones de contacto y restricciones de rodadura sin
deslizamiento.
3.5.1. Restricciones de contacto
En primer lugar se determinarán las restricciones de contacto. Estas restricciones son las
debidas a los pares de leva de las ruedas. Consisten en las ecuaciones que deben cumplirse para
garantizar un único punto de contacto entre la rueda y el suelo. En el modelo inicial de suelo plano
y ruedas circulares, esto se reducía a imponer que el punto de contacto de la rueda delantera y su
tangente tuvieran la cota y la tercera componente nulas, pero con geometrías tridimensionales es
necesario imponer el contacto de otro modo.
Para imponer un par de leva tridimensional entre dos sólidos, es necesario cumplir 5 ecuaciones.
Y como cada sólido necesita 2 coordenadas para definir la geometría, el par de leva restringirá 1 grado
de libertad.
Fig 3-11. Esquema del par de leva 3D
23
23
Primero, en el contacto se cumplirá que el punto en ambos sólidos coincide. Esto se traduce en 3
ecuaciones para las 3 componentes de la posición. Además, es necesario que los vectores normales a
ambas superficies en el punto de contacto compartan dirección. Esto es más fácil imponiendo la
perpendicularidad entre el vector normal de un sólido y los dos vectores tangentes del otro.
( ) ( ) ( )( ) ( )( ) ( ) ( )( ) ( ) 00
00
2212
1211
=∧⇒=
=∧⇒=
=−−+⇒=−
jC
jTiC
iC
ijC
jTiC
i
jC
jTiC
iC
ijC
jTiC
i
jC
jjiC
iijC
iC
tAttAtAnA
tAttAtAnA
0uARuAR0RR
(24)
Se trata de un sistema de 5 ecuaciones algebraicas no lineales.
Para el caso de la rueda y el suelo, se imponen esas 5 ecuaciones, partiendo de los vectores
de posición y tangentes en el punto de contacto, dados por las expresiones que se vieron en el
correspondiente apartado previo.
( )( ) ( ) ( )( ) ( ) ( ) 05
04
3:1
21
21
=∧=
=∧=
=−+=
ruedarueda
Tsuelosuelo
ruedarueda
Tsuelosuelo
sueloruedaruedarueda
τ
ζ
tAttR
tAttR
0RpRpARR G
(25)
Estas 5 ecuaciones se imponen para cada rueda, suponiendo un total de 10 ecuaciones de
restricción debida a contacto.
( ) 0R
RpCResCon =
==
trasera
delanteracon (26)
El jacobiano de dichas restricciones será:
( ) ( )p
pCpCCqCon p ∂
∂==con
con (27)
Y la derivada del jacobiano:
( ) ( ) ( )( )p
ppCpp
pCppCDCqCon p ∂
⋅∂=⋅
∂∂
==&
&&conp
conpcon
dt
d, (28)
La primera expresión conllevaría la manipulación de una hipermatriz, por lo que se utilizará la
segunda, que puede comprobarse que es equivalente debido a la igualdad de derivadas cruzadas [12].
Sólidos y cinemática
24
24
3.5.2. Restricciones de rodadura sin deslizamiento
Estas restricciones se deben a la hipótesis realizada que supone rodadura sin deslizamiento
en ambas ruedas. Es claro que en la realidad esto no es así, existiendo un deslizamiento relativo
entre suelo y rueda. Podría utilizarse un modelo de contacto basado en el modelo de Hertz, por lo
que no habría restricciones de ningún tipo (como en el modelo de 11 grados de libertad de [13]), tan
sólo fuerzas, pero esto queda fuera del alcance de este trabajo, por lo que se deja para una futura
evolución del modelo.
La rodadura sin deslizamiento impone que las velocidades del punto de contacto para ambos
sólidos coincidan, o bien que la velocidad del punto de contacto de la rueda con el suelo sea nula.
Antes de imponer dicha condición es necesario obtener las velocidades.
Por definición, la velocidad angular, ω , es aquel vector que cumple que rωr ∧=& .
Partiendo de que rAr = para r en locales:
( ) AAωAωArArωArωAr
AAωAAωrArAωrωrωr&&&&
&&&&
⋅=⇒=⋅⇒=⋅=∧=
⋅=⇒=⋅⇒=⋅=⋅=∧=T
T
~~~
~~~~ (29)
Ya que la matriz de giro es ortogonal, y dónde ω~ es una matriz tal que rωrω ⋅=∧ ~ . De la
expresión (29) pueden obtenerse las velocidades angulares en globales, ω , y locales, ω . En el
programa se utilizarán en locales. A continuación se expresará ω en función de una matriz G tal que
( ) ( ) ppGppω && ⋅=, , donde puede demostrarse que es posible expresar pω
G&∂
∂= . La aceleración angular
en locales es:
( ) ( ) pppGppGωα &&&&&& ⋅+⋅== , (30)
La demostración es muy sencilla:
( ) ωωωωωAAωAAωAωAAωAAα &&&&&&& =+∧=⋅+⋅=⋅+⋅=== TTTTTα QED
donde
( ) ( ) ( ) ( )( ) ( )p
ppω
pppG
pppG
ppGppg∂
∂=∂
⋅∂=⋅∂
∂==&&
&&&&,
,, , (31)
para no manipular hipermatrices.
25
25
El proceso es análogo para las velocidades de los centros de gravedad:
( ) ( ) ( ) ( ) ( )ppr
pHppHpppr
ppv∂
∂=⋅=⋅∂
∂= GG ,, &&& (32)
Para las aceleraciones de los centros de gravedad:
( ) ( ) ( ) ( ) pppHppHppvppa &&&&&&&& ⋅+⋅== ,,, (33)
donde
( ) ( ) ( ) ( )( ) ( )p
ppvp
ppHp
ppH
ppHpph∂
∂=∂
⋅∂=⋅∂
∂==&&
&&&&,
,, , (34)
de nuevo para no manipular hipermatrices.
Con las velocidades obtenidas, se impone la restricción de rodadura sin deslizamiento. Como se
ha dicho, para que las velocidades del contacto de la rueda y el suelo coincidan, ha de imponerse que la
del punto de contacto de la rueda sea nula. A partir de la velocidad del centro de gravedad de la rueda, la
velocidad del punto de contacto se obtiene por el campo de velocidades del sólido rígido:
( ) 0RpωApHv =∧+⋅= ruedaruedaruedaConrueda & (35)
Esta ecuación vectorial supone 3 ecuaciones escalares, 1 para cada componente de la velocidad,
sin embargo, sólo 2 de ellas son útiles, pues la tercera está implícita en la condición de contacto de las
restricciones anteriores. Por ello sólo se utilizan las 2 primeras componentes de la velocidad para esta
restricción, ya que la última será nula automáticamente al cumplirse el contacto.
De esta manera se obtienen 2 ecuaciones de restricción por cada rueda, lo que supone 4
ecuaciones de restricción no holónomas en el sistema.
( ) 0v
vppCResRod =
==
Con
Conrod
5
2, & (36)
Puede comprobarse que:
( ) ( )p
ppCpBB
&
&
∂∂== ,rod
(37)
Sólidos y cinemática
26
26
Y la derivada de esta matriz:
( ) ( ) ( ) ( )( ) ( )p
ppCp
ppBpppB
ppBppDBDB∂
∂=∂
⋅∂=⋅∂
∂===&&
&&&,
,,rod
dt
d (38)
En las ecuaciones de restricción, así como las matrices y jacobianos, no se ha incluido el término
correspondiente a la coordenada de la inclinación del cuerpo del ciclista, como ya se dijo antes. Tras la
definición de variables simbólicas y el posicionamiento y orientación de los sólidos, los códigos en
simbólico para las restricciones de este apartado se encuentran en el Anexo D.
27
27
4. SOLICITACIONES Y DINÁMICA
ras la definición del modelo y configuración de los sólidos y cinemática del
mismo, se procederá a la parte dinámica y asignación de las solicitaciones a las
que estará sometido. Lo que sigue es una somera descripción del modelo del que
se parte, al que se le ha añadido la parte correspondiente a la suspensión.
4.1. Ecuaciones dinámicas
Las ecuaciones utilizadas en el modelo de partida para resolver la dinámica del mecanismo
son las de Newton-Euler [14], con los términos lineales en globales y los angulares en locales, que
son las mismas ecuaciones que se usan en la nueva versión. De este modo, en cada sólido debe
cumplirse:
( ) ( )ωIωIωωIAAωIAA
ωIAAIωAFrM
&&& +∧=+
===∧+∑∑TT
TT
dt
d
dt
d
ωIωMωI
vF~−=
=&
&m (39)
Las masas e inercias de cada sólido se incluyen en la matriz de masa M del sistema. Las
fuerzas y momentos van en el vector de fuerzas aplicadas, Q . El término del tensor de inercia,
ωIω ⋅⋅~, se trata como una solicitación de carácter volumétrico, en el vector vQ . Las aceleraciones
lineales y angulares aparecen en el vector de aceleraciones, q&& . Así, las ecuaciones de Newton-Euler
en modo matricial quedan:
vQQqM +=⋅ && (40)
T
Solicitaciones y dinámica
28
28
4.2. Término inercial
El primer término de la ecuación es el término relativo a la inercia del sistema. Recoge la
matriz de masa y las aceleraciones del mecanismo. Este término es análogo al del modelo de
partida, salvo por la adición de los términos de masa, inercia y aceleraciones de la suspensión.
Primero se analizará el término de aceleraciones. Como se vio anteriormente, las
aceleraciones se relacionan con las de las coordenadas del sistema a través de unas matrices
correspondientes a las velocidades y aceleraciones lineales y angulares, g , G , h y H .
plpLpg
hp
G
Hq &&&&&&&& +=
+
= (41)
La matriz de masa de la ecuación (40) está configurada de la siguiente manera:
=
n
nm
m
m
I000
000
00I00
00I00
00I00
0000
00I0
000I
M
K
O
M
M
O
L
2
1
2
1
(42)
De esta forma, la ecuación (40) queda en función de las coordenadas y sus derivadas:
( ) ( ) { ( )44 344 21&&&
43421&&&
v
vTTT
v
QQM
pMlQLQLpMLLQQplpLM −+=→+=+ (43)
La matriz de masa que se tratará en el programa es la que se acaba de definir, análoga al
modelo de partida añadiendo los términos de la suspensión:
MLLM T= (44)
29
29
4.3. Términos de fuerza
A continuación se verán los términos asociados a las fuerzas, que son los mismos del
modelo de partida, tras añadir los términos de la suspensión. Se tratarán del siguiente modo:
( )pMlQLQ
QLQ
&−==
vT
v
T
(45)
Mientras que Q puede dividirse a su vez en:
suspacaerograv QQQQQ +++= (47)
4.3.1. Término volumétrico
Aunque no es una fuerza como tal, puede tratarse de modo similar. El término volumétrico
está relacionado con los efectos inerciales específicos del movimiento tridimensional y procede de
expresar los términos de la ecuación angular en coordenadas locales. Es el siguiente:
−
∧
∧= pMl
ωIω
ωIωLQ &
M
M
nnn
Tv
111
0
0
(48)
4.3.2. Término gravitatorio
Ahora se verán los términos de fuerzas como tal, los pertenecientes al vector Q . El primero
de ellos, el término gravitatorio, queda como sigue:
−−−⋅−
⋅−
=
0
0
0
0
0
0
2
1
M
M
gm
gm
Tgrav LQ (49)
Solicitaciones y dinámica
30
30
4.3.3. Término aerodinámico
En el modelo inicial, la resistencia al aire modela de una forma sencilla como una fuerza que
actúa en dirección contraria a la velocidad del centro de gravedad del sólido 3 y es proporcional al
cuadrado de la velocidad de este punto según una constante. Para el nuevo modelo se toma igual:
33
3
3
3 3G
2G v
0
0
v
0
0
GT
G
GT
aero cvcv vHv
vLQ ⋅⋅⋅−=
⋅⋅−=
M
M
(50)
4.3.4. Acción del ciclista
El ciclista realiza 1 par sobre cada grado de libertad (excepto la suspensión). Estos pares se
tratan en el modelo de partida como una solicitación externa conocida aplicada al manillar, rueda
trasera y vuelco.
La acción sobre el manillar es un par aplicado en eje z4, el par de pedaleo un par aplicado en
el eje y2 y el vuelco un par aplicado en el eje x3. Como se expresa en locales:
( ) ( ) ( )( )
=
=
=
vuelco
ped
dir
vuelco
ped
dirTTT
vuelco
ped
dir
ac
M
M
M
M
M
M
M
M
M
SGGGLQ :,1:,2:,3
0
0
324
M
M
M
M
(51)
El par externo aplicado a la rueda trasera se ha denominado de pedaleo, aunque podría
suponerse proporcionado por un motor y estudiar el comportamiento de una motocicleta variando
los parámetros necesarios [15].
El par de vuelco se tomará nulo debido a la dificultad del ciclista para ejercerlo, ya que no
tiene apoyo, por lo que se supone despreciable.
31
31
Un aspecto a considerar es que estas acciones del ciclista son tratadas como fuerzas externas
y no internas, es decir, en este modelo no se han considerado las reacciones correspondientes, por
considerar su influencia despreciable en el funcionamiento común del sistema. Por ejemplo, la
inercia del manillar es mucho más pequeña que la del resto de la bicicleta, incluyendo al ciclista,
por lo que el par de dirección de reacción tendrá una influencia despreciable. El par de reacción del
pedaleo tendería a provocar el despegue de la rueda delantera en una situación extrema. Tal efecto
no se ha modelado, por la complejidad que supondría, pero para que eso ocurriese el par tendría que
ser demasiado elevado y se supondrá que en los casos a simular el par de pedaleo no llegará a tal
valor, en todo caso disminuirá ligeramente la reacción del suelo sobre la rueda delantera.
Solicitaciones y dinámica
32
32
4.3.5. Fuerzas de suspensión
Por último se desarrolla el modelado de la suspensión utilizado para el nuevo modelo, con
las correspondientes fuerzas elásticas y de amortiguamiento.
Fig 4-1. Esquema de fuerzas de suspensión entre dos sólidos
En la figura de arriba, la distancia l entre los puntos de la suspensión es:
PQTPQ
iP
iijQ
jjiP
jQPQl rruARuARRRr =−−+=−== (52)
Estas fuerzas que surgen de la suspensión se expresarán directamente como fuerzas
generalizadas, ya que es mucho más sencillo. Para ello, se calcula primero la expresión de la
energía potencial elástica y la disipación de Rayleigh.
( )
2
20
2
12
1
lcF
llKU def
&=
−= (53)
33
33
Ahora, para calcular las fuerzas generalizadas directamente sólo queda:
pQ
pQ
&∂∂−=
∂∂
−=
F
U
am
defel
(54)
En primer lugar, para la fuerza elástica:
( )
( )
( )PQ
T
PQel
PQ
T
PQPQ
T
PQ
l
PQTPQ
el
l
llK
l
l
lllK
rp
rQ
rp
rr
p
rrr
p
pQ
∂∂−−=⇒
∂∂
=
∂∂
⋅⋅=∂∂→
∂∂−−=
−
0
/1
2/1
0
12
2
148476
(55)
Para la de amortiguación:
( )
pppQ
pp
ppp
ppp
ppp
pQ
I0
∂∂
∂∂−=⇒
∂∂=
∂∂
∂∂+
∂∂
∂∂=
∂∂
∂∂=
∂∂→
∂∂−=
llc
lllll
llc
T
Tam
am
&
876
&&
&
48476
&&
&&
&
&
&&
(56)
A continuación se realiza el cálculo de dichos términos para la suspensión trasera y
delantera. La longitud indeformada de cada muelle, así como las constantes de rigidez y
amortiguamiento de cada suspensión son consideradas parámetros conocidos. El modelo de [16]
constituye un ejemplo de la inclusión de la suspensión para una bicicleta en un modelo multibody.
Solicitaciones y dinámica
34
34
4.3.5.1. Suspensión trasera
El grado de libertad de la suspensión trasera consiste en un giro, sin embargo, la suspensión
se modela linealmente, por lo que son necesarios dos puntos desde los que se aplica. La posición de
estos puntos depende de características geométricas.
Fig 4-2. Esquema de suspensión trasera
Son necesarios los vectores 7su y 3su para posicionar dichos puntos. A partir de ahí, el
proceso es el descrito anteriormente.
( )2373737
2
370373737
3737
373737
3333
777737
2
12
1
lcF
llKU
ll
l T
sGsG
&
&&
=
−=
∂∂=
=
−−+=
pp
rr
uARuARr
(57)
Y las fuerzas generalizadas para la suspensión trasera:
ppQQQ
&∂∂−
∂∂−=+= 3737
373737
FUamelsusp (58)
35
35
4.3.5.2. Suspensión delantera
El grado de libertad de la suspensión delantera es lineal. Al igual que en el caso anterior, es
necesario conocer el punto de cada sólido.
Fig 4-3. Esquema de suspensión delantera
Son necesarios los vectores 8su y 4su para posicionar dichos puntos. A partir de ahí, las
ecuaciones son análogas al caso anterior.
ppQ
&∂∂−
∂∂−= 4848
48
FUsusp (59)
De este modo, el término total de fuerza debido a suspensiones:
4837 suspsuspsusp QQQ += (60)
Con esto queda entonces completo el desarrollo dinámico del sistema. Los códigos en simbólico
para este apartado se encuentran en el Anexo E. Con esto finalizaría la parte simbólica del programa.
Resolución numérica
36
36
5. RESOLUCIÓN NUMÉRICA
on las funciones para la definición de la cinemática y dinámica del mecanismo, ya
sólo queda resolver en cada instante e integrar. Para ello será necesario definir el
tipo al que pertenece cada coordenada, resolver el problema de posición, el de
velocidades y, por último, el de aceleraciones. Posteriormente también se verá la resolución
aplicada al simulador interactivo. Para llevarlo a cabo se utiliza el procedimiento del modelo de
partida [17], modificado para incluir de nuevo la suspensión. A continuación se describe
someramente el proceso.
5.1. Clasificación de coordenadas
En el nuevo modelo se parte de 20 coordenadas. Primero, será necesario determinar su
clasificación para posteriormente resolver el mecanismo. De las 20, 5 son los grados de libertad, 4
corresponden a las restricciones no holónomas, 10 a las de contacto y 1 al ciclista, que será fija. Las
20 coordenadas del sistema son las siguientes:
[ ]Tttttdddd ccssssrzryrx 212121333 ητζτζεγψθψϕ=p
Por parecer más intuitivo, como grados de libertad se han tomado las 2 coordenadas de la
suspensión, el giro del manillar, el de la rueda trasera y 3θ , uno de los ángulos del cuadro, análogo
al vuelco o alabeo. Estas cinco coordenadas se agrupan en un vector de coordenadas dinámicas.
De manera algo más arbitraria, se han seleccionado como coordenadas correspondientes a
las restricciones no holónomas las coordenadas de posición del centro de gravedad del cuadro x e y,
el giro de la rueda delantera y otro de los ángulos del cuadro, 3ϕ , representativo de un giro
horizontal absoluto del plano del cuadro o guiñada. Estas cuatro coordenadas se agrupan en un
vector de coordenadas cinemáticas.
Las coordenadas restantes, las 8 correspondientes a las superficies de contacto, la
coordenada z del centro de gravedad del cuadro y el ángulo 3ψ , relativo a la inclinación o cabeceo
C
37
37
del cuadro, son las correspondientes a las restricciones de contacto y se agrupan en un vector de
coordenadas dependientes.
=
2
1
3
c
cdin γ
ψθ
p
=
εϕ3
ry
rx
kinp
=
t
t
t
t
d
d
d
d
dep
s
s
s
s
rz
2
1
2
1
3
τζ
τζψ
p
Aunque la elección de las coordenadas se ha llevado a cabo de manera intuitiva, podría
haberse hecho uso de diferentes métodos para ello [18]. Tras integrar, en cada instante se partirá del
valor de las nueve coordenadas del vector de coordenadas dinámicas y cinemáticas, además de la
derivada temporal del vector de coordenadas dinámicas. A partir de estos valores, tras resolver el
problema de posición se calculan las coordenadas dependientes. Posteriormente se está en
condiciones de resolver el problema de velocidades del mecanismo. Por último se obtendrán las
aceleraciones tras aplicar las ecuaciones dinámicas que, junto con las velocidades y posiciones
calculadas permitirán al integrador una nueva iteración. Esto se desarrolla más adelante.
Resolución numérica
38
38
5.2. Problema de posición
Resolver el problema de posición consiste en calcular el vector de coordenadas dependientes
a partir de las coordenadas independientes y las cinemáticas, utilizando para ello las ecuaciones de
restricción del par de leva correspondientes al contacto de las ruedas con el suelo.
Para resolver dichas ecuaciones se hace uso del algoritmo Newton-Raphson. Se comienza
asignando al vector de coordenadas dependientes unos valores iniciales sobre los que iterar. Si el
instante que se resuelve es el inicial, estos valores se eligen cercanos a los de la configuración
inicial deseada del mecanismo. Para cualquier otro instante, los valores iniciales se asignan a partir
de los del instante anterior más un incremento en función de la derivada de la coordenada y el
incremento de tiempo transcurrido. Este algoritmo se ha modificado ligeramente para adaptarlo al
nuevo modelo.
Haciendo un desarrollo en serie del vector de restricciones:
( ) ( ) ( )
( )
( )iii
con
icon
icon
con
ppp
pCpCpC
pC0
p
−∂
∂≈− ++ 11
4342143421
(61)
En este punto, conpC no es cuadrado, puesto que hay 19 coordenadas y 10 ecuaciones, por lo
que no puede calcularse su inversa. Sin embargo, cómo las únicas coordenadas que se actualizan
son las dependientes, la variación del resto en cada iteración es nula, por lo que la única parte
necesaria del jacobiano es la correspondiente a dichas coordenadas, el resto va multiplicada por
ceros. De esta forma, el jacobiano a utilizar es cuadrado:
( ) ( ) ( )( ) ( )i
conidep
con
idepidep
idepidepidep
coni
con
pCpCpp
pppCpC
p
p
⋅−=⇒
−⋅=−−
+
+
1
1
1 (62)
Así se itera hasta que el valor absoluto máximo del vector ( )icon pC esté por debajo de un
error máximo fijado previamente. La inmensa mayoría de las veces el error de partida con los
valores iniciales dados anteriormente ya es suficientemente pequeño por lo que el bucle sólo se
recorre una vez y no se itera. Esto agiliza el programa y supone la posibilidad de integrar en tiempo
real.
Antes de seguir avanzando se ha impuesto una condición de no vuelco, consistente en que el
ángulo 2
95.02
95.0 3
πθπ <<− , puesto que vuelca cuando 23
πθ ±= .
39
39
5.3. Problema de velocidad
Con todos los valores de las coordenadas en el instante actual el programa está en
condiciones de dibujar la configuración del mecanismo. El dibujo se realiza mediante un fotograma
cada 5 instantes de tiempo.
A continuación se resuelven las velocidades del sistema. Para determinar las velocidades del
mecanismo son necesarias también las condiciones de rodadura sin deslizamiento, restricciones no
holónomas [19]. De este modo:
( )
( ) 0pp
C0ppC
0pp
CC0pC
B
Cp
=∂
∂==
=∂
∂=→=
&
321&
&
&
321
&
rodrod
conconcon
con
,
( ) 0ppDpB
C
D
p =⋅=⋅
&&
321
con
(63)
Tal como se indicó al principio, como se parte de dinp& en el instante actual pues se calculó
en el instante anterior:
0pDpDpD =+= kindepkindepdindin &&& (64)
Y como kindepD es una matriz cuadrada:
dindinkindepkindep pDDp && 1−= (65)
Y así se obtiene el resto de velocidades. De este modo tenemos el valor de todas las
coordenadas del mecanismo y todas las velocidades por lo que pueden calcularse las aceleraciones
y finalizar la resolución.
Resolución numérica
40
40
5.4. Aceleraciones
Ahora se utilizarán las ecuaciones de la dinámica para calcular las aceleraciones. Antes de
comenzar, se mostrará la eliminación de la coordenada del ciclista. Como se vio anteriormente:
TvTTT QQpM +=&& (43)
Donde los términos incluyen la coordenada del ciclista. Sin embargo, al ser ésta guiada,
conocida:
ηMQQpM ηv −+=&& (66)
Ecuación en la que los términos y las matrices no incluyen η , ésta sólo aparece con su valor
conocido multiplicando su columna correspondiente a la matriz de masa, ηM . En la simulación
offline se toma 0=η para todo instante, por lo que el término desaparece. Por otro lado, las
aceleraciones deben cumplir que:
0pDpDpD0pD =++→= kindepkindepdindin &&&&&&& (67)
Lo que suponen 19 ecuaciones de la (66) y 14 de la (67). Este sistema permitiría calcular las
19 aceleraciones y los 14 multiplicadores de Lagrange para las fuerzas procedentes de las
restricciones. Sin embargo, sólo las aceleraciones son necesarias para seguir iterando, por lo que se
omite el cálculo de los multiplicadores, permitiendo simplificar la resolución mediante la aplicación
del generalised coordinate partitioning method [20], que permite pasar las DAE a ODE. Este es el
motivo por el que previamente no se incluyó el término de fuerzas asociadas a las restricciones
λDT , en la definición de los términos de fuerzas. Dichas fuerzas asociadas a los pares son de acción
y reacción, por lo que estrictamente no es posible que se anulen en un problema de dinámica
vectorial ya que, aunque están aplicadas en el mismo punto, pertenecen a sólidos distintos. No
obstante, al estar aplicadas en el mismo punto, desde un punto de vista energético del mecanismo
global la influencia de cada par de fuerzas es nula, como se va a comprobar a continuación.
De la ecuación (67), como kindepD es una matriz cuadrada:
pDDpDDp &&&&&& 11 −− −−= kindepdindinkindepkindep (68)
41
41
FpEpDD
0p
DD
I
p
pp
FE
+=
−+⋅
−=
= −− din
kindepdin
dinkindepkindep
din&&
4434421&&
&&
44 344 21&&
&&&& 11 (69)
Esto, sustituido en la ecuación (66), teniendo en cuenta el término de fuerzas de reacción
mencionado anteriormente:
( ) λDQQFpEMpM Tvdin −+=+= &&&& (70)
( ) ( ) 321444 3444 21&&
434210QM
λDEFMEQQEpEME TTTv
Tdin
T
ii
−−+=⋅ (71)
Se ha comprobado que el término TTDE es idénticamente nulo, por lo que desparecen los
multiplicadores de Lagrange. Finalmente queda:
idini QpM =&& (71)
Que es la ecuación del movimiento en coordenadas independientes. Representa un reducido
conjunto de 5 ecuaciones diferenciales ordinarias (ODE) en lugar de las ecuaciones (66) y (67),
DAE, más complejas de resolver.
De esta manera, se reordena en el programa el vector de coordenadas
=
kindep
din
p
pp
&&
&&&& y el resto
de términos que intervienen y se llega a la ecuación (71). A partir de ahí:
iidin QMp 1−=&& (72)
Con esto queda entonces resuelto el mecanismo, permitiendo al integrador una nueva iteración.
Los códigos para la función de derivadas de este apartado que utiliza el integrador son idénticos a los
del programa de partida salvo por la adición de la suspensión y se encuentran en el Anexo F.
Resolución numérica
42
42
5.5. Integración
La integración se lleva a cabo a través del algoritmo ode45 de MatLab. En la función
principal se le proporcionan el vector de tiempo y las condiciones iniciales del mecanismo. A partir
de ahí, la función de derivadas descrita anteriormente le permite integrar. Esquemáticamente:
= →
=⇒⇒
⇒⇒
=
din
kin
dinIntegrador
din
kin
din
pdindep
kin
dep
din
kin
din
yyy
p
p
p
p
p
p
pp
pp
p
p
p
&&&
&
&
&&&
&
& 0
0
0
00
00
0
0
0
0
Es necesario mencionar que, ya que se ha incluido la suspensión en el modelo, hay que
calcular la posición estática del mecanismo para las condiciones iniciales. En efecto, se ha supuesto
que antes de comenzar la simulación, un ciclista se ha subido con la bicicleta en una posición de
partida horizontal y se ha dado tiempo a que el sistema se estabilice.
El cálculo de dicha posición se realiza por medio de otra función, que hace uso del
algoritmo fsolve de MatLab para calcular la posición estática de las coordenadas de la suspensión
[21]. La función que fsolve trata de anular es análoga a la de derivadas, devolviendo el vector iQ .
Los códigos para la función principal, procedente del programa de partida, y el cálculo de
coordenadas estáticas para la suspensión se encuentran en el Anexo G.
43
43
6. SIMULACIÓN INTERACTIVA
n este punto, es posible trasladar el nuevo modelo con suspensión y geometría
tridimensional al simulador interactivo. Para ello se utilizará el mismo programa
de partida al que se ha implantado el nuevo modelo y se han realizado algunos
cambios en la visualización. La entrada se realiza por medio de un joystick de tres ejes, dos de ellos
para introducir el par de pedaleo y del manillar, y otro para controlar la inclinación del ciclista,
coordenada guiada que ahora sí varía. Las derivadas primera y segunda de esta coordenada se
calculan a partir de los valores de entrada del eje 3 del joystick y el incremento de tiempo
empleado. La integración numérica de las ecuaciones de movimiento se basa en el método descrito
en [22].
Fig 6-1. Esquema de control
E
Simulación interactiva
44
44
Se ha utilizado el control que se muestra en el esquema para este tipo de joystick porque
resulta más fácil de manejar, lo que permite realizar maniobras, como el countersteering, de forma
más intuitiva (en opinión del autor).
Los pasos de tiempo para la integración se extraen del tiempo real usando los comandos
“tic” y “toc” de MatLab, por lo que es importante que el tiempo de cálculo sea bajo, ya que en caso
contrario el paso sería demasiado elevado y la simulación imprecisa.
En este caso, para integrar se utiliza el algoritmo RungeKutta4 programado aparte, haciendo
uso de la función de derivadas. La única diferencia para esta función de derivadas es la inclusión de
los pares de pedaleo y dirección, y el valor y derivadas de la coordenada que controla la inclinación
del cuerpo del ciclista.
En la simulación interactiva, es fácil que el ciclista acabe saliéndose del área de suelo
dibujada por MatLab. Una posible solución es hacerla más grande, sin embargo, hacerla lo
suficientemente grande para que el ciclista no pueda salir retrasa demasiado la simulación, por lo
que se ha optado por dibujar el suelo siguiendo al ciclista. De este modo, siempre se dibuja la
misma cantidad, sin que el ciclista llegue nunca a salir. Aquí se observa un plot de uno de los
fotogramas:
Fig 6-2. Axonométrico siguiendo al ciclista
45
45
Este dibujo muestra una vista ortogonal axonométrica que sigue el mecanismo
continuamente. Sin embargo, controlarlo con esta vista puede resultar engorroso, ya que en ciertas
posiciones puede ser difícil apreciar la configuración tridimensional del mecanismo en el espacio o
percibir la velocidad de la bicicleta. Para un control más natural, se trata de buscar distintos tipos de
visualización y ver el más adecuado para el manejo. Con este fin se utiliza una visualización
ortogonal axonométrica en la que la cámara está fija, lo que permite apreciar mejor la velocidad de
la bicicleta:
Fig 6-3. Axonométrico fijo
El problema de la cámara fija es que hay que mantener al ciclista dentro del campo de
visión. Además, resulta difícil apreciar el giro del manillar, la inclinación del ciclista o el vuelco de
la bicicleta, sobre todo en ciertas orientaciones, lo cuál es bastante relevante a la hora de controlarlo
correctamente. Por ello se utiliza esta vista axonométrica situada continuamente detrás del ciclista,
que permite una mejor percepción de la orientación del mecanismo aparte de que no es necesario
dar vueltas continuamente para no salir del campo de visión:
Simulación interactiva
46
46
Fig 6-4. Axonométrico siguiendo al ciclista desde atrás
Aunque es bastante adecuado para el control, esta visualización y las anteriores adolecen de
una falta de sentido de profundidad, causa de la proyección ortogonal, sumado a una representación
por alambres. Ya que es más intuitiva para el ser humano una proyección cónica, se utilizarán
distintas configuraciones de vista cónica para obtener mejor percepción espacial:
Fig 6-5. Cónica siguiendo al ciclista
47
47
Esta es análoga a la primera, la cámara siguiendo al ciclista desde un lado, pero en vista
cónica. Para apreciar la velocidad, lo mejor es un punto de vista fijo, como en el caso anterior. Para
que el ciclista no salga del campo de visión siendo la cámara fija, al ser la vista cónica, se fuerza al
eje de la cámara a pasar por el centro de gravedad del cuadro. De este modo, la cámara apunta en
todo instante a la bicicleta y no es posible que salga del campo de visión.
Fig 6-6. Cónica fija apuntando al ciclista
El ciclista ya no se saldrá del campo de visión, pero si se aleja mucho de la cámara será
igualmente engorroso de controlar.
El último modo de visualización es el de vista cónica siguiendo al ciclista desde atrás. Es
quizás el que proporciona más realismo a la simulación, pues se trata de una cámara en tercera
persona desde la que se aprecia perfectamente la evolución el mecanismo:
Simulación interactiva
48
48
Fig 6-7. Cónica siguiendo al ciclista desde atrás
Con esto finalizaría la simulación interactiva. Los códigos que se han elaborado para los
distintos tipos de visualización se encuentran en el Anexo H, y forman parte de la función animaBici.m
[23].
49
49
7. COMPARACIÓN Y CONCLUSIONES
n este caso una validación del modelo resulta complicada por no disponer de una
bicicleta con ambas suspensiones y el instrumental necesario. Sin embargo, el
modelo del que se parte sí está validado, por lo que se concluirá con una somera
comparación. Con ello se pretende, más que obtener similitudes, poner de manifiesto el efecto de la
suspensión y el terreno irregular que caracterizan el nuevo modelo respecto del anterior.
Como parámetro indicativo a comparar, de todos los posibles se tomará la fuerza de
reacción que soporta el suelo en los puntos de contacto de las ruedas, más relacionado con la
suspensión. Esto se llevará a cabo por medio de los multiplicadores de Lagrange para cada caso. En
lugar de usar el generalised coordinate partitioning method, se resolverán directamente las DAE,
para así obtener los multiplicadores. De este modo, de (66) y (67):
−−+
=
pD
MQQ
λ
p
0D
DM&&
&& ηηvT
(73)
En MatLab esto se lleva a cabo en la función de derivadas, reordenando antes las matrices
D y D& , y creando un vector de tiempo auxiliar que almacena cada instante de integración.
Posteriormente se selecciona el multiplicador correspondiente a la reacción deseada, que es distinto
en ambos modelos. Las respuestas para suelo plano y sin perturbación inicial en ambos modelos son
las siguientes:
Fig 7-1. Reacción rueda delantera en modelo de partida sin perturbar
E
Comparación y conclusiones
50
50
Fig 7-2. Reacción en ambas ruedas en modelo actual sin perturbar
En este caso se observa una leve oscilación en el caso con suspensión, lo cuál es lógico y
coherente con el modelo, posiblemente producida por la fuerza aerodinámica y pequeños desajustes
en las condiciones iniciales. Las respuestas para suelo plano al introducir una pequeña perturbación
inicial en el manillar son:
Fig 7-3. Reacción rueda delantera en modelo de partida con perturbación
Fig 7-4. Reacción en ambas ruedas en modelo actual con perturbación
51
51
Aquí aparece un incremento brusco en la reacción seguido de una variación más gradual,
debido al giro y posterior estabilización. Al igual que antes, en el modelo actual se superponen
oscilaciones leves que ponen de manifiesto el efecto de la suspensión. A continuación se ilustran, a
modo de referencia, las reacciones del modelo actual con suelo irregular con y sin perturbación:
Fig 7-5. Reacción en ambas ruedas en modelo actual sin perturbación
Fig 7-6. Reacción en ambas ruedas en modelo actual con perturbación
Al igual que en los anteriores casos para el modelo actual, la respuesta se caracteriza por las
leves oscilaciones producto de la suspensión. Para suelo irregular, el efecto de la perturbación
inicial es mucho menor que el debido a la irregularidad del terreno, por lo que se observa que la
diferencia entre los dos últimos casos es escasa.
Si bien esto no constituye rigurosamente una validación del modelo, la comparación
establecida muestra resultados coherentes con el modelo de partida y con el efecto esperado de la
suspensión de la bicicleta.
Comparación y conclusiones
52
52
Como conclusión cabe destacar que, a pesar de añadir suspensión, terreno irregular y
geometría tridimensional de los neumáticos y del suelo, la simulación interactiva se ejecuta y
representa ágilmente en tiempo real en un equipo convencional, si no se añade excesiva carga
gráfica.
53
53
REFERENCIAS
[1] E. H. Jones, David. The stability of the bicycle. Physics Today, 23(4), pp. 34-40, 1970.
[2] Kooijman, J. D. G.; Meijaard, J. P.; Papadopoulos, Jim M.; Ruina, Andy y Schwab, A. L. A Bicycle Can Be Self-Stable Without Gyroscopic or Caster Effects. Science, 332, pp. 339-342, 2011.
[3] Koenen, C. The dynamic behaviour of a motorcycle when running straight ahead and when cornering. PhD tesis, Universidad Tecnológica de Delft, 1983.
[4] Whipple, F. J. W. The stability of the motion of a bicycle. The Quarterly Journal of Pure and Applied Mathematics, 30, pp. 312-348, 1899.
[5] Escalona, José Luís. Dinámica de una bicicleta.
[6] H. Edwards, Bruce; P. Hostetler, Robert y E. Larson, Roland. Derivadas parciales de una función de dos variables. Cálculo y geometría analítica Vol. 2 (pp. 1126-1127). Mc Graw Hill.
[7] Kane, T. R. Fundamental kinematical relationships for the single-track vehicles. International Journal of Mechanical Sciences, 17, pp. 499-504, 1975.
[8] H. Edwards, Bruce; P. Hostetler, Robert y E. Larson, Roland. Superficies cilíndricas, superficies cuádricas y superficies de revolución. Cálculo y geometría analítica Vol. 2 (pp. 1023-1031). Mc Graw Hill.
[9] P. Beer, Ferdinand; Russell Johnston, E. y E. Clausen, William. Ángulos de Euler. Mecánica vectorial para ingenieros. Dinámica. (pp. 1183-1184). Mc Graw Hill.
[10] Kooijman, J. D. G.; Schwab, A. L. et al. A method for estimating physical properties of a combined bicycle and rider. En: Proceedings of the ASME 2009 International Design Engineering Technical Conferences & Computers and Information in Engineering Conference, San Diego, California, 30 agosto – 2 septiembre 2009, 10 pp.
[11] Goldstein, Herbert; Poole, Charles y Safko, John. The Independent Coordinates of a Rigid Body. Classical Mechanics. (pp. 134-138). Addison-Wesley.
[12] H. Edwards, Bruce; P. Hostetler, Robert y E. Larson, Roland. Igualdad de las derivadas parciales cruzadas. Cálculo y geometría analítica Vol. 2 (p. 1131). Mc Graw Hill.
Referencias
54
54
[13] Cossalter, Vittore y Lot, Roberto. A motorcycle multi-body model for real time simulations based on the natural coordinates approach. Vehicle System Dynamics, 37, pp. 423-447, 2002.
[14] P. Beer, Ferdinand; Russell Johnston, E. y E. Clausen, William. Ecuaciones de movimiento de Euler. Mecánica vectorial para ingenieros. Dinámica. (pp. 1166-1167). Mc Graw Hill.
[15] Sharp, R. S. The stability and control of motorcycles. Journal of Mechanical Engineering Science, 15, pp. 316-329, 1971.
[16] Waechter, Matthias; Riess, Falk y Zacharias, Norbert. A multibody model for the simulation of bicycle suspension systems. Vehicle System Dynamics, 37, pp. 3-28, 2002.
[17] Escalona, José L. y Recuero, Antonio M. A bicycle model for education in multibody dynamics and real-time Interactive simulation. Multibody System Dynamics, 27, pp. 383-402, 2011.
[18] Kurz, Thomas; Burkhardt, Markus y Eberhard, Peter. Systems with constraint equations in the symbolic multibody simulation software Neweul-M2. En: Multibody dynamics 2011, ECCOMAS Thematic Conference, Bruselas, Bélgica, 4-7 julio 2011, 12 pp.
[19] Nikravesh, P. E. y Haug, E. J. Generalized coordinate partitioning for analysis of mechanical systems with nonholonomic constraints. ASME Journal of Mechanisms, Transmissions, and Automation in Design, 105, pp. 379-384, 1983.
[20] Wehage, R. A. y Haug, E. J. Generalized coordinate partitioning for dimension reduction in analysis of constrained dynamic systems. J. Mech. Design, 134, pp. 247-255, 1981.
[21] Systems of Nonlinear Equations, MatLab R2010a. MathWorks Documentation Center. Recuperado de http://www.mathworks.es.
[22] Schwab, A. L. y Meijaard, J. P. Dynamics of Flexible Multibody Systems with Non-Holonomic Constraint: A Finite Element Approach. Multibody Systems Dynamics, 10, pp. 107-123, 2003.
[23] 3-D Scene Control, MatLab R2010a. MathWorks Documentation Center. Recuperado de http://www.mathworks.es.
55
Anexos
Anexo A Códigos para el suelo
Geometría
function [rp, ts1, ts2] = GeomSuelo(s1,s2,a,b,c,d) rp=[s1,s2,a*sin(b*s1)+c*sin(d*s2)].'; ts1=[1,0,a*b*cos(b*s1)].'; ts2=[0,1,c*d*cos(d*s2)].'; end
Dibujo
%%%%%%%%%%%%%%%%%% %Dibujo del suelo% %%%%%%%%%%%%%%%%%% %Líneas en dirección X %Variables auxiliares alfa=-5:0.5:20; %Valores de la coordenada X beta=-5:1:20; %Valores de la coordenada Y aux=1; %se utiliza para cambiar el sentido del recorrido a lternativamente %Bucle que recorre la dirección X. for j=1:length(beta) if aux==1 for k=1:length(alfa) rPS1(1:3,(j-1)*length(alfa)+k)=[alfa(k),beta(j),GSa1*sin(GSf1*a lfa(k))+GSa2*sin(GSf2*beta(j))]'; end else for k=1:length(alfa) rPS1(1:3,j*length(alfa)+1-k)=[alfa(k),beta(j),GSa1*sin(GSf1*alfa(k))+GSa2*sin (GSf2*beta(j))]'; end end aux=-aux; end
56
%Variables auxiliares alfa=-5:0.5:20; beta=-5:1:20; aux=1; %Para este caso son iguales que el anterior, por lo que %ambas direcciones podrían realizarse en un único b ucle for j=1:length(beta) if aux==1 for k=1:length(alfa) rPS2(1:3,(j-1)*length(alfa)+k)=[beta(j),alfa(k),GSa1*sin(GSf1*b eta(j))+GSa2*sin(GSf2*alfa(k))]'; end else for k=1:length(alfa) rPS2(1:3,j*length(alfa)+1-k)=[beta(j),alfa(k),GSa1*sin(GSf1*beta(j))+GSa2*sin (GSf2*alfa(k))]'; end end aux=-aux; end %De este modo se obtienen dos matrices rPS1 y rPS2 que se superponen %para obtener las mallas del suelo en ambas direcci ones
57
Anexo B Códigos para el neumático
Geometría
function [rp, txi, ttau] = GeomNeum(xi,tau,rad,R,T) r=rad-R+R*sqrt(1-(tau/T)^2); dr=-tau*(R/(T^2))*(1-(tau/T)^2)^(-1/2); rp=[r*cos(xi),tau,-r*sin(xi)].'; txi=[-r*sin(xi),0,-r*cos(xi)].'; ttau=[dr*cos(xi),1,-dr*sin(xi)].'; end
Dibujo
%%%%%%%%%%%%%%%%%%%%%%%%%% %Dibujo de los neumáticos% %%%%%%%%%%%%%%%%%%%%%%%%%% %Variables auxiliares alfa = 0:0.3:(2*pi+0.3); %Recorre el toro en dirección azimutal betat = -GTt:0.03:GTt; %Recorre anchura de rueda trasera betad = -GTd:0.03:GTd; %Recorre anchura de rueda delantera for j=1:length(alfa) %Bucle principal for k=1:length(betat) %Sub-bucle para rueda trasera rr=Rt-GRt+GRt*sqrt(1-(betat(k)/GTt)^2); rP2(1:3,(j-1)*length(betat)+k)=RG2+A2*[ rr*cos(alfa(j)),betat(k),-rr*sin(alfa(j))]'; end for k=1:length(betad) %Sub-bucle para rueda delantera rr=Rd-GRd+GRd*sqrt(1-(betad(k)/GTd)^2); rP5(1:3,(j-1)*length(betad)+k)=RG5+A5*[ rr*cos(alfa(j)),betad(k),-rr*sin(alfa(j))]'; end end %Matrices con las mallas de cada rueda rP2=[rP2 RG2]; %Esto es para visualizar el radio de cada rueda rP5=[rP5 RG5];
58
Anexo C Códigos para la orientación y posición de los sólidos
%MATRICES DE ROTACION SIMPLE A_bet=[[cos(bet);0;-sin(bet)] [0;1;0] [sin(bet);0;c os(bet)]]; %Rotaciones para el sólido 3 A_phi3=[[cos(phi3);sin(phi3);0] [-sin(phi3);cos(phi 3);0] [0;0;1]]; A_tet3=[[1;0;0] [0;cos(tet3);sin(tet3)] [0;-sin(tet 3);cos(tet3)]]; A_psi3=[[cos(psi3);0;-sin(psi3)] [0;1;0] [sin(psi3) ;0;cos(psi3)]]; %Giros de las ruedas A_psi=[[cos(psi);0;-sin(psi)] [0;1;0] [sin(psi);0;c os(psi)]]; A_eps=[[cos(eps);0;-sin(eps)] [0;1;0] [sin(eps);0;c os(eps)]]; %Manillar A_gam=[[cos(gam);sin(gam);0] [-sin(gam);cos(gam);0] [0;0;1]]; %Ciclista A_eta=[[1;0;0] [0;cos(eta);sin(eta)] [0;-sin(eta);c os(eta)]]; %Suspensión A_c1=[[cos(c1);0;-sin(c1)] [0;1;0] [sin(c1);0;cos(c 1)]]; %MATRICES DE ROTACION DE LOS SISTEMAS DE REFERENCIA DE LOS SOLIDOS E INTERMEDIOS A3=A_phi3*A_tet3*A_psi3; A2=A3*A_psi; A4=A3*A_bet*A_gam; A5=A4*A_eps; A6=A3*A_eta; %Suspensión A7=A3*A_c1; A8=A4; %POSICIONES DE CENTROS DE GRAVEDAD Y ARTICULACIÓN EN LOCALES rG3=[x3 0 z3]'; rG4=[x4 0 z4]'; rG5=[x5 0 z5]'; rG6=[x6 0 z6]'; %Posición del cdg del tronco del ciclista respecto al eje de giro (sillín) %Suspensión rG7=[x7 0 z7]'; ur7=[urx7 0 urz7]'; rG8=[x8 0 -c2]'; %POSICIONES DE LOS CENTROS DE GRAVEDAD EN GLOBALES RG3=[rx ry rz]'; RG7=RG3-A3*A_bet*rG3-A7*ur7; RG2=RG7-A7*rG7; RG4=RG3+A3*A_bet*(rG4-rG3); RG8=(RG4+A4*rG8); RG5=(RG8+A4*rG5); RG6=(RG3+A6*rG6); %Esto sería exacto si el cdg del sólido 3 estuviera en el eje de giro del tronco del ciclista (sillín)
59
Anexo D Códigos para las restricciones
%%%%%%%%%%%%%%%%%%%%% %%%%RESTRICCIONES%%%% %%%%%%%%%%%%%%%%%%%%% %Restricciones de contacto %Contacto rueda delantera [rprd, txid, ttaud] = GeomNeum(xid,taud,Rd,GRd,GTd) ; %Llama a geometría del suelo [rpsd, ts1d, ts2d] = GeomSuelo(s1d,s2d,GSa1,GSf1,GS a2,GSf2); %Llama a geometría de la rueda %Mismo punto de contacto RD = RG5+A5*rprd-rpsd; %Misma dirección de las normales RD(4) = (cross(ts1d,ts2d)).'*(A5*txid); RD(5) = (cross(ts1d,ts2d)).'*(A5*ttaud); %Contacto rueda trasera [rprt, txit, ttaut] = GeomNeum(xit,taut,Rt,GRt,GTt) ; [rpst, ts1t, ts2t] = GeomSuelo(s1t,s2t,GSa1,GSf1,GS a2,GSf2); RT = RG2+A2*rprt-rpst; RT(4) = (cross(ts1t,ts2t)).'*(A2*txit); RT(5) = (cross(ts1t,ts2t)).'*(A2*ttaut); ResCon = [RD.' RT.'].'; CqCon = (jacobian(ResCon,p)); DCqCon = (jacobian(CqCon*dp,p)); %Restriciones de rodadura sin deslizamiento VG2 = H2*dp; VT = VG2+A2*cross(w2L,rprt); VG5 = H5*dp; VD = VG5+A5*cross(w5L,rprd); ResRod = [VT(1) VT(2) VD(1) VD(2)].'; %Sólo dos componentes pues la tercera se garantiza con el contacto B = (jacobian(ResRod,dp)); DB = (jacobian(B*dp,p)); %Generación de funciones relativas a las restriccio nes matlabFunction(ResCon, 'file' , 'ResHolon' ); matlabFunction(CqCon(:,[1:17,19,20]), 'file' , 'JacobianoHolon' ); matlabFunction(DCqCon(:,[1:17,19,20]), 'file' , 'DJacobianoHolon' ); matlabFunction(B(:,[1:17,19,20]), 'file' , 'MatrizB' ); matlabFunction(DB(:,[1:17,19,20]), 'file' , 'DMatrizB' ); %Se omite la coordenada del ciclista puesto que ser á fija o guiada
60
Anexo E Códigos para la dinámica
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ECUACIONES DE NEWTON-EULER % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Matriz de masa %Masas MM(3*(1-1)+1:3*(1-1)+3,3*(1-1)+1:3*(1-1)+3) = m2*ey e(3); //[…] Se omite el resto, pues es análogo MM(3*(7-1)+1:3*(7-1)+3,3*(7-1)+1:3*(7-1)+3) = m8*ey e(3); %Inercias MM(3*7+3*(1-1)+1:3*7+3*(1-1)+3,3*7+3*(1-1)+1:3*7+3* (1-1)+3) = I2;
//[…] Análogo MM(3*7+3*(7-1)+1:3*7+3*(7-1)+3,3*7+3*(7-1)+1:3*7+3* (7-1)+3) = I8; %Término de fuerzas volumétricas a = w2L; b = I2*w2L; QQv(3*7+3*(1-1)+1,1) = -(a(2)* b(3)-a(3)*b(2)); QQv(3*7+3*(1-1)+2,1) = -(a(3)*b(1)-a(1)*b(3)); QQv( 3*7+3*(1-1)+3,1) = -(a(1)*b(2)-a(2)*b(1));
//[…] Análogo a = w8L; b = I8*w8L; QQv(3*7+3*(7-1)+1,1) = -(a(2)* b(3)-a(3)*b(2)); QQv(3*7+3*(7-1)+2,1) = -(a(3)*b(1)-a(1)*b(3)); QQv( 3*7+3*(7-1)+3,1) = -(a(1)*b(2)-a(2)*b(1)); %Término de fuerzas gravitatorias QQgrav(3*(1-1)+1:3*(1-1)+3,1) = [0 0 -m2*g].';
//[…] Análogo QQgrav(3*(7-1)+1:3*(7-1)+3,1) = [0 0 -m8*g].'; QQgrav(2*3*7) = 0; %Para completar el vector de ceros, ya que no hay p ar en el c.d.g. %%%%% MATRICES DE TRANSFORMACIÓN CINEMÁTICA %%%%% L = [H2.' H3.' H4.' H5.' H6.' H7.' H8.' G2.' G3.' G 4.' G5.' G6.' G7.' G8.'].'; l = [h2.' h3.' h4.' h5.' h6.' h7.' h8.' g2.' g3.' g 4.' g5.' g6.' g7.' g8.'].'; M = L.'*MM*L; Qv = L.'*(QQv-MM*l*dp); Qgrav = L.'*QQgrav; %%%%%%%%%%%%%%%%%%%%%%% % FUERZA AERODINÁMICA % %%%%%%%%%%%%%%%%%%%%%%% syms cv real ; VG3 = H3*dp; Qaero = (-cv*(VG3.'*VG3)^0.5)*H3.'*VG3;
61
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MATRIZ DE ACCIÓN DEL CICLISTA % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% S(:,1) = G4(3,:).'; %Manillar S(:,2) = G2(2,:).'; %Rueda trasera S(:,3) = G3(1,:).'; %Vuelco %%%%%%%%%%%%%%%%%%%%%% % FUERZAS SUSPENSIÓN % %%%%%%%%%%%%%%%%%%%%%% % Suspensión trasera (sólidos 3 y 7) us3=[usx3 0 usz3].'; us7=[usx7 0 usz7].'; rs3=RG3+A3*us3; rs7=RG7+A7*us7; rs37=rs3-rs7; l37=(rs37.'*rs37)^(1/2); dl37=jacobian(l37,p)*dp; U37=0.5*k37*(l37-l037)^2; F37=0.5*c37*dl37^2; Qsusp37=-jacobian(U37,p).'-jacobian(F37,dp).'; %Suspensión delantera (sólidos 4 y 8) us4=[usx4 0 usz4].'; us8=[usx8 0 usz8].'; rs4=RG4+A4*us4; rs8=RG8+A8*us8; rs48=rs4-rs8; l48=(rs48.'*rs48)^(1/2); dl48=jacobian(l48,p)*dp; U48=0.5*k48*(l48-l048)^2; F48=0.5*c48*dl48^2; Qsusp48=-jacobian(U48,p).'-jacobian(F48,dp).'; Qsusp=Qsusp37+Qsusp48; %Generación de funciones relativas a las ecuaciones dinámicas matlabFunction(M, 'file' , 'MatrizMasaBici' ); matlabFunction(Qv, 'file' , 'FuerzaQvBici' ); matlabFunction(Qgrav, 'file' , 'FuerzaQravBici' ); matlabFunction(Qaero, 'file' , 'FuerzaQaeroBici' ); matlabFunction(S, 'file' , 'MatrizAccionBici' ); matlabFunction(Qsusp, 'file' , 'FuerzaSuspension' );
62
Anexo F Códigos de la función de derivadas
function yp = DerivadasBici(t,y) persistent qdep dqdep tantes Fotograma; global Param M_dir tau; nd = 5; %Número de coordenadas dinámicas (grados de liberta d) nk = 4; %Número de coordenadas cinemáticas (rodadura sin de slizamiento) n = 19; %Número total de coordenadas menos la del ciclista %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% ACCIONES DE CONTROL: M_ped, M_dir y eta %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Par en pedaleo y par en dirección (poner valores según algoritmo de control) M_ped = 0.0; M_dir = 0.0; % Suponemos nulo el ángulo del tronco del ciclista (se puede usar para control cambiando lo de abajo) eta = 0.0; deta = 0.0; ddeta = 0.0; tau = eta; %Coordenadas qdin = y(1:nd,1); %Vector de coordenadas dinámicas qkin = y(nd+1:nd+nk,1); %Vector de coordenadas cinemáticas dqdin = y(nd+nk+1:2*nd+nk,1); //[…] Asignación de valores %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% CALCULO POSICIÓN %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Estimacion inicial if t == 0, rz = .94; psi3 = 0; xid = pi/2; taud = 0; s1d = 0.7; s2d = 0; xit = xid; taut = taud; s1t = -0.3; s2t = 0; %Para el instante inicial, valores cercanos a la co nfiguración inicial
63
else rz = qdep(1) + dqdep(3)*(t-tantes); psi3 = qdep(2) + dqdep(5)*(t-tantes); xid = qdep(3) + dqdep(7)*(t-tantes); taud = qdep(4) + dqdep(8)*(t-tantes); s1d = qdep(5) + dqdep(9)*(t-tantes); s2d = qdep(6) + dqdep(10)*(t-tantes); xit = qdep(7) + dqdep(11)*(t-tantes); taut = qdep(8) + dqdep(12)*(t-tantes); s1t = qdep(9) + dqdep(13)*(t-tantes); s2t = qdep(10) + dqdep(14)*(t-tantes); %Para el resto de instantes, valores incrementados end %Guarda el tiempo para calcular el incremento de ti empo el paso siguiente tantes = t; %Estimación inicial para Newton-Raphson qdep0 = [rz psi3 xid taud s1d s2d xit taut s1t s2t] '; p([3 5 10:17]) = [rz psi3 xid taud s1d s2d xit taut s1t s2t]; %NewtonRaphson para resolver problema posición Err = 100; Errmin = 1; while ( Err>Errmin ) C = ResHolon(p); Cq = JacobianoHolon(p); Cqdep = Cq(:,[3 5 10:17]); %Correspondiente a las coordenadas dependientes qdep = qdep0-Cqdep\C; qdep0 = qdep; p([3 5 10:17]) = qdep; C = ResHolon(p); Err = max(abs(C)); end if tet3<0.95*pi/2 && tet3>-0.95*pi/2 %Condición de no vuelco %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% ANIMA LA BICI %%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if (t==0) Fotograma = 5; end if (Fotograma < 5) Fotograma = Fotograma+1; else animaBici(t,p); Fotograma = 0; End
64
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% CALCULO VELOCIDADES %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Cq = JacobianoHolon(p); B = MatrizB(p); D = [Cq' B']'; Ddep = D(:,[1:5,9:17]); %Correspondiente a las coordenadas cinemáticas y dependientes Dind = D(:,[6:8,18:19]); %Correspondiente a las coordenadas dinámicas dqdep = Ddep\(-Dind*[dtet3 dpsi dgam dc1 dc2]') ; %Ojo, este vector dqdep incluye las coordenadas cin emáticas y las dependientes
//[…] Asignación de valores
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% CÁLCULO MATRIZ ACELERACIONES %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DCq = DJacobianoHolon(p,dp); DB = DMatrizB(p,dp); E(1:nd,1:nd) = eye(nd); E(nd+1:n,1:nd) = -Ddep\Dind; DD = [DCq' DB']'; F(1:nd,1) = zeros(nd,1); F(nd+1:n,1) = -Ddep\(DD*dp([1:17,19,20],1)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% CÁLCULO MATRIZ MASA Y FUERZAS %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% M_tot = MatrizMasaBici(p); Qv_tot = FuerzaQvBici(p,dp); Qgrav_tot = FuerzaQravBici(p); Qaero_tot = FuerzaQaeroBici(p,dp); S_tot = MatrizAccionBici(p); Qext_tot = S_tot([1:17,19,20],:)*[M_dir M_ped 0 .0]'; %Suspensión Qsusp_tot = FuerzaSuspension(p,dp); %Se excluyen las fuerzas del giro del ciclista 'eta ' M = M_tot([1:17,19,20],[1:17,19,20]); Qv = Qv_tot([1:17,19,20],1); Qgrav = Qgrav_tot([1:17,19,20],1); Qaero = Qaero_tot([1:17,19,20],1); Qext = Qext_tot([1:19],1); Qeta = -M_tot([1:17,19,20],12)*ddeta; %Suspensión Qsusp = Qsusp_tot([1:17,19,20],1);
65
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% REORDENA LAS ECUACIONES DEL MOVIMIENTO %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% orden = [6:8 18 19 1:5 9:17]; %Reordena matrices y vectores for i=1:length(orden), Qgrav2(i,1) = Qgrav(orden(i)); Qaero2(i,1) = Qaero(orden(i)); Qv2(i,1) = Qv(orden(i)); Qext2(i,1) = Qext(orden(i)); Qeta2(i,1) = Qeta(orden(i)); %Suspensión Qsusp2(i,1) = Qsusp(orden(i)); for j=1:length(orden), M2(i,j) = M(orden(i),orden(j)); end end Mi = E'*M2*E; Qi = E'*(Qv2+Qgrav2+Qaero2+Qext2+Qeta2+Qsusp2- M2*F); yp(1:nd,1) = y(nd+nk+1:2*nd+nk,1); yp(nd+1:nd+nk,1) = [drx dry dphi3 deps]'; yp(nd+nk+1:2*nd+nk,1) = Mi\Qi; else yp = zeros(2*nd+nk,1); end
66
Anexo G Códigos de la función principal y cálculo de posición estática
global Param Param = Parametros; V = Param(2); Rt = Param(3); %Valores iniciales de las coordenadas y sus derivad as qdin0 = [0 0 0 .9033 .2353]'; %Calculado por qest qkin0 = [0 0 0 0]'; dqdin0=[0 V/Rt 0 0 0]'; tspan=0:0.01:10; %SOLUCION MEDIANTE INTEGRACION NUMERICA if (1) [t,y] = ode45(@DerivadasBici,tspan, [qdin0' qki n0' dqdin0']'); qdin = y(:,1:nd); dkin = y(:,nd+1:nd+nk); dqdin = y(:,nd+nk+1:2*nd+nk); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %CÁLCULO DE POSICIÓN ESTÁTICA% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% global Param Param = Parametros; ppdin0=[0 0 0 .9 .23]'; %Punto de partida para iteración qestatica=fsolve(@eqest,ppdin0,optimset( 'MaxFunEvals' ,10000, 'MaxIter' ,1000)); function out = eqest(pp) qdep0=[0.95 0 1.885 0 0.95 0 1.5401 0 -0.04 0]'; p([3 5 10:17]) = qdep0; p([6:8 19:20]) = pp; p([1 2 4 9 18]) = [0 0 0 0 0]; nd=5; n=19; dp=0*p; Err = 100; Errmin = 0.01;
67
while ( Err>Errmin ) C = ResHolon(p); Cq = JacobianoHolon(p); Cqdep = Cq(:,[3 5 10:17]); qdep = qdep0-Cqdep\C; qdep0 = qdep; p([3 5 10:17]) = qdep; C = ResHolon(p); Err = max(abs(C)); end Cq = JacobianoHolon(p); B = MatrizB(p); D = [Cq' B']'; Ddep = [D(:,1:5) D(:,9:17)]; Dind = [D(:,6:8) D(:,18:19)]; E(1:nd,1:nd) = eye(nd); E(nd+1:n,1:nd) = -Ddep\Dind; Qgrav_tot = FuerzaQravBici(p); Qsusp_tot = FuerzaSuspension(p,dp); Qgrav = Qgrav_tot([1:17,19,20],1); Qsusp = Qsusp_tot([1:17,19,20],1); orden = [6:8 18 19 1:5 9:17]; for i=1:length(orden), Qgrav2(i,1) = Qgrav(orden(i)); Qsusp2(i,1) = Qsusp(orden(i)); end Qi = E'*(Qgrav2+Qsusp2); out=Qi;
68
Anexo H Códigos de los tipos de visualización
axis([rx-1.5 rx+1.5 ry-1 ry+1 rz-1 rz+0.6]); %Axonométrico sigue ciclista axis([-1 20 -1 20 -1 1]); %Axonométrico fijo % Axonométrico sigue ciclista desde atrás axis([rx-1.5 rx+1.5 ry-1 ry+1 rz-1 rz+0.6]); view(phi3*180/pi-90, 30) %Ángulos azimutal y de elevación de la cámara %Cónica sigue al ciclista camproj( 'perspective' ) %Vista cónica campos([-5+rx -5+ry 5]) %Posiciona la cámara camva(30) %Ángulo de visión de la cámara camtarget([rx ry rz]) %Apunta hacia el ciclista %Cónica apunta al ciclista camproj( 'perspective' ) campos([-5 -5 10]) camva(30) camtarget([rx ry rz]) %Cónica sigue al ciclista desde atrás camproj( 'perspective' ) campos([rx-3*cos(phi3) ry-3*sin(phi3+10*pi/180) rz+ 0.4]) camva(30) camtarget([rx ry rz])