Défi AgBot 2019

Lycée East

Pendant mon temps au Lycée East à Denver, Colorado (2014-2018), j’étais fortement impliqué dans des activités parascolaires, la plus marquante étant le club de robotique, AngelBotics. Ce n’est qu’à ma deuxième année que j’ai rejoint, en raison d’un intérêt initial pour le football. Le club participait principalement à la Compétition de Robotique FIRST (FRC), me permettant d’explorer l’ingénierie mécanique et électrique, ainsi que la programmation. Grâce à AngelBotics, j’ai appris à utiliser des outils CAO, des imprimantes 3D et d’autres équipements d’ingénierie, acquérant une exposition à des concepts STEM généralement réservés aux étudiants universitaires. Aspirant initialement à devenir physicien quantique, mes expériences en physique AP et en robotique m’ont montré que je n’étais pas si bon en physique et m’ont donc éloigné d’un chemin en ingénierie mécanique.

Au lieu de cela, j’ai trouvé ma niche dans la programmation, qui a commencé avec moi écrivant du code Python pour mon premier Raspberry Pi et a été solidifiée à travers des projets Java en AP Informatique. Malgré des difficultés avec les examens, mon professeur, M. Nagel, m’a encouragé à poursuivre le développement logiciel, soulignant la valeur des projets par rapport aux notes d’examen. Cela m’a poussé à me concentrer sur l’informatique comme ma spécialité à l’université avec le rêve de devenir ingénieur logiciel et finalement fondateur pour ma carrière.

Bien que je n’étais pas très impliqué dans AngelBotics en raison de ma charge de cours exigeante et de la courbe d’apprentissage abrupte, cela a tout de même suscité une passion pour la robotique qui durera toute ma vie. Donc, quand j’ai commencé l’université, j’étais déterminé à rejoindre un club de robotique universitaire et un jour créer une entreprise qui résout des problèmes du monde réel avec la robotique.

École des Mines

Après avoir obtenu mon diplôme du Lycée East, j’ai commencé ma licence en informatique à l’École des Mines du Colorado (2018-2022). Pendant mon tout premier semestre, j’ai découvert les clubs de robotique de Mines et j’ai découvert un tout nouveau groupe de robotique appelé AgBot.

AgBot était un nouveau club de robotique formé dans le but de construire un robot pour participer à la Compétition Weed and Feed agBots 2019. Cette compétition avait deux défis principaux :

  1. Identification et éradication des nuisibles et des mauvaises herbes
  2. Création de nouvelles méthodes de récolte grâce à la robotique

Notre équipe a choisi de se concentrer sur le premier défi. C’était la première fois que Mines participait à la compétition agBot, et c’était la première fois qu’un club de robotique de Mines travaillait sur quelque chose en rapport avec l’agriculture. Cela a rendu l’ensemble de l’expérience très nouvelle.

J’ai été immédiatement attiré par le projet. Ma famille était agricultrice en Turquie depuis des générations, jusqu’à la génération de mon père. Donc, AgBot se sentait proche de chez moi tout en liant ma passion pour la robotique et la programmation. L’idée de construire un robot qui pourrait aider des agriculteurs comme mes grands-parents était vraiment excitante.

Développement

Faire partie de l’équipe AgBot est l’une de mes expériences universitaires les plus mémorables. C’était aussi l’une des choses les plus difficiles sur lesquelles j’ai travaillé jusqu’à ce point. Ce projet a été la première fois que je me suis vraiment plongé dans Python, Ubuntu, et ROS. Dans la FRC, tout était en Java, donc c’était tout un nouveau territoire pour moi. J’avais utilisé Python et Ubuntu dans le passé, mais je n’avais jamais touché à ROS. Apprendre comment ROS fonctionnait a été un combat difficile. Je ne savais même pas ce qu’était un environnement Python à l’époque.

J’ai passé la plupart de mon temps à essayer de faire en sorte qu’un Lidar envoie des données utilisables dans un nœud ROS que j’écrivais. Ma tâche était d’implémenter un Nœud ROS appelé end_detector qui pouvait détecter quand le robot atteignait la fin d’une rangée de cultures en utilisant des données Lidar. Cela semble simple maintenant, mais à l’époque, cela semblait énorme.

Il m’a fallu environ deux semaines de débogage pour faire communiquer le Lidar avec mon code. L’ensemble du code était écrit soit en C++, soit en Python, principalement en Python. Donc, mon code était juste du Python pour ce travail. Une fois que cela a fonctionné, j’ai commencé à tester la logique en utilisant des parcelles aléatoires de plantes que j’ai trouvées sur le campus. Je faisais rouler un support tenant le Lidar devant elles et voyais si le code pouvait dire quand nous atteignions la fin. Après de nombreuses heures et du débogage, j’ai finalement réussi à faire fonctionner tout cela au moins dans mon environnement de test. C’était une autre histoire lorsque nous avons essayé de tout combiner.

Mon temps était principalement consacré à faire communiquer le matériel et le logiciel. La logique réelle pour détecter les fins de rangée est venue en second. Mais c’était une excellente expérience d’apprentissage. Je suis passé de la compréhension à peine de ROS à l’écriture et au débogage de nœuds sur une carte Jetson avec des données Lidar en direct. C’est aussi à ce moment-là que je suis passé de l’utilisation principalement de Java comme mon langage de programmation à l’utilisation par défaut de Python. Et, à partir de 2025, je n’ai pas encore vraiment utilisé Java pour l’un de mes projets ou bases de code liés au travail.

Équipe et Stack Technologique

Nous avons exécuté Ubuntu 16.04 avec ROS Kinetic et Python 2.7 sur un Nvidia Jetson TX2 qui interagissait avec un Lidar Hokuyo URG 04LX UG01. Nous avions des Arduino pour les entrées de capteurs comme les télémètres ultrasoniques. Notre code gérait la perception, la navigation, le contrôle et le pulvérisation. Vous pouvez voir le dépôt ici : Dépôt GitHub. Le code spécifique que j’ai écrit se trouve dans end_detector.py. Voici la liste de la plupart des composants qui constituaient le robot :

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Lidar Hokuyo URG-04LX-UG01
  • Arduino Uno & Mega
  • Moteurs à courant continu, encodeurs, contrôleurs de moteur, batterie, etc.

Nous n’avions pas une grande équipe, mais quelques noms se démarquent :

Tyler était le leader et le fondateur du club. Je le respectais beaucoup à l’époque et je le fais encore aujourd’hui. Zachary était le responsable du développement logiciel pour le club et m’a beaucoup appris sur le développement logiciel et ROS, ce dont je lui suis reconnaissant jusqu’à ce jour.

Il y avait d’autres membres aussi, comme Kevin Barnard et Amit Rotem. Mais je ne me souviens malheureusement pas des noms et des contacts de tous les membres originaux étant donné que cela fait plus de 5 ans que le club a pris fin.

La plupart du développement du robot a eu lieu pendant les week-ends et tard dans la nuit après la fin de la plupart de nos cours. Travailler sur un diplôme d’ingénierie et AgBot était très épuisant, mais nous avons persévéré.

Le Voyage et le Chaos

Une partie de cette expérience que je n’oublierai jamais était le voyage lui-même. La compétition a eu lieu à West Lafayette, Indiana, près du campus de l’Université Purdue. Et toute la compétition a eu lieu juste après la semaine des examens à Mines, donc nous n’avions pas le temps de nous remettre de cette semaine infernale.

Nous avons conduit de Golden, Colorado, à l’Indiana en utilisant le camion de Tyler pour transporter le robot et tous nos outils. La chose drôle, c’est que nous avons commencé le trajet littéralement un jour avant la semaine de la compétition. Nous avons tout emballé, le robot, les outils, les batteries, les ordinateurs, tout, et avons conduit de Golden, Colorado, à West Lafayette, Indiana. C’est un trajet de 18 heures sur le papier. Cela nous a pris près de 20 ou 22 heures avec des pauses essence et toilettes.

Tyler a conduit tout le temps, vivant de boissons Coffee Monster. Un autre coéquipier, désolé j’ai oublié son nom mais elle est sur les photos, a pris le relais de temps en temps. En cours de route, il a commencé à pleuvoir à verse. Nous avons dû nous arrêter à une station-service fermée au hasard et prendre une bâche pour protéger le robot. C’était bricolé, c’était le chaos, c’était la robotique universitaire. D’une manière ou d’une autre, nous y sommes parvenus.

Lorsque nous sommes arrivés, nous avons installé notre auvent sur le terrain et mis en place tous nos outils. Je me suis concentré sur la finalisation du code et sur son exécution. Pendant la majeure partie de la compétition, nous avons principalement travaillé sur le débogage de notre robot et sur son bon fonctionnement tout en vérifiant les superbes constructions de robots des autres équipes.

Alors, avons-nous gagné ?

Non

En regardant en arrière, nous n’étions qu’un groupe de gamins essayant de construire quelque chose qui était bien au-delà de notre niveau d’expérience. Les autres équipes étaient à un tout autre niveau. Certaines venaient de startups. D’autres venaient de laboratoires de recherche. Certaines avaient un soutien académique complet. Nous étions un petit groupe d’étudiants de premier cycle faisant des nuits blanches, espérant que Python transformerait les données Lidar en quelque chose d’utile.

Notre robot était défectueux. C’était bricolé. Et honnêtement, il fonctionnait à peine au moment où nous sommes arrivés à la compétition. Beaucoup de personnes dans l’équipe ont commencé à abandonner lorsqu’elles ont réalisé que nous pourrions ne pas finir à temps. Certains ne se sont même pas présentés. Les examens étaient terminés, le robot n’était pas prêt, et le moral était assez bas.

Mais quelques-uns d’entre nous ont tenu bon.

Je n’ai pas abandonné… Tyler n’a pas abandonné… Et les personnes sur la photo, elles n’ont pas abandonné non plus !

Même si nous n’avons pas gagné et que nous n’avions même pas un robot entièrement fonctionnel, je ne troquerais cette expérience pour rien au monde. J’ai appris sur ROS, le débogage matériel, la construction de systèmes sous pression, et j’ai appris la loyauté. J’ai réalisé à quel point il est important de mener les choses à terme.

Réflexion, À partir de 2025

Après la saison 2019, AgBot a fermé ses portes. Cela était principalement dû à l’arrivée de la COVID presque un an plus tard, entraînant la fermeture de tous les clubs à Mines pendant 1 à 2 ans et au moment où le monde a commencé à revenir à la “normale”, j’ai obtenu mon diplôme.

Il est maintenant 2025, et en regardant en arrière à AgBot, je le vois comme le début de tout pour moi. Cela m’a donné ma première véritable expérience avec la robotique et m’a appris à collaborer avec une équipe technique. Cela m’a mis sur un chemin qui m’a conduit à des opportunités incroyables.

Depuis lors, j’ai travaillé en tant qu’ingénieur backend chez eBay, déployant des services qui ingèrent des millions de métriques à travers des centres de données. J’ai fondé ma première startup qui se concentrait sur la création de tests de pénétration en cybersécurité automatisés par IA. J’ai lancé Notify Cyber, qui a atteint des dizaines de milliers de visiteurs. J’ai écrit des logiciels pour Docker, Kubernetes, Postgres et une infrastructure IA avancée.

Mais AgBot se distingue toujours comme l’une des meilleures expériences de ma vie. C’était chaotique, stressant, et parfois cela semblait impossible, mais cela m’a appris plus que n’importe quel cours ou tutoriel ne pourrait jamais le faire. J’ai appris que même si vous n’avez pas le plan parfait ou suffisamment de financement ou le meilleur matériel, vous pouvez toujours construire quelque chose, apprendre énormément et rencontrer des personnes incroyables en cours de route.

À tous ceux de l’équipe AgBot 2019, merci. À ce road trip de 2019, à la bâche que nous avons prise dans une station-service fermée, et aux nuits sans sommeil, merci. Vous m’avez donné le courage de poursuivre de grands projets avec confiance, peu importe à quel point ils semblent impossibles.

Ressources et Liens

Galerie Photo

Équipe AgBot de Mine, Nous

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

Notre 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

Vidéos/GIFs

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

Champs de Compétition

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

Autres Équipes Aux Compétitions

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

Autres Images Aléatoires

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