2019 AgBot Challenge

Восточная Средняя Школа

Во время моего обучения в Восточной Средней Школе в Денвере, штат Колорадо (2014-2018), я активно участвовал в внеклассных мероприятиях, наиболее значимым из которых был клуб робототехники AngelBotics. Я присоединился к клубу только на втором курсе, изначально сосредоточившись на футболе. Клуб в основном участвовал в Соревнованиях по робототехнике FIRST (FRC), что дало мне возможность изучить механическую и электрическую инженерию, а также программирование. Через AngelBotics я научился использовать инструменты CAD, 3D-принтеры и другое инженерное оборудование, получив представление о концепциях STEM, которые обычно зарезервированы для студентов колледжа. Изначально стремясь стать квантовым физиком, мой опыт в AP Physics и робототехнике показал мне, что я не так хорош в физике, и в итоге отвел меня от пути механической инженерии.

Вместо этого я нашел свою нишу в программировании, которое началось с написания кода на Python для моего первого Raspberry Pi и было закреплено через проекты на Java в AP Computer Science. Несмотря на трудности с экзаменами, мой учитель, мистер Нагель, поощрял меня заниматься разработкой программного обеспечения, подчеркивая ценность проектов выше оценок. Это побудило меня сосредоточиться на компьютерных науках как на моей специальности в колледже с мечтой стать инженером-программистом и в конечном итоге основателем в своей карьере.

Хотя я не так активно участвовал в AngelBotics из-за сложной учебной нагрузки и крутой кривой обучения, это все равно разожгло во мне страсть к робототехнике на всю жизнь. Поэтому, когда я начал колледж, я был полон решимости присоединиться к клубу робототехники колледжа и однажды создать компанию, которая решает реальные проблемы с помощью робототехники.

Школа Минес

После окончания Восточной Средней Школы я начал обучение на бакалавриате по компьютерным наукам в Школе Минес (2018-2022). В течение моего первого семестра я ознакомился с клубами робототехники Минес и обнаружил совершенно новую группу робототехники под названием AgBot.

AgBot был новым клубом робототехники, созданным с целью построить робота для участия в Соревновании по борьбе с сорняками и удобрениями AgBots 2019. Это соревнование имело две основные задачи:

  1. Идентификация и уничтожение вредителей и сорняков
  2. Создание новых методов сбора урожая с помощью робототехники

Наша команда решила сосредоточиться на первой задаче. Это был первый раз, когда Минес участвовал в соревновании agBot, и это был первый раз, когда клуб робототехники Минес работал над чем-то, связанным с сельским хозяйством. Это сделало все это свежим.

Я был немедленно привлечен к проекту. Моя семья была фермерами в Турции на протяжении поколений, вплоть до поколения моего отца. Поэтому AgBot казался близким к дому, связывая мою страсть к робототехнике и программированию. Идея построить робота, который мог бы помочь фермерам, как мои бабушка и дедушка, была действительно захватывающей.

Разработка

Быть частью команды AgBot — один из самых запоминающихся моментов моего колледжа. Это также было одно из самых сложных дел, над которыми я работал до этого момента. Этот проект был первым разом, когда я действительно погрузился в Python, Ubuntu и ROS. В FRC все было на Java, так что это была совершенно новая территория для меня. Я использовал Python и Ubuntu в прошлом, но никогда не касался ROS. Изучение того, как работает ROS, было настоящей битвой. Я даже не знал, что такое окружение Python в то время.

Я провел большую часть своего времени, пытаясь заставить Lidar отправлять полезные данные в узел ROS, который я писал. Моя задача заключалась в реализации ROS Node под названием end_detector, который мог бы обнаруживать, когда робот достигал конца ряда культур, используя данные Lidar. Это сейчас звучит просто, но тогда это казалось огромным.

Мне потребовалось около двух недель отладки, чтобы заставить Lidar взаимодействовать с моим кодом. Весь код был написан либо на C++, либо на Python, в основном на Python. Так что мой код был просто Python для этой задачи. Как только это сработало, я начал тестировать логику, используя случайные участки растений, которые я нашел на кампусе. Я катил стойку с Lidar мимо них и смотрел, может ли код определить, когда мы достигли конца. После многих часов и отладки я в конечном итоге заставил все работать, по крайней мере, в моей тестовой среде. Это была другая история, когда мы пытались объединить все вместе.

Мое время в основном уходило на то, чтобы заставить аппаратное и программное обеспечение взаимодействовать друг с другом. Фактическая логика для обнаружения концов рядов шла второй. Но это был отличный опыт обучения. Я прошел путь от едва понимающего ROS до написания и отладки узлов на плате Jetson с живыми данными Lidar. Также в это время я переключился с преимущественного использования Java как моего языка программирования на предпочтительное использование Python. И, по состоянию на 2025 год, я еще не использовал Java для каких-либо своих проектов или рабочих кодовых баз.

Команда и Технологический Стек

Мы использовали Ubuntu 16.04 с ROS Kinetic и Python 2.7 на Nvidia Jetson TX2, который взаимодействовал с Hokuyo URG 04LX UG01 Lidar. У нас были Arduino для ввода данных с датчиков, таких как ультразвуковые дальномеры. Наш код обрабатывал восприятие, навигацию, управление и распыление. Вы можете увидеть репозиторий здесь: GitHub Repo. Конкретный код, который я написал, можно найти в end_detector.py. Вот список большинства компонентов, которые составили робота:

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Hokuyo URG-04LX-UG01 Lidar
  • Arduino Uno & Mega
  • DC Motors, Encoders, Motor Controllers, Battery и т.д.

У нас не было большой команды, но несколько имен выделяются:

Тайлер был лидером и основателем клуба. Я очень уважал его тогда и уважаю до сих пор. Закари был руководителем разработки программного обеспечения клуба и помог мне многому научиться в области разработки программного обеспечения и ROS, за что я благодарен до сих пор.

Были и другие участники, такие как Kevin Barnard и Амит Ротем. Но, к сожалению, я не помню имена и контакты всех первоначальных участников, так как прошло более 5 лет с тех пор, как клуб завершил свою работу.

Большая часть разработки робота происходила в выходные и поздно ночью после того, как большинство наших занятий заканчивались. Работа над инженерной степенью и AgBot была очень утомительной, но мы справились с этим.

Поездка и Хаос

Одна часть этого всего опыта, которую я никогда не забуду, — это сама поездка. Соревнование проходило в Уэст-Лафайете, штат Индиана, недалеко от кампуса Университета Пердью. И все соревнование проходило сразу после того, как закончилась неделя финальных экзаменов в Минес, так что у нас не было времени восстановиться после этой адской недели.

Мы ехали из Голдена, штат Колорадо, в Индиану на грузовике Тайлера, чтобы перевезти робота и все наши инструменты. Забавное дело, что мы начали поездку буквально за день до недели соревнований. Мы упаковали все, что у нас было: робота, инструменты, батареи, компьютеры, все, и поехали из Голдена, штат Колорадо, в Уэст-Лафайет, штат Индиана. Это 18-часовая поездка на бумаге. На самом деле нам потребовалось около 20 или 22 часов с учетом остановок на бензин и туалет.

Тайлер вел всю дорогу, питаясь напитками Coffee Monster. Другой участник команды, извините, я забыл ее имя, но она на фотографиях, иногда подменяла его. По пути начался сильный дождь. Нам пришлось остановиться на случайной закрытой автозаправке и взять брезент, чтобы защитить робота. Это было неуклюже, это был хаос, это была студенческая робототехника. Тем не менее, мы справились.

Когда мы прибыли, мы установили наш навес на поле и разложили все наши инструменты. Я сосредоточился на завершении кода и его запуске. В течение большей части соревнования мы в основном работали над отладкой нашего робота и его хорошей работой, а также проверяли крутые сборки роботов других команд.

Так Мы Выиграли?

Нет

Оглядываясь назад, мы были просто кучкой детей, пытающихся построить что-то, что было далеко за пределами нашего уровня опыта. Другие команды были на совершенно другом уровне. Некоторые были из стартапов. Некоторые были из исследовательских лабораторий. Некоторые имели полную академическую поддержку. Мы были небольшой группой студентов, которые не спали ночами, надеясь, что Python превратит данные Lidar во что-то полезное.

Наш робот был несовершенен. Он был неуклюжим. И, честно говоря, он едва работал к моменту, когда мы прибыли на соревнование. Многие участники команды начали выходить, когда поняли, что мы, возможно, не успеем закончить вовремя. Некоторые даже не пришли. Финальные экзамены закончились, робот не был готов, и мораль была довольно низкой.

Но несколько из нас остались

Я не сдался… Тайлер не сдался… И люди на фотографии тоже не сдались!

Несмотря на то, что мы не выиграли и даже не имели полностью функционального робота, я бы не променял этот опыт ни на что. Я узнал о ROS, отладке аппаратного обеспечения, создании систем под давлением, и я узнал о преданности. Я осознал, как важно доводить дела до конца.

Рефлексия, на 2025 год

После сезона 2019 года AgBot закрылся. Это было в основном связано с тем, что COVID начался почти через год, что привело к закрытию всех клубов в Минес на 1-2 года, и к тому времени, когда мир начал возвращаться к “нормальной” жизни, я закончил учебу.

Сейчас 2025 год, и, оглядываясь на AgBot, я вижу в этом начало всего для меня. Он дал мне мой первый настоящий опыт в робототехнике и научил меня сотрудничать с технической командой. Он поставил меня на путь, который привел к удивительным возможностям.

С тех пор я работал в качестве бэкенд-инженера в eBay, развертывая сервисы, которые обрабатывают миллионы метрик в дата-центрах. Основал свой первый стартап, который сосредоточился на создании автоматизированного тестирования на проникновение в кибербезопасности с использованием ИИ. Запустил Notify Cyber, который привлек десятки тысяч посетителей. Я написал программное обеспечение для Docker, Kubernetes, Postgres и продвинутой инфраструктуры ИИ.

Но AgBot все еще выделяется как один из лучших опытов в моей жизни. Это было хаотично, стрессово и иногда казалось невозможным, но он научил меня больше, чем любой класс или учебник когда-либо мог бы. Я узнал, что даже если у вас нет идеального плана или достаточного финансирования или лучшего оборудования, вы все равно можете создать что-то, многому научиться и встретить невероятных людей на этом пути.

Всем из команды AgBot 2019 года, спасибо. За ту поездку в 2019 году, за брезент, который мы взяли на закрытой автозаправке, и за бессонные ночи, спасибо. Вы дали мне стойкость, чтобы с уверенностью заниматься большими проектами, независимо от того, насколько невозможными они кажутся.

Ресурсы и ссылки

Фотогалерея

Команда AgBot из Mines, Мы

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

Наш робот 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

Видео/GIF

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

Поля соревнований

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

Другие команды на соревнованиях

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

Другие случайные изображения

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