Contents — find the section you need
Change parameters and verify
Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.
Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.
The experiment controls are in English.
Execute observando a trajetória prevista
Execute "Reta · deslocamento de 1 m" e reproduza o resultado. Os traços verdes em cada instante são a trajetória prevista resolvida naquele momento. O MPC decide toda a sequência de curvatura ao longo do horizonte, mas aplica ao veículo apenas o primeiro valor e resolve tudo novamente no ciclo seguinte (0,05 s depois). A trajetória prevista e a trajetória real diferem tanto porque o modelo de previsão é uma aproximação quanto porque ciclos posteriores atualizam o plano.
Salve o resultado como A e, em seguida, execute "Horizonte curto (3 passos)" ou "Horizonte longo (30 × 0,2 s)". Com os mesmos pesos, o quanto à frente o controlador olha muda como a direção se acumula. O comprimento do horizonte em segundos é o número de passos N multiplicado pelo passo Δt.
Modelo de previsão e problema de otimização
Os estados são o erro lateral e_y em relação à trajetória (positivo à esquerda) e o erro de rumo e_ψ. A previsão usa um modelo linear simplificado para o MPC.
u_k é a curvatura de trajetória comandada [1/m], κ_k a curvatura da trajetória na posição prevista, e v_k a velocidade prevista com o mesmo servo de velocidade do veículo. A direção é δ=atan(L u), portanto o limite de direção |δ|≤δ_max é exatamente o limite de curvatura |u|≤tan(δ_max)/L. O custo
resulta em um programa quadrático com apenas limites de curvatura. u_{-1} é a curvatura efetivamente aplicada no ciclo anterior. r pondera o desvio em relação à curvatura da trajetória e r_Δ pondera mudanças rápidas de curvatura. A previsão é um modelo linear de pequeno ângulo, enquanto o veículo é o modelo de bicicleta não linear compartilhado. Essa diferença faz parte do que o experimento demonstra.
Solucionador, e o que acontece quando ele não converge
O programa quadrático é resolvido com um método de Newton projetado (Bertsekas 1982). As variáveis mantidas em um limite são fixadas, uma direção de Newton é calculada para o restante, e uma busca em linha segue a projeção sobre os limites. A resolução é considerada convergente quando o resíduo do gradiente projetado é no máximo 1e-6 [1/m]. A solução do ciclo anterior é o ponto de partida, então normalmente converge em poucas iterações.
Se o limite de iterações for atingido sem convergência, você pode escolher um entre três comportamentos. "Usar iterado viável" aplica o iterado, que respeita os limites, e registra o ciclo como não convergido. "Manter comando anterior" mantém a direção anterior e registra o ciclo como mantido. "Parar" encerra a execução como uma falha (controller_failed) e mostra o motivo. Compare-os com as três predefinições que usam um limite de uma iteração. Com os limites como única restrição, esse problema nunca é inviável (uma solução sempre existe). A inviabilidade decorrente de restrições de estado rígidas está fora do escopo deste Laboratório.
Restrições, pesos e velocidade
"8 m/s · pesos padrão" é concluído, mas "8 m/s · peso de taxa pequeno (diverge)" sai da trajetória. O veículo limita a taxa de direção a 0,8 rad/s, mas esse problema de otimização não inclui esse limite como restrição. Com um peso de taxa r_Δ pequeno, o plano assume mudanças rápidas de direção que o veículo não consegue seguir, e a oscilação cresce. É um exemplo de uma restrição ausente do modelo quebrando a malha fechada. "Peso lateral alto" também mostra correções abruptas esbarrando no limite de taxa de direção.
"Curva fechada (não é possível seguir)" é uma trajetória com raio de 5 m que o veículo não consegue seguir. Nas mesmas condições, o Laboratório Stanley também sai da trajetória. Mudar a lei de controle não pode exceder os limites definidos pelo veículo e suas restrições.
Veículo compartilhado e métricas de comparação
O veículo é o modelo de bicicleta cinemática de eixo traseiro, somente para frente, compartilhado com PP, APP, RPP e Stanley: passos de 0,05 s até 30 s, limite de velocidade de 8 m/s, aceleração de ±2 m/s², taxa de direção de 0,8 rad/s. A velocidade não é otimizada pelo MPC; ela vem do mesmo servo de velocidade a=2(velocidade alvo−velocidade real) que os outros Laboratórios. O MPC deste Laboratório trata apenas da direção.
O erro lateral, o erro de rumo, o RMS e o teste do ponto final usam as definições compartilhadas com os outros Laboratórios, no eixo traseiro. Passar pelo ponto final não significa parar ou estacionar. Não classifique execuções com tempos decorridos ou estados de conclusão diferentes apenas pelo RMS.
Sobre o tempo de cálculo
O tempo do solucionador é o tempo de relógio (wall-clock) do Python (Pyodide) neste navegador. Ele muda de acordo com o dispositivo, o navegador e o que mais estiver em execução, e não diz nada sobre o tempo de cálculo em um computador embarcado no veículo ou se um prazo de controle seria cumprido. A avaliação de desempenho exige medir o tempo de resolução no pior caso no hardware e na implementação alvo (por exemplo, um solucionador dedicado como o OSQP).
Sequência sugerida
- Reproduza a execução nominal e compare a trajetória prevista com a trajetória real.
- Altere o número de passos do horizonte e o tamanho do passo, e compare o acúmulo de direção e o erro lateral.
- Use as duas predefinições de 8 m/s para ver como o peso de taxa se relaciona com o limite de taxa de direção.
- Use as três predefinições de uma iteração para comparar como os ciclos não convergidos são tratados.
Tudo é executado no seu navegador, com reprodução, avanço quadro a quadro, comparação A/B, reinício, compartilhamento e download em JSON.
Comentários
Entre na sua conta para continuar.
Ainda não há dados.