AI da propulsão da nave espacial: pousar uma nave 3D na posição = 0 e ângulo = 0

Esse é um problema muito difícil sobre como manobrar uma nave espacial que pode traduzir e girar em 3D para um jogo espacial.

A nave espacial temn jatos posicionados em várias posições e direções.

Transformação dei-jato em relação ao CM da nave espacial é constante =Ti.

Transformação é uma tupla de posição e orientação (quaternion ou matriz 3x3 ou, menos preferível, ângulos de Euler).Uma transformação também pode ser indicada por uma única matriz 4x4.

Em outras palavras, todos os jatos são colados ao navio e não podem girar.

Um jato pode exercer força na nave espacial apenas na direção de seu eixo (verde).
Como resultado da cola, o eixo girava junto com a nave espacial.

Todos os jatos podem exercer força (vetor,Fi) a uma certa magnitude (escalar,fi):
i-jato pode exercer força (Fi= axis x fi) apenas dentro do alcancemin_i<= fi <=max_i.
Ambosmin_i emax_i são constantes com valor conhecido.

Para ficar claro, a unidade demin_i,fi,max_i é Newton.
Ex. Se o intervalo não cobrir 0, significa que o jato não pode ser desligado.

A massa da nave espacial =m e tensor de inércia =I.
A transformação atual da nave espacial =Tran0, velocidade =V0, angularVelocity =W0.

O corpo físico da nave espacial segue regras físicas conhecidas:
Torque=r x F
F=ma
angularAcceleration = I^-1 x Torque
linearAcceleration = m^-1 x F

I é diferente para cada direção, mas por uma questão de simplicidade, tem o mesmo valor para todas as direções (em forma de esfera). Portanto,I pode ser pensado como um escalar em vez de matriz 3x3.

Pergunta, questão

Como controlar todos os jatos (todosfi) para desembarcar o navio com posição = 0 e ângulo = 0?
Especificação matemática: Encontre a função defi(time) que levam tempo mínimo para chegarposition=(0,0,0), orient=identity com finalangularVelocity evelocity = zero.

Mais especificamente, quais são os nomes da técnica ou algoritmos relacionados para resolver esse problema?

Minha pesquisa (1 dimensão)

Se o universo for 1D (portanto, sem rotação), o problema será fácil de resolver.
( ObrigadoGavin Lock, https://stackoverflow.com/a/40359322/3577745 )

Primeiro, encontre o valorMIN_BURN=sum{min_i}/m eMAX_BURN=sum{max_i}/m.

Segundo, pense de maneira oposta, assuma quex=0 (posição) ev=0 àst=0,
então crie duas parábolas comx''=MIN_BURN ex''=MAX_BURN.
(A segunda derivada é considerada constante por um período de tempo, portanto é parábola.)

O único trabalho restante é juntar duas parábolas.
A linha vermelha do traço é onde eles se juntam.

No período em quex''=MAX_BURN, tudofi=max_i.
No período em quex''=MIN_BURN, tudofi=min_i.

Funciona muito bem para 1D, mas em 3D, o problema é muito mais difícil.

Nota:
Apenas um guia aproximado apontando-me para uma direção correta é realmente apreciado.
Não preciso de uma IA perfeita, por ex. pode demorar um pouco mais do que o ideal.
Penso nisso por mais de uma semana, ainda não encontro nenhuma pista.

Outras tentativas / opiniões

Não acho que o aprendizado de máquina como a rede neural seja apropriado para este caso.A otimização com limite mínimo de quadrado restrito pode ser útil, mas não sei como ajustar minhas duas hiperparábolas a essa forma de problema.Isso pode ser resolvido usando muitas iterações, mas como?Eu procurei no site da NASA, mas não encontrei nada útil.O recurso pode existir no jogo "Space Engineer".Comentado por Logman: O conhecimento em engenharia mecânica pode ajudar.Comentado por AndyG: É um problema de planejamento de movimento comrestrições não-econômicas. Poderia ser resolvido porExplorar rapidamente a árvore aleatória (RRTs)teoria em torno deEquação de LyapunoveRegulador quadrático linear.Comentado por John Coleman: Parece maiscontrole ideal do que AI.

Editar: "Suposição quase 0" (opcional)

Noa maioria Nesse caso, a IA (a ser projetada) é executada continuamente (ou seja, chamada a cada etapa do tempo).Assim, com o ajuste da IA,Tran0 éusualmente quase identidade,V0 eW0 estãousualmente não é tão diferente de 0, p.|Seta0|<30 degree,|W0|<5 degree per time-step .Eu acho que a IA baseada nessa suposição funcionaria bem ema maioria caso. Embora não seja perfeita, pode ser considerada uma solução correta (comecei a pensar que, sem essa suposição, essa pergunta pode ser muito difícil).Sinto fracamente que essa suposição pode permitir alguns truques que usam alguma aproximação "linear".A segunda pergunta alternativa - "Ajustar 12 variáveis" (mais fácil)

A pergunta acima também pode ser vista da seguinte forma: -

Eu quero sintonizar todos os seisvalues e seisvalues' (1ª derivada) seja 0, usando a menor quantidade de intervalos de tempo.

Aqui está uma tabela que mostra uma possível situação que a IA pode enfrentar: -

oTabela multiplicadora lojasinertia^-1 * r emass^-1 da pergunta original.

oMultiplicador eAlcance são constantes.

A cada passo do tempo, a IA deve escolher uma tupla de valoresfi que deve estar no intervalo[min_i,max_i] para cadai+1-jato.
Ex. Da tabela, a IA pode escolher(f0=1,f1=0.1,f2=-1).

Então, o chamador usaráfi para multiplicar com oTabela multiplicadora para obtervalues''.
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

Depois disso, o chamador atualizará todosvalues' com fórmulavalues' += values''.
Px' += Px''
.................
SetaZ' += SetaZ''

Por fim, o chamador atualizará todos osvalues com fórmulavalues += values'.
Px += Px'
.................
SetaZ += SetaZ'

A IA será solicitada apenas uma vez para cada etapa do tempo.

O objetivo da IA é retornar tuplas defi (pode ser diferente para diferentes etapas), para tornarPx,Py,Pz,SetaX,SetaY,SetaZ,Px',Py',Pz',SetaX',SetaY',SetaZ' = 0 (ou muito próximo),
usando a menor quantidade de etapas possível.

Espero fornecer uma outra visão do problema seja mais fácil.
Não é exatamente o mesmo problema, mas sinto que uma solução que pode resolver esta versão pode me aproximar muito da resposta da pergunta original.

Uma resposta para essa pergunta alternativa pode ser muito útil.

Terceira pergunta alternativa - "Ajustar 6 variáveis" (mais fácil)

Esta é uma versão simplificada com perdas da alternativa anterior.

A única diferença é que o mundo agora é 2D,Fi também é 2D (x, y).

Portanto, eu tenho que sintonizar apenasPx,Py,SetaZ,Px',Py',SetaZ'= 0, usando a menor quantidade possível de intervalos de tempo.

Uma resposta para essa pergunta alternativa mais fácil pode ser considerada útil.

questionAnswers(4)

yourAnswerToTheQuestion