Olimpiada De Robotica - OBR – Olimpíada Brasileira de Robótica – Página oficial da Olimpíada ...
OBR – Olimpíada Brasileira de Robótica – Página oficial da Olimpíada ...

Como se preparar para uma competição de robótica sem perder o sono

A maioria dos times começa com a placa de controle errada e gasta dois meses resolvendo problemas que poderiam ter sido evitados na primeira semana. A olimpiada de robotica não é só sobre programar e soldar fios — é sobre decidir qual sensor comprar quando seu orçamento já está apertado e o prazo para o campeonato falta um mês. Aqui vai o que realmente funciona no dia da prova, baseado em tentativa e erro demais para contar.

olimpiada de robotica: o que esperar na prática

As competições mais comuns no Brasil são a RoboCup Junior, a OBR (Olimpiada Brasileira de Robótica) e a ABC (Aberto de Robótica do Ceará). Cada uma tem dinâmicas diferentes, mas todas compartilham um fio comum: o campo muda de ano pra ano e nada do que você construiu funciona exatamente como planejou no primeiro teste. Eu levei um time para a OBR em 2019 e o robô que foi construir perfeito no treino falhou na classificação porque o piso do ginásio era de vinil lisinho enquanto nosso campo laboratorial era de borracha texturizada. A diferença de atrito fazia o robô desviar meio metro para a esquerda em cada trajeto reto. Passamos duas horas antes da primeira prova colando fita isolante no chão do campo de competição para simular o atrito do nosso treino. O juiz não gostou muito, mas deixaram rolar porque não alterávamos nenhuma marcação oficial do campo.

O setup básico que todo time deveria começar com

Não adianta ter o robô mais bonito se ele não consegue ler o quê precisa fazer. Você vai precisar de pelo menos: Um microcontrolador. No nível iniciante, Arduino UNO ou ESP32 funcionam bem. Para categorias avançadas, Raspberry Pi ou Jetson Nano são mais comuns. A escolha depende da complexidade do sensor que você vai usar. Se o robô precisa processar imagem em tempo real, Arduino não vai dar conta.

Sensores de linha. O clássico sensor TCRT5000 custa cerca de dois reais cada um. Você vai precisar de pelo menos três para seguir linhas com razoável precisão. A calibração é o que separa um time que completa o trajeto de um que fica rodando em círculos. Sensores ultrasônicos ou infravermelhos para detecção de objetos e paredes. O HC-SR04 é barato mas tem um cone de leitura de uns 15 graus. Se o obstáculo estiver na borda do cone, a leitura fica imprecisa. Use dois sensores inclinados para cobrir melhor a área.

Motores com drivers. Simplicamente nunca ligue um motor direto no microcontrolador. O driver L298N funciona para motores pequenos, mas esquenta rápido. Para motores com corrente acima de 1A, vá de TB6612FNG. Consome menos e não precisa de dissipador.

A estratégia de programação que ninguém ensina no início

Escreva código modular desde o dia um. Eu vejo time errado usando variáveis globais para tudo e quando o robô tem um comportamento estranho que só acontece às sextas-feiras à tarde, levam três dias descobrindo que uma interrupção do sensor de linha estava sobrescrevendo o buffer do sensor ultrasônico por causa de conflito de pinos. Estruture seu código em funções separadas: leitura de sensores, tomada de decisão, ação dos motores. Cada função deve fazer uma coisa e apenas uma coisa. Se a função "lerSensores" precisa de mais de vinte linhas, você está fazendo errado.

Use PID para controle de velocidade e direção. Ajuste os ganhos Kp, Ki e Kd com o robô parado no chão e depois testando em movimento. Comece só com o Kp, aumente até o robô oscilar, depois adicione o Kd para estabilizar. O Ki geralmente não é necessário em robôs de competição porque o ciclo de controle é rápido o suficiente para ignorar o erro acumulado. Uma coisa que quase ninguém considera: a latência do seu loop principal. Se seu loop leva mais de 50 milissegundos para rodar, o robô já respondeu duas vezes ao que acontecera no campo enquanto você ainda estava processando a primeira resposta. Perfil suas funções de leitura de sensor. Se um sensor de linha leva 20ms e você tem cinco, isso é 100ms só nessa etapa.

👉 Clique no botão abaixo para saber mais sobre o assunto!

O erro mais caro que um time pode cometer

Construir o robô todo antes de testar qualquer subsystema separadamente. Eu vi times montarem a estrutura completa, soldarem todos os fios, e só na véspera da prova descobrirem que o sensor de linha não conseguia ler a faixa preta porque a tinta do campo refletia luz ambiente demais. Dois diasinteiros perdidos tentando resolver isso com hardware novo quando uma simples capa de papel preto colada em volta do sensor teria resolvido em dez minutos. Teste cada módulo individualmente antes de montar anything. Driver de motor sozinho. Sensores sozinhos. Comunicação serial sozinha. Só depois que cada parte funciona isoladamente, junte tudo.

Treinamento realista

Treine no mesmo tipo de superfície que a competição vai usar. Se o evento for em ginásio com piso de madeira, não treine em carpete. A diferença de atrito altera o tempo de reação dos motores e a precisão das curvas. Meça o atrito com uma pista de teste simples: marque dois pontos a um metro de distância e cronometre quantas voltas as rodas dão para percorrer essa distância com a mesma potência que você usará na prova. Simule pressão de tempo. Na competição, você tem no máximo trinta segundos para ajustar algo se o robô não funcionar na primeira tentativa. Treine com cronômetro. Se você não consegue fazer o robô sair do zero e completar o trajeto em menos de quatro minutos num treino tranquilo, na hora da prova com gente olhando vai levar o dobro.

O problema técnico específico que eu enfrentei

Numa competição estadual, meu robô usava PID para seguir a linha mas o ganho Kd estava causando oscilações só quando o robô ia em alta velocidade. O problema era que o termo derivativo amplifica ruído do sensor, e o sensor TCRT5000 tinha ruído suficiente pra gerar correções erráticas a cada mudança de iluminação do ginásio. A solução foi adicionar um filtro mediano de três amostras na leitura do sensor antes de passar pelo PID. Reduziu a sensibilidade a picos de ruído em 80% sem comprometer a velocidade de resposta. Os outros times que tinham o mesmo problema simplesmente reduziram a velocidade do robô, o que custava pontos na categoria de performance.

O que funciona quando tudo dá errado

Leve sempre um kit de reposição completo. Pilhas novas, fita isolante, fita crepe, um Arduino extra, cabos jumper, e pelo menos dois sensores de cada tipo. O que quebra na competição quase sempre é algo barato e simples que você poderia ter previsto. Tenha um modo manual de teste no código do robô. Um botao físico que, quando pressionado, desativa o modo autônomo e permite controlar os motores manualmente com um joystick ou botões. Isso economiza quinze minutos preciosos toda vez que o robô não responde ao comando de início automático — o que acontece mais frequentemente do que qualquer um quer admitir.

Documente cada versão do seu código. Salve o firmware de cada teste com a data e o que foi alterado. Quando o robô funciona perfeitamente numa quinta-feira e na sexta-feira algo quebra sem alteração visível, você vai querer saber exatamente o que mudou.

Recursos úteis

Para a OBR, as regras oficiais e o manual do participante estão disponíveis gratuitamente no site da Sociedade Brasileira de Computação. Baixe o manual do ano atual antes de qualquer coisa. As regras mudam sutilmente de ano pra ano e começar com o manual antigo é perda de tempo. O fórum do ClubeHardware e o subreddit r/digilentus have comunidades ativas onde perguntas técnicas específicas costumam receber respostas em poucas horas. Anotações de outros competidores sobre táticas de campo também aparecem lá frequentemente.

GitHub tem repositórios abertos com bibliotecas de PID e controle de motores para Arduino que economizam horas de desenvolvimento. A biblioteca PID_v1 de Brett Beauregard é a mais usada e está bem documentada. Não reinvente o_pid_loop_sempre.