¿Cómo determinar la "Distancia de llegada" mínima dada una velocidad, aceleración y tirón máximos junto con una velocidad y aceleración iniciales?

Problema

Dado lo siguiente:

  • A - aceleración máxima.
  • j - tirón constante (la tasa de cambio de la aceleración).
  • v - velocidad inicial.
  • a - aceleración inicial (donde, en la práctica, a [ A , A ] , sin embargo, esto no es un requisito para una solución).

¿Cómo se podría determinar la "distancia de parada" más corta posible, es decir, la distancia recorrida al final de la cual tanto la velocidad como la aceleración llegan simultáneamente a 0?

Editar: David señaló amablemente que "distancia de frenado" no es el término correcto aquí. ¿Quizás la "distancia de llegada" es más adecuada? Esto se debe a que estoy buscando una solución en la que no solo la velocidad llegue a 0, sino que tanto la velocidad como la aceleración lleguen a 0.

Intentar

Hasta ahora, he estado usando la siguiente ecuación para resolver esto dentro de mi aplicación:

d = v 2 2 A + v A 2 j

Sin embargo, me di cuenta de que si bien esto da cuenta de una velocidad inicial, no tiene en cuenta la aceleración inicial y, en cambio, asume 0. Lo que realmente me gustaría lograr es resolver la distancia tanto para la velocidad inicial como para la velocidad inicial. v y una aceleración inicial a .

también sé que cuando a = 0 y v = 0 , d = 0 .

El artículo On-Line Planning of Time-Optimal, Jerk-Limited Trayctories de Haschke et al. insinúa la complejidad de este problema en la introducción:

Mientras que Kröger et al. [7] desarrolló un método en línea para calcular perfiles de velocidad trapezoidal óptimos en el tiempo a partir de condiciones iniciales arbitrarias, Herrera y Sidobre [6] presentaron un enfoque para calcular trayectorias limitadas por sacudidas, pero solo se podían manejar condiciones de aceleración inicial cero. Hasta donde sabemos, hasta ahora no se disponía de una solución universal para calcular trayectorias de tercer orden óptimas en el tiempo con condiciones iniciales arbitrarias, porque la falta de condiciones de frontera cero simétricas complica enormemente el problema.

Planeo seguir leyendo esto e informar con cualquier hallazgo útil.

Continuaré actualizando esta sección con ediciones que muestren mi trabajo en progreso cuando reanude el trabajo mañana si nadie me gana mientras tanto.

Contexto

Estoy intentando mejorar un perfil de movimiento para algunos actuadores lineales que están presentes en una instalación de arte en la que estoy trabajando con un pequeño equipo.

Anteriormente, el actuador lineal se accionaba mediante una aceleración constante seleccionada por nosotros. Podríamos lograr un movimiento rápido muy bien con una aceleración alta, y podríamos lograr un movimiento lento muy bien con una aceleración lenta, sin embargo, el movimiento lento con una aceleración alta resultó en una gran cantidad de "parloteo" del motor. La idea es aplicar un tirón constante en lugar de una aceleración constante para lograr un comportamiento más suave tanto a velocidades bajas como altas.

Creo que mi implementación está a punto de completarse, sin embargo, acabo de darme cuenta de que mi función de distancia de llegada actual (arriba) no tiene en cuenta la aceleración inicial. Como resultado, la distancia de llegada parece precisa a altas velocidades, sin embargo, es muy imprecisa a bajas velocidades con alta aceleración. Este error da como resultado una desaceleración tardía, lo que da como resultado un exceso, lo que a su vez hace que el motor oscile eternamente alrededor de la posición objetivo. Creo que una solución adecuada para la distancia de llegada al menos nos acercará un paso más al comportamiento que deseamos lograr.

¡Cualquier ayuda/orientación es muy apreciada!

La distancia de parada corresponde a velocidad=0. Eso no significa necesariamente que la aceleración también sea cero, como se puede demostrar cuando lanzas un objeto hacia arriba y observas que en su punto más alto, su velocidad es cero, pero su aceleración sigue siendo gramo . Además, ¿sabes cálculo integral?
Ah, eso tiene sentido. En retrospectiva, ¿quizás "distancia de llegada" podría haber sido un mejor término para este caso? Para mi aplicación particular, estoy buscando la distancia en la que tanto la aceleración como la velocidad lleguen a 0 simultáneamente. Re: saber cálculo integral - ¡Ojalá! He deseado fluidez en múltiples ocasiones (implementando curvas de BPM para un DAW, implementando descenso de gradiente y ahora para comportamiento motor) aunque desafortunadamente aún no he tenido la oportunidad de sentarme y obtener una intuición adecuada entre mi escasa necesidad de ello. una vez cada dos años en instalaciones de arte.
Tu falta de experiencia en cálculo integral es un problema. Mi tendencia sería integrar jerk 3 veces para llegar al desplazamiento, pero explicar esa solución sería un desafío.
Es posible que tenga un problema que requiera cierto control del proceso. ¿Puede publicar imágenes de desplazamiento frente a tiempo, velocidad frente a tiempo, aceleración frente a tiempo y tirón frente a tiempo de su respuesta real y la respuesta que desea?

Respuestas (1)

Se indicará el método por el que empezar.

De la Serie de Maclaurin tenemos el desarrollo del desplazamiento en función de sus derivadas sucesivas con valores iniciales:

(1) d = d i + tu t 1 ! + a t 2 2 ! + j t 3 3 !

Notación usual (u,v) velocidades inicial y final; (a, j) son la aceleración y el tirón. El cálculo del tiempo se basa en la suposición promedio de los valores de velocidad inicial y final como promedio:

(2) Tiempo  t = v tu a

eliminando t

d = d i + tu ( v tu a ) 1 ! + a ( v tu a ) 2 2 ! + j ( v tu a ) 3 3 !

que simplifica a

(3) d = d i + ( v tu ) 2 a [ ( v + tu ) + j 3 a 2 ( v tu ) 2 ]

Caso especial de aceleración uniforme ( d i = 0 , j = 0 ) se reduce a una fórmula de distancia familiar

2 a d = v 2 tu 2

ingrese la descripción de la imagen aquí

En el ejemplo numérico anterior, se asumen valores de parada arbitrarios (tirón, aceleración, velocidad, distancia) y se calculan los valores de inicio correspondientes:

[(0.8,0.8),(-1.5,3.5),(-1,4.4),(-6.43768,3)]. El tiempo T es de 6 segundos.

La velocidad máxima se produce en

(4) t 1 = a j = 1.5 0.8 = 1.875

segundos. Se puede evaluar la velocidad máxima. El paso neto es conectarlo a la expresión para convertir v_max al inicio en cualquier otro instante de tiempo deseado.

Se completará con la respuesta completa pronto.

Cómo es d = v i t ? No tienes un movimiento uniforme. ¿O simplemente define algunos d de esta manera?
Gracias por tomarte el tiempo @Narasimham. En su solución final para d , ¿cómo se debe manejar el caso en el que el resultado de a i 2 2 v i j i es menor que 0, lo que resulta en tratar de encontrar la raíz cuadrada de un número negativo? ¿Significa esto que la solución puede ser compleja? Si es así, ¿aún es posible obtener la solución? d como numero real?
Elimine los comentarios después de la actualización en mi respuesta, para cualquier comentario nuevo. Gracias.