14 votos

Cuál es el mejor camino para un determinado inicial y el estado final?

Estoy tratando de calcular un eficiente curva de aceleración dada de inicio y final de las posiciones y velocidades. Estoy suponiendo que no hay fricción, y que la aceleración puede ser aplicada en cualquier dirección en cualquier momento.

Dado:

  • $p_0$ = posición inicial
  • $v_0$ = velocidad de inicio
  • $p_f$ = posición final
  • $v_f$ = velocidad final
  • $T$= tiempo total

Quiero encontrar un buen $a(t)$ función que se producen condiciones finales.

Hasta ahora tengo el siguiente solución que funciona, pero produce un increíblemente ineficiente $a(t)$ curva:

Primero tengo que calcular la constante de aceleración necesarias para llegar de $v_{0}$$v_{f}$:

$$ a_v = \cfrac{v_f - v_{0}}{T} $$

Entonces me calcular el cambio en la posición de esta aceleración a crear más de $T$ :

$$ p_v = \cfrac{1}{2} a_v T^2 $$

A continuación me calcular el promedio de la velocidad requerida para obtener de $p_{0}$ $p_f$y para contrarrestar $p_v$ :

$$ v_p = \cfrac{p_f - (v_{0} + p_f ) }{ T } $$

A continuación me calcular la aceleración necesaria para producir esta velocidad promedio sobre el total de tiempo:

$$ a_p= \cfrac{2 v_p}{ T} $$

Por último, añado el doble que la aceleración de la primera mitad de mi función de aceleración, y restar el doble que la aceleración de la segunda mitad. Esto produce la posición neta de cambio que quiero, pero tiene un neto $0$ de velocidad/aceleración de cambio para $v_f$ se queda en lo correcto:

$$ a(t) = \begin{cases} a_v + 2 a_p & t \leq \frac T 2 \\ a_v - 2 a_p & t > \frac T 2 \end{casos} $$

Mientras que esta solución proporciona un resultado, puede provocar que los objetos simulados con la que estoy trabajando para mover hacia atrás antes de avanzar hacia su objetivo final, junto con otros comportamientos extraños. Creo que la solución ideal sería minimizar el total de la aceleración aplicada a lo largo del tiempo (y por lo tanto de la fuerza, ya que la masa de un objeto permanecerá constante a lo largo de este tiempo).

Sé que las restricciones de este problema son que la integral de $a(t)$ debe ser igual a $v_f - v_{0} $, y que la integral de integral debe ser igual a $p_f - p_0$ . Yo no sé cómo configurar el problema a resolver por las restricciones. Yo no sé realmente lo que debo de Google para tratar y resolver este problema. Cualquier ayuda sería muy apreciada.

11voto

Stefano Puntos 763

Tratemos de Ross Millikan sugerencia, cf. su comentario anterior: Vamos a minimizar el (de orden superior) funcional

$$\tag{1} S~:=~ \frac{1}{2}\int_{t_i}^{t_f} \!dt~ a^2, \qquad a~\equiv~\dot{v},\qquad v~\equiv~\dot{x}, $$

con extremos fijos

$$\tag{2} x(t_i)~=~x_i , \qquad v(t_i)~=~v_i , \qquad x(t_f)~=~x_f , \qquad v(t_f)~=~v_f , $$

y con fijo inicial y final de los tiempos, $t_i$$t_f$. Deje $j\equiv\dot{a}$ el valor del tirón. Una variación infinitesimal de la funcional $S$ rendimientos

$$ \delta S~=~\int_{t_i}^{t_f} \! dt~ a \delta a~\stackrel{\text{int. by parts}}{=}~ \int_{t_i}^{t_f} \!dt~\frac{dj}{dt} \delta x +\left[ a \underbrace{\delta v}_{=0} - j \underbrace{\delta x}_{=0}\right]^{t_f}_{t_i} $$ $$\tag{3} ~\stackrel{(2)}{=}~\int_{t_i}^{t_f} \!dt~\frac{dj}{dt} \delta x. $$ La orden superior de Euler-Lagrange ecuación se convierte en

$$\tag{4} \frac{dj}{dt}~=~0, $$

cf. el lema fundamental del cálculo de variaciones. En otras palabras, la sacudida

$$\tag{5} j~=~A$$

debe de ser una constante del movimiento; la aceleración

$$\tag{6} a(t)~=~At+B$$

debe ser afín a la función en $t$; la velocidad

$$\tag{7} v(t)~=~\frac{A}{2} t^2+ Bt +C $$

es un polinomio cuadrático en $t$; mientras que la posición

$$\tag{8} x(t)~=~\frac{A}{6} t^3+ \frac{B}{2}t^2+Ct +D$$

es un polinomio cúbico en $t$. Y así llegamos a la (cúbico) polinomiales de ajuste de los problemas mencionados en Floris' respuesta: Cuatro ecuaciones lineales (2) con cuatro incógnitas $(A,B,C,D)$. Para resolverlos, cuenta de la similitud entre las dos fórmulas

$$ \tag{9} \frac{v_i+v_f}{2}~\stackrel{(2)+(7)}{=}~\frac{A}{4}(t_i^2+t_f^2)+B\frac{t_i+t_f}{2}+C $$

y

$$ \tag{10} \frac{\Delta x}{\Delta t}~\stackrel{(2)+(8)}{=}~\frac{A}{6}(t_i^2+t_it_f+t_f^2)+B\frac{t_i+t_f}{2}+C. $$

La diferencia de (9) y (10) sólo depende de uno desconocido $A$! Aquí hemos definido

$$\tag{11} \Delta t ~:=~ t_f-t_i, \qquad \Delta x ~:=~ x_f-x_i\quad\text{and} \quad\Delta v ~:=~ v_f-v_i.$$

El jerk y el promedio de la aceleración de convertirse en

$$ \tag{12} j~\stackrel{(5)}{=}~A~\stackrel{(9)+(10)}{=}~6\frac{v_i+v_f}{(\Delta t)^2}-12\frac{\Delta x}{(\Delta t)^3}$$

y

$$ \tag{13} \langle a\rangle ~:=~\frac{\int_{t_i}^{t_f} \! dt~ a}{\Delta t} ~\stackrel{(6)}{=}~A\frac{t_i+t_f}{2}+B~\stackrel{(2)+(7)}{=}~\frac{\Delta v}{\Delta t}, $$

respectivamente. Del mismo modo, el resto de las incógnitas $B$, $C$, y $D$ ahora puede ser fácilmente determinado únicamente en términos de las condiciones de frontera (2).

9voto

Paulo Puntos 19

Aquí está mi desordenado enfoque. No es lo ideal, pero es posible que funcione razonablemente bien:

Aproximado de la función de posición $x(t)$ como un cuarto de grado del polinomio:

$$x(t) = at^4 + bt^3 + ct^2 + dt + e$$

De esta manera, usted tiene un grado adicional de libertad para manipular, que puede utilizar para minimizar el movimiento antinatural. Supongamos que el movimiento comienza en $t = 0$ y termina a las $t = T$.

A continuación,$x(0) = p_0 = e$$x'(0) = v_0 = d$, por lo que podemos escribir:

$$x(t) = at^4 + bt^3 + ct^2 + v_0 t + p_0$$

Para el resto de las tres variables, escribimos la matriz del sistema. Aquí está la matriz ampliada:

$$\begin{bmatrix} T^4 & T^3 & T^2 & p_f - p_0 - v_0 T \\ 4 T^3 & 3 T^2 & 2 T & v_f - v_0 \end{bmatrix}$$

Con Mathematica, me fila-reducción de los de arriba para

$$\begin{bmatrix} 1 & 0 & -1/T^2 & \frac{3p_0 - 3p_f + 2 v_0 T + v_f T}{T^4} \\ 0 & 1 & 2/T & \frac{-4p_0 + 4p_f - 3 v_0 T - v_f T}{T^3} \end{bmatrix}$$

Por simplicidad, vamos a definir los $\alpha = \frac{3p_0 - 3p_f + 2 v_0 T + v_f T}{T^4}$$\beta = \frac{-4p_0 + 4p_f - 3 v_0 T - v_f T}{T^3}$.

Este sistema nos dice que el tiempo que nos aseguramos de $a = \alpha + c/T^2$$b = \beta - 2c/T$, cualquier valor de $c$ dará como resultado un polinomio $x(t)$ que coincida con las condiciones.

A continuación, puede optar $c$ basado en una serie de criterios. Por ejemplo, la minimización de la aceleración de los rendimientos $c = -\alpha T^2$ y Floris el resultado, aunque a veces esto puede resultar en el movimiento de retroceso.

6voto

Floris Puntos 54054

Este es un muy fuertemente restringida problema - y suena mucho como un ajuste del spline problema. Como usted sabe, un spline es una curva que tiene continua de la tercera derivada y, como efecto secundario, se minimiza la curva que conecta los puntos. En este caso, el problema sería entonces ser expresado como una curva que pasa por los dos puntos dados, con la pendiente dada. El más suave de aceleración / deceleración iba a seguir a partir de ese ajuste de spline.

Así que si dibujamos un diagrama:

enter image description here

Podemos ver que una spline bien puede ser lo que usted está después. Así que - ¿cómo podemos resolver el conjunto de ecuaciones? Sabemos que la lengüeta debe ser un cúbicos - y lo que ocurre es que tenemos cuatro restricciones:

position at t1
position at t2
velocity at t1
velocity at t2

Estoy seguro de que usted puede resolver de cuatro ecuaciones con cuatro incógnitas... pero si usted no puede, hágamelo saber y voy a tratar de escribir la solución más tarde esta noche. O Google "spline ajuste".

6voto

alemi Puntos 8423

Yo estaba pensando en que podría hacer una curva de Bézier enfoque inspirado (pero con interpolación cuadrática en lugar de interpolación lineal). Usted sabe que en el principio de tiempo que desea que la ruta de acceso a parecer $$ p_0 + v_0 t $$ y al final de la trayectoria que usted quiere que se vea como $$ p_f + v_f (t-T) $$ Así, vamos a tratar de problemas interpolar entre estos dos trayectorias. Con el fin de no romper los derivados, vamos a interpolar entre ellos con la obtención de una ecuación cuadrática una función de la forma $$ f(t) = \left( 1 - \left(\frac t T\right)^2 \right) ( p_0 + v_0 t ) + \left( \frac t T \right)^2 \left( p_f + \alpha ( t - T ) \right) $$ Donde he dejado a $\alpha$ debido a que será determinado por la configuración de la derivada en $t =T$ igual a $v_f$, lo que nos da $$ \alpha = v_f + 2 v_0 + \frac 2 T ( p_0 - p_f ) $$

El uso de esta interpolación, tenemos rutas que se ven muy bien como lo que yo puedo decir, por ejemplo, en dos dimensiones podemos conseguir cosas que parecen: an example trajectory

o:

another example trajectory

Este debe ser equivalente a la de otros cúbicos enfoques mencionados.

Agregar el costo de la energía cinética

Como otra alternativa, yo estaba pensando en este problema, algunas más, y si usted desea para tratar de impedir que el movimiento de retroceso, sería de gran ayuda para agregar un costo término proporcional a la energía cinética de la ruta así. Esto debe llevar a que las rutas de acceso más físico, convirtiendo el problema en uno de los más tradicionales como la optimización de la trayectoria. Así, en particular, tratamos de reducir al mínimo el objetivo: $$ S = \int dt\, \frac{\alpha^2}{2} \dot x^2 + \frac 12 \ddot x^2 $$ sujeto a las restricciones $$ x(-1) = x_0 \quad x(1) = x_f \quad \dot x(-1) = v_0 \quad \dot x(1) = v_f $$ será conveniente para mí, para imaginar el tiempo como la ejecución de$t=-1$$t=1$. Dado que este objetivo es cuadrática nos puede resolver exactamente con el cálculo variacional, como Qmechanic hizo para el caso de que minimiza sólo la aceleración. Teniendo una variación, obtenemos $$ \delta S = \int dt\, \alpha^2 \dot x \delta \dot x + \ddot x \delta \ddot x $$ y podemos integrar por partes y obtener $$ \delta S = \int dt\, \left( \ddddot x - \alpha^2 \ddot x \right) \delta x = 0 $$ lo que nos da una ecuación diferencial ordinaria para $x$, que podemos resolver. Observe que la aceleración de la diff eq es la ecuación de una exponencial. Para hacer un poco más fácil especificar la solución que voy a elegir a $\sinh$ $\tanh$ para la solución base. $$ \ddot x = A \sinh(\alpha t) + B \cosh(\alpha t )$$ que podemos integrar dos veces para obtener la posición del mismo. $$ x = \frac{A}{\alpha^2} \sinh(\alpha t) + \frac{ B}{ \alpha^2 } \cosh(\alpha t) + C t + D $$ y nuestras condiciones de contorno nos dan las soluciones para $A,B,C,D$, obtenemos $$ B = \frac{ \alpha \Delta v}{2 \sinh \alpha} $$ $$ D = \bar x - \Delta v \frac{ \coth \alpha }{ 2 \alpha } $$ $$ A = \alpha^2 \frac{ \bar v - \frac 12 \Delta x }{ \alpha \cosh \alpha - \sinh \alpha } $$ $$ C = \frac{ \frac \alpha 2 \Delta x \cosh \alpha - \bar v \sinh \alpha }{ \alpha \cosh \alpha - \sinh \alpha } $$ donde $$ \Delta x = x_f - x_0 \quad \bar x = \frac 12 ( x_0 + x_f ) $$ $$ \Delta v = v_f - v_0 \quad \bar v = \frac 12 ( v_0 + v_f ) $$

Como ejemplo, a continuación se muestran las trayectorias que resultan de $\alpha \in ( 0.1, 1, 3, 10, 100 ) $$ x_0 = 0, x_f = 1, v_0 = 5, v_f = 5 $. Este es un ejemplo de que la minimización de la aceleración solamente resulta en el movimiento de retroceso.

Example trajectories

En el límite $\alpha \to 0$ recuperamos el de otras soluciones, y en el límite de $\alpha \to \infty$ nuestro partículas se mueven a velocidad constante de un punto a otro, con grandes retrocesos en la velocidad en el inicio y el final.

Pensé en ofrecer esto como otra alternativa.

4voto

alemi Puntos 8423

Esta pregunta tiene una buena respuesta. Fue encontrado por John Hobby en su papel Liso, Fácil de Calcular la Interpolación de Splines y es el sistema utilizado por Metapost para crear un agradable trayectorias.

Para resumir los resultados de la de papel, el objetivo es encontrar una estética agradable camino de $z(t)$ (en 2d) sujeto a las restricciones $z(0) = z_0$, $z(1) = z_1$, $z'(0) = v_0$, $z'(1) = v_1$. Para ello, se utiliza un parámetro de $\tau$, la tensión (que en el papel es general entre los puntos, pero vamos a tratar en el mismo para ambos puntos finales, ya que presumiblemente quiere múltiples puntos conectados entre sí).

La solución está dada por la siguiente: $$ z(t) = z_0 + \begin{pmatrix} x_1 - x_0 & y_0 - y_1 \\ y_1 - y_0 & x_1 - x_0 \end{pmatrix} \cdot \hat z(t) $$ $$ \hat z(t) = \frac{\rho}{\tau} t (1-t)^2 \left\{ \cos \theta, \sin \theta \right\} + t^2 ( 1- t) \left\{ 3 - \frac{\sigma \cos \phi}{\tau} , \frac{\sigma \sin \phi}{\tau} \right\} + t^3 \left\{ 1 , 0 \right\} $$ donde $$ \theta = \arg v_0 - \arg ( z_1 - z_0 ) \qquad \phi = \arg ( z_1 - z_0 ) - \arg v_1 $$

$$ \rho = \frac{ 2 + \alpha }{ 1 + (1-c) \cos \theta + c \cos \phi } $$ $$ \sigma = \frac{ 2 - \alpha }{ 1 + (1-c) \cos \phi + c \cos \theta } $$ $$ \alpha = a ( \sin \theta - b \sin \phi )(\sin \phi - b \sin \theta)(\cos \theta - \cos \phi) $$ y $$ a = \sqrt 2 \quad b = \frac 1{16} \quad c = (3 - \sqrt 5 )/2 $$

Un ejemplo, aquí: Examples paths by Hobby splines

Voy a mostrar algunos ejemplos. A la izquierda, yo mostrar el efecto de los parámetros de tensión fija inicial y el estado final y en el derecho muestro algunas de las curvas generadas por una tensión de 2 como puedo variar la velocidad final.

Basado en lo que usted ha dicho, me gustaría recomendar una tensión de 2 o así.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X