Desafio AgBot 2019

Escola Secundária East

Durante meu tempo na Escola Secundária East em Denver, Colorado (2014-2018), estive fortemente envolvido em atividades extracurriculares, sendo a mais impactante o clube de robótica, AngelBotics. Não foi até meu segundo ano que me juntei, devido a um foco inicial no futebol. O clube participou principalmente da Competição de Robótica FIRST (FRC), permitindo-me explorar engenharia mecânica e elétrica, bem como programação. Através do AngelBotics, aprendi a usar ferramentas CAD, impressoras 3D e outros equipamentos de engenharia, ganhando exposição a conceitos de STEM geralmente reservados para estudantes universitários. Inicialmente aspirando a ser um Físico Quântico, minhas experiências em Física AP e robótica mostraram-me que eu não era tão bom em física e, por sua vez, me afastaram de um caminho de engenharia mecânica.

Em vez disso, encontrei meu nicho em programação, que começou com a escrita de código Python para meu primeiro Raspberry Pi e foi solidificado através de projetos em Java na AP Ciência da Computação. Apesar de ter dificuldades com exames, meu professor, Sr. Nagel, me incentivou a seguir o desenvolvimento de software, enfatizando o valor dos projetos em vez das notas de teste. Isso me levou a focar em ciência da computação como meu curso na faculdade, com o sonho de me tornar um engenheiro de software e eventualmente um fundador em minha carreira.

Embora eu não estivesse tão envolvido no AngelBotics devido à minha carga de trabalho exigente e à curva de aprendizado acentuada, isso ainda despertou uma paixão duradoura por robótica. Então, quando comecei a faculdade, estava determinado a me juntar a 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

Após me formar na Escola Secundária East, comecei meu Bacharelado em Ciência da Computação na Escola de Minas do Colorado (2018-2022). Durante meu primeiro semestre, conheci os clubes de robótica da Mines e descobri um novo grupo de robótica chamado AgBot.

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

  1. Identificação e Erradicação de Pragas e Plantas Daninhas
  2. Criação de Novos Métodos de Colheita Através da Robótica

Nossa equipe escolheu focar no primeiro desafio. Era a primeira vez que a Mines participava da 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 agricultora na Turquia por gerações, até a geração do meu pai. Então, o AgBot parecia próximo de casa, unindo 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 memoráveis. Também foi uma das coisas mais difíceis que trabalhei até aquele ponto. Este projeto foi a primeira vez que realmente mergulhei em Python, Ubuntu e ROS. No 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 mexido com 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ó ROS que eu estava escrevendo. Minha tarefa era implementar um Nó ROS chamado end_detector que pudesse detectar quando o robô chegasse ao final de uma fileira de culturas usando dados do Lidar. Parece simples agora, mas na época parecia enorme.

Levei cerca de duas semanas de depuração para fazer o Lidar se comunicar com meu código. Todo o código foi escrito em C++ ou Python, principalmente Python. Então, meu código era apenas Python para esse trabalho. Uma vez que isso funcionou, comecei a testar a lógica usando patches aleatórios de plantas que encontrei no campus. Eu rolava um suporte segurando o Lidar por eles e via se o código conseguia dizer quando chegávamos ao final. Depois de muitas horas e depurações, eventualmente consegui fazer tudo funcionar pelo menos em meu ambiente de teste. Era uma história diferente quando tentamos combinar tudo.

Meu tempo foi gasto principalmente fazendo o hardware e o software se comunicarem. A lógica real para detectar os finais das fileiras veio em segundo lugar. Mas foi uma ótima experiência de aprendizado. Eu passei de mal entender o ROS a escrever e depurar nós em uma placa Jetson com dados Lidar ao vivo. Também foi durante esse tempo que mudei de usar principalmente Java como minha linguagem de programação para, em vez disso, usar Python como padrão. E, até 2025, ainda não usei realmente Java para nenhum dos meus projetos ou bases de código relacionadas ao trabalho.

Equipe e Stack Tecnológico

Rodamos Ubuntu 16.04 com ROS Kinetic e Python 2.7 em um Nvidia Jetson TX2 que se conectava a um Hokuyo URG 04LX UG01 Lidar. Tínhamos Arduino(s) para entradas de sensores como medidores de distância ultrassônicos. Nosso código lidava com percepção, navegação, controle e pulverização. Você pode ver o repositório aqui: Repositório 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
  • Hokuyo URG-04LX-UG01 Lidar
  • Arduino Uno & Mega
  • Motores DC, Encoders, Controladores de Motor, Bateria, etc.

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

Tyler era o líder e fundador do clube. Eu o respeitava muito naquela época e ainda o respeito 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 se passaram mais de 5 anos desde que o clube foi encerrado.

A maior parte do desenvolvimento do robô aconteceu durante os finais de semana e até tarde da noite, depois que a maioria de nossas aulas terminava. Trabalhar em um curso de engenharia e no AgBot foi muito cansativo, mas conseguimos.

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 ocorreu logo após a semana de provas na Mines, então não tivemos tempo para nos recuperar daquela semana infernal.

Dirigimos de Golden, Colorado, até Indiana usando a caminhonete do Tyler para também transportar o robô e todas as nossas ferramentas. A parte engraçada é 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. Isso é uma viagem de 18 horas no papel. Levou-nos mais perto de 20 ou 22 horas com paradas para gasolina e banheiro.

Tyler dirigiu o tempo todo, vivendo de bebidas Coffee Monster. Outro colega de equipe, desculpe, esqueci o nome dela, mas ela está nas fotos, assumiu o volante às vezes. Ao longo do caminho, começou a chover muito. Tivemos que parar em um posto de gasolina fechado aleatório e pegar uma lona para proteger o robô. Foi improvisado, foi caótico, foi robótica universitária. De alguma forma, conseguimos chegar.

Quando chegamos, montamos nosso toldo no campo e organizamos todas as nossas ferramentas. Eu me concentrei em terminar o código e fazê-lo funcionar. Durante a maior parte da competição, trabalhamos principalmente na depuração do nosso robô e em fazê-lo funcionar bem, além de conferir as construções legais de robôs de outras equipes.

Então, Nós Vencemos?

Não

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

Nosso robô era falho. Era improvisado. E, honestamente, mal funcionou quando chegamos à competição. Muitas pessoas da equipe começaram a desistir quando perceberam que poderíamos não terminar a tempo. Alguns nem apareceram. As provas tinham terminado, o robô não estava pronto e a moral estava bem baixa.

Mas alguns de nós persistiram

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

Mesmo que não tenhamos vencido ou mesmo tido 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

Após a temporada de 2019, o AgBot fechou as portas. Isso se deveu principalmente ao COVID que começou quase um ano depois, fazendo com que todos os clubes na Mines fechassem por 1-2 anos e, quando o mundo começou a voltar ao “normal”, eu me formei.

Agora é 2025, e olhando para trás no AgBot, vejo isso 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. Ele me colocou em um caminho que me levou a oportunidades incríveis.

Desde então, trabalhei como engenheiro de backend no eBay, implantando serviços que processam milhões de métricas em data centers. Fundou minha primeira startup que se concentrou em construir testes de penetração em cibersegurança automatizados por IA. Lançou Notify Cyber, que alcançou dezenas de milhares de visitantes. Eu 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 poderia. Aprendi que mesmo que você não tenha o plano perfeito ou financiamento suficiente ou o melhor hardware, ainda pode construir algo, aprender muito e conhecer pessoas incríveis ao longo do caminho.

A todos do time do AgBot de 2019, obrigado. Para aquela viagem de carro de 2019, a lona que pegamos em um posto de gasolina fechado e as noites sem dormir, obrigado. Você me deu a determinação para perseguir grandes projetos com confiança, não importa quão impossíveis 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

IMG_6724.gif NEHE1091.gif demo.gif random_demo.gif
rogo_hardware.gif

Campos da Competição

IMG_8848.jpeg IMG_8849.jpeg IMG_8850.jpeg IMG_8851.jpeg
IMG_9042.jpeg IMG_9666.jpeg IMG_9668.png 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