Sfida AgBot 2019

Liceo East High School

Durante il mio periodo alla East High School di Denver, Colorado (2014-2018), sono stato molto coinvolto nelle attività extrascolastiche, e la più importante è stata il club di robotica, AngelBotics. È stato solo al secondo anno che mi sono unito, 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 ingegneristiche, entrando in contatto con concetti STEM generalmente riservati agli studenti universitari. Inizialmente aspiravo a diventare un fisico quantistico, ma le mie esperienze in AP Physics e nella robotica mi hanno mostrato che non ero così bravo in fisica e, di conseguenza, mi hanno allontanato da un percorso in ingegneria meccanica.

Invece, ho trovato la mia nicchia nella programmazione, che è iniziata scrivendo codice Python per il mio primo Raspberry Pi ed è stata consolidata tramite progetti in Java nell’AP Computer Science. Nonostante avessi difficoltà con gli esami, il mio insegnante, il signor Nagel, mi ha incoraggiato a perseguire lo sviluppo software, sottolineando il valore dei progetti più dei voti nei test. Questo mi ha spinto a concentrarmi sull’informatica come laurea universitaria, con il sogno di diventare ingegnere del software e, in futuro, fondatore come carriera.

Anche se non ero molto coinvolto in AngelBotics a causa del mio carico di studio impegnativo e della ripida curva di apprendimento, esso ha comunque acceso una passione per la robotica che mi accompagna per tutta la vita. Così, quando ho iniziato l’università, ero determinato a entrare in un club di robotica universitario e, un giorno, costruire un’azienda che risolvesse problemi del mondo reale con la robotica.

School of Mines

Dopo essermi diplomato alla East High School, ho iniziato il mio Bachelor in Informatica presso la Colorado School of Mines (2018-2022). Durante il mio primissimo 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 ed erbacce
  2. Creazione di nuovi metodi di raccolta tramite robotica

Il nostro team ha scelto 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 di legato all’agricoltura. Questo rendeva l’intera esperienza fresca e nuova.

Sono stato immediatamente attratto dal progetto. La mia famiglia è stata composta da agricoltori in Turchia per generazioni, fino alla generazione di mio padre. Quindi AgBot mi sembrava vicino a casa, oltre a unire 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 è una delle esperienze universitarie più memorabili che abbia mai vissuto. È stata anche una delle cose più difficili su cui abbia lavorato fino a quel momento. Questo progetto è stata la prima volta in cui mi sono davvero immerso in Python, Ubuntu e ROS. Nell’FRC, tutto era in Java, quindi per me era territorio completamente nuovo. In passato avevo usato Python e Ubuntu, ma non avevo mai toccato ROS. Imparare come funzionava ROS è stata una battaglia in salita. All’epoca non sapevo nemmeno cosa fosse un ambiente Python.

Ho trascorso la maggior parte del mio tempo cercando di fare in modo che un Lidar inviasse dati utilizzabili a un nodo ROS che stavo scrivendo. Il mio compito era implementare un nodo ROS 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.

Mi ci sono volute circa due settimane di debug per far comunicare il Lidar con il mio codice. L’intero codice era scritto in C++ o in Python, principalmente Python. Quindi, per questo lavoro, il mio codice era solo Python. Una volta che quello ha funzionato, ho iniziato a testare la logica usando delle macchie casuali di piante che trovavo nel campus. Facevo passare il supporto che reggeva il Lidar davanti a loro e vedevo se il codice riusciva a capire quando arrivavamo alla fine. Dopo molte ore e molto debug, alla fine sono riuscito a far funzionare tutto almeno nel mio ambiente di test. Quando abbiamo provato a mettere tutto insieme, però, la storia è stata diversa.

Il mio tempo è stato speso soprattutto nel far comunicare tra loro hardware e software. La logica effettiva per rilevare la fine delle file veniva dopo. Ma è stata una grande esperienza di apprendimento. Sono passato dal comprendere a malapena ROS allo scrivere e debuggare nodi su una scheda Jetson con dati Lidar in tempo reale. È stato anche in quel periodo che sono passato dal usare principalmente Java come linguaggio di programmazione al preferire invece Python. E, nel 2025, non ho ancora davvero utilizzato Java per nessuno dei miei progetti o per basi di codice legate al lavoro.

Team e stack tecnologico

Utilizzavamo Ubuntu 16.04 con ROS Kinetic e Python 2.7 su un Nvidia Jetson TX2 che interfacciava un Lidar Hokuyo URG 04LX UG01. Avevamo Arduino per gli input dei sensori, come i misuratori di distanza a ultrasuoni. Il nostro codice gestiva percezione, navigazione, controllo e irrorazione. Puoi vedere il repository qui: GitHub Repo. Il codice specifico che ho scritto si trova in end_detector.py. Ecco l’elenco della maggior parte dei componenti che componevano il robot:

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Lidar Hokuyo URG-04LX-UG01
  • Arduino Uno e Mega
  • Motori DC, encoder, controllori motore, batteria, ecc.

Non avevamo un team enorme, ma alcuni nomi spiccano:

Tyler era il leader e fondatore del club. Lo rispettavo molto allora e lo rispetto ancora oggi. Zachary era il responsabile dello sviluppo software del club e mi ha aiutato a imparare molto sullo sviluppo software e su ROS, per 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 ha concluso le attività.

Gran parte dello sviluppo del robot avveniva durante i fine settimana e fino a tarda notte, dopo che la maggior parte delle lezioni era finita. Lavorare a una laurea in ingegneria e ad AgBot era molto impegnativo, ma abbiamo resistito e siamo andati avanti.

Il viaggio e il caos

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

Siamo andati in auto da Golden, Colorado, fino all’Indiana usando il camion di Tyler per trasportare anche il robot e tutti i nostri strumenti. La cosa divertente, però, è che abbiamo iniziato il viaggio letteralmente un giorno prima della settimana della competizione. Abbiamo caricato tutto quello che avevamo, il robot, gli strumenti, le batterie, i computer, tutto, e siamo partiti da Golden, Colorado, verso West Lafayette, Indiana. Sulla carta è un viaggio di 18 ore. A noi sono servite più vicino alle 20 o 22 ore, con le soste per benzina e bagno.

Tyler ha guidato per tutto il tempo, vivendo di bevande Coffee Monster. Un altro compagno di squadra, mi dispiace di aver dimenticato il suo nome ma è nelle foto, a volte prendeva il suo posto alla guida. Lungo il tragitto ha iniziato a piovere a dirotto. Abbiamo dovuto fermarci in una stazione di servizio chiusa a caso e prendere un telone per proteggere il robot. Era arrangiato alla buona, era caos, era robotica universitaria. In qualche modo, ce l’abbiamo fatta.

Quando siamo arrivati, abbiamo montato il nostro tendone sul campo e sistemato tutti i nostri strumenti. Io mi sono concentrato nel completare il codice e farlo funzionare. Per la maggior parte della competizione, abbiamo principalmente lavorato sul debug del nostro robot e sul farlo funzionare bene, dando anche un’occhiata alle fantastiche costruzioni robotiche degli altri team.

Quindi abbiamo vinto?

No

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

Il nostro robot aveva dei difetti. Era arrangiato alla buona. E, onestamente, a malapena funzionava quando siamo arrivati alla competizione. Molte persone del team hanno iniziato ad abbandonare quando si sono rese conto che forse non avremmo finito in tempo. Alcuni non si sono nemmeno presentati. Gli esami erano finiti, il robot non era pronto e il morale era piuttosto basso.

Ma alcuni di noi sono rimasti fino alla fine

Io non ho mollato… Tyler non ha mollato… E nemmeno le persone nella foto hanno mollato!

Anche se non abbiamo vinto e nemmeno avuto un robot pienamente funzionante, non cambierei quell’esperienza con nulla. Ho imparato ROS, il debug dell’hardware, come costruire sistemi sotto pressione, e ho imparato cosa significa la lealtà. Ho capito quanto sia importante portare le cose a termine.

Riflessione, al 2025

Dopo la stagione 2019, AgBot ha chiuso i battenti. Questo è stato principalmente dovuto all’arrivo del COVID quasi un anno dopo, che ha causato la chiusura di tutti i club delle Mines per 1-2 anni e, quando il mondo ha iniziato a tornare alla “normalità”, io mi sono laureato.

È ora il 2025, e guardando indietro ad AgBot, lo considero 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à incredibili.

Da allora, ho lavorato come backend engineer presso eBay, distribuendo servizi che acquisiscono milioni di metriche attraverso i data center. Ho fondato la mia prima startup, incentrata sulla costruzione di penetration testing automatizzato di cybersecurity con IA. Ho lanciato Notify Cyber, che ha raggiunto decine di migliaia di visitatori. Ho scritto software per Docker, Kubernetes, Postgres e infrastrutture avanzate di IA.

Ma AgBot si distingue ancora come una delle migliori esperienze della mia vita. È stato caotico, stressante e a volte sembrava impossibile, ma mi ha insegnato più di quanto qualsiasi classe o tutorial avrebbe mai potuto fare. Ho imparato che anche se non hai il piano perfetto o abbastanza finanziamenti o il miglior hardware, puoi comunque costruire qualcosa, imparare tantissimo e incontrare persone incredibili lungo il cammino.

A tutti del team AgBot del 2019, grazie. A quel viaggio su strada del 2019, al telo che abbiamo preso in una stazione di servizio chiusa e alle notti insonni, grazie. Mi avete dato la tenacia per perseguire grandi progetti con fiducia, non importa quanto impossibili sembrino.

Galleria fotografica

Il team AgBot della mia università, 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

Campi della competizione

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

Altri team 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 casuali

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