Isso é limítrofe não-gamedev, mas os PIDs são comumente usados em jogos, então pensei em tentar.
Eu tenho alguns controladores PID no meu jogo, usados para coisas como direção e controle do acelerador. Estou tendo problemas para ajustá-los com precisão. Nunca parece que estou me aproximando da solução otimista, e é muito tentador deixá-los "bons o suficiente" com a oscilação ou pico estranho de que não consigo me livrar.
O único controlador que me levou a este post com frustração produz oscilações menores para entradas de erro muito pequenas. Em entradas grandes, está tudo bem, mas não muito estável.
Alguém tem alguma dica ou recursos sobre como eu posso treinar essas coisas de maneira mais confiável?
controllers
tenpn
fonte
fonte
Respostas:
Na verdade, existe um artigo decente no AI Game Programming Wisdom 2, de Euan Forrester, sobre controladores PID.
Vou reiterar o que ele disse sobre o ajuste dos diferentes coeficientes:
Ele também oferece vários recursos on-line (alguns dos quais são links mortos, por isso, vou postar apenas os que ainda estão disponíveis):
Ajuste do loop visual
Ajustando um Controlador de Temperatura PID
espero que ajude
~ Ray
fonte
Artigo recente #AltDevBlogADay descreve controladores PID bastante bem, e o exemplo WebGL no site do autor pode ser útil para ajustar as variáveis.
fonte
Para iniciantes, a Wikipedia realmente tem um bom artigo sobre como começar a ajustar . Sem mais detalhes, é difícil entrar em mais detalhes em uma resposta.
fonte
Não ajuste pids usando o método simplista de "tentativa e erro"! Você nunca obterá bons resultados porque os parâmetros dependem um do outro. Use o modelo FOPDT (primeira ordem mais tempo morto) junto com as fórmulas IMC para calcular Kp, Ki e Kd a partir dos dados de teste.
Faça um teste de etapa no seu sinal de controle (diretamente em direção à "planta" sem controlador) e registre sua variável de processo que você está tentando controlar no que se refere ao sinal de controle. Em seguida, observe os dados e anote o ganho do processo, o tempo morto e o tempo do processo. (mais informações aqui e aqui ).
Geralmente basta ler o site inteiro do ControlGuru. É um recurso muito bom. Eu usei o modelo FOPDT com bastante sucesso para obter os valores pid corretos instantaneamente, sem qualquer tentativa e erro. Funciona muito bem e produz um controlador ideal. Quando você calcula seu Kp, Ki e Kd a partir de Kp, Ti e Td, você também tem a opção de especificar o valor de "agressividade", que é uma boa maneira de apenas dizer ao seu controlador já ajustado o quão rápido ele deve convergir.
Além disso, você provavelmente deve usar derivada no PV em vez de derivada no erro. Realmente, não há sentido em derivar erros. Para fazer isso, use sinal negativo antes de Kd e use esta fórmula:
Isso evita um efeito chamado "chute derivativo" quando você altera seu ponto de ajuste. Mais informações aqui .
Eu nunca mais sintonizo manualmente. Eu acho que o modelo FOPDT é o método mais simples que existe para ajustar os loops PID muito rapidamente. Você também precisa distinguir entre o processo de auto-regulação (auto-estabilização) e um processo de integração (que não se estabiliza - como a posição de um objeto após a aplicação de uma força). Os métodos de ajuste são um pouco diferentes, mas também são descritos no site controlguru aqui .
fonte