Défi AgBot 2019
Lycée East
Pendant mon temps au East High School à Denver, Colorado (2014-2018), j’étais très impliqué dans les activités extrascolaires, la plus marquante étant le club de robotique, AngelBotics. Ce n’est qu’en deuxième année que je l’ai rejoint, en raison d’un premier intérêt pour le football. Le club participait principalement à la FIRST Robotics Competition (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 ainsi des notions STEM généralement réservées 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 très bon en physique et m’ont par conséquent éloigné d’une voie en génie mécanique.
À la place, j’ai trouvé ma voie dans la programmation, qui a commencé avec l’écriture de code Python pour mon premier Raspberry Pi et s’est consolidée à travers des projets Java en AP Computer Science. Malgré mes difficultés aux examens, mon professeur, M. Nagel, m’a encouragé à poursuivre le développement logiciel, en soulignant la valeur des projets plutôt que celle des notes aux tests. Cela m’a amené à me concentrer sur l’informatique comme diplôme à l’université, avec le rêve de devenir ingénieur logiciel et, éventuellement, fondateur, pour ma carrière.
Bien que je n’aie pas été très impliqué dans AngelBotics en raison de mon programme scolaire exigeant et de la courbe d’apprentissage abrupte, cela a tout de même éveillé en moi une passion durable pour la robotique. Ainsi, lorsque j’ai commencé l’université, j’étais déterminé à rejoindre un club de robotique universitaire et à construire un jour une entreprise qui résout des problèmes du monde réel grâce à la robotique.
École des Mines
Après avoir obtenu mon diplôme du East High School, j’ai commencé mon bachelor 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 formé dans le but de construire un robot pour participer à la compétition 2019 agBots Weed and Feed. Cette compétition comportait deux grands défis :
- Identification et élimination des ravageurs et des mauvaises herbes
- 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 participation de Mines à la compétition agBot, et c’était la première fois qu’un club de robotique de Mines travaillait sur quelque chose lié à l’agriculture. Cela donnait à l’ensemble une impression de nouveauté.
Le projet m’a immédiatement attiré. Ma famille était agricultrice en Turquie depuis des générations, jusqu’à la génération de mon père. AgBot me semblait donc très proche de moi, tout en s’inscrivant dans 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 passionnante.
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é jusque-là. Ce projet a été la première fois où je me suis vraiment plongé dans Python, Ubuntu et ROS. En FRC, tout était en Java, donc c’était un territoire entièrement nouveau pour moi. J’avais déjà utilisé Python et Ubuntu dans le passé, mais je n’avais jamais touché à ROS. Apprendre le fonctionnement de ROS a été un véritable combat. 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 utilisables à un nœud ROS que j’écrivais. Ma tâche consistait à implémenter un nœud ROS appelé end_detector, capable de détecter quand le robot atteignait la fin d’un rang de culture à l’aide des données du Lidar. Cela semble simple aujourd’hui, mais à l’époque cela paraissait énorme.
Il m’a fallu environ deux semaines de débogage pour faire communiquer le Lidar avec mon code. Tout le code était écrit soit en C++, soit en Python, principalement en Python. Donc, mon code pour cette tâche était simplement en Python. Une fois cela en place, j’ai commencé à tester la logique à l’aide de parcelles aléatoires de plantes que je trouvais sur le campus. Je faisais passer le support portant le Lidar devant elles pour voir si le code pouvait déterminer quand nous atteignions la fin. Après de nombreuses heures et beaucoup de débogage, j’ai finalement réussi à faire fonctionner tout cela au moins dans mon environnement de test. L’histoire était différente quand nous avons essayé de tout combiner.
J’ai passé la plupart de mon temps à faire communiquer le matériel et le logiciel entre eux. La logique réelle pour détecter la fin des rangs est passée au second plan. Mais ce fut une excellente expérience d’apprentissage. Je suis passé de la quasi-incompréhension 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 à cette époque que je suis passé d’un usage surtout par défaut de Java comme langage de programmation à un usage par défaut de Python. Et, en 2025, je n’ai toujours pas vraiment utilisé Java pour l’un de mes projets ou bases de code liés au travail.
Équipe et pile technologique
Nous utilisions Ubuntu 16.04 avec ROS Kinetic et Python 2.7 sur un Nvidia Jetson TX2 qui interfaçait avec un Lidar Hokuyo URG 04LX UG01. Nous avions des Arduino(s) pour les entrées des capteurs comme les télémètres ultrasoniques. Notre code gérait la perception, la navigation, le contrôle et la 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 énorme équipe, mais quelques noms ressortent :
Tyler était le leader et le fondateur du club. Je le respectais énormément à l’époque et je le respecte toujours aujourd’hui. Zachary était le responsable du développement logiciel du club et m’a beaucoup aidé à apprendre le développement logiciel et ROS, ce pour quoi je lui suis reconnaissant encore aujourd’hui.
Il y avait aussi d’autres membres, comme Kevin Barnard et Amit Rotem. Mais malheureusement, je ne me souviens pas des noms et des contacts de tous les membres d’origine, puisque cela fait plus de 5 ans depuis la fin du club.
La majeure partie du développement du robot s’est déroulée pendant les week-ends et tard dans la nuit, une fois que la plupart de nos cours étaient terminés. Travailler sur un diplôme d’ingénierie et sur AgBot était très éprouvant, mais nous avons persévéré.
Le voyage et le chaos
Une partie de toute cette expérience que je n’oublierai jamais, c’est le voyage lui-même. La compétition se déroulait à West Lafayette, dans l’Indiana, près du campus de l’Université Purdue. Et toute la compétition a eu lieu juste après la fin de la semaine des examens à Mines, donc nous n’avions aucun temps pour récupérer de cette semaine d’enfer.
Nous avons conduit de Golden, Colorado, jusqu’à l’Indiana en utilisant le camion de Tyler pour transporter également le robot et tous nos outils. Ce qui est 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, puis nous sommes partis de Golden, Colorado, pour West Lafayette, Indiana. Sur le papier, c’est un trajet de 18 heures. En réalité, il nous a fallu plutôt 20 ou 22 heures avec les arrêts pour l’essence et les toilettes.
Tyler a conduit tout le temps, en vivant grâce aux boissons Coffee Monster. Une autre coéquipière, désolé j’ai oublié son nom mais elle est sur les photos, a parfois pris le relais. En chemin, il a commencé à pleuvoir fortement. 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 de la robotique universitaire. D’une manière ou d’une autre, nous sommes arrivés.
Quand nous sommes arrivés, nous avons installé notre tonnelle sur le terrain et disposé tous nos outils. Je me suis concentré sur la finalisation du code et sur sa mise en fonctionnement. Pendant la majeure partie de la compétition, nous avons surtout travaillé à déboguer notre robot et à le faire bien fonctionner, tout en allant voir les autres robots cools construits par les autres équipes.
Alors, avons-nous gagné ?
Non
Avec le recul, nous n’étions qu’un groupe d’étudiants qui essayaient de construire quelque chose qui dépassait de loin notre niveau d’expérience. Les autres équipes étaient à un tout autre niveau. Certaines venaient de startups. Certaines de laboratoires de recherche. Certaines bénéficiaient d’un soutien académique complet. Nous étions un petit groupe d’étudiants de premier cycle qui faisions des nuits blanches, en espérant que Python transformerait les données du Lidar en quelque chose d’utile.
Notre robot était imparfait. Il était bancal. Et franchement, il fonctionnait à peine quand nous sommes arrivés à la compétition. Beaucoup de personnes de l’équipe ont commencé à abandonner lorsqu’elles ont réalisé que nous risquions de ne pas terminer à temps. Certaines ne sont même pas venues. Les examens finaux é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 non plus !
Même si nous n’avons pas gagné, ni même eu un robot entièrement fonctionnel, je n’échangerais cette expérience pour rien au monde. J’ai appris ROS, le débogage matériel, la construction de systèmes sous pression, et j’ai appris la loyauté. J’ai compris à quel point il est important d’aller jusqu’au bout.
Réflexion, en 2025
Après la saison 2019, AgBot a fermé boutique. Cela était principalement dû au COVID, arrivé près d’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 « normalité », j’avais obtenu mon diplôme.
Nous sommes maintenant en 2025, et avec le recul sur AgBot, je le considère comme le début de tout pour moi. Il m’a offert ma première véritable 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, j’ai travaillé comme ingénieur backend chez eBay, en 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 construction de tests d’intrusion automatisés de cybersécurité par IA. J’ai lancé Notify Cyber, qui a atteint des dizaines de milliers de visiteurs. J’ai लिखा du logiciel pour Docker, Kubernetes, Postgres et des infrastructures d’IA avancées.
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 l’aurait jamais pu. J’ai appris que même si vous n’avez pas le plan parfait, ni assez de financement, ni le meilleur matériel, vous pouvez quand même construire quelque chose, apprendre énormément et rencontrer des personnes incroyables en chemin.
À tous ceux de l’équipe AgBot de 2019, merci. À ce road trip de 2019, à la bâche que nous avons récupérée dans une station-service fermée, et aux nuits sans sommeil, merci. Vous m’avez donné la ténacité nécessaire pour poursuivre de grands projets avec confiance, peu importe à quel point ils semblent impossibles.
Ressources et liens
- Site principal des clubs de robotique de la Colorado School of Mines
- Base de code AgBot 2019
- Article de Purdue sur AgBot
- Article récapitulatif visuel de Purdue
- Article de DTN Progressive Farmer
- Compte Twitter/X d’AgBot
- Site officiel d’AgBot
- GitHub de Zach
- GitHub de Kevin
- GitHub de Tyler
Galerie de photos
Équipe AgBot de Mines, nous
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Notre robot AgBot
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Vidéos/GIFs
Champs de la compétition
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Autres équipes aux compétitions
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339 (2014-2017)
![]() |
![]() |
Autres images aléatoires
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |































































