Seu robô segue a linha bem na reta, mas toda vez que a pista faz uma curva mais fechada ele balança de um lado pro outro antes de se estabilizar — ou, em casos piores, corrige tarde demais e sai da pista de vez. Se você já está com o controle proporcional funcionando e ainda sente esse comportamento, o problema não é o sensor, nem a velocidade. É que o proporcional sozinho não enxerga nem o passado nem o futuro: ele só reage ao agora. É aqui que entra o PID.
O que é controle PID
PID é a sigla de três termos que, somados, formam uma correção muito mais inteligente do que o proporcional puro: Proporcional, Integral e Derivativo. Cada termo olha o erro — a diferença entre onde o robô está e onde ele devia estar — de um jeito diferente: um olha o erro de agora, outro olha o acúmulo de erros passados, e o terceiro olha a velocidade com que o erro está mudando. A soma dos três dá uma correção que reage rápido, não fica com desvio permanente e não exagera na curva.
Por que ele importa tanto
Porque é o que separa um robô que “mais ou menos funciona” de um robô que corre estável em qualquer trecho da pista. E o PID não serve só pro seguidor de linha: é o mesmo princípio usado em robôs que se equilibram com o sensor giroscópico, em braços robóticos que precisam parar numa posição exata, e em praticamente qualquer sistema que precisa corrigir uma trajetória em tempo real. Entender PID no EV3 é entender um conceito que se repete em quase toda automação séria.
Como funciona de verdade
A fórmula completa é simples de enxergar: correção = Kp × erro + Ki × soma_dos_erros + Kd × (erro_atual − erro_anterior). Cada K é um ganho que você ajusta — é aí que está o trabalho fino.
O termo proporcional (P)
É o que já aparece no controle proporcional do seguidor de linha: corrige com força proporcional ao tamanho do erro. Sozinho, ele resolve a maior parte do problema, mas tem uma limitação que o P puro nunca resolve por conta própria.
O termo integral (I)
Esse termo soma todos os erros ao longo do tempo. Serve pra resolver um problema específico: quando o robô fica com um desvio pequeno e constante — por exemplo, sempre puxando levemente pra um lado por uma assimetria mecânica — o proporcional nunca corrige isso de verdade, porque quando o erro fica pequeno, a correção também fica pequena demais. O integral “lembra” desse erro acumulado e empurra a correção até o desvio zerar.
O termo derivativo (D)
Olha a velocidade da mudança do erro, não o erro em si. Se o erro está crescendo rápido — o robô entrou numa curva fechada de repente — o derivativo antecipa e aplica uma correção mais forte antes que o erro fique enorme. É o termo que reduz o exagero na curva, o famoso “passar e voltar”.
Dois exemplos com números reais
Exemplo 1 — o integral corrigindo o desvio constante
Um robô com só controle proporcional roda sempre 3 unidades de erro pra um lado nas retas, por causa de uma roda levemente mais rápida que a outra. Com Kp de 0,8, a correção fica em 0,8 × 3 = 2,4 — nunca suficiente pra zerar o desvio, porque assim que o erro cai, a correção cai também, e a assimetria empurra o erro de volta. Adicionando o integral: depois de meio segundo de loop a 100 ciclos por segundo, a soma dos erros chega a 150. Com Ki de 0,02, o termo integral soma 0,02 × 150 = 3 à correção — esse empurrão extra é o que finalmente zera o desvio constante.
Exemplo 2 — o derivativo reduzindo o exagero na curva
Numa curva fechada, o erro salta de 5 para 40 num único ciclo de leitura. O termo derivativo é Kd × (40 − 5) = Kd × 35. Com Kd de 0,15, isso soma 5,25 à correção proporcional de 0,8 × 40 = 32, totalizando 37,25. Essa resposta mais forte logo no instante da mudança brusca é o que impede o robô de passar do ponto e ter que voltar — ele já reage com força no momento certo, em vez de reagir devagar e exagerar depois.
Erros comuns que sabotam o PID
- Ki alto demais. O termo integral continua somando erro mesmo depois que o robô já corrigiu, e o resultado é uma oscilação lenta e larga — o famoso “integral windup”. Se isso aparecer, reduza o Ki ou limite o valor máximo da soma acumulada.
- Kd alto demais. O sensor sempre tem um pouco de ruído na leitura, e o termo derivativo amplifica esse ruído como se fosse uma mudança real, deixando o robô nervoso e trêmulo.
- Ajustar PID sem o proporcional estar bom primeiro. A ordem certa é sempre Kp, depois Kd, depois Ki por último. Tentar ajustar os três ao mesmo tempo é tentar acertar três alvos móveis de uma vez.
- Não resetar o acumulador integral entre execuções. Se o robô para e recomeça sem zerar a soma de erros, ele começa a corrida já com uma correção fantasma do teste anterior.
- Loop de programação lento ou irregular. O termo derivativo depende do tempo entre leituras ser constante. Se o programa tem blocos pesados dentro do loop, o cálculo do D fica impreciso.
Onde isso se conecta no resto
Se você ainda não tem o proporcional rodando bem, vale revisar o artigo sobre seguidor de linha no EV3 antes de avançar pro PID completo — é o pré-requisito direto. Esse ajuste fino faz parte do conjunto maior de programar o EV3, e depende diretamente de uma boa leitura nos sensores do EV3, já que todo o cálculo de erro vem de lá. PID também é o que separa quem vence e quem só participa no robô de sumô EV3, onde a precisão de movimento decide o combate. E quem quer ajustar os ganhos com mais controle do que os blocos permitem costuma migrar pra programar o EV3 com Python, onde dá pra calibrar com mais granularidade. Pra quem está chegando agora nesse universo, o panorama completo está no guia de robótica com LEGO EV3.
Perguntas frequentes
O que significam as letras P, I e D?
Proporcional, Integral e Derivativo — os três jeitos de calcular a correção a partir do erro: o erro de agora, o acúmulo de erros passados e a velocidade de mudança do erro.
Preciso usar os três termos sempre?
Não. Muita gente usa só PD (sem integral) ou só P em projetos simples. O I entra quando existe um desvio constante que o P não resolve; o D entra quando há exagero nas curvas.
Em que ordem ajusto os ganhos?
Primeiro o Kp, até o robô seguir razoavelmente bem. Depois o Kd, pra reduzir o exagero nas curvas. Por último, se ainda houver desvio constante, o Ki — em doses pequenas.
Por que meu robô ainda oscila depois de adicionar PID?
Quase sempre é Ki ou Kd alto demais. Reduza os dois e suba devagar, testando a cada ajuste.
Dá pra fazer PID só com os blocos do EV3, sem programar em Python?
Dá, sim. O ambiente de blocos padrão tem todos os blocos matemáticos necessários para montar a fórmula. Python entra quando você quer mais precisão no tempo de loop e nos cálculos.
PID serve só pra seguidor de linha?
Não. É o mesmo princípio usado em robôs com sensor giroscópico, em braços que precisam parar numa posição exata, e em qualquer sistema que corrija uma trajetória em tempo real.
Pra fechar
PID não é mágica, é três correções diferentes trabalhando junto — uma olhando o agora, uma olhando o acúmulo, uma olhando a tendência. Quem entende o papel de cada termo para de ajustar ganhos no escuro e começa a ajustar com intenção: sobe o Kd quando vê exagero na curva, sobe o Ki quando vê desvio constante. É esse entendimento que transforma um robô que “mais ou menos segue a linha” num robô que corre como se tivesse sido calibrado por um profissional — porque, a essa altura, foi.