Roteiro de aprendizagemIntermediário

Controle PID para robôs: roteiro de aprendizagem

Você pode transformar uma medição ruidosa em um sinal de erro suave e ajustar um controlador PID estável que acompanhe a referência sem oscilar.

Um controlador PID é uma das ferramentas mais importantes da robótica: transforma a diferença entre onde um robô está e onde ele deveria estar em uma correção. Mas um controlador só é tão bom quanto o sinal sobre o qual atua; por isso, este roteiro começa limpando leituras ruidosas de sensores e depois ensina a ajustar os termos proporcional, integral e derivativo para que o robô acompanhe a referência com suavidade, em vez de oscilar.

As etapas práticas são onde a ordem importa. Primeiro, ajuste uma malha PID simples, em que uma única referência e uma única planta deixam observar isoladamente sobrepasso, oscilação e erro em regime permanente. Só depois use os mesmos três ganhos no seguidor de linha, em que a planta resiste e o erro vem de um sensor real — é aí que o ajuste deixa de ser simples.

O roteiro termina em um lugar que os nós anteriores não alcançam. Toda planta até esse ponto é estável: ignorada, ela permanece no lugar, portanto o ajuste busca melhorar algo que já funciona. Um robô autoequilibrador não é estável — se você o deixar sozinho, ele estará no chão em menos de um segundo. Essa única mudança transforma o bom ajuste em requisito, não melhoria, e impõe a ideia estrutural que encerra o roteiro: quando você não pode comandar aquilo que realmente importa, aninha duas malhas e deixa a externa mover o alvo da interna.

Antes de começar

Você já deve conseguir ler um sensor e acionar um motor na velocidade comandada — a trilha de controle de motores cobre as duas tarefas. Leve um robô ou um simulador em que você possa alterar um número e ver imediatamente o efeito.

O que você será capaz de fazer

  • Ajustar P, depois I e depois D em uma ordem deliberada, em vez de alterar três números ao mesmo tempo e torcer pelo resultado.
  • Ler uma curva de resposta e nomear o problema a partir de seu formato: sobrepasso, oscilação sustentada ou erro em regime permanente que nunca desaparece.
  • Reconhecer o windup integral quando o atuador satura e corrigi-lo limitando o acumulador, em vez de reduzir o ganho até esconder o sintoma.
  • Aninhar duas malhas de modo que um controlador externo mova a referência do controlador interno.

Onde as pessoas costumam travar

Ajustar os três ganhos ao mesmo tempo. Com três ganhos que interagem e uma única saída, alterar tudo de uma vez significa que o resultado não ensina nada. Aumente P até ele oscilar e reduza; só então adicione D; adicione I por último e somente se permanecer um deslocamento constante.

Derivar o erro. Quando a referência dá um salto, o erro dá um salto com ela, e sua derivada é brevemente enorme — o robô se move bruscamente sem motivo físico. Derive a medição. A matemática é quase idêntica e o salto desaparece.

Fornecer um sinal ruidoso a D. A diferenciação amplifica o ruído. Se o sensor oscilar, D transforma essa oscilação em comandos de motor. Filtre primeiro — por isso esta trilha começa pelo ruído dos sensores e não pelo controlador.

Supor que os ganhos se transfiram. Os ganhos são propriedades de uma planta específica. Baterias novas, um chassi mais pesado ou uma superfície diferente alteram a planta, e o ajuste perfeito de ontem não será perfeito hoje.

Uma taxa de execução da malha inconsistente. I e D dependem de quanto tempo passou. Se a malha roda sempre que termina, ambos os termos são calculados com base em uma informação falsa. Corrija o intervalo ou meça-o e passe ao cálculo o tempo real decorrido.

O que você precisa

Item Por que esta trilha precisa dele Observações
Uma planta que você possa excitar Algo que responda a um comando e se estabilize — um motor, um aquecedor, um robô Os simuladores substituem os três, se você não tiver nenhum
Uma forma de plotar Ajustar observando um robô é adivinhação; ajustar lendo uma curva não Monitor serial ou os laboratórios desta trilha
Um intervalo fixo para a malha I e D são calculados com base no tempo decorrido. Uma malha que roda quando termina calcula ambos com base em uma informação falsa O padrão millis()
Paciência para mudar um ganho por vez O método inteiro —

Você pode concluir todos os nós desta trilha no navegador. Os três laboratórios são controladores reais em plantas reais (simuladas), e o procedimento de ajuste se transfere diretamente ao equipamento — que é o propósito de fazê-lo aqui primeiro.

Por que a trilha segue esta ordem

A ordem foi escolhida para que cada etapa acrescente exatamente uma dificuldade nova.

A filtragem vem primeiro porque um controlador só é tão bom quanto sua entrada, e D pune você por omiti-la. A diferenciação amplifica o ruído: um sensor com variação de ±2 contagens, amostrado a cada 10 ms, produz uma estimativa da derivada que varia 200 contagens por segundo, e D converte isso diretamente em comandos de motor. Ajustar um controlador com um sinal sem filtro ensina a lição errada — que D é inútil.

A malha simples vem antes do robô porque isola o controlador. Uma referência, uma planta, três ganhos, sem geometria de direção, posicionamento de sensor ou patinação das rodas. Quando a resposta tem sobrepasso aqui, a causa são os ganhos, e não existe outra possibilidade.

O seguidor de linha vem em seguida porque acrescenta duas coisas ao mesmo tempo, ambas legítimas: o erro agora vem de um sensor real com campo de visão limitado, e a planta resiste — o próprio movimento do robô altera o erro mais rápido do que o controlador espera. É aqui que um ajuste que parecia concluído deixa de estar concluído.

O robô autoequilibrador vem por último, pois é o objetivo de toda a trilha. Toda planta antes dele é estável: ignorada, ela permanece no lugar, e o ajuste é uma otimização. Um pêndulo invertido não é estável — se você o deixar sozinho por um segundo, ele estará no chão. Essa única mudança transforma o bom ajuste de melhoria em requisito e impõe a ideia estrutural que encerra a trilha: quando você não pode comandar aquilo que importa, aninha duas malhas.

Pontos de verificação: como saber que uma etapa foi dominada

Etapa Verificação Como é um resultado aprovado
Filtragem Plote o sinal bruto e o filtrado nos mesmos eixos enquanto perturba o sensor Você pode indicar em milissegundos o atraso introduzido pelo filtro e dizer por que vale pagá-lo
Somente P Aumente P até a oscilação ficar constante, anote o valor e reduza-o à metade Você tem um número para o ganho crítico, e a resposta agora tem sobrepasso e se estabiliza
Adicione D Aumente D até o sobrepasso ser amortecido O sobrepasso diminui sem a resposta ficar lenta; D demais a torna irregular
Adicione I Somente se permanecer um deslocamento constante O deslocamento desaparece, e você limitou o acumulador antes de testar perto da saturação
Leia uma curva Observe três respostas e nomeie o problema de cada uma Você distingue sobrepasso, oscilação sustentada e erro em regime permanente apenas pelo formato
Windup Comande uma referência muito além do alcance do atuador e libere-a O sistema não ultrapassa ao ser liberado — se ultrapassar, falta a limitação
Taxa da malha Exiba o intervalo real durante um minuto Ele é fixo, ou você passa o tempo decorrido medido para o cálculo
Cascata Comande uma posição em uma planta de equilíbrio A malha interna roda várias vezes mais rápido que a externa, e você pode informar a razão

Onde esta trilha termina

O PID é uma ferramenta importante, mas não cobre todo o campo, e esta trilha deixa claro onde termina.

Ela para no controle com uma entrada e uma saída. Robôs reais frequentemente têm várias malhas acopladas que interferem entre si, e existe uma disciplina inteira para isso que o PID não aborda.

Não cobre controle de pré-ação, a maior melhoria prática que quase todas as malhas de robôs deixam de lado. O PID é reativo por construção — não pode atuar antes que exista um erro. Se você já sabe qual movimento está comandando, pode calcular antecipadamente a maior parte da saída necessária e deixar o PID corrigir apenas a diferença. O tutorial de perfis de movimento é a primeira metade dessa ideia.

Não cobre controle baseado em modelo — LQR, alocação de polos ou qualquer método que comece escrevendo as equações da planta. Esses métodos produzem melhores resultados quando você tem um modelo preciso, e a maioria dos robôs pequenos não tem.

Também não cobre escalonamento de ganhos, a resposta padrão ao fato de que os ganhos não se transferem: manter vários ajustes e alternar entre eles conforme a velocidade, a carga ou a tensão da bateria.

Roteiro de aprendizagem

O caminho

Siga os nós em ordem — cada um desbloqueia o próximo depois que você o conclui. Seu progresso fica salvo neste dispositivo.

0 / 7 concluídos

100%
Tutorial

Filtre e combine leituras ruidosas de sensores

Tutorial

Abrir tutorial
Objetivo

Ajuste um controlador estável

Habilidade desbloqueada

Dúvidas comuns

Perguntas frequentes

Em que ordem devo ajustar os ganhos PID?

P, depois D, depois I, e sempre apenas um por vez. Aumente o ganho proporcional até a resposta oscilar de forma constante e então reduza-o para cerca de metade desse valor — este é o ponto de partida clássico de Ziegler–Nichols e permite chegar perto rapidamente. Adicione o termo derivativo para amortecer o sobrepasso deixado por P. Adicione o termo integral por último, e somente se permanecer um deslocamento constante que P sozinho não elimina. Alterar os três ao mesmo tempo não ensina nada, porque, com três ganhos que interagem e uma única saída, você não consegue atribuir a mudança observada ao ganho que mudou.

Por que meu controlador PID oscila?

Geralmente o ganho proporcional está alto demais para o atraso da planta. Toda malha tem atraso — filtragem do sensor, inércia do motor e o próprio intervalo da malha; e P atua sobre um erro que já está desatualizado. Acima de certo ganho, a correção chega tarde o bastante para piorar o resultado, e a malha oscila. Reduza P e adicione D, que atua sobre a taxa de variação e, portanto, antecipa o movimento. Se a oscilação for rápida e irregular, em vez de suave, suspeite de ruído chegando a D: a diferenciação amplifica o ruído, e um sensor instável gera comandos de motor instáveis.

O que é windup integral e como corrijo?

O windup integral ocorre quando o atuador satura — os motores já estão na potência máxima; o erro deixa de diminuir, mas o termo integral continua acumulando-o. Quando a referência é alcançada, o termo integral contém um grande valor armazenado que precisa ser descarregado; assim, o sistema ultrapassa o alvo e demora muito para voltar. A solução é limitar o acumulador integral a uma faixa razoável ou interromper o acúmulo sempre que a saída saturar. O que você não deve fazer é reduzir o ganho integral até esconder o sintoma, pois isso troca o sobrepasso por um deslocamento constante que nunca desaparece.

Meus ganhos PID transferem para outro robô?

Não, e muitas vezes nem para o mesmo robô no dia seguinte. Os ganhos são propriedades da planta, não do algoritmo, e a planta inclui o estado de carga da bateria, a massa do chassi, a superfície e a temperatura da caixa de engrenagens. Um ajuste perfeito com baterias novas será lento com baterias fracas, porque o mesmo ciclo de trabalho agora produz menos torque. Por isso, esta trilha exige ajuste por procedimento, não por cópia de números — o procedimento se transfere, mesmo que os ganhos não se transfiram.

Por que derivar a medição em vez do erro?

Porque, quando a referência dá um salto, o erro dá um salto com ela, e a derivada de um degrau é brevemente enorme. O robô se move bruscamente por um motivo que não tem relação com a física — nada realmente mudou; você apenas pediu algo diferente. Derivar a medição fornece a mesma informação sobre a velocidade real de mudança do sistema, sem o salto causado pela referência. A mudança tem uma linha de código e quase sempre é a escolha certa.

O que é PID em cascata e quando preciso dele?

São duas malhas aninhadas, em que a saída da malha externa define a referência da interna. Você precisa delas sempre que não pode comandar diretamente aquilo que realmente importa. Em um robô autoequilibrador, você quer controlar a posição, mas os motores controlam o torque das rodas, e a única maneira de se mover é inclinar-se deliberadamente — uma malha interna mantém a inclinação no ângulo fornecido, e uma externa solicita a inclinação necessária para avançar. A malha interna deve ser várias vezes mais rápida que a externa; caso contrário, a externa persegue um alvo que a interna ainda não alcançou.