Sfida AgBot 2019

Scuola Superiore East

Durante il mio periodo alla Scuola Superiore East a Denver, Colorado (2014-2018), sono stato molto coinvolto nelle attività extrascolastiche, con il più significativo rappresentato dal club di robotica, AngelBotics. Non mi unii fino al mio secondo anno, a causa di un iniziale focus sul calcio. Il club partecipava principalmente alla FIRST Robotics Competition (FRC), permettendomi di esplorare l’ingegneria meccanica ed elettrica, oltre alla programmazione. Attraverso AngelBotics, ho imparato a usare strumenti CAD, stampanti 3D e altre attrezzature di ingegneria, entrando in contatto con concetti STEM generalmente riservati agli studenti universitari. Inizialmente aspiravo a diventare un fisico quantistico; le mie esperienze in AP Physics e nel club di robotica mi hanno però mostrato che non ero così bravo in fisica e, di conseguenza, mi hanno allontanato dalla strada dell’ingegneria meccanica.

Invece, ho trovato la mia nicchia nella programmazione, che iniziò con me che scrivevo codice Python per il mio primo Raspberry Pi e si consolidò attraverso progetti in Java in AP Computer Science. Nonostante avessi difficoltà con gli esami, il mio insegnante, il Sig. Nagel, mi incoraggiò a perseguire lo sviluppo software, sottolineando il valore dei progetti rispetto ai punteggi dei test. Questo mi spinse a concentrarmi sull’informatica come laurea all’università, con il sogno di diventare un ingegnere del software e, infine, un fondatore nella mia carriera.

Anche se non ero così coinvolto in AngelBotics a causa del mio carico di lavoro e della ripida curva di apprendimento, il club ha comunque acceso una passione perenne per la robotica. Così, quando ho iniziato l’università, ero determinato a unirmi a un club di robotica universitario e un giorno a costruire un’azienda che risolvesse problemi del mondo reale con la robotica.

Scuola delle Miniere

Dopo il diploma alla Scuola Superiore East, ho iniziato la mia Laurea in Informatica alla Colorado School of Mines (2018-2022). Durante il mio primo semestre, ho dato un’occhiata ai club di robotica delle Mines e ho scoperto un nuovissimo gruppo di robotica chiamato AgBot.

AgBot era un nuovo club di robotica formato con l’obiettivo di costruire un robot per competere nella 2019 agBots Weed and Feed Competition. Questa competizione aveva due sfide principali:

  1. Identificazione ed eradicazione di parassiti e infestanti
  2. Creare nuovi metodi di raccolta tramite la robotica

Il nostro team scelse di concentrarsi sulla prima sfida. Era la prima volta che le Mines partecipavano alla competizione agBot, ed era la prima volta che un club di robotica delle Mines lavorava su qualcosa relativo all’agricoltura. Questo rese l’intera esperienza particolarmente nuova ed entusiasmante.

Sono stato immediatamente attratto dal progetto. La mia famiglia era stata contadina in Turchia per generazioni, fino alla generazione di mio padre. Quindi AgBot mi è sembrato vicino a casa, legando la mia passione per la robotica e la programmazione. L’idea di costruire un robot che potesse aiutare agricoltori come i miei nonni era davvero entusiasmante.

Sviluppo

Far parte del team AgBot è stata una delle esperienze universitarie più memorabili. È stato anche una delle cose più difficili su cui avessi lavorato fino a quel momento. Questo progetto fu la prima volta in cui mi immersi davvero in Python, Ubuntu e ROS. In FRC, tutto era in Java, quindi tutto questo era un territorio nuovo per me. Avevo usato Python e Ubuntu in passato, ma non avevo mai toccato ROS. Imparare come funzionava ROS è stata una salita ripida. All’epoca non sapevo nemmeno cosa fosse un ambiente Python.

Passai la maggior parte del tempo cercando di far sì che un Lidar inviassi dati utilizzabili a un nodo ROS che stavo scrivendo. Il mio compito era implementare un ROS Node chiamato end_detector che potesse rilevare quando il robot raggiungeva la fine di una fila di colture usando i dati del Lidar. Ora sembra semplice, ma allora sembrava enorme.

Ci vollero circa due settimane di debug per far comunicare il Lidar con il mio codice. L’intero codice era scritto in C++ o Python, principalmente Python. Quindi il mio lavoro era tutto in Python. Una volta che quello funzionò, iniziai a testare la logica usando pezzi casuali di piante che trovavo nel campus. Spostavo un supporto con il Lidar davanti a loro per vedere se il codice riuscisse a capire quando arrivavamo alla fine. Dopo molte ore e debugging, alla fine riuscii a far funzionare tutto almeno nel mio ambiente di test. Quando cercammo di combinare tutto insieme, fu un’altra storia.

Il mio tempo fu principalmente speso per far comunicare l’hardware e il software. La logica effettiva per rilevare la fine delle file venne dopo. Ma è stata una grande esperienza di apprendimento. Sono passato dal comprendere a malapena ROS allo scrivere e fare debug di nodi su una scheda Jetson con dati Lidar in tempo reale. È stato anche durante questo periodo che passai dal prediligere Java come linguaggio di programmazione al prediligere Python. E, al 2025, non ho ancora realmente utilizzato Java per nessuno dei miei progetti o basi di codice legate al lavoro.

Team e Stack Tecnologico

Abbiamo eseguito Ubuntu 16.04 con ROS Kinetic e Python 2.7 su una Nvidia Jetson TX2 che si interfacciava con un Hokuyo URG 04LX UG01 Lidar. Avevamo Arduino per ingressi da sensori come sonar a ultrasuoni. Il nostro codice gestiva percezione, navigazione, controllo e spruzzatura. Puoi vedere il repository qui: Repository GitHub. Il codice specifico che ho scritto si trova in end_detector.py. Ecco la lista della maggior parte dei componenti che componevano il robot:

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Hokuyo URG-04LX-UG01 Lidar
  • Arduino Uno & Mega
  • Motori DC, Encoder, Controller dei motori, Batteria, ecc.

Non avevamo un team enorme, ma alcuni nomi si distinguono:

Tyler era il leader e il fondatore del club. Lo rispettavo molto allora e lo rispetto ancora oggi. Zachary era il responsabile dello sviluppo software per il club e mi ha aiutato molto ad imparare lo sviluppo software e ROS, cosa di cui gli sono grato ancora oggi.

C’erano anche altri membri, come Kevin Barnard e Amit Rotem. Ma purtroppo non ricordo i nomi e i contatti di tutti i membri originali dato che sono passati oltre 5 anni da quando il club si è concluso.

La maggior parte dello sviluppo del robot avvenne durante i fine settimana e fino a tarda notte dopo che la maggior parte delle lezioni era terminata. Lavorare su una laurea in ingegneria e su AgBot era molto impegnativo, ma ce l’abbiamo fatta.

Il Viaggio e il Caos

Una parte di tutta questa esperienza che non dimenticherò mai è stato il viaggio in sé. La competizione si tenne a West Lafayette, Indiana, vicino al campus della Purdue University. E l’intera competizione avvenne subito dopo la settimana degli esami finali alle Mines, quindi non avevamo tempo per riprenderci da quella settimana infernale.

Guidammo da Golden, Colorado, fino all’Indiana usando il camion di Tyler per trasportare anche il robot e tutti i nostri attrezzi. La cosa divertente è che iniziammo il viaggio letteralmente un giorno prima della settimana della competizione. Impacchettammo tutto quello che avevamo, il robot, gli attrezzi, le batterie, i computer, tutto, e guidammo da Golden, Colorado, a West Lafayette, Indiana. Sulla carta sono 18 ore di viaggio. Ci vollero invece circa 20 o 22 ore con le pause per il carburante e il bagno.

Tyler guidò tutto il tempo, vivendo a base di bevande Monster Coffee. Un’altra compagna del team, mi scuso ma ho dimenticato il suo nome ma è nelle foto, prese il suo posto a volte. Lungo la strada, cominciò a piovere a dirotto. Dovemmo fermarci in una stazione di servizio chiusa a caso e prendere un telo per proteggere il robot. Era improvvisato, era caos, era robotica universitaria. In qualche modo, ce la facemmo.

Quando arrivammo, montammo il nostro gazebo sul campo e sistemammo tutti gli attrezzi. Io mi concentrai sul finire il codice e farlo girare. Per la maggior parte della competizione, lavorammo principalmente al debug del nostro robot e a farlo funzionare bene, controllando anche le costruzioni interessanti degli altri team.

Quindi abbiamo vinto?

No

Guardando indietro, eravamo solo un gruppo di ragazzi che cercava di costruire qualcosa ben oltre il nostro livello di esperienza. Gli altri team erano su un altro livello. Alcuni provenivano da startup. Alcuni da laboratori di ricerca. Alcuni avevano pieno supporto accademico. Eravamo un piccolo gruppo di studenti universitari che facevano nottate, sperando che Python trasformasse i dati del Lidar in qualcosa di utile.

Il nostro robot aveva dei difetti. Era arrangiato. E onestamente, funzionava a malapena quando arrivammo alla competizione. Molte persone del team cominciarono a mollare quando si resero conto che forse non avremmo finito in tempo. Alcuni non si presentarono nemmeno. Gli esami erano finiti, il robot non era pronto e il morale era piuttosto basso.

Ma alcuni di noi resistettero

Io non mi arresi… Tyler non si arrese… E le persone nella foto, non si arresero neanche loro!

Anche se non vincemmo né avemmo un robot completamente funzionante, non scambierei quell’esperienza con nulla. Ho imparato ROS, il debug dell’hardware, a costruire sistemi sotto pressione, e ho imparato cosa significhi la lealtà. Ho capito quanto sia importante portare le cose a termine.

Riflessione, al 2025

Dopo la stagione 2019, AgBot chiuse. Questo è stato principalmente dovuto all’arrivo del COVID quasi un anno dopo, che fece chiudere tutti i club alle Mines per 1-2 anni e, quando il mondo cominciò a tornare alla “normalità”, mi ero già laureato.

Ora è il 2025 e, guardando indietro ad AgBot, lo vedo come l’inizio di tutto per me. Mi ha dato la mia prima vera esperienza con la robotica e mi ha insegnato come collaborare con un team tecnico. Mi ha messo su un percorso che mi ha portato a opportunità straordinarie.

Da allora, ho lavorato come ingegnere backend presso eBay, distribuendo servizi che ingeriscono milioni di metriche attraverso data center. Ho fondato la mia prima startup, che si concentrava sulla costruzione di test di penetrazione per la cybersecurity automatizzati con AI. Ho lanciato Notify Cyber, che ha raggiunto decine di migliaia di visitatori. Ho scritto software per Docker, Kubernetes, Postgres e infrastrutture AI avanzate.

Ma AgBot rimane ancora una delle migliori esperienze della mia vita. È stato caotico, stressante e a volte sembrava impossibile, ma mi ha insegnato più di qualsiasi corso o tutorial. Ho imparato che anche se non hai il piano perfetto o finanziamenti sufficienti o l’hardware migliore, puoi comunque costruire qualcosa, imparare tantissimo e incontrare persone incredibili lungo la strada.

A tutti i membri del team AgBot 2019, grazie. A quel viaggio in auto del 2019, al telo che abbiamo preso in una stazione di servizio chiusa e alle notti insonni, grazie. Mi avete dato la determinazione per affrontare grandi progetti con fiducia, non importa quanto possano sembrare impossibili.

Galleria Fotografica

Team AgBot delle Mines, noi

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

Il nostro robot 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

Video/GIF

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

Campi della competizione

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

Altre squadre alle competizioni

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

Altre immagini varie

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