Ftc First Tech Challenge - FIRST Tech Challenge (FTC) — GeorgiaFIRST Robotics
FIRST Tech Challenge (FTC) — GeorgiaFIRST Robotics

O que é a FTC First Tech Challenge

A FTC é uma competição de robótica voltada para estudantes do ensino médio, organizada pela FIRST. O ano-base gira em torno de um game específico que muda todo ano. As equipes montam um robô controlado remotamente que precisa executar tarefas dentro de um campo definido. O formato permite desde projetos bem simples até sistemas robustos com visão computacional e autôonomia avançada. ftc first tech challenge tem uma particularidade que poucos mencionam nos materiais promocionais: a divisão entre programação manual (Driver Controlled) e autônoma (Auto). A pontuação depende da interação entre os dois modos, e muitas equipes gastam semanas polindo o código autônomo enquanto negligenciam a parte em que o piloto opera o robô durante o período de contato humano. Isso é um erro caro.

Por onde começar na FTC

Primeiro, baixe o software oficial do FTC Robot Controller e do FTC Robot Controller App. A FIRST disponibiliza tudo gratuitamente no site deles. Você precisa de um dispositivo Android para rodar o app do controlador e outro para o Driver Station. Qualquer celular ou tablet Android razoavelmente moderno funciona, desde que esteja atualizado. Depois de instalar, o importante é entender a estrutura do projeto. O código é escrito em Java. Os times usam o SDK oficial da FTC, que já vem com drivers para os principais sensores e atuadores: servo motores, motores DC, sensores de cor, giroscópios, ultrassom, encoders ópticos. A FIRST recomenda começar com o projeto de exemplo "RobotController" que já vem no SDK.

O tempo médio para configurar um projeto do zero e ver o robô se mover pela primeira vez varia entre 3 e 5 horas para uma equipe sem experiência prévia. Se já tiverem familiaridade com Java e programação orientada a objetos, cai para cerca de 1 hora. Eu recomendaria começar pelo exemplo "Pushbot" antes de tentar qualquer coisa personalizada.

Programação autônoma: o que realmente funciona

A fase autônoma dura 15 segundos na maioria dos games recentes. O robô executa o programa sozinho, sem interferência do piloto. A maioria das equipes tenta rodar uma sequência fixa de movimentos, o que funciona apenas em campos perfeitamente nivelados e com boa aderência dos pneus. Na prática, isso é raríssimo. O caminho mais confiável envolve controle de trajetória com retroalimentação. Use o giroscópio integrado ao motor hub para corrigir a direção durante o movimento. O SDK da FTC expõe o gyro through a classe BNO055IMU, que oferece dados de orientação em graus. Se você não está usando esses dados para correção em tempo real, está deixando pontos na mesa.

Uma coisa que poucos explicam direito: o problema do drift do motor. Motores DC da REV ou do kit de educação da FTC têm tolerância de fabricação que faz um lado girar ligeiramente mais rápido que o outro. Se seu robô vai em linha reta com os dois motores na mesma potência, isso é pura sorte. Um controle PID básico nos encoders dos motores corrige isso. Configurar um loop PID simples no Robot Controller não é difícil e resolve o problema de desvio longitudinal na maior parte dos casos. Aqui vai um exemplo prático que encontrei na prática: em uma competição regional, nosso robô tinha um viés de aproximadamente 8 graus por ciclo de movimento autônomo. O campo tinha linhas de tinta preta para navegação. Eu implementei um sensor de cor na frente, posicionado baixo o suficiente para ler a linha, e usei a leitura do sensor como feedback para um controlador proporcional simples. O resultado foi uma redução de 70% no erro de trajetória entre um início e o final do segmento autônomo. A configuração levou cerca de 40 minutos para ser testada e validada no campo.

Sensores úteis e armadilhas comuns

O sensor ultrassônico da FTC funciona bem para distâncias curtas, até cerca de 60 centímetros. Acima disso, a leitura fica instável porque o som perde energia no ar. Muita equipe tenta usar esse sensor para detectar obstáculos a mais de 1 metro e se decepciona. Para distâncias maiores, o sensor ótico de distância (como o REV Through Bore Sensor ou o sensor de cor usado no modo espectrômetro) é mais confiável. O sensor de cor é subutilizado. Além de detectar cores de objetos, ele pode ser configurado no modo "RGB" ou "Reflectance" para ler linhas pretas no campo. Se você posicionar o sensor de forma que a luz branca do LED incida perpendicularmente sobre o chão, a leitura de refletância varia drasticamente entre o fundo branco e a linha preta. Isso permite navegação por linha com precisão razoável.

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

Um problema recorrente com servos no FTC: a energia fornecida pela bateria de 7.4V via JST não é suficiente para mover servos sob carga significativa. Se você está usando um servo para levantar algo pesado e ele está trancando ou tremendo, o problema provavelmente é falta de corrente. A solução é alimentar os servos diretamente da bateria através de um shield de distribuição de energia, como o REV Power Distribution Hub, que já cuida disso sem precisar de configurações extras no código.

Estrutura de código recomendada

O SDK da FTC divide o código em duas classes principais: RobotController (que roda no robô) e OpMode (que define as ações do robô). Cada OpMode tem um ciclo de jogo (teleop) e uma fase autônoma. O recomendado é separar a lógica de movimento da lógica de game. Crie uma classe dedicada para controle de chassis, outra para cada braço ou mecanismo, e invoque essas classes dentro do OpMode. Isso evita que o arquivo principal fique com mais de 500 linhas e impossível de manter. Um erro frequente é escrever todo o código dentro do método `loop()` do OpMode sem nenhuma abstração. Quando chega a fase de debugging, você acaba passando horas tentando identificar se o problema está no sensor, no atuador ou na lógica de controle. Separar as preocupações desde o início economiza tempo que seria gasto refatorando o código na reta final da temporada.

Limitações e cenários onde a FTC falha

O SDK oficial da FTC tem limitações conhecidas. A latência entre o Driver Station e o Robot Controller pode variar de 50ms a 200ms dependendo da qualidade do WiFi. Em ambientes com muitos acess points e competidores próximos, essa latência sobe. Se seu robô depende de controle em tempo real preciso — como um braço que precisa seguir um objeto em movimento — a solução é implementar todo o controle no robô, não no Driver Station. O feedback deve vir do sensor no Robot Controller, nunca ser calculado no tablet do piloto. Outro problema prático: o sistema de arquivos do Android no app do Robot Controller é restrito. Você não consegue salvar logs extensos no dispositivo sem permissões especiais. Para debugging, a saída padrão (`System.out.println`) é redirecionada para o logcat, que pode ser acessado via adb ou diretamente pelo Android Studio. Mas se o dispositivo reiniciar ou o app for fechado por falta de memória, todos os logs são perdidos. Uma solução comum é persistir informações críticas em um arquivo CSV no armazenamento externo do dispositivo, usando caminhos como `/sdcard/FTC_Logs/`. Isso funciona, mas requer testes prévios porque alguns dispositivos mais novos restringem acesso ao armazenamento externo.

A FTC também não é ideal para equipes que querem integrar hardware não padrão. Sensores que não têm driver no SDK oficial exigem implementação manual de comunicação via I2C, SPI ou serial. Isso é perfeitamente viável, mas adiciona complexidade que vale a pena apenas se o projeto realmente precisar de funcionalidades que o kit padrão não oferece. Para a maioria das equipes, o kit oferecido pela FIRST é suficiente para competir em nível alto.

Temporada e calendário

A temporada da FTC começa no outono e vai até a primavera. As qualificações regionais acontecem entre setembro e novembro. As melhores equipes avançam para os campeonatos estaduais e, eventualmente, para o World Championship, que ocorre em maio nos Estados Unidos. Cada região tem seu próprio calendário, então verifique o site da FIRST para as datas específicas da sua área. O desenvolvimento do robô tipicamente leva entre 8 e 12 semanas para uma equipe com 2 a 3 programadores. A primeira metade é dedicada ao design mecânico, construção do chassis e teste dos sistemas básicos. A segunda metade foca em otimização do código, tunagem dos controladores PID e praticas de alinhamento com o campo. Se você começar depois de outubro, provavelmente terá que abrir mão de funcionalidades menos críticas para cumprir o prazo.

Recursos oficiais

O site da FTC oferece o SDK completo, documentação técnica e os códigos de exemplo que atualizam a cada game. O GitHub da FIRST também mantém repositórios com implementações de referência para controle de chassis, leitura de sensores e navegação autônoma. A comunidade Discord da FTC tem canais ativos onde equipes compartilham soluções para problemas específicos. Não subestime o valor dessas fontes quando estiver travado em um bug que não consegue resolver sozinho.