Desafio AgBot de 2019

Escola Secundária East

Durante meu tempo na East High School em Denver, Colorado (2014-2018), eu participei intensamente de atividades extracurriculares, sendo a mais impactante o clube de robótica, AngelBotics. Só no meu segundo ano eu entrei, devido a um foco inicial no futebol. O clube participava principalmente da FIRST Robotics Competition (FRC), permitindo-me explorar engenharia mecânica e elétrica, bem como programação. Por meio da AngelBotics, aprendi a usar ferramentas de CAD, impressoras 3D e outros equipamentos de engenharia, tendo contato com conceitos de STEM geralmente reservados para estudantes universitários. Inicialmente aspirando a ser Físico Quântico, minhas experiências em Física AP e robótica me mostraram que eu não era tão bom em física e, por sua vez, me afastaram de uma trajetória em engenharia mecânica.

Em vez disso, encontrei meu nicho na programação, que começou comigo escrevendo código Python para meu primeiro Raspberry Pi e se consolidou por meio de projetos em Java em AP Computer Science. Apesar de ter dificuldades com provas, meu professor, Sr. Nagel, me incentivou a seguir desenvolvimento de software, enfatizando o valor dos projetos em vez das notas de testes. Isso me levou a focar em ciência da computação como meu curso na faculdade, com o sonho de me tornar engenheiro de software e, eventualmente, fundador em minha carreira.

Embora eu não tenha sido tão envolvido na AngelBotics devido à minha carga pesada de disciplinas e à curva de aprendizado íngreme, ela ainda assim despertou uma paixão duradoura por robótica. Então, quando comecei a faculdade, eu estava determinado a entrar em um clube de robótica universitário e, um dia, construir uma empresa que resolvesse problemas do mundo real com robótica.

Escola de Minas

Depois de me formar na East High School, comecei meu bacharelado em Ciência da Computação na Colorado School of Mines (2018-2022). Durante meu primeiro semestre, procurei os clubes de robótica da Mines e descobri um grupo de robótica novinho em folha chamado AgBot.

AgBot era um novo clube de robótica formado com o objetivo de construir um robô para competir na competição agBots Weed and Feed de 2019. Essa competição tinha dois desafios principais:

  1. Identificação e erradicação de pragas e ervas daninhas
  2. Criação de novos métodos de colheita por meio da robótica

Nossa equipe escolheu focar no primeiro desafio. Era a primeira vez da Mines entrando na competição agBot, e era a primeira vez que um clube de robótica da Mines trabalhava em algo relacionado à agricultura. Isso fez com que tudo parecesse novo.

Fui imediatamente atraído pelo projeto. Minha família foi de agricultores na Turquia por gerações, até a geração do meu pai. Então o AgBot pareceu algo próximo de casa, ao mesmo tempo que unia minha paixão por robótica e programação. A ideia de construir um robô que pudesse ajudar agricultores como meus avós era realmente empolgante.

Desenvolvimento

Fazer parte da equipe AgBot é uma das minhas experiências universitárias mais marcantes. Também foi uma das coisas mais difíceis em que trabalhei até aquele ponto. Este projeto foi a primeira vez que realmente mergulhei em Python, Ubuntu e ROS. Na FRC, tudo era em Java, então este era um território totalmente novo para mim. Eu já tinha usado Python e Ubuntu no passado, mas nunca tinha tocado em ROS. Aprender como o ROS funcionava foi uma batalha difícil. Eu nem sabia o que era um ambiente Python naquela época.

Passei a maior parte do meu tempo tentando fazer um Lidar enviar dados utilizáveis para um nó do ROS que eu estava escrevendo. Minha tarefa era implementar um nó ROS chamado end_detector que pudesse detectar quando o robô chegava ao fim de uma fileira de cultivo usando dados de Lidar. Agora isso parece simples, mas naquela época parecia enorme.

Levei cerca de duas semanas de depuração para fazer o Lidar conversar com meu código. Todo o código foi escrito em C++ ou Python, principalmente Python. Então, meu código para essa tarefa era apenas Python. Quando isso funcionou, comecei a testar a lógica usando manchas aleatórias de plantas que encontrei no campus. Eu empurrava o suporte que segurava o Lidar por elas e via se o código conseguia dizer quando chegávamos ao fim. Depois de muitas horas e depuração, eventualmente consegui fazer tudo funcionar pelo menos no meu ambiente de teste. A história foi diferente quando tentamos juntar tudo.

Meu tempo foi gasto principalmente fazendo o hardware e o software conversarem entre si. A lógica real para detectar o fim das fileiras veio em segundo plano. Mas foi uma ótima experiência de aprendizado. Eu passei de mal entender ROS para escrever e depurar nós em uma placa Jetson com dados de Lidar ao vivo. Foi também nessa época que deixei de usar principalmente Java como minha linguagem de programação para passar a usar Python por padrão. E, até 2025, ainda não usei realmente Java em nenhum dos meus projetos ou bases de código relacionadas ao trabalho.

Equipe e Pilha Tecnológica

Executávamos Ubuntu 16.04 com ROS Kinetic e Python 2.7 em um Nvidia Jetson TX2 que se comunicava com um Lidar Hokuyo URG 04LX UG01. Tínhamos Arduino(s) para entradas de sensores como sensores ultrassônicos de distância. Nosso código lidava com percepção, navegação, controle e pulverização. Você pode ver o repositório aqui: Repositório no GitHub. O código específico que escrevi pode ser encontrado em end_detector.py. Aqui está a lista da maioria dos componentes que compunham o robô:

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Lidar Hokuyo URG-04LX-UG01
  • Arduino Uno & Mega
  • Motores DC, encoders, controladores de motor, bateria, etc.

Não tínhamos uma equipe enorme, mas alguns nomes se destacam:

Tyler era o líder e fundador do clube. Eu o respeitava muito naquela época e respeito até hoje. Zachary era o líder do desenvolvimento de software do clube e me ajudou a aprender muito sobre desenvolvimento de software e ROS, pelo que sou grato até hoje.

Havia outros membros também, como Kevin Barnard e Amit Rotem. Mas, infelizmente, não me lembro dos nomes e contatos de todos os membros originais, já que faz mais de 5 anos desde que o clube encerrou suas atividades.

A maior parte do desenvolvimento do robô acontecia nos fins de semana e até tarde da noite, depois que a maioria das nossas aulas terminava. Trabalhar em um curso de engenharia e no AgBot foi muito desgastante, mas persistimos.

A Viagem e o Caos

Uma parte de toda essa experiência que nunca esquecerei foi a própria viagem. A competição foi realizada em West Lafayette, Indiana, perto do campus da Universidade Purdue. E toda a competição aconteceu logo depois que a semana de provas finais terminou na Mines, então não tivemos tempo para nos recuperar daquela semana infernal.

Fomos de Golden, Colorado até Indiana usando a caminhonete do Tyler para também transportar o robô e todas as nossas ferramentas. A coisa engraçada, porém, é que começamos a viagem literalmente um dia antes da semana da competição. Empacotamos tudo o que tínhamos, o robô, as ferramentas, as baterias, os computadores, tudo, e dirigimos de Golden, Colorado até West Lafayette, Indiana. No papel, isso é uma viagem de 18 horas. Para nós, levou mais perto de 20 ou 22 horas, com paradas para gasolina e banheiro.

Tyler dirigiu o tempo todo, sobrevivendo com bebidas Coffee Monster. Outra colega de equipe, desculpe, esqueci o nome dela, mas ela aparece nas fotos, assumiu a direção em alguns momentos. Pelo caminho, começou a chover forte. Tivemos que parar em um posto de gasolina aleatório e fechado e pegar uma lona para proteger o robô. Foi improvisado, foi caótico, foi robótica universitária. De alguma forma, chegamos lá.

Quando chegamos, montamos nossa cobertura no campo e organizamos todas as nossas ferramentas. Eu me concentrei em terminar o código e fazê-lo rodar. Durante a maior parte da competição, trabalhamos principalmente em depurar nosso robô e fazê-lo funcionar bem, além de conferir os builds de robôs incríveis das outras equipes.

Então Nós Ganhamos?

Não

Olhando para trás, éramos apenas um bando de jovens tentando construir algo muito além do nosso nível de experiência. As outras equipes estavam em um nível totalmente diferente. Algumas vinham de startups. Algumas vinham de laboratórios de pesquisa. Algumas tinham apoio acadêmico completo. Éramos um pequeno grupo de graduandos virando noites, esperando que Python transformasse dados de Lidar em algo útil.

Nosso robô tinha falhas. Era improvisado. E, sinceramente, mal funcionava quando chegamos à competição. Muitas pessoas da equipe começaram a desistir quando perceberam que talvez não terminássemos a tempo. Algumas nem apareceram. As provas finais tinham acabado, o robô não estava pronto e o moral estava bem baixo.

Mas alguns de nós insistimos

Eu não desisti… Tyler não desistiu… E as pessoas na foto também não desistiram!

Mesmo sem termos vencido ou sequer um robô totalmente funcional, eu não trocaria essa experiência por nada. Aprendi sobre ROS, depuração de hardware, construção de sistemas sob pressão, e aprendi sobre lealdade. Percebi como é importante levar as coisas até o fim.

Reflexão, Em 2025

Depois da temporada de 2019, o AgBot fechou as portas. Isso se deveu principalmente ao início da COVID cerca de 1 ano depois, fazendo com que todos os clubes da Mines fechassem por 1 a 2 anos e, quando o mundo começou a voltar ao “normal”, eu me formei.

Agora é 2025, e olhando para trás para o AgBot, vejo-o como o começo de tudo para mim. Ele me deu minha primeira experiência real com robótica e me ensinou como colaborar com uma equipe técnica. Colocou-me em um caminho que me levou a oportunidades incríveis.

Desde então, trabalhei como engenheiro de backend na eBay, implantando serviços que ingerem milhões de métricas entre centros de dados. Fundiei minha primeira startup, que se concentrava em construir testes automatizados de penetração de cibersegurança com IA. Lancei Notify Cyber, que alcançou dezenas de milhares de visitantes. Escrevi software para Docker, Kubernetes, Postgres e infraestrutura avançada de IA.

Mas o AgBot ainda se destaca como uma das melhores experiências da minha vida. Foi caótico, estressante e, às vezes, parecia impossível, mas me ensinou mais do que qualquer aula ou tutorial jamais poderia ensinar. Aprendi que, mesmo que você não tenha o plano perfeito, ou financiamento suficiente, ou o melhor hardware, ainda assim pode construir algo, aprender muito e conhecer pessoas incríveis ao longo do caminho.

A todos da equipe do AgBot de 2019, obrigado. A essa viagem de estrada de 2019, à lona que pegamos em um posto de gasolina fechado e às noites sem dormir, obrigado. Vocês me deram a fibra para perseguir grandes projetos com confiança, não importa o quão impossíveis eles pareçam.

Galeria de Fotos

Equipe do AgBot da Mines, Nós

GetStoredImage-1.jpeg GetStoredImage.jpeg IMG_9005.jpeg IMG_9006.jpeg
IMG_9663.jpeg IMG_9684.jpeg IMG_9685.jpeg IMG_9686.jpeg
IMG_9687.jpeg IMG_9688.jpeg IMG_9691.jpeg

Nosso Robô AgBot

IMG_8854.jpeg IMG_8855.jpeg IMG_8856.jpeg IMG_8867.jpeg
IMG_8976.jpeg IMG_8977.jpeg IMG_9007.jpeg IMG_9008.jpeg
IMG_9037.jpeg IMG_9038.jpeg IMG_9039.jpeg IMG_9040.jpeg
IMG_9695.jpeg r1.jpeg r3.jpeg r5.jpeg
r6.jpeg r7.jpeg r9.jpeg

Vídeos/GIFs

Campos da Competição

IMG_8848.jpeg IMG_8849.jpeg IMG_8850.jpeg IMG_8851.jpeg
IMG_9042.jpeg IMG_9666.jpeg IMG_9668.jpg land.jpeg

Outras Equipes nas Competições

IMG_8827.jpeg IMG_8828.jpeg IMG_8857.jpeg IMG_8858.jpeg
IMG_8880.jpeg IMG_9651.jpeg IMG_9669.jpeg IMG_9671.jpeg
IMG_9672.jpeg IMG_9673.jpeg IMG_9674.jpeg IMG_9675.jpeg
IMG_9677.jpeg IMG_9678.jpeg IMG_9679.jpeg IMG_9696.jpeg
IMG_9697.jpeg gpage_2019.jpeg robot.jpeg

FRC 1339 (2014-2017)

IMG_9629.jpeg IMG_9630.jpeg

Outras Imagens Aleatórias

IMG_8825.jpeg IMG_8826.jpeg IMG_8852.jpeg IMG_8853.jpeg
IMG_8980.jpeg IMG_8981.jpeg IMG_9002.jpeg IMG_9003.jpeg
IMG_9043.jpeg mines_logo.png