Défi AgBot 2019

East High School

Pendant mon séjour à East High School à Denver, Colorado (2014-2018), j’ai été fortement impliqué dans les activités parascolaires, la plus marquante étant le club de robotique, AngelBotics. Ce n’est qu’en deuxième année que j’ai rejoint le club, à cause d’un premier intérêt pour le soccer. Le club participait principalement à la Compétition de robotique FIRST (FRC), ce qui m’a permis d’explorer le génie mécanique et électrique, ainsi que la programmation. Grâce à AngelBotics, j’ai appris à utiliser des outils de CAO, des imprimantes 3D et d’autres équipements d’ingénierie, découvrant des concepts STEM généralement réservés aux étudiants universitaires. Initialement aspirant à devenir physicien quantique, mes expériences en Physique AP et en robotique m’ont montré que je n’étais pas très doué en physique, ce qui m’a détourné d’une voie en génie mécanique.

À la place, j’ai trouvé ma place dans la programmation, qui a commencé avec l’écriture de code Python pour mon premier Raspberry Pi et s’est consolidée grâce à des projets Java en Informatique AP. Malgré des difficultés aux examens, mon professeur, M. Nagel, m’a encouragé à poursuivre le développement logiciel, soulignant la valeur des projets par rapport aux notes. Cela m’a poussé à me concentrer sur l’informatique comme diplôme universitaire, avec le rêve de devenir ingénieur logiciel et, éventuellement, fondateur.

Bien que je n’aie pas été très impliqué dans AngelBotics à cause de ma charge de travail exigeante et de la courbe d’apprentissage abrupte, cela a tout de même éveillé une passion durable pour la robotique. Ainsi, lorsque 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 réels grâce à la robotique.

School of Mines

Après avoir obtenu mon diplôme de East High School, j’ai commencé mon baccalauréat en informatique à la Colorado School of Mines (2018-2022). Dès mon tout premier semestre, j’ai découvert les clubs de robotique de Mines et j’ai trouvé un tout nouveau groupe de robotique appelé AgBot.

AgBot était un nouveau club de robotique créé dans le but de construire un robot pour concourir à la Compétition AgBots 2019 de désherbage et d’alimentation. Cette compétition comportait deux défis principaux :

  1. Identification et éradiation des parasites 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 la première fois qu’un club de robotique de Mines travaillait sur quelque chose lié à l’agriculture. Cela rendait l’ensemble du projet très rafraîchissant.

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. Ainsi, AgBot me rappelait la maison, alliant 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 que j’ai jamais faites jusqu’alors. Ce projet fut la première fois que je me suis réellement plongé dans Python, Ubuntu et ROS. Dans la FRC, tout était en Java, donc c’était un tout nouveau territoire pour moi. J’avais déjà utilisé Python et Ubuntu, mais je n’avais jamais touché ROS. Apprendre comment ROS fonctionnait était une lutte constante. Je ne savais même pas ce qu’était un environnement Python à l’époque.

J’ai passé la majeure partie de mon temps à essayer de faire en sorte qu’un Lidar envoie des données exploitables à un nœud ROS que j’écrivais. Ma tâche était d’implémenter un nœud ROS appelé end_detector capable de détecter quand le robot atteignait la fin d’une rangée de cultures en utilisant les données du Lidar. Ça semble simple maintenant, mais à l’époque c’était énorme.

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

Mon temps était surtout consacré à faire communiquer le matériel et le logiciel. La logique réelle de détection des fins de rangées venait en second. Mais ce fut une excellente expérience d’apprentissage. Je suis passé de presque aucune compréhension de ROS à écrire et déboguer des nœuds sur une carte Jetson avec des données Lidar en temps réel. C’est aussi à cette période que je suis passé de Java, mon langage de programmation par défaut, à Python. Et, à partir de 2025, je n’ai toujours pas vraiment utilisé Java pour aucun de mes projets ou bases de code professionnelles.

Équipe et pile technologique

Nous utilisions Ubuntu 16.04 avec ROS Kinetic et Python 2.7 sur un Nvidia Jetson TX2 qui était connecté à un Hokuyo URG 04LX UG01 Lidar. Nous avions des Arduino pour les capteurs comme les télémètres à ultrasons. Notre code gérait la perception, la navigation, le contrôle et la pulvérisation. Vous pouvez voir le dépôt ici : GitHub Repo. 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
  • Hokuyo URG‑04LX‑UG01 Lidar
  • Arduino Uno & Mega
  • Moteurs DC, 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 fondateur du club. Je le respectais beaucoup à l’époque et je le respecte toujours aujourd’hui. Zachary était le responsable du développement logiciel du club et m’a beaucoup appris sur le développement logiciel et ROS, ce dont je suis reconnaissant à ce jour.

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

La plupart du développement du robot se faisait le week‑end et tard dans la nuit après la fin de nos cours. Travailler sur un diplôme d’ingénierie tout en étant impliqué dans AgBot était très éprouvant, mais nous l’avons fait.

Le Voyage et le Chaos

Une partie de toute cette expérience que je n’oublierai jamais est le voyage lui‑même. La compétition s’est tenue à West Lafayette, Indiana, près du campus de Purdue University. Et toute la compétition a eu lieu juste après la semaine des examens finaux à Mines, donc nous n’avions aucun temps de récupération après cette semaine infernale.

Nous avons conduit de Golden, Colorado, jusqu’en Indiana en utilisant le camion de Tyler pour transporter le robot et tous nos outils. Le fait amusant, 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 nous avons conduit de Golden à West Lafayette. Sur le papier, c’est un trajet de 18 heures. En réalité, cela a duré près de 20 à 22 heures avec les pauses essence et toilettes.

Tyler a conduit tout le temps, se nourrissant de boissons Coffee Monster. Un autre coéquipier, désolé j’ai oublié son nom mais elle apparaît sur les photos, a parfois pris le relais. En chemin, il a commencé à pleuvoir à verse. Nous avons dû nous arrêter à une station‑service fermée et attraper une bâche pour protéger le robot. C’était bricolé, c’était le chaos, c’était la robotique universitaire. D’une façon ou d’une autre, nous y sommes arrivés.

À notre arrivée, nous avons installé notre chapiteau sur le terrain et disposé tous nos outils. Je me suis concentré sur la finalisation du code et son exécution. Pendant la majeure partie de la compétition, nous avons surtout travaillé sur le débogage de notre robot et son bon fonctionnement, tout en découvrant les constructions impressionnantes des autres équipes.

Avons‑nous donc gagné ?

Non

Avec le recul, nous n’étions qu’un groupe d’adolescents essayant de construire quelque chose bien au‑delà de notre niveau d’expérience. Les autres équipes étaient à un tout autre niveau. Certaines venaient de start‑ups. D’autres de laboratoires de recherche. D’autres encore bénéficiaient d’un soutien académique complet. Nous étions un petit groupe d’étudiants en licence faisant des nuits blanches, espérant que Python transformerait les données du Lidar en quelque chose d’utile.

Notre robot était défectueux. Il était bricolé. Et honnêtement, il fonctionnait à peine le jour de la compétition. Beaucoup de membres ont commencé à abandonner lorsqu’ils ont réalisé que nous ne finirions peut‑être pas à temps. Certains ne sont même pas venus. Les examens finaux étaient terminés, le robot n’était pas prêt, et le moral était assez bas.

Mais quelques‑uns sont restés jusqu’au bout.

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 notre robot n’était pas entièrement fonctionnel, je ne troquerais pas cette expérience contre quoi que ce soit. J’ai appris ROS, le débogage matériel, la construction de systèmes sous pression, et j’ai découvert la loyauté. J’ai compris à 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 est principalement dû à la pandémie de COVID qui a frappé près d’un an plus tard, forçant tous les clubs de Mines à fermer pendant 1‑2 ans, et au moment où le monde commençait à revenir à la « normale », j’ai obtenu mon diplôme.

C’est maintenant 2025, et en repensant à AgBot, je le vois comme le début de tout pour moi. Il m’a donné ma première vraie expérience en robotique et m’a appris à collaborer avec une équipe technique. Il m’a mis sur une voie qui m’a conduit à des opportunités incroyables.

Depuis lors, j’ai travaillé comme ingénieur backend chez eBay, déployant des services qui ingèrent des millions de métriques à travers les 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 reste l’une des meilleures expériences de ma vie. C’était chaotique, stressant, et parfois 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, suffisamment de financement ou le meilleur matériel, vous pouvez quand même construire quelque chose, apprendre énormément, et rencontrer des personnes incroyables en chemin.

À tous les membres de l’équipe AgBot 2019, merci. Au road trip de 2019, à la bâche que nous avons prise dans une station-service fermée, et aux nuits blanches, 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 de photos

É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 la 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