IA de la propulsión de la nave espacial: aterriza una nave 3D en posición = 0 y ángulo = 0

Este es un problema muy difícil sobre cómo maniobrar una nave espacial que puede traducirse y rotar en 3D, para un juego espacial.

La nave espacial tienen chorros que se colocan en varias posiciones y direcciones.

Transformación dei-th jet en relación con el CM de la nave espacial es constante =Ti.

Transformación es una tupla de posición y orientación (cuaternión o matriz 3x3 o, menos preferible, ángulos de Euler).Una transformación también se puede denotar por una única matriz 4x4.

En otras palabras, todos los aviones están pegados al barco y no pueden rotar.

Un chorro puede ejercer fuerza sobre la nave espacial solo en la dirección de su eje (verde).
Como resultado del pegamento, el eje rotó junto con la nave espacial.

Todos los chorros pueden ejercer fuerza (vector,Fi) a cierta magnitud (escalar,fi):
i-th jet puede ejercer fuerza (Fi= axis x fi) solo dentro del rangomin_i<= fi <=max_i.
Ambosmin_i ymax_i son constantes con valor conocido.

Para ser claro, unidad demin_i,fi,max_i es Newton
Ex. Si el rango no cubre 0, significa que el chorro no se puede apagar.

La masa de la nave espacial =m y tensor de inercia =I.
La transformación actual de la nave espacial =Tran0, velocidad =V0, angularVelocity =W0.

El cuerpo físico de la nave espacial sigue reglas físicas bien conocidas:
Torque=r x F
F=ma
angularAcceleration = I^-1 x Torque
linearAcceleration = m^-1 x F

I es diferente para cada dirección, pero en aras de la simplicidad, tiene el mismo valor para cada dirección (en forma de esfera). Así,I puede considerarse como un escalar en lugar de una matriz de 3x3.

Pregunta

Cómo controlar todos los jets (todosfi) para aterrizar el barco con posición = 0 y ángulo = 0?
Especificación similar a las matemáticas: Encontrar la función defi(time) que tardan un tiempo mínimo en llegarposition=(0,0,0), orient=identity con finalangularVelocity yvelocity = cero

Más específicamente, ¿cuáles son los nombres de las técnicas o algoritmos relacionados para resolver este problema?

Mi investigación (1 dimensión)

Si el universo es 1D (por lo tanto, sin rotación), el problema será fácil de resolver.
( GraciasGavin Lock, https://stackoverflow.com/a/40359322/3577745 )

Primero, encuentra el valorMIN_BURN=sum{min_i}/m yMAX_BURN=sum{max_i}/m.

Segundo, piense de manera opuesta, suponga quex=0 (posición) yv=0 at=0,
luego crea dos parábolas conx''=MIN_BURN yx''=MAX_BURN.
(Se supone que la segunda derivada es constante durante un período de tiempo, por lo que es una parábola).

El único trabajo restante es unir dos parábolas juntas.
La línea roja del guión es donde se unen.

En el período de tiempo quex''=MAX_BURN, todasfi=max_i.
En el período de tiempo quex''=MIN_BURN, todasfi=min_i.

Funciona realmente bien para 1D, pero en 3D, el problema es mucho más difícil.

Nota:
Solo una guía aproximada que me apunta a una dirección correcta es realmente apreciada.
No necesito una IA perfecta, p. Puede tomar un poco más de tiempo de lo óptimo.
Lo pienso durante más de 1 semana, todavía no encuentro ninguna pista.

Otros intentos / opiniones

No creo que el aprendizaje automático como la red neuronal sea apropiado para este caso.La optimización de mínimos cuadrados con restricción de límites puede ser útil, pero no sé cómo adaptar mis dos hiperparábolas a esa forma de problema.Esto puede resolverse usando muchas iteraciones, pero ¿cómo?He buscado en el sitio web de la NASA, pero no encuentro nada útil.La característica puede existir en el juego "Space Engineer".Comentado por Logman: El conocimiento en ingeniería mecánica puede ayudar.Comentario de AndyG: Es un problema de planificación de movimiento conrestricciones no holonómicas. Podría ser resuelto porExplorar rápidamente el árbol aleatorio (RRT), teoría alrededorEcuación de LyapunovyRegulador cuadrático lineal.Comentado por John Coleman: Esto parece más comocontrol óptimo que AI.

Editar: "Supuesto cercano a 0" (opcional)

Enmás caso, AI (para ser diseñado) se ejecuta continuamente (es decir, llamado cada paso de tiempo).Por lo tanto, con la afinación de la IA,Tran0 esgeneralmente identidad cercana,V0 yW0 songeneralmente no tan diferente de 0, p.|Seta0|<30 degree,|W0|<5 degree per time-step .Creo que la IA basada en esta suposición funcionaría bien enmás caso. Aunque no es perfecto, puede considerarse como una solución correcta (comencé a pensar que sin esta suposición, esta pregunta podría ser demasiado difícil).Siento que esta suposición puede permitir algunos trucos que usan una aproximación "lineal".La segunda pregunta alternativa - "Tune 12 Variables" (más fácil)

La pregunta anterior también puede verse de la siguiente manera:

Quiero sintonizar los seisvalues y seisvalues' (1ra derivada) para ser 0, utilizando la menor cantidad de pasos de tiempo.

Aquí hay una tabla que muestra una posible situación que la IA puede enfrentar:

losTabla multiplicadora historiasinertia^-1 * r ymass^-1 de la pregunta original

losMultiplicador yDistancia son constantes

Cada paso de tiempo, se le pedirá a la IA que elija una tupla de valoresfi eso debe estar en el rango[min_i,max_i] para cadai+1-th jet.
Ex. De la mesa, AI puede elegir(f0=1,f1=0.1,f2=-1).

Luego, la persona que llama usaráfi multiplicar con elTabla multiplicadora Llegarvalues''.
Px'' = f0*0.2+f1*0.0+f2*0.7
Py'' = f0*0.3-f1*0.9-f2*0.6
Pz'' = ....................
SetaX''= ....................
SetaY''= ....................
SetaZ''= f0*0.0+f1*0.0+f2*5.0

Después de eso, la persona que llama actualizará todovalues' con fórmulavalues' += values''.
Px' += Px''
.................
SetaZ' += SetaZ''

Finalmente, la persona que llama actualizará todovalues con fórmulavalues += values'.
Px += Px'
.................
SetaZ += SetaZ'

Se le preguntará a AI solo una vez por cada paso de tiempo.

El objetivo de la IA es devolver tuplas defi (puede ser diferente para diferentes pasos de tiempo), para hacerPx,Py,Pz,SetaX,SetaY,SetaZ,Px',Py',Pz',SetaX',SetaY',SetaZ' = 0 (o muy cerca)
utilizando la menor cantidad de pasos de tiempo posible.

Espero que proporcionar otra visión del problema lo haga más fácil.
No es exactamente el mismo problema, pero creo que una solución que puede resolver esta versión me puede acercar mucho a la respuesta de la pregunta original.

Una respuesta para esta pregunta alternativa puede ser muy útil.

La tercera pregunta alternativa - "Tune 6 Variables" (más fácil)

Esta es una versión simplificada con pérdida de la alternativa anterior.

La única diferencia es que el mundo ahora es 2D,Fi también es 2D (x, y).

Por lo tanto, solo tengo que sintonizarPx,Py,SetaZ,Px',Py',SetaZ'= 0, utilizando la menor cantidad de pasos de tiempo posible.

Una respuesta a esta pregunta alternativa más fácil puede considerarse útil.

Respuestas a la pregunta(4)

Su respuesta a la pregunta