41
1 DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO COMPUTACIONAL DE UNA BICICLETA KAREN VALENTINA CASTELLANOS GÓMEZ ANDRÉS LEONARDO GONZÁLEZ MANCERA PhD PROFESOR ASOCIADO ASESOR UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA MECÁNICA BOGOTÁ, COLOMBIA 2020

DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

1

DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO COMPUTACIONAL DE

UNA BICICLETA

KAREN VALENTINA CASTELLANOS GÓMEZ

ANDRÉS LEONARDO GONZÁLEZ MANCERA PhD

PROFESOR ASOCIADO

ASESOR

UNIVERSIDAD DE LOS ANDES

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA MECÁNICA

BOGOTÁ, COLOMBIA

2020

Page 2: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

2

Contenido Resumen .................................................................................................................................................... 3

Abstract ..................................................................................................................................................... 3

Introducción .............................................................................................................................................. 3

Objetivos .................................................................................................................................................... 6

Objetivo general .................................................................................................................................... 6

Objetivos específicos ............................................................................................................................. 6

1. Modelo dinámico ............................................................................................................................... 7

1.1. Método de Kane y caso de un disco sobre una rampa inclinada [20] .................................. 13

1.2. Modelo bicicleta....................................................................................................................... 16

2. Implementación computacional ..................................................................................................... 22

2.1. Implementación caso de un disco sobre una rampa inclinada ............................................. 23

2.2. Implementación caso bicicleta ................................................................................................ 27

3. Estudio del caso ............................................................................................................................... 34

4. Conclusiones y trabajos futuros ..................................................................................................... 38

Page 3: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

3

Resumen

Este proyecto está enfocado en el desarrollo de un modelo dinámico computacional de una

bicicleta basado en el modelo de una bicicleta propuesto por Whipple, para ello se utilizó el método

de Kane y el lenguaje de programación Python, principalmente la librería SymPy y los módulos

mechanics y PyDy. Con este proyecto se busca tener una base que pueda ser utilizada para

investigaciones futuras respecto a la dinámica multicuerpos y a su integración con la mecánica

computacional, por lo que además del caso de la bicicleta se desarrolló un modelo sencillo de una

rueda sobre una rampa inclinada para poder explicar el método de Kane a profundidad.

Abstract

This project is focused on the development of a dynamic computational model of a bicycle based

on the Whipple bicycle model, with this purpose the Kane method and the Python programming

language were used, principally the SymPy library and the mechanics and PyDy modules. This

project seeks to have a basis that can be used for future research on multibody dynamics and its

integration with computational mechanics, so in addition to the case of the bicycle, a simple model

of a wheel on an inclined ramp was developed in order to explain Kane's method in depth.

Introducción

La bicicleta es considerada como uno de los vehículos más duraderos y utilizados del mundo, con

más de mil millones producidos durante casi doscientos años de historia del ciclismo [1]. La

creación del primer modelo de un vehículo de tracción humana similar a una bicicleta se remonta

a unos 600 años atrás. Sin embargo, este modelo presentaba una gran diferencia en cuanto a su

forma y método de manejo. A lo largo de la historia se han desarrollado diversas e importantes

innovaciones que han transformado drásticamente la forma y características de este vehículo, los

modelos anteriores tenían dos ruedas, pero no poseían una forma específica de conducir ni

mecanismos especializados para dirigir e impulsar la bicicleta hacia adelante sin la ayuda de la

tracción directa de los pies con el suelo, además de carecer de un sistema de reducción de

velocidad. [2]

Uno de los primeros vehículos con mayor similitud a la bicicleta moderna fueron las draisinas, las

cuales presentaban un par de ruedas de madera con un diámetro de aproximadamente 27 pulgadas,

sostenidas con aros de hierro, estas fueron descartadas debido a su dificultad para mantener el

equilibrio. Durante los años siguientes, varios mecánicos experimentaron con vehículos de tres y

cuatro ruedas, esperando que tuvieran una mayor estabilidad que las fallidas draisinas. Después de

varios años se desarrollaron diversos mecanismos para desplazar los triciclos y velocípedos sin

ayuda de la tracción de los pies con el suelo, se sugiere que el primer triciclo con una sola rueda

delantera accionada por manivela se originó alrededor de 1855-1860, y que el primer velocípedo

de dos ruedas con manivela probablemente se desarrolló a partir de 1862. Un folleto publicitario

que se puede fechar tentativamente en 1868 describe a Pierre Michaux como el “inventor’’ del

Page 4: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

4

velocípedo con pedales. Después se 1868 habían alrededor de 150 fabricantes de velocípedos solo

en París, en su mayoría, copiaron la idea inicial de Michaux agregando variaciones y mejoras. [1]

La bicicleta tal y como se conoce hoy en día, tuvo sus inicios en el temprano siglo XIX con el

primer modelo de Karl von Drais llamada “Draisienne” o velocípedo, similar en su funcionamiento

a lo que se conoce hoy en día como bicicleta de equilibrio; más tarde, cerca de 1860, los pedales

fueron añadidos a las bicicletas logrando con este cambio un auge entre los usuarios de los

velocípedos, conllevando a la creación de diversos modelos como el biciclo, triciclo y cuadriciclo,

todos estos en busca de mejorar la comodidad y seguridad de estos vehículos; posteriormente a

mediados de 1900 fueron añadidos los elementos que constituyen una bicicleta moderna, llantas

de caucho, frenos y transmisión [3] .

Por otro lado, este vehículo se convertido en un medio de transporte imprescindible para la

sociedad, el cual ha generado tanto cambios en la infraestructura como en el comportamiento de

la ciudad [4]. En el caso de Colombia, la bicicleta se popularizó en la primera mitad del siglo XX,

siendo parte de la consolidación de la cultura deportiva [5]. Actualmente existen diversos diseños

de bicicleta asociados a diferentes funciones (deportivas, de ruta, de montaña, o simplemente como

medio de entretenimiento). Algunos análisis psicológicos realizados en Bogotá muestran que la

selección de la bicicleta como medio de transporte está basada en procesos intencionales,

principalmente asociados a la percepción de apoyo social (incluyendo la disminución de emisiones

globales de dióxido de carbono), autosuficiencia, y una actitud positiva hacia la misma. A pesar

de que se observa una gran empatía referente al uso de la bicicleta en el país, la tarea de

proporcionar accesibilidad y movilidad a todos los viajeros de manera sostenible sigue siendo

compleja, especialmente por la falta de infraestructura. [6]

Después de realizar un estudio detallado del proceso de evolución de este tipo de artefactos, se

encontró que, la gran variedad de diseños y refinamientos históricamente fueron hechos mediante

prueba y error, lo que llevo al surgimiento de modelos matemáticos para explicar el

comportamiento dinámico de las bicicletas mediante ecuaciones que gobiernen el movimiento de

la bicicleta, con el objetivo de comprender la estabilidad de la bicicleta, la capacidad de control y

el manejo de las perturbaciones. De los modelos dinámicos se puede destacar el trabajo de

Carvallo–Whipple (1900) [7] [2], esta es una de las aproximaciones más sencillas pero acertadas,

en este modelo se trata a la bicicleta como cuatro cuerpos principales, las ruedas delantera y trasera,

el manubrio y el marco como se observa en la Figura 1, además de otras suposiciones, como la

condición de no deslizamiento y el constante contacto de las ruedas con el suelo; posteriormente

fueron añadidos trabajos de investigadores en el campo de la dinámica como lo son las ecuaciones

de Kane y de Newton-Euler. Otros modelos que se pueden distinguirse en este campo son el de

Papadopoulos [8] [3] quien describió las ecuaciones linealizadas en su modelo para ser lo más

simples y simétricas posibles; Neĭmark & Fufaev [9] [4] presentaron la derivación de ecuaciones

no holonómicas basadas en el modelo de Whipple.

Page 5: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

5

Figura 1 Modelo Whipple [10]

Estos modelos matemáticos han sido llevados a modelos computacionales con el uso de distintos

softwares de programación y diseño permitiendo la experimentación y simulación de manera

eficiente, numerosos modelos extendidos basados en el de Carvallo–Whipple han sido

desarrollados, incluyendo el de Meijaard [10], en este caso los autores buscan desarrollar un

modelo para el estudio de la auto estabilidad en una bicicleta, usando métodos matemáticos y

computacionales, vale destacar que se caracteriza la bicicleta de referencia usando 25 parámetros,

estos parámetros son después utilizados por Peterson [11] para desarrollar un modelo dinámico

agregando también parámetros referentes al efecto girostático causado por algunos de los cuerpos

de la bicicleta, para el desarrollo de las ecuaciones de cinemática utilizó el paquete de Multibody

Dynamics with Python (PyDy) y la librería SymPy para obtener un modelo de código más exacto

y practico.

Estas últimas dos librerías van a ser el corazón del proyecto, con su uso se busca una

implementación sencilla y efectiva. SymPy es una librería de Python centrada en operaciones

matemáticas simbólicas, de esta librería será utilizado el módulo de física para crear el modelo

simbólico, especialmente el método de Kane que será explicado a fondo más adelante. Por otra

parte, PyDy es una librería especializada en dinámica, la cual utiliza una variedad de herramientas

escritas en el lenguaje de Python para estudiar la dinámica multicuerpos, al igual que para

automatizar y mejorar los flujos de estos sistemas, esta librería se basa en SymPy para la creación

de modelos, una vez creados es posible convertirlos en sistemas usando PyDy para facilitar su

integración, que de otra manera requeriría una mayor cantidad de pasos matemática y

computacionalmente, un ejemplo del uso se puede hallar en la documentación [12]

Para este proyecto se planea utilizar las bases computacionales desarrolladas por Peterson en el

lenguaje de programación Python, un modelo basado en el modelo de Whipple junto con

investigaciones previas, la información y modelos disponibles en la documentación de SymPy

[13], en especial los modelos referentes a un disco girando y a una bicicleta que utilizan el método

de Kane para su desarrollo [14], además se planea hacer uso del paquete PyDy [15] para la

integración de los modelos creados mediante SymPy. para desarrollar un modelo computacional

Page 6: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

6

capaz de simular el comportamiento de una bicicleta en diferentes condiciones dinámicas y que

permita conocer y extraer información del sistema, con el propósito de poder utilizar este modelo

en futuras investigaciones.

Objetivos

Objetivo general

Desarrollar un modelo dinámico computacional de una bicicleta en Python y validar su

correcto funcionamiento bajo distintas condiciones y escenarios.

Objetivos específicos

• Desarrollar un modelo dinámico de una bicicleta por medio de ecuaciones y el método

de Kane

• Desarrollar un modelo dinámico computacional basado en el primer modelo

matemático, incluyendo en este los paquetes PyDy y Sympy de Python.

• Validación del funcionamiento del modelo computacional mediante comprobaciones

junto con datos experimentales.

Page 7: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

7

1. Modelo dinámico

Para representar el comportamiento dinámico de un sistema se formula una serie de ecuaciones

matemáticas que describen el modelo. Existen diversas alternativas para obtener estas ecuaciones,

entre los más comunes actualmente se encuentran las formulaciones de Newton-Euler, de

Lagrange y de Kane. La primera opción, la formulación de Newton-Euler, es útil en cuanto es un

método comprensible y da solución a todas las fuerzas y variables cinemáticas, sin embargo, es

ineficiente y complicado si se usa en sistemas multicuerpo y solo se requiere saber alguna de las

fuerzas en lugar de todas las reacciones existentes en el sistema. El segundo método, la

formulación de Lagrange, provee una manera para eliminar las fuerzas que no realizan trabajo y

no son de interés, pero su desventaja radica en la necesidad de implementar derivadas complejas.

La última alternativa, la formulación de Kane, ofrece las ventajas de las dos formulaciones

anteriores. Con el uso de fuerzas generalizadas no es necesario calcular las fuerzas de reacción

entre los cuerpos, además al ser basado en vectores, tampoco son necesarios cálculos de derivadas

e integrales del cálculo variacional de la formulación de Lagrange. Por estas razones para

desarrollo del modelo dinámico se va a hacer uso de la formulación de Kane [16]

Para poder aplicar el método de Kane es esencial estar familiarizado con la notación y el

procedimiento utilizado, los pasos para determinar las ecuaciones de movimiento son [17] [18]

[19]:

1. Definir las variables de configuración y coordenadas generalizadas, para poder describir el

movimiento de un sistema es necesario seleccionar variables que especifiquen su

configuración, puntos de interés, marcos de referencia y orientación.

Los marcos de referencia se crean para cada grado de libertad o giro necesario, y se orientan

usando matrices de rotación (también llamadas matrices de cosenos directores). Estas

matrices representan la rotación de un marco de referencia respecto a otro, de manera que

es posible expresar sus componentes en términos de cualquier otro marco, en este caso, se

representa como: [ 𝐴𝑅𝐵 ] (Matriz de rotación de B a A). Un ejemplo de su uso se da a

continuación

[ 𝐴𝑅𝐵 ] =

𝒒𝟏 𝒃𝟏 𝒃𝟐 𝒃𝟑

𝒂𝟏 1 0 0 𝒂𝟐 0 cos (𝑞1) −sen (𝑞1)

𝒂𝟑 0 sen (𝑞1) cos (𝑞1)

[ 𝐴𝑅𝐶 ] =

𝒒𝟐 𝒄𝟏 𝒄𝟐 𝒄𝟑

𝒂𝟏 cos (𝑞2) 0 sen (𝑞2)

𝒂𝟐 0 1 0

𝒂𝟑 −sen (𝑞2) 0 cos (𝑞2)

[ 𝐴𝑅𝐷 ] =

𝒒𝟐 𝒄𝟏 𝒄𝟐 𝒄𝟑

𝒂𝟏 cos (𝑞2) 0 sen (𝑞2)

𝒂𝟐 0 1 0

𝒂𝟑 −sen (𝑞2) 0 cos (𝑞2)

Figura 2. Marcos de referencia rotados.

Page 8: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

8

También es posible utilizar estas matrices para establecer relaciones entre marcos que no

tengan una conexión directa, pero tengan marcos intermedios, de modo que si existe una

matriz [ 𝐴𝑅𝐵 ] y otra [ 𝐵𝑅𝐶 ],

se puede expresar la matriz [ 𝐴𝑅𝐶 ] como una multiplicación de las dos anteriores, de

manera que [ 𝐴𝑅𝐶 ] = [ 𝐴𝑅𝐵 ][ 𝐵𝑅𝐶 ].

Además de esto, las matrices son útiles porque permiten expresar los vectores en diferentes

marcos al que son asignados en un principio. Por ejemplo, en el caso de la matriz [ 𝐴𝑅𝐵 ]

se puede decir que: 𝑎2 = 𝑏2 cos(𝑞1) − 𝑏3𝑠𝑒𝑛(𝑞1).

Las variables de configuración serán todos los elementos que al variar en el tiempo

permitan definir el sistema. En el caso mostrado las variables que definen los marcos serán

𝑞1, 𝑞2 y 𝑞3.

Cuando las variables de configuración definen el sistema con el menor número posible de

coordenadas se denominan coordenadas generalizadas.

2. Derivar las expresiones de velocidad y aceleración angulares para cada cuerpo que

conforme el sistema y determinar las velocidades y aceleraciones para cada punto de

interés. Respecto a la velocidad angular en general será la derivada de la coordenada

generalizada que la define, por ejemplo, para el caso anterior:

𝐴𝜔𝐵 = �̇�1𝑎1 (1)

Puede existir el caso en que la velocidad angular no pueda ser hallada directamente o

requiera estar expresada de una forma diferente, en cuyo caso se aplica la ecuación:

𝐴𝜔𝐵 = 𝑏1𝑏2̇𝑏3 + 𝑏2𝑏3̇𝑏1 + 𝑏3𝑏1̇𝑏2 (2)

También es posible sumar las velocidades angulares si existen marcos intermedios entre

un cuerpo y un marco, de manera que:

𝐴𝜔𝐵 = 𝐴𝜔𝐴1 + 𝐴1𝜔𝐴2 + ⋯+ 𝐴𝑛−1𝜔𝐴𝑛 + 𝐴𝑛𝜔𝐵 (3)

Las aceleraciones angulares se toman como la derivada de las velocidades angulares,

siendo igual a:

𝐴𝛼𝐵 = 𝐴𝑑 𝐴𝜔𝐵

𝑑𝑡 (4)

En cuanto a los puntos de interés, dependiendo desde donde se tome la velocidad se pueden

aplicar distintas ecuaciones, si el punto se encuentra en el mismo marco a una distancia

𝑟 se puede tomar simplemente como:

𝐴𝑑𝑟

𝑑𝑡= 𝐴𝜔𝐵 × r (5)

Page 9: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

9

Ahora bien, si el punto se toma respecto a otro marco y es fijo en el cuerpo se puede utilizar

el teorema de velocidad de dos puntos. Si hay dos puntos P y Q fijos en un cuerpo B que

se mueve respecto a un marco A, la velocidad de los puntos estará relacionada así:

𝐴𝑣𝑄 = 𝐴𝑣𝑃 + 𝐴𝜔𝐵 × 𝑟Q/P (6)

Y las aceleraciones de los puntos serán:

𝐴𝑎Q = 𝐴𝑎𝑃 + 𝐴𝜔𝐵 × ( 𝐴𝜔𝐵 × 𝑟Q P⁄ ) + 𝐴𝛼𝐵 × 𝑟Q P⁄ (7)

3. Generar las velocidades angulares parciales y los vectores de velocidad parciales de las

expresiones de velocidad angular y velocidad de puntos del paso anterior. Para poder

definir estas velocidades parciales es necesario primero definir las rapideces generalizadas,

estas son funciones de las derivadas de las coordenadas generalizadas, si un sistema tiene

𝑛 grados de libertad (sin restricciones), se definen las rapideces generalizadas como:

𝑢𝑟 = ∑𝑌𝑟𝑠�̇�𝑖 + 𝑍𝑟

𝑛

𝑖=1

(𝑟 = 1,… , 𝑛) (8)

Donde las variables 𝑌𝑟𝑠 y 𝑍𝑟 son funciones de 𝑞𝑖 en el tiempo t y deben ser escogidas de

manera que las ecuaciones que se obtengan se resuelvan únicamente para su respectivo �̇�𝑖,

el set de ecuaciones que se obtiene de la ecuación (8) se denomina ecuaciones cinemáticas

diferenciales.

En este punto también es necesario definir las ecuaciones de restricción de configuración

y de movimiento (también llamadas holonómicas y no-holonómicas). Siendo las de

configuración dependientes de 𝑞𝑖 y las de movimiento dependientes de 𝑢𝑖. Estas ecuaciones

facilitan los cálculos en tanto limitan los grados de libertad del sistema y restringen el

movimiento, cada restricción es diferente y depende del sistema a modelar. Los grados de

libertad del sistema quedarán expresados como 𝑝 = 𝑛 − 𝑚, donde 𝑝 son los grados de

libertad, 𝑛 la cantidad de rapideces generalizadas y 𝑚 la cantidad de restricciones.

Una vez definido este set de ecuaciones se redefinen las velocidades en términos de las

rapideces generalizadas, dando lugar a las velocidades parciales y velocidades angulares

parciales y son representadas como:

ω = ∑𝜔𝑟

𝑛

𝑟=1

𝑢𝑟 + 𝜔𝑡 (9)

v = ∑𝑣𝑟

𝑛

𝑟=1

𝑢𝑟 + 𝑣𝑡 (10)

Page 10: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

10

Donde 𝜔𝑟 es el vector conocido como la velocidad angular parcial de B en A y 𝑣𝑟 es la

velocidad parcial de P en A; en caso de que el sistema tenga restricciones no-holonómicas

las ecuaciones se modifican de dos maneras: Primero se reducen los grados de libertad

según la cantidad de ecuaciones de restricción. En segundo lugar, se agrega una notación

(~) para indicar que las restricciones ya se han tomado en cuenta. Las ecuaciones serán,

por lo tanto:

ω = ∑�̃�𝑟

𝑝

𝑟=1

𝑢𝑟 + �̃�𝑡 (11)

v = ∑�̃�𝑟

𝑝

𝑟=1

𝑢𝑟 + �̃�𝑡 (12)

4. Calcular las fuerzas activas generalizadas, estas son las fuerzas y torques que contribuyen

al movimiento del sistema, exceptuando las cantidades inerciales, la expresión para

calcular las fuerzas generalizadas es:

(𝐹𝑟)𝐵 = 𝐹 ∙ 𝐴𝑣𝑟

P + 𝑀 ∙ 𝐴ω𝑟𝐵 (13)

Esta fórmula se aplica para 𝑟 = 1,… , 𝑛, donde 𝐹 es la resultante de fuerzas externas y 𝑀 la

resultante de momentos externos, ambos aplicados sobre un cuerpo B que se mueve en un

marco A, y 𝑃 es un punto en la línea de acción de la fuerza. Puede ser el punto donde es

aplicada directamente la fuerza, como el centro de masa, por ejemplo. En caso de que el

cuerpo esté sometido a restricciones no-holonómicas siguiente formula se aplica para 𝑟 =

1, … , 𝑝:

(𝐹�̃�)𝐵 = 𝐹 ∙ 𝐴�̃�𝑟

P + 𝑀 ∙ 𝐴ω̃𝑟𝐵 (14)

5. Calcular las fuerzas inerciales generalizadas, estas fuerzas son las relacionadas con el

cambio de momentum de los cuerpos, es decir, la contribución de la inercia al movimiento.

Para un cuerpo B que se mueve en un marco A para 𝑟 = 1,… , 𝑛:

(𝐹𝑟⋆)𝐵

= 𝐴𝜔𝑟𝐵 ⋅ (− 𝐴𝛼𝐵 ⋅ 𝐼 − 𝐴𝜔𝐵 × 𝐼 ⋅ 𝐴𝜔𝐵) + 𝐴𝑣𝑟

P⋆ ⋅ (−𝑚 𝐴𝑎𝐵⋆) (15)

Ahora, en caso de que el cuerpo esté sometido a restricciones, para 𝑟 = 1,… , 𝑝:

(𝐹𝑟⋆̃)𝐵

= 𝐴�̃�𝑟𝐵 ⋅ (− 𝐴𝛼𝐵 ⋅ 𝐼 − 𝐴𝜔𝐵 × 𝐼 ⋅ 𝐴𝜔𝐵) + 𝐴�̃�𝑟

P⋆ ⋅ (−𝑚 𝐴𝑎𝐵⋆) (16)

Es notable la necesidad del uso de las inercias para estas ecuaciones, por lo que es

importante conocer las propiedades de Inercia. En primer lugar, la definición de vector de

inercia es importante, el vector de Inercia 𝐼𝑎 de 𝑆 relativo a 𝑂 por 𝑛𝑎 es:

Page 11: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

11

Ia𝑆 𝑂⁄

= ∑𝑚𝑖𝑟𝑃𝑖

𝑂⁄ × (𝑛𝑎 × 𝑟𝑃𝑖

𝑂⁄ )

𝑛

𝑖=1

(17)

El escalar de inercia 𝐼𝑎𝑏 es el equivalente al vector relativo a O por 𝑛𝑎 y 𝑛𝑏:

Iab𝐵 𝑂⁄

= Ia𝐵 𝑂⁄

⋅ 𝑛𝑏 = Ib𝐵 𝑂⁄

⋅ 𝑛𝑎 = ∑𝑚𝑖 (𝑛𝑎 × 𝑟𝑃𝑖

𝑂⁄ ) × (𝑛𝑏 × 𝑟𝑃𝑖

𝑂⁄ )

𝑛

𝑖=1

(18)

Si 𝑛𝑎 ≠ 𝑛𝑏 el escalar de inercia será denominado producto de inercia, y si 𝑛𝑎 es una

dirección principal de inercia, el escalar de inercia 𝐼𝑎 también se puede escribir como 𝐼𝑎𝑎

y se denomina momento principal de inercia. Para algunas figuras establecidas se conocen

los momentos de inercias principales, para los modelos a desarrollar se requieren dos, la

inercia de un disco delgado y la de una barra de pared gruesa, estas se presentan a

continuación

Figura 3. Inercia de un disco delgado.

I𝑥𝑥 = 𝐼𝑧𝑧

1

4𝑚𝑟2

𝐼𝑦𝑦 =1

2𝑚𝑟2

(19)

I𝑥𝑥 =1

2𝑚(𝑎2 + 𝑏2)

𝐼𝑦𝑦 = 𝐼𝑧𝑧 =1

4𝑚(𝑎2 + 𝑏2) +

𝑚𝑙2

12

(20)

Figura 4. Inercia de un cilindro de pared gruesa.

Page 12: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

12

Para representar las propiedades de Inercia de un cuerpo se utiliza una matriz de inercia

usando un conjunto de tres vectores perpendiculares, la matriz se representaría así:

[𝐼𝑆

𝑂⁄ ] =

[

𝐼11

𝑆𝑂⁄ 𝐼12

𝑆𝑂⁄ 𝐼13

𝑆𝑂⁄

𝐼21

𝑆𝑂⁄ 𝐼22

𝑆𝑂⁄ 𝐼23

𝑆𝑂⁄

𝐼31

𝑆𝑂⁄ 𝐼32

𝑆𝑂⁄ 𝐼33

𝑆𝑂⁄]

(21)

Esta ecuación resulta particularmente útil ya que con ella es posible hacer una operación

de cambio de base para representar la inercia respecto a otro marco de referencia:

[𝐼𝑆

𝑂⁄ ]′

= [ 𝑁𝑅𝑁′]𝑇[𝐼

𝑆𝑂⁄ ] [ 𝑁𝑅𝑁′

] (22)

En la ecuación anterior la denominación prima (′) denota el cambio de matriz y el nuevo

marco de referencia.

Otro teorema necesario para hallar la inercia es el teorema de ejes paralelos, en el que las

propiedades de Inercia de un cuerpo relativo a un punto 𝑂 se relacionan con sus

propiedades centrales de inercia de manera que:

[𝐼𝑆

𝑂⁄ ] = [𝐼𝑆

𝑆∗⁄ ] [𝐼𝑆∗

𝑂⁄ ] (23)

Este teorema es aplicable tanto para matrices, como para diádicas y escalares de inercia.

6. Se suman las fuerzas activas generalizadas y las fuerzas inerciales generalizadas para hallar

las ecuaciones dinámicas de movimiento para 𝑟 = 1,… , 𝑛:

𝐹𝑟 + 𝐹𝑟⋆ = 0 (24)

Al igual que con las fuerzas si se existen restricciones de movimiento esta ecuación se

representa para 𝑟 = 1,… , 𝑝:

�̃�𝑟 + �̃�𝑟⋆ = 0 (25)

Page 13: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

13

1.1. Método de Kane y caso de un disco sobre una rampa inclinada [20]

Con el objetivo de obtener una aproximación al método de Kane matemática y

computacionalmente, se desarrolla un modelo simple de un solo cuerpo de un disco sobre

una rampa inclinada

En primer lugar, se definen las

coordenadas generalizadas y las

variables de configuración del sistema

como se puede observar en la Figura 5.

Una vez conocidas se definen las

rapideces generalizadas, en este caso se

escogen las siguientes:

Donde 𝑟 representa el radio de la rueda.

Adicionalmente en este caso existe una restricción no holonómica, de rodadura, para que

esta se cumpla, la velocidad en el punto de contacto debe ser nula, de manera que:

𝐴𝑣�̂� = 𝐴𝑣𝐵∗+ 𝐴𝜔𝐵 × 𝑟�̂�/𝐵∗

= 0 (27)

Teniendo en cuenta que:

𝐴𝑣𝐵∗= 𝑢1𝑎1

𝐴𝜔𝐵 = −𝑢2

𝑟𝑎3 𝑟

�̂�𝐵∗⁄ = −𝑟𝑎2 (28)

Reemplazando las variables de la ecuación (28) en la ecuación (27) se obtiene la restricción

de movimiento:

𝑢1 − 𝑢2 = 0 (29)

Con esta restricción se reducen los grados de libertad del sistema, se desarrollarán las

ecuaciones con y sin esta restricción, para verificar que en ambos casos se llegue al mismo

resultado.

Conocidas las rapideces generalizadas se pueden calcular las velocidades parciales y las

velocidades angulares parciales de los puntos de interés, que en este caso serian:

𝐴ω1𝐵 = 0 𝐴ω2

𝐵 = −1

𝑟 𝑎3

𝐴𝑣1𝐵∗

= 𝑎1 𝐴𝑣2

𝐵∗= 0

En caso de considerarse la restricción de movimiento, estas ecuaciones pueden expresarse

en términos de una única rapidez generalizada, ya sea 𝑢1 o 𝑢2.

𝐴�̃�1𝐵 = −

1

𝑟 𝑎3

𝐴�̃�1𝐵∗

= 𝑎1

𝑢1 = 𝑞1̇ 𝑢2 = 𝑞2̇𝑟 (26)

Figura 5. Diagrama de un disco sobre rampa inclinada.

Page 14: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

14

El siguiente paso en el método de Kane es hallar las fuerzas activas generalizadas (𝐹𝑟)

(Ecuaciones (13) y (14)), para esto es primero necesario hallar 𝐹 y M. En este caso las

fuerzas que actúan sobre el cuerpo son el peso, la fricción y la normal, en cuanto a los

momentos, la fricción genera uno sobre el centro de la rueda:

𝐹 = [𝑚𝐵𝑔(−𝑠𝑒𝑛(𝜃)𝑎1 − cos(𝜃)𝑎2) + 𝐹𝑓𝑎1 + 𝑁𝑎2]

𝑀 = [𝑟𝐹𝑓𝑎3]

(30)

(𝐹1)𝐵 = 𝐴ω1𝐵 ∙ 𝑇 + 𝐴𝑣1

𝐵∗∙ F

= (0) ⋅ (𝑟𝐹𝑓𝑎3) + (𝑎1) ⋅ [𝑚𝐵𝑔(−𝑠𝑒𝑛(𝜃)𝑎1 − cos(𝜃)𝑎2) + 𝐹𝑓𝑎1 + 𝑁𝑎2]

= −𝑚𝐵𝑔𝑠𝑒𝑛(𝜃) + 𝐹𝑓

(𝐹2)𝐵 = 𝐴ω2𝐵 ∙ 𝑇 + 𝐴𝑣2

𝐵∗∙ F

= (−1

𝑟 𝑎3) ⋅ (𝑟𝐹𝑓𝑎3) + (0) ⋅ [𝑚𝐵𝑔(−𝑠𝑒𝑛(𝜃)𝑎1 − cos(𝜃) 𝑎2) + 𝐹𝑓𝑎1 + 𝑁𝑎2]

= −𝐹𝑓

En caso de tener en cuenta la restricción (29) las fuerzas activas generalizadas serán:

(�̃�1)𝐵= 𝐴�̃�1

𝐵 ∙ 𝑇 + 𝐴�̃�1𝐵∗

∙ 𝐹

= (−1

𝑟 𝑎3 ) ⋅ (𝑟𝐹𝑓𝑎3) + (𝑎1 ) ⋅ [𝑚𝐵𝑔(−𝑠𝑒𝑛(𝜃)𝑎1 − cos(𝜃)𝑎2) + 𝐹𝑓𝑎1 + 𝑁𝑎2]

= −𝑚𝐵𝑔𝑠𝑒𝑛(𝜃) + 𝐹𝑓 − 𝐹𝑓 = −𝑚𝐵𝑔𝑠𝑒𝑛(𝜃)

Ahora falta hallar las fuerzas inerciales generalizadas, para esto se hace uso de las

ecuaciones (15) y (16):

(𝐹1⋆)𝐵 = −𝑚𝐵 𝐴𝑎1

𝐵∗∙ 𝐴𝑣1

𝐵∗− 𝐼𝐵 𝐴𝛼1

𝐵 ∙𝐴 𝜔1𝐵 = (−𝑚𝐵�̇�1𝑎1) ⋅ (𝑎1) + (𝐼𝐵

�̇�2

𝑟𝑎3) ⋅ (0)

= −𝑚𝐵�̇�1

(𝐹2⋆)𝐵 = −𝑚𝐵 𝐴𝑎2

𝐵∗∙ 𝐴𝑣2

𝐵∗− 𝐼𝐵 𝐴𝛼2

𝐵 ∙𝐴 𝜔2𝐵 = (−𝑚𝐵�̇�1𝑎1) ⋅ (0) + (𝐼𝐵

�̇�2

𝑟𝑎3) ⋅ (−

𝑎3

𝑟)

Page 15: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

15

= 𝐼𝐵�̇�2

𝑟2

De igual manera que con las fuerzas activas generalizadas al tomar en cuenta la restricción

de movimiento la ecuación de las fuerzas inerciales generalizadas cambia de modo que es

igual a:

(�̃�1⋆)

𝐵= −𝑚𝐵 𝐴𝑎1

𝐵∗∙ 𝐴�̃�1

𝐵∗

− 𝐼𝐵 𝐴𝛼1

𝐵 ∙𝐴 �̃�1𝐵 = (−𝑚𝐵�̇�1𝑎1) ⋅ (𝑎1) + (𝐼𝐵

�̇�1

𝑟𝑎3) ⋅ (−

𝑎3

𝑟)

= −𝑚𝐵�̇�1 + 𝐼𝐵�̇�1

𝑟2

Por último, para hallar las ecuaciones dinámicas se hace uso de las ecuaciones (24) y (25):

(𝐹1)𝐵 + (𝐹1⋆)𝐵 = −𝑚𝐵𝑔𝑠𝑒𝑛(𝜃) + 𝐹𝑓 − 𝑚𝐵�̇�1 = 0 → 𝐹𝑓 = 𝑚𝐵(𝑔𝑠𝑒𝑛(𝜃) + �̇�1)

(𝐹2)𝐵 + (𝐹2⋆)𝐵 = −𝐹𝑓 + 𝐼𝐵

�̇�2

𝑟2= 0

Reemplazando 𝐹𝑓:

−𝑚𝐵(𝑔𝑠𝑒𝑛(𝜃) + �̇�1) + 𝐼𝐵�̇�2

𝑟2= 0

Y teniendo en cuenta que 𝑢2 = 𝑢1 debido a la restricción no holonómica (Ecuación (29)),

la ecuación de Kane para el cuerpo B es:

−𝑚𝐵𝑔𝑠𝑒𝑛(𝜃) − �̇�1 (𝐼𝐵𝑟2

+ 𝑚𝐵) = 0 (31)

Ahora, para el caso del cuerpo B con restricciones de movimiento:

(�̃�1)𝐵+ (�̃�1

⋆)𝐵

= −𝑚𝐵𝑔𝑠𝑒𝑛(𝜃) − �̇�1 (𝐼𝐵𝑟2

+ 𝑚𝐵) = 0 (32)

Como se puede observar en las ecuaciones (32) y (33), ya sea tomando en cuenta la

restricción desde el inicio o al final, en el momento del reemplazo se llega al mismo

resultado. Sin embargo, si se tiene en cuenta desde el principio, es notable la reducción en

la cantidad de ecuaciones y operaciones que se necesitan para llegar al resultado.

Page 16: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

16

Para solucionar este sistema se define el vector de estado como:

𝑥 = [𝑞1, 𝑢1]𝑇

Entonces se puede reescribir la ecuación (7) como una ecuación en el espacio de estado

como:

𝑑

𝑑𝑡(𝑞1

𝑢1) =

(

𝑢1

(−𝑚𝐵𝑔𝑠𝑒𝑛(𝜃)

(𝐼𝐵𝑟2 + 𝑚𝐵)

)

)

Luego a partir de condiciones iniciales, 𝑞1(0) = 0, 𝑢1(0) = 0 la ecuación anterior puede

resolverse y la evolución en el tiempo puede hallarse mediante métodos numéricos.

1.2. Modelo bicicleta

Figura 6. Modelo cinemático bicicleta.

Page 17: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

17

Para el caso de la bicicleta, se toma como base el

modelo de Whipple (Figura 1), y se construye el

modelo observado en la Figura 6. En dicho modelo, la

bicicleta se divide en cuatro cuerpos: la rueda trasera

(B), el marco (C), el tenedor (D) y la rueda delantera

(F). Además, se agrega un marco inicial en el punto de

partida (A) respecto al cual se van a medir las

velocidades y aceleraciones. Para la creación del

modelo cinemático se tienen en cuenta seis grados de

libertad, los primeros tres ubicados en la rueda trasera

(Figura 7) correspondientes a la dirección de la rueda

(𝑞1), a la inclinación lateral de la rueda (𝑞2) y al avance

de la rueda (𝑞3), el cuarto (𝑞4) siendo el ángulo de

inclinación vertical del marco respecto a la posición de las ruedas, el quinto (𝑞5)

corresponde a la dirección del manubrio y, por último, el sexto (𝑞6) equivale al avance de

la rueda delantera, adicionalmente se agregan las variables 𝑞7 y 𝑞8, las cuales son

utilizadas para medir el avance de la bicicleta, donde 𝑞7 es la distancia del punto A al punto

P en la dirección 𝑎1′ y 𝑞8 en la dirección 𝑎2

′ .

Adicional a los grados de libertad, la posición de la bicicleta depende del ángulo del suelo.

De esta forma, se añaden las variables de configuración 𝛼 y 𝛾 utilizadas para definir

independientemente este ángulo en cada rueda, con el fin de poder modelar obstáculos

pequeños como un reductor de velocidad. Posteriormente se añadió el ángulo 𝛽,

equivalente al ángulo existente entre el manubrio y el eje vertical.

Para crear la cadena cinemática se hace uso de diez marcos de referencia, iniciando con el

marco A, su ubicación se puede observar en la Figura 6. Las rotaciones necesarias para

formar cada marco están desglosadas en la Tabla 1. En cuanto al marco H, este no se

obtiene mediante rotaciones sino entre operaciones algebraicas entre los marcos A y F, de

manera que sus componentes son:

ℎ1 =𝑓2 × (𝑎3 ∗ cos(𝛾))

|𝑓2 × (𝑎3 ∗ cos(𝛾))|

ℎ2 = 𝑓2

ℎ3 = ℎ1 × ℎ2

(33)

Figura 7. Grados de libertad q1, q2 y q3.

Page 18: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

18

Tabla 1. Rotaciones marcos de referencia.

Angulo Matriz de rotación Dirección

𝜶 𝐴𝑅𝐴′ 𝑎2

𝒒𝟏 𝐴′𝑅𝐸 𝑎3

𝒒𝟐 𝐸𝑅𝐺 𝑒1

𝒒𝟑 𝐺𝑅𝐵 𝑔2

𝒒𝟒 𝐺𝑅𝐶 𝑔2

𝜷 𝐶𝑅𝐶′ 𝑐2

𝒒𝟓 𝐶′𝑅𝐷 𝑐3

𝒒𝟔 𝐷𝑅𝐹 𝑑2

Con los marcos definidos se escogen los puntos de interés para modelar el movimiento, en

este caso serán:

• El punto de contacto de la rueda trasera (P) ubicado a una distancia 𝑞7𝑎1′ , 𝑞8𝑎2

′ del

punto A

• El centro de masa de la rueda trasera (𝐵∗) a 𝑟𝑒3 del punto P, siendo r el radio de las

ruedas

• El centro de masa del marco (𝐶∗) el cual depende de la geometría del marco.

• El punto de contacto entre el marco y el tenedor.

• El centro de masa del tenedor (𝐷∗) a la mitad del largo del tenedor en la dirección

−𝑑3 del punto de contacto entre el marco y el tenedor

• El centro de masa la rueda delantera (𝐹∗) al total del largo del tenedor en la

dirección −𝑑3 del punto de contacto entre el marco y el tenedor

• El punto de contacto de la rueda delantera (Q) a 𝑟ℎ3

Una vez definidas las variables de configuración y coordenadas generalizadas, se definen

las rapideces generalizadas. En este caso, las ecuaciones serán complejas sin importar la

elección de estas variables, entonces, para los grados de libertad 𝑖 = 1,… , 9 se asignarán

las rapideces de manera que las ecuaciones cinemáticas diferenciales sean iguales a:

ui = qi̇ (34)

Para definir las restricciones del sistema, al igual que en el ejemplo anterior, se requiere de

una restricción de no deslizamiento o de rodadura para ambas llantas. Adicional a esto, es

Page 19: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

19

necesario añadir otra restricción que permita que el punto de contacto de la rueda delantera

esté sobre el suelo. En la rueda trasera esto no es necesario, debido a que ya se toma en

cuenta al momento de ubicar el punto P. Estas restricciones se dividirán en no-holonómicas

y holonómicas; con el uso de las anteriores, el sistema se reducirá a 3 rapideces

generalizadas independientes (𝑢2, 𝑢3 y 𝑢5), siendo las demás rapideces generalizadas

funciones de estas tres y de la configuración de la bicicleta.

Las restricciones holonómicas se utilizarán para definir la posición geométrica de la

bicicleta. Dado que es necesario asegurar el contacto de la rueda delantera, se realiza un

camino de vectores desde el punto de contacto de la rueda trasera hasta el punto de contacto

de la rueda delantera como se puede observar en la Figura 8. Este camino se iguala a cero

en su componente 𝑎3 para asegurar que las ruedas estén a la misma altura; es importante

resaltar que esto es cierto siempre y cuando 𝛼 y 𝛾 sean iguales, esta restricción requiere

modificaciones para que se cumpla en caso de diferentes inclinaciones en el suelo de cada

rueda

Figura 8. Restricción contacto rueda delantera.

Para mayor comprensión a cada camino se le asignará un valor de 𝑆𝑖, de manera que:

𝑆1 = 𝑟𝑔3

𝑆2 = ℎ𝑐𝑐3 + 𝑙𝑐𝑐1

𝑆3 = −𝑙𝑑𝑑3

𝑆4 − 𝑟ℎ3

Donde 𝑟 es el radio de las ruedas, ℎ𝑐 la altura (en la dirección 3) desde el centro de la rueda

trasera hasta el punto de contacto del tenedor con el marco, 𝑙𝑐 la longitud (en la dirección

1) desde el centro de la rueda trasera hasta el punto de contacto del tenedor y 𝑙𝑑 es el largo

desde el punto de contacto hasta el centro de la rueda delantera. Esta ecuación, por lo tanto,

queda expresada de la siguiente manera:

(𝑆1 + 𝑆2 + 𝑆3 + 𝑆4) ⋅ 𝑎3 = 0 (35)

Posteriormente se definen las restricciones no-holonómicas, las cuales dependen del

movimiento y no de la geometría. La primera como se había mencionado anteriormente es

Page 20: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

20

la condición de no deslizamiento, es necesario que la velocidad en el punto �̂� sea nula. De

lo anterior se obtiene:

𝑞7̇ = 𝑞3̇ ∗ 𝑟 ∗ 𝑐𝑜𝑠(𝑞1) (36)

𝑞8̇ = 𝑞3̇ ∗ 𝑟 ∗ 𝑠𝑒𝑛(𝑞1) (37)

De igual manera se requiere que la velocidad en el punto �̂� sea nula, de allí surge que:

𝐴𝑣 �̂� = 𝐴𝑣𝑃 + 𝐴𝜔𝐸 × 𝑟Q/P + 𝐸𝑣𝑄/𝑃 = 0 (38)

Sabiendo que 𝐴𝜔𝐸 = 𝑞1̇𝑎3′ la ecuación (38) se puede reescribir como:

𝐴𝑣 �̂� = 𝐴𝑣𝑃 + 𝑞1̇𝑒3 × 𝑟Q/P = 0 (39)

La última restricción necesaria es la de rodadura de la rueda delantera tomando en cuenta

un segundo camino de vectores:

𝐴𝑣 �̂� = 𝐴𝑣𝐹∗+ 𝐴𝜔𝐹 × 𝑟Q/F∗

= 0 (40)

Tomando en cuenta que para esta restricción se toma un camino directo de 𝐴 a 𝐹, la 𝐴𝜔𝐹 =

𝑞6̇𝑓3 entonces la ecuación (40) se reescribe como:

𝐴𝑣 �̂� = 𝐴𝑣𝐹∗+ 𝑞

6̇𝑓

3 × 𝑟Q/F∗

= 0 (41)

Ahora bien, una vez conocida la cinemática del sistema para aplicar el método de Kane es

necesario conocer la resultante de las fuerzas externas y de los momentos externos para

usar la ecuación (13).

Figura 9. Diagrama de fuerzas bicicleta.

Como se puede observar en la Figura 9, las fuerzas a tomar en cuenta son: las masas de los

cuerpos ubicados en sus respectivos centros de masa y orientados en la dirección -𝑎3, y las

fuerzas normales y de fricción de cada rueda. En este caso la resultante de fuerzas será:

Page 21: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

21

𝐹 = [−𝑚𝑟𝑔𝑎3 − 𝑚𝑐𝑔𝑎3 − 𝑚𝑑𝑔𝑎3 − 𝑚𝑟𝑔𝑎3 + 𝑁𝑅𝑇𝑒3

+ 𝑁𝑅𝐷ℎ3 − 𝐹𝑟𝑅𝑇𝑒1 − 𝐹𝑟𝑅𝐷ℎ1] (42)

En cuanto a los momentos se tiene en cuenta la entrada de torque de la rueda trasera, el

torque necesario para girar el manubrio y una fuerza extra para mantener en equilibrio la

bicicleta, estos se implementan con el propósito de que las ecuaciones puedan ser utilizadas

en sistemas de control en un futuro; la resultante de momentos será:

𝑀 = [𝑇𝑅𝑇𝑏2 + 𝑇𝐸𝑐1 + 𝑇𝐷𝐼𝑅𝑑3] (43)

Debido a la complejidad matemática de estas ecuaciones la ecuación (24) no se desarrollará

manualmente, sino que se implementará en Python.

Page 22: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

22

2. Implementación computacional

Para la implementación, se hará uso de la librería Sympy y del módulo mechanics, ya que con este

último es posible implementar el método de Kane y obtener los valores de la ecuación (24) para

posteriormente resolverlo mediante métodos numéricos. A continuación, se presentan los pasos a

seguir para crear un modelo usando la formulación de Kane y Sympy Mechanics:

1. El primer paso para desarrollar el modelo es definir las variables dinámicas y simbólicas,

siendo las dinámicas las que van a cambiar en el tiempo y afectan los grados de libertad

del modelo, estas son las rapideces y coordenadas generalizadas (𝑞, �̇�, 𝑢 y �̇�). Y las

simbólicas, las cuales corresponden a constantes, medidas o fuerzas.

2. Seguido de esto se crean los marcos de referencia usando la clase “ReferenceFrame” y se

orientan según las coordenadas generalizadas o variables necesarias, creando un camino

entre ellos.

3. Con los marcos definidos se asignan las velocidades angulares de cada uno, esto debe de

hacerse ingresando el valor de cada marco, si este paso es omitido las velocidades angulares

serán iguales a las derivadas de las coordenadas generalizadas, en lugar de la rapidez

generalizada en cada marco.

4. Luego se crean los puntos de interés del modelo, para esto se utiliza la clase “Point”, al

igual que con los marcos se debe crear un camino entre ellos en caso de haber múltiples

cuerpos.

5. Posteriormente se asignan las velocidades lineales a cada punto, esto puede realizarse de

dos maneras: asignándola directamente a cada punto con la función “set_vel” o utilizando

el teorema de velocidad en uno o dos puntos (Ecuación (6)) que está implementado como

la función “v2pt_theory”.

6. Teniendo los puntos y los marcos, se proceden a crear los cuerpos con la clase

“RigidBody”, cada cuerpo debe tener un nombre, un centro de masa, una masa, un marco

de referencia y una inercia asociada.

7. Se crean dos listas, la primera debe contener las fuerzas de la resultante de fuerzas, cada

una de estas debe estar asociada a un punto. También debe contener los momentos de la

resultante de momentos, cada uno de estos debe estar asociado a un marco de referencia;

la segunda lista contiene los cuerpos creados en el paso anterior.

8. Para utilizar el método de Kane se agrupan en tres listas las ecuaciones creadas para cada

modelo. En la primera lista las ecuaciones diferenciales cinemáticas, en la segunda las

restricciones no-holonómicas y en la tercera las restricciones holonómicas.

9. Se aplica la formulación de Kane utilizando la clase “KanesMethod” para esto es necesario

asignar el marco de referencia inicial, las coordenadas generalizadas dependientes e

independientes, al igual que las rapideces generalizadas dependientes e independientes, y

las listas creadas en el paso anterior (las restricciones y las ecuaciones diferenciales

cinemáticas). Es importante aclarar que debe existir el mismo número de restricciones de

cada clase como elementos dependientes de esta, es decir, si existen n restricciones

holonómicas deben existir n coordenadas generalizadas dependientes, y si existen m

restricciones no-holonómicas deben existir m rapideces generalizadas dependientes; el

Page 23: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

23

hecho de que exista una restricción de la que 𝑞𝑖 dependa no implica que 𝑢𝑖 sea dependiente

también y viceversa.

10. Por último, para aplicar el método de Kane, utilizando la clase “kanes_equations” y las

listas de fuerzas y cuerpos se pueden obtener 𝐹𝑟 y 𝐹𝑟∗ correspondientes a la ecuación (31).

11. Para obtener los valores de la evolución de las coordenadas generalizadas y las rapideces

generalizadas en el tiempo, se hace uso de la librería PyDy, y del módulo “System”, el cual

convierte las ecuaciones de Kane en un sistema integrable. Es necesario introducir las

condiciones iniciales, el valor numérico de las constantes y el tiempo sobre el cual va a ser

evaluado el sistema. Una vez creado, se puede usar el método “integrate” para resolver el

sistema de ecuaciones y hallar los valores numéricos.

12. Para finalizar haciendo uso de la librería “matplotlib” y el módulo pyplot se grafican los

resultados de la integración numérica realizada en el paso anterior. Es importante tener en

cuenta que se obtendrán tantas graficas como coordenadas y rapideces generalizadas

existan. Además de que estarán en orden, primero para 𝑖 = 1, … , 𝑛 todas las 𝑞𝑖 y en el

mismo orden las 𝑢𝑖.

También es posible resolver las ecuaciones de Kane con métodos de integración numérica

“manuales” diferentes a PyDy, es posible resolverlos de dos maneras: directa, resolviendo las

ecuaciones de movimiento mediante derivación y así obteniendo las fuerzas requeridas para mover

el sistema, o inversa, en la que la entrada son las fuerzas y se obtienen las posiciones. Para resolver

el sistema de Kane de manera inversa numéricamente se utiliza el siguiente procedimiento:

1. Se parte de condiciones iniciales y una entrada de un conjunto de fuerzas y momentos.

2. Se resuelven las aceleraciones (�̇�𝑖)

3. Con las condiciones iniciales se calculan mediante integración las velocidades (𝑢)

4. Utilizando las ecuaciones cinemáticas diferenciales se resuelven las posiciones (𝑞)

5. Finalmente se avanza en el tiempo con las nuevas condiciones halladas y se repiten los

pasos anteriores

2.1. Implementación caso de un disco sobre una rampa inclinada

A continuación, se presentará una breve explicación del procedimiento llevado a cabo en

Python y la función bloque a bloque del código, los números de cada línea de código en este

documento corresponden al respectivo número de línea en el código de Python.

En primer lugar, se importan las librerías necesarias, Sympy y el módulo mechanics para

desarrollar las ecuaciones de Kane simbólicamente, PyDy y Numpy para poder crear el sistema

e integrarlo numéricamente, por último, pyplot para graficar los resultados

1. 2. 3. 4. #Importación librerias 5. import sympy as sp 6. import sympy.physics.mechanics as me 7. import pydy as pd

Page 24: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

24

8. import numpy as np 9. import matplotlib.pyplot as plt 10.

Se asignan variables dinámicas simbólicas para las coordenadas generalizadas y las rapideces

generalizadas, de acuerdo con la Ecuación (26), en la línea 13 se agrega un 1 para representar

la derivación de las variables creadas en la línea 12. Las variables netamente simbólicas se

usan para las constantes o representaciones de la fuerza necesaria; en este caso:

• r es el radio del disco

• m la masa del disco

• g la gravedad

• theta el ángulo de la rampa

• Ff la fuerza de fricción

• N la fuerza normal

11. #Creación variables simbolicas y dinamicas

12. q1, q2, u1, u2 = me.dynamicsymbols('q1 q2 u1 u2')

13. q1d, q2d, u1d, u2d = me.dynamicsymbols('q1 q2 u1 u2',1)

14. r, m, g, theta, Ff, N =sp.symbols('r m g theta Ff N')

15.

Luego se crean los marcos de referencia, en este caso A es el origen y B se encuentra a 𝑞2𝑎3

de A como se ve en la Figura 5

16. #Creación y orientación marcos de referencia

17. A = me.ReferenceFrame('A')

18. B = A.orientnew('B', 'Axis', [q2,A.z])

19.

Se asigna la velocidad angular 𝐴𝜔𝐵 al marco B según la ecuación (28)

20. #Asignación velocidades angulares marcos

21. B.set_ang_vel(A, (-u2/r)*A.z)

22.

Se crean los puntos de interés, estos son el contacto del disco con la rampa (Bpc) y el centro

de masa del disco (Bcm)

23. #Creación y localización puntos de interes

24. O=me.Point("O")

25. Bpc=O.locatenew('Bpc', q1*A.x)

26. Bcm = Bpc.locatenew('Bcm', r*A.y)

27.

Se asignan las velocidades a los puntos, es necesario asignar el marco respecto al cual se toman

las velocidades, en este caso todas son respecto a A. La velocidad de Bcm también parte de la

Page 25: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

25

ecuación (28) y la velocidad lineal de Bpc es igual a la de Bcm ya que se toma en cuenta la

misma línea de acción.

28. #Asignación velocidades puntos

29. O.set_vel(A,0)

30. Bcm.set_vel(A,u1*A.x)

31. Bpc.set_vel(A,u1*A.x)

32.

Se crean los cuerpos y partículas; en este caso es únicamente necesario crear la rueda, ya que

la rampa cumple solo la función de suelo y no se requiere conocer su evolución y propiedades.

La inercia que se toma es la de un disco delgado (Ecuación (19)); en este caso el cuerpo tendrá

su centro de masa en Bcm y estará orientado sobre el marco B. Además, tendrá una masa m y

su inercia será respecto al centro de masa.

33. #Creación de cuerpos

34. I=me.inertia(B, (m*r**2)/4, (m*r**2)/4, (m*r**2)/2)

35. Rueda= me.RigidBody('Rueda', Bcm, B, m, (I,Bcm))

36.

Se crea una lista con las restricciones holonómicas y otra con las no holonómicas, estas listas

contienen las ecuaciones igualadas a cero. Se coloca únicamente la parte derecha, el programa

asume automáticamente la equivalencia a cero. Ya que en este caso solo existe una restricción

no holonómica (Ecuación (29)) se crea únicamente esta.

37. #Restricción No-holonomica

38. vc=[u1-u2]

39.

Se crea una lista con las ecuaciones diferenciales cinemáticas (Ecuación (26)) separadas por

una coma.

40. #Ecuaciones diferenciales cinematicas

41. kd=[q1d-u1, q2d-(u2/r)]

42.

En una lista se unen la resultante de fuerzas externas y la resultante de momentos externos

(Ecuación (30)). Es necesario asignar un punto de acción para cada fuerza; en este caso el peso

está sobre Bcm, y las fuerzas Normal y de fricción actúan sobre Bpc. En cuanto a los

momentos, se deben asignar respecto a un marco de referencia, no a un punto. En este caso, el

torque de la fricción actúa sobre el marco B. Con respecto a los cuerpos, simplemente se crea

una lista con los cuerpos creados anteriormente.

43. #Creación de listas de fuerzas y cuerpos

44. Fuerzas=[(Bcm, -m*g*sp.sin(theta*sp.pi/180)*A.x-

m*g*sp.cos(theta*sp.pi/180)*A.y), (Bpc,Ff*A.x+N*A.y),(B, r*Ff*A.z)]

Page 26: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

26

45. Cuerpos=[Rueda]

46.

Para aplicar el teorema de Kane se utiliza el método KanesMethod disponible en el módulo

mechanics, para su uso es necesario asignar: el marco de referencia inicial (A en este caso), las

coordenadas y rapideces generalizadas dependientes (dependent) e independientes (ind), en

este caso, aunque 𝑢2 sea dependiente de 𝑢1 no implica que 𝑞2 sea dependiente de 𝑞1, ya que

solo existe una ecuación de restricción no-holonómica, solo existe una rapidez dependiente;

luego van las restricciones de posición y velocidad, en este caso solo hay una no-holonómica

por lo que se asigna a “velocity_contrains”, en caso de existir restricciones holomicas también

se asignan a “configuration_constraints”. Por último, se agregan las ecuaciones cinemáticas

diferenciales a “kd_eqs”. Para obtener el valor de la ecuación (32) se utiliza el método

“kanes_equations” donde la entrada serán las listas de cuerpo y fuerzas y la salida las

ecuaciones 𝐹𝑟 y 𝐹𝑟⋆

47. #Aplicación del metodo de Kane y obtención de Fr y Fr*

48. KM= me.KanesMethod(A, q_ind=[q1,q2], u_ind=[u1], u_dependent=[u2],

velocity_constraints=vc, kd_eqs=kd)

49. (fr, frstar) = KM.kanes_equations(Cuerpos, Fuerzas)

50.

Con el módulo system de la librería PyDy se crea el sistema para la integración numérica de

las ecuaciones de Kane, es necesario asignar en primer lugar el método de Kane, en este caso

KM, las ecuaciones fr y frstar están implícitas en KM por lo que no es necesario incluirlas. Se

asigna también un diccionario llamado “constants” donde están las variables simbólicas y su

equivalencia numérica; nótese que no se incluyen los valores de Ff ni N, ya que al momento

de obtener las ecuaciones de Kane estas fuerzas fueron eliminadas y no están en fr ni en frstar,

añadir estos valores a las contantes seria causa de error en el código. Luego se asignan las

condiciones iniciales de las variables simbólicas dinámicas, es posible utilizar cualquier punto,

en este caso se escoge el momento en que la rueda esté quieta y no ha recorrido aun la rampa,

por lo que los valores son equivalentes a cero. Por último, se agrega una lista times en la que

se indica el tiempo de inicio y final de la integración. Al finalizar esto es necesario asignar un

nombre para los resultados de la integración y utilizar la función “integrate()”, la solución

queda disponible en forma de array para que sea posible graficarla.

51. #Creación sistema e integración numerica

52. sys= pd.system.System(KM,constants = {r:0.5, m:1,

g:9.81,theta:25},initial_conditions={q1:0, q2:0, u1:0, u2:0},times =

np.linspace(0.0, 1, 20))

53. sol=sys.integrate()

54.

Para la graficación de los resultados, se utiliza la librería matplotlib con el tiempo en el eje X

y la solución del sistema en el eje Y, es importante observar que se van a graficar todos los

resultados de las 𝑞𝑖 y 𝑢𝑖 en una sola figura, así que el eje vertical va a representar tanto distancia

como velocidad.

Page 27: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

27

55. #Graficación

56. plt.plot(sys.times, sol)

57. plt.legend((str(q1), str(q2), str(u1), str(u2)))

58. plt.ylabel('Posición y velocidad [qi (m),ui (m/s)]')

59. plt.xlabel('Tiempo (s)')

60. plt.show()

61.

La información referente a este código se puede encontrar en el documento

“RollingDiscNoSlipping.py”

2.2. Implementación caso bicicleta

Para la implementación de la bicicleta en Python se siguieron los mismos pasos que en el disco

sobre la rampa, los marcos creados son los correspondientes a las matrices de rotación de la

Figura 6 y los puntos de interés son los correspondientes a la aplicación de fuerzas de la Figura

9. A continuación, se van a desglosar cada una de las operaciones requeridas para la definición

de los cuerpos:

• Ruedas: La Inercia para cada una de estas se toma como la inercia de un disco delgado

(Ecuación (19)) con su centro de masa en el centro, el marco de la rueda trasera será

el marco B y el de la rueda delantera el marco F.

• Marco: El marco se tomará como la unión de cinco tubos de pared gruesa (Figura 4) de

acuerdo con la ecuación (20), sin embargo, esta se modificará para que en lugar de los

dos radios se tome en cuenta el radio externo (ret) y el grosor (gr) del tubo, de manera

que la ecuación de las inercias será la siguiente:

Respecto a la masa de cada tubo, será igual al porcentaje equivalente de la longitud de

cada tubo relativo a la suma de la longitud total multiplicado por la masa total del

marco, es decir:

𝑚𝑖 =𝑙𝑖𝑙𝑇

∗ 𝑚𝑇 𝑑𝑜𝑛𝑑𝑒 𝑙𝑇 = ∑𝑙𝑖

5

𝑖=1

𝑔𝑟 = 𝑏 − 𝑎 → 𝑎 = 𝑟𝑒𝑡 − 𝑔𝑟

I𝑥𝑥 =1

2𝑚((𝑟𝑒𝑡 − 𝑔𝑟)2 + 𝑟𝑒𝑡2) =

1

2𝑚(2𝑟𝑒𝑡2 − 2𝑟𝑒𝑡 ∗ 𝑔𝑟 + 𝑔𝑟2)

𝐼𝑦𝑦 = 𝐼𝑧𝑧 =1

4𝑚((𝑟𝑒𝑡 − 𝑔𝑟)2 + 𝑟𝑒𝑡2) +

𝑚𝑙2

12

=1

4𝑚 ((2𝑟𝑒𝑡2 − 2𝑟𝑒𝑡 ∗ 𝑔𝑟 + 𝑔𝑟2) +

𝑙2

12)

(44)

Page 28: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

28

Por otro lado, se utilizarán las medidas y ángulos comerciales de una bicicleta para

establecer la forma del marco, con la suposición de que la parte del tubo que sobresale

destinada al sillín no se toma en cuenta. En la Figura 10 se observan las abreviaciones

de las medidas que se utilizarán además de algunas medidas comerciales para marcos

de distintos tamaños. Además, en la Tabla 2 se encuentran los nombres de estas

medidas. Tabla 2 Dimensiones marco bicicleta

STA Seat Tube Angle (Angulo Sillín Efectivo)

CS Chainstay (Longitud Vainas)

ST Seat Tube (Longitud Tubo Sillín)

WB Wheelbase (Distancia Entre Ejes)

BD BB Drop (Caída Eje Pedalier)

HTA Head Tube Angle (Angulo Dirección)

HT Head Tube

TT Top Tube Effective (Longitud Tubo Superior)

FO Fork Length (Longitud Tenedor)

R (re en el código) Reach

S Stack

ret Radio Externo Tubos

gr Grosor Tubos

Page 29: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

29

Figura 10 Geometría marco bicicleta comercial [21]

Con esta información se puede hallar el centro de masa del marco haciendo un

promedio de los centros de masa de los cinco tubos. Para ello se utilizó el siguiente

procedimiento empezando desde el centro de masa de la rueda trasera y utilizando el

marco C:

Page 30: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

30

Figura 11 Centros de masa tubos 1, 2 y 3

o Tubo 1 (cm1): Siguiendo el camino de vectores verde de la Figura 11, el centro

de masa del tubo 1, el cual se encuentra en la mitad de este. Se puede hallar

encontrando el ángulo BD (Figura 11) y multiplicando la longitud del CS por el

coseno de este valor para el eje 𝑐3, y tomando en cuenta el BB para el eje 𝑐1;

ambos valores se dividen en la mitad ya que sus expresiones son equivalentes a

la longitud total del tubo y el centro de masa está ubicado en la mitad, la

ecuación que lo define se puede escribir como:

𝑐𝑚1 =

[ 𝐶𝑆 ∗ cos (𝑠𝑒𝑛−1 (

𝐵𝐷𝐶𝑆

))

2, −

𝐵𝐷

2

]

(45)

o Tubo 2 (cm2): En la Figura 11 se puede observar como el camino de vectores

azul, para definirlo es necesario hallar la longitud del tubo, por lo que se utiliza

la ley de cosenos, de manera que la longitud del tubo 2 (Que se denominará SR)

será equivalente a:

𝑆𝑅 = √𝐶𝑆2 + 𝑆𝑇2 − 2 ∗ 𝐶𝑆 ∗ 𝑆𝑇 ∗ cos(𝑠𝑡𝑎 − 𝑎𝑛𝑔𝐵𝐷) (46)

Donde a su vez el ángulo BD será:

𝑎𝑛𝑔𝐵𝐷 = 𝑠𝑒𝑛−1 (𝐵𝐷

𝐶𝑆)

Ahora para definir las direcciones 𝑎1 y 𝑎3 es necesario hallar el ángulo SR, este

se encuentra mediante la ley de los senos:

Page 31: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

31

𝑆𝑅

𝑠𝑒𝑛(𝜑)=

𝑆𝑇

𝑠𝑒𝑛(𝑎𝑛𝑔𝐵𝐷) → 𝑎𝑛𝑔𝐵𝐷 = 𝑠𝑒𝑛−1 (

𝑆𝑇

𝑆𝑅∗ 𝑠𝑒𝑛(𝜑))

Y en este caso 𝜑 se puede expresar como:

𝜑 = 𝑠𝑡𝑎 − 𝑎𝑛𝑔𝐵𝐷

De manera que el centro de masa del tubo 2 se define así:

𝑐𝑚2 = [𝑆𝑅 ∗cos(𝑎𝑛𝑔𝐵𝐷)

2, 𝑆𝑅 ∗

𝑠𝑒𝑛(𝑎𝑛𝑔𝐵𝐷)

2] (47)

o Tubo 3 (cm3): Corresponde al camino de vectores rosa de la Figura 11.

Tomando el camino creado anteriormente para el tubo 2, se continua y se le

agrega la longitud en 𝑐3 y en 𝑐1 de manera que es equivalente a:

𝑐𝑚3 = 2 ∗ 𝑐𝑚2 + [𝑆𝑇 ∗ cos(𝑠𝑡𝑎)

2,𝑆𝑇 ∗ sen(𝑠𝑡𝑎)

2] (48)

Figura 12 Centros de masa tubos 3 y 4

o Tubo 4 (cm4): corresponde al camino de vectores azul claro de la Figura 12.

Para poder calcular este centro de masa primero se halla el vector

correspondiente a la longitud del tubo, esto se hace restando el vector de

longitud del tubo 2 a la suma de la longitud del tubo 1, S y R, es decir:

𝑙𝑐𝑚4 = 2 ∗ 𝑐𝑚1 + 𝑆 + 𝑅 − 2 ∗ 𝑐𝑚2

Ahora bien, el centro de masa está ubicado en la mitad de la longitud, por lo

tanto, también se agrega 2*cm2 para hallar el vector de centro de masa desde el

punto 𝐵∗

𝑐𝑚4 =𝑙𝑐𝑚4

2+ 2 ∗ 𝑐𝑚2 = 𝑐𝑚1 + 𝑐𝑚2 + [

𝑆

2,𝑅

2] (49)

Page 32: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

32

o Tubo 5 (cm5): Es el camino de vectores amarillo de la Figura 12. En este caso

ya que se conoce el camino hasta el punto de inicio del tubo (2cm1+S+R), por

lo tanto, se agrega la mitad de la longitud de este tubo (HT), de manera que el

centro de masa es igual a:

𝑐𝑚5 = 2 ∗ 𝑐𝑚1 + [𝑆, 𝑅] + [𝐻𝑇 ∗ cos(ℎ𝑡𝑎)

2,𝐻𝑇 ∗ sen(hta)

2] (50)

Figura 13 Centro de masa tubo 6

o Tubo 6 (cm6): En la Figura 13 se observa como el camino de vectores rojo. Para

definirlo primero se halla la longitud de este tubo siendo la siguiente:

𝑙𝑐𝑚6 = 𝑆 + 𝑅 + 𝐻𝑇 ∗ cos(ℎ𝑡𝑎) + 𝐻𝑇 ∗ sen(hta)

Con esta longitud y conociendo que el centro de masa se encuentra en la mitad

del tubo, el centro de masa estará dado por:

𝑐𝑚6 =𝑙𝑐𝑚6

2+ 2 ∗ 𝑐𝑚1

= 2 ∗ 𝑐𝑚1 + [𝑆 + 𝐻𝑇 ∗ cos(ℎ𝑡𝑎)

2,𝑅 + 𝐻𝑇 ∗ sen(hta)

2]

(51)

o Centro de masa marco: Para hallar el centro de masa del marco se realiza un

promedio ponderado de los centros de masa de cada tubo y su respectiva masa.

Debido a que solo se conoce la masa total del marco, se utilizará la longitud de

cada tubo dividida sobre la sumatoria de la longitud de los tubos, es decir:

𝑐𝑚𝑚𝑎𝑟𝑐𝑜 = ∑(𝑐𝑚𝑖 ∗ 𝑙𝑐𝑚𝑖)

𝑙𝑐𝑚𝑖

6

𝑖=1

(52)

O de manera expandida

𝑐𝑚𝑚𝑎𝑟𝑐𝑜 =𝑐𝑚1 ∗ 𝑙𝑐𝑚1 + 𝑐𝑚2 + 𝑙𝑐𝑚3 + 𝑐𝑚3 ∗ 𝑙𝑐𝑚3 + 𝑐𝑚4 ∗ 𝑙𝑐𝑚4 + 𝑐𝑚5 ∗ 𝑙𝑐𝑚5 + 𝑐𝑚6 ∗ 𝑙𝑐𝑚6

𝑙𝑐𝑚1 + 𝑙𝑐𝑚2 + 𝑙𝑐𝑚3 + 𝑙𝑐𝑚4 + 𝑙𝑐𝑚5 + 𝑙𝑐𝑚6

Page 33: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

33

Con los centros de masa calculados es posible hallar la inercia del marco,

computacionalmente se hará asumiendo cada centro de masa como una partícula

orientada en un marco 𝐶𝑖 respecto a C, girado en el eje 𝑐2 por una cantidad

equivalente al ángulo del tubo respecto al eje 𝑐1, luego se usará el teorema de ejes

paralelos para hallar la inercia de cada tubo respecto al centro de masa.

Manualmente es posible hacer esta transformación con la ecuación (22), y de igual

manera, usar el teorema de ejes paralelos.

Para hallar tanto las inercias como los centros de masa de cada tubo, y

consiguientemente del marco, se crearon dos funciones: la primera llamada

“centroMasaMarco” y la segunda “InerciaMarco”; ambas funciones hallan los

valores simbólicos y tienen como entrada las dimensiones del marco de la bicicleta.

En el caso de la ecuación de la Inercia, también se incluye el marco de referencia

sobre el que está el marco (C)

• Tenedor: Al igual que con el marco se asume la inercia como un tubo de pared gruesa

de acuerdo con la ecuación (44); el tenedor está ubicado en el marco D, y su longitud

es HT+FO, así que su centro de masa será:

𝑐𝑚𝑡𝑒𝑛𝑒𝑑𝑜𝑟 =𝐻𝑇 + 𝐹𝑂

2∗ −𝐷3 (53)

La información referente a este código se puede encontrar en el documento “Bicicleta.py”,

también se incluye un documento con la formulación para la rotación de inercias sin recurrir

a marcos de referencia extra en “RotacionMarcos.py”, en este documento tampoco se

recurre al uso de Sympy Mechanics, por lo que es posible hacer un cambio a Numpy para

calcular las inercias numéricamente en lugar de simbólicamente

Page 34: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

34

3. Estudio del caso

Una vez implementados ambos modelos en Python se pueden obtener las gráficas de la evolución

de las coordenadas generalizadas y rapideces generalizadas en el tiempo haciendo uso de PyDy y

matlplotlib. En este caso lo que se obtiene es una lista con los resultados de las coordenadas

generalizadas guardados de manera [𝑞𝑖 , 𝑢𝑖] con una cantidad de elementos equivalente a la

cantidad de pasos que se hayan tomado en el tiempo, es decir, si se grafica 1 segundo y en

intervalos de 0.1 segundos, habrá 10 elementos en la lista para cada coordenada y rapidez

generalizada. Si se desea graficar solo alguno de los elementos, debe tomarse en cuenta su

ubicación, por ejemplo, en este caso existen 2 coordenadas generalizadas y dos rapideces

generalizadas de manera que los datos están guardados como [𝑞1, 𝑞2, 𝑢1, 𝑢2] así que si se desea

graficar únicamente 𝑢1 se deberá llamar como sol[:,2] en los argumentos de la función plot.

El primer lugar se va a estudiar el disco sobre una rampa inclinada, este es un modelo sencillo de

una rueda girando sobre una rampa, asumiendo que la rueda es un disco delgado solido de masa

m y sin grosor definido, tomando solo en cuenta el peso como fuerza de entrada, las fuerzas de

fricción y normal se tuvieron en cuenta en la formulación pero al hallar las ecuaciones finales se

determinó que no tenían influencia en estas; se ignoran demás factores externos como

amortiguación y fuerza de arrastre, además de que se asume que la rueda siempre está en contacto

con el suelo. A continuación, se presentarán las gráficas del primer caso, con diferentes variaciones

en las constantes que afectan las ecuaciones (masa del disco, radio del disco y ángulo de la rampa)

para observar el comportamiento del sistema.

Figura 14 Caso 1 girando a la izquierda con r:0.5, m:1, g:9.81, theta:25

Page 35: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

35

En el caso 1, en la Figura 14 se observa que la gráfica de 𝑢1 = 𝑢2 tal y como es esperado debido

a la restricción de no deslizamiento (Ecuación (29)), de igual manera la velocidad aumenta de

manera lineal mientras que el desplazamiento lo hace parabólicamente. Además, 𝑞1 es menor a 𝑞2

respondiendo a la ecuación 𝑞1 =𝑞2

𝑟 (esta ecuación deriva de combinar las ecuaciones (29) y (26)).

También se observa que los valores de posición y velocidad evolucionan negativamente ya que el

disco avanza en las direcciones -𝑎1 y -𝑎2

Figura 15 Caso 2 girando a la derecha con r:0.5, m:1, g:9.81, theta:25

En el caso 2 (Figura 15) se cambia únicamente la dirección de giro, esto modificando el

componente 𝑎2 de la fuerza de gravedad, lo que sería el equivalente a cambiar de dirección la

rampa. Se observa que se obtiene la misma gráfica que en el caso 1, pero con el eje 𝑦 invertido, ya

que la rueda ahora avanza en la dirección 𝑎1.

Page 36: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

36

Figura 16 Caso 3 izquierda con r:0.5, m:1, g:9.81, theta:10

En el caso 3 ( Figura 16) se mantienen todos los valores del caso 1 a excepción del ángulo de la

rampa. Se observa una disminución significativa de la velocidad, siendo en los casos anteriores

más de 2.5 𝑚/s al pasar 1 segundo, pero, en este caso siendo cercana a 1 𝑚/s en el mismo lapso

de tiempo.

Es posible afirmar que el modelo desarrollado en Python del caso del disco sobre una rampa tuvo

resultados acertados, los datos obtenidos son congruentes con las ecuaciones que componen al

modelo. Es notorio el cambio en los resultados de las coordenadas y velocidades generalizadas al

cambiar las variables iniciales, respondiendo también certeramente al evaluarlos físicamente,

como en el caso 2 que al cambiar la dirección de giro también cambia el signo de los resultados, o

en el caso 3 que al disminuir el ángulo de la rampa la aceleración también disminuye, incluso

cuando la fuerza de gravedad es igual en los tres casos. Con los datos obtenidos también se observa

que en caso de ser necesario se podría hacer un análisis básico de la aceleración tomando en cuenta

que esta es igual a 𝑎 =∆𝑉

∆𝑡.

Respecto al caso de la bicicleta, no fue posible implementar todo el modelo computacionalmente

con resultados exitosos. En primer lugar, debido a errores en la creación de las restricciones, al

utilizar ecuaciones con vectores definidos en los marcos de referencia (A.x por ejemplo) se

presenta un error, posiblemente causado por la integración de diferentes librerías en las que la clase

marco no existe y por lo tanto los atributos 𝑥, 𝑦, y 𝑧 de los vectores tampoco. En segundo lugar, al

tratar de implementar el modelo sin las restricciones para evitar este error y obtener las ecuaciones

del método de Kane (esto es posible como se observó en el modelo matemático del caso de la

Page 37: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

37

rueda en la rampa inclinada) se produce un “runtime error” debido a la complejidad matemática

del modelo, en este caso, el proceso de integración mediante PyDy excede el tiempo límite de

ejecución del código.

Dos sugerencias se proponen en busca de dar solución a estos errores, en primer lugar desglosar

manualmente las restricciones hasta obtener ecuaciones que no dependan de un marco de

referencia sino únicamente de constantes, coordenadas generalizadas y velocidades generalizadas;

la segunda propuesta es respecto a las inercias, utilizar inercias temporales y posteriormente

reemplazarlas con las ecuaciones respectivas para disminuir el tamaño de las ecuaciones y de esta

manera el tiempo que toma ejecutar el código, estas sugerencias se estudiarán más a fondo en la

siguiente sección.

Page 38: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

38

4. Conclusiones y trabajos futuros

Para el desarrollo del modelo de la bicicleta primero se utilizo un caso sencillo con el objetivo de

tener una aproximación al método de Kane y a la implementación computacional de este, el modelo

utilizado fue el caso de un disco sobre una rampa inclinada desarrollado por Brent Gillespie [20],

estas ecuaciones fueron satisfactoriamente definidas matemática y computacionalmente

obteniendo un conocimiento previo antes de desarrollar el modelo de la bicicleta. Para el caso de

la bicicleta se uso el modelo de Whipple [7] con algunas pequeñas modificaciones que pueden ser

observadas en la Figura 6; las ecuaciones matemáticas necesarias para la implementación del

método de Kane fueron definidas, aunque no fue posible la comprobación de las mismas.

Respecto a la solución computacional de los modelos, a partir de las gráficas obtenidas de la

implementación del caso del disco, se puede observar la practicidad del desarrollo de los modelos

dinámicos en Python utilizando las librerías mencionadas anteriormente, con lo cual fue posible

obtener resultados con un código corto y eficiente, es importante tener en cuenta la orientación de

los marcos de referencia para asignar los signos de las rapideces generalizadas y fuerzas como se

puede observar en las Figuras 15 y 16 donde un cambio en el signo de una de las fuerzas ocasiona

que las velocidades y posiciones se alteren significativamente.

Sin embargo, en el caso de la bicicleta no fue posible corroborar la validez del funcionamiento del

modelo ya que surgieron algunos errores durante la implementación del código en Python. Se

proponen algunos cambios en el código que podrían corregir estos errores. En primer lugar, es

necesario cambiar las restricciones de manera que no se utilicen vectores directamente, sino que

sean expresadas en términos de las coordenadas generalizadas, rapideces generalizadas y

constantes del sistema. Una forma de hacer esto podría ser desarrollando manualmente las

ecuaciones para que al final sea posible obtener una ecuación sin vectores. En segundo lugar, se

propone reemplazar las inercias por expresiones matriciales de inercia [𝐼𝑥𝑥, 𝐼𝑦𝑦 , 𝐼𝑧𝑧] . En el caso de

las llantas y el manubrio, debido a que se conoce una expresión que define los tres momentos

principales de inercia, se podría asignar (𝐼𝑥𝑥𝑅𝑢𝑒𝑑𝑎) por ejemplo; para el marco se utilizaría una

expresión equivalente [

𝐼𝑥𝑥 𝐼𝑥𝑦 𝐼𝑥𝑧

𝐼𝑦𝑥 𝐼𝑦𝑦 𝐼𝑦𝑧

𝐼𝑧𝑥 𝐼𝑧𝑦 𝐼𝑧𝑧

] , ya que se desconoce si únicamente están presentes los tres

momentos principales de inercia o existen direcciones extra que también afecten la inercia.

Además, este cambio también conlleva a la adición de dos constantes simbólicas ℎ𝑐 y 𝑙𝑐 que

representan el vector que va desde el centro de la rueda trasera hasta el punto de contacto del

manubrio con el marco, siendo las medidas en la dirección 𝑐1 y 𝑐3 respectivamente.

Una vez se calculen simbólicamente las ecuaciones de Kane utilizando estas constantes, se

reemplazan los valores simbólicos con los valores numéricos de cada uno, de manera que será

necesaria la implementación de funciones o cálculos extra que utilicen una librería como Numpy.

El código referente a los centros de masa puede ser modificado fácilmente para hallar valores

numéricos en lugar de simbólicos, en cuanto a las inercias es necesario crear las funciones. Por

último, para el caso del marco hay un inicio del procedimiento de rotación de las inercias sin

Page 39: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

39

recurrir al módulo de SymPy mechanics en el archivo “InerciaMarco.py”, este código utiliza la

función centroMasaMarco por lo que es necesario incluirlo en el documento “Bicicleta.py” para

que funcione y reemplazar la librería Sympy con Numpy para cambiar los valores de simbólicos a

numéricos.

Para trabajos futuros, se propone la implementación de un sistema de control en el modelo, para

que sea posible simular con mayor precisión los giros, ya que los torques de dirección y

estabilizadores dependen de la posición de la bicicleta en cada instante de tiempo. Asignar un valor

constante o dependiente de las otras fuerzas podría resultar en simulaciones poco fiables. Además,

sería interesante añadir un ciclista a la bicicleta al igual que factores que no fueron tomados en un

principio tales como la amortiguación, cambios no constantes del suelo (por ejemplo, un obstáculo

pequeño como un reductor de velocidad), la fuerza de arrastre del viento y de esta manera obtener

una simulación mucho más realista y acertada que pueda ser usada en distintos campos de

investigación.

Page 40: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

40

Bibliografía

[1] Bicycle Design, An Illustrated History, Cambridge, MA: The MIT Press, 2016.

[2] Evelo electric bikes, «The History & Evolution of the Bicycle,» [En línea]. Available:

https://evelo.com/pages/history-of-the-bicycle. [Último acceso: 15 Diciembre 2020].

[3] D. G. Wilson, BICYCLING SCIENCE, Cambridge, Massachusetts: The MIT Press, 2004.

[4] R. Caballero, P. Franco, A. Mustaca y A. Jakovcevic, «Uso de la Bicicleta como Medio de

Transporte, Influencia de los Factores Psicológicos. Una Revisión de la Literatura,» Psico, pp. 316-

327, 2014.

[5] O. I. Salazar, «Fervor y marginalidad de las ciclomovilidades en Colombia (1950-1970),» Revista

Colombiana de Sociología, nº 39, pp. 49-67, 2016.

[6] I. E. Okon y C. A. Moreno, «Bicycle Level of Service Model for the Cycloruta, Bogota, Colombia,»

Romanian Journal of Transport Infrastructure, vol. 8, nº 1, pp. 1-33, 2019.

[7] F. J. W. Whipple, «Stability of the motion of a bicycle,» Quarterly journal of mathematics, vol. 348,

nº 30, p. 312, 1899.

[8] J. Papadopoulos, «Bicycle steering dynamics and self-stability: A summary report of work in

progress,» Cornell Bicycle Project report, 1987.

[9] Neimark, J. I., and N. A. Fufaev, «Dynamics of Nonholonomic Systems,» American Mathematical

Society Translations of Mathematical Monographs, vol. 33, p. 330–374, 1967.

[10] J. P. Meijaard, Jim M. Papadopoulos, Andy Ruina y A. L. Schwab, «Linearized dynamics equations

for the balance and steer of a bicycle: a benchmark and review,» Proceedings of the Royal Society

Series, 2007.

[11] D. L. Peterson, «Bicycle dynamics: modelling and experimental validation,» ProQuest, Ann Arbor,

2013.

[12] PyDy Authors, «PyDy Package’s documentation,» Python, 2017. [En línea]. Available:

https://pydy.readthedocs.io/en/stable/#pydy-package-s-documentation. [Último acceso: 20

Diciembre 2020].

[13] Team, SymPy Development, «Classical Mechanics,» Python, 12 Diciembre 2020. [En línea].

Available: https://docs.sympy.org/latest/modules/physics/mechanics/index.html. [Último acceso:

20 Diciembre 2020].

Page 41: DESARROLLO Y VALIDACIÓN DE UN MODELO DINÁMICO

41

[14] Team, SymPy Development, «Examples for Physics/Mechanics,» Python, 12 Diciembre 2020. [En

línea]. Available: https://docs.sympy.org/latest/modules/physics/mechanics/examples.html.

[Último acceso: 20 Diciembre 2020].

[15] PyDy Team, «PyDy: Multibody Dynamics with Python,» Python, 2015. [En línea]. Available:

https://www.pydy.org/. [Último acceso: 20 Diciembre 2020].

[16] S. (. Duan, «A Comparison Case Study For Dynamics Analysis Methods In Applied Multibody

Dynamics,» 2006 Annual Conference & Exposition Proceedings, 2006.

[17] Z. Hussain y Z. A. Norsinnira , «KANE’S Method for Dynamic Modeling,» IEEE International

Conference on Automatic Control and Intelligent Systems (I2CACIS), pp. 174-179, 2016.

[18] C. F. Rodriguez Herrera, Dinámica Mecánica, Bogotá, 2019.

[19] C. M. Roithmayr y D. . H. Hodges, Dynamics: Theory and, New York: Cambridge University Press,

2016.

[20] R. B. Gillespie, «KANE’S EQUATIONS FOR HAPTIC DISPLAY OF MULTIBODY SYSTEMS,» Haptics-e,

vol. 3, nº 2, 2003.

[21] Ciclos Marcén S.L, «BLOG NOVEDADES MERIDA 2017,» 2017. [En línea]. Available:

https://www.ciclosmarcen.com/novedades/174-novedades-merida-2017. [Último acceso: 17

Noviembre 2020].