2019 AgBot Challenge
Восточная средняя школа
Во время моего обучения в East High School в Денвере, штат Колорадо (2014–2018), я был очень активно вовлечён во внеклассную деятельность, и самым значимым для меня был робототехнический клуб AngelBotics. Я присоединился к нему только на втором курсе, поскольку сначала сосредоточился на футболе. Клуб в основном участвовал в FIRST Robotics Competition (FRC), что позволило мне познакомиться с механической и электротехнической инженерией, а также с программированием. Через AngelBotics я научился пользоваться CAD-инструментами, 3D-принтерами и другим инженерным оборудованием, получив доступ к STEM-концепциям, которые обычно доступны студентам колледжей. Сначала я мечтал стать квантовым физиком, но опыт на AP Physics и в робототехнике показал мне, что физика у меня получается не очень хорошо, и в итоге отвёл меня от пути к механической инженерии.
Вместо этого я нашёл своё призвание в программировании, которое началось с того, что я писал код на Python для своего первого Raspberry Pi, и укрепилось благодаря проектам на Java в AP Computer Science. Несмотря на трудности с экзаменами, мой учитель, мистер Nagel, побуждал меня заниматься разработкой программного обеспечения, подчёркивая ценность проектов важнее баллов за тесты. Это подтолкнуло меня сосредоточиться на информатике как на моей специальности в колледже с мечтой о том, чтобы стать инженером-программистом и в конечном итоге основателем компании.
Хотя я не был особенно вовлечён в AngelBotics из-за тяжёлой учебной нагрузки и крутого пути обучения, клуб всё же зажёг во мне пожизненную страсть к робототехнике. Поэтому, когда я поступил в колледж, я был полон решимости вступить в университетский робототехнический клуб и однажды создать компанию, которая решает реальные проблемы с помощью робототехники.
Школа рудников
После окончания East High School я начал обучение на бакалавриате по информатике в Colorado School of Mines (2018–2022). Уже в свой самый первый семестр я познакомился с робототехническими клубами Mines и обнаружил совершенно новую робототехническую группу под названием AgBot.
AgBot был новым робототехническим клубом, созданным с целью построить робота для участия в конкурсе 2019 agBots Weed and Feed Competition. В этом соревновании было две основные задачи:
- Идентификация и уничтожение вредителей и сорняков
- Создание новых методов сбора урожая с помощью робототехники
Наша команда решила сосредоточиться на первой задаче. Для Mines это было первое участие в конкурсе agBot, и это был первый случай, когда робототехнический клуб Mines работал над чем-то, связанным с сельским хозяйством. Из-за этого всё казалось особенно свежим.
Проект сразу же меня увлёк. Моя семья на протяжении поколений, вплоть до поколения моего отца, была фермерами в Турции. Поэтому AgBot ощущался как нечто близкое мне, одновременно соединяя мою страсть к робототехнике и программированию. Идея построить робота, который мог бы помогать фермерам вроде моих бабушки и дедушки, была по-настоящему захватывающей.
Разработка
Участие в команде AgBot — один из самых памятных моментов моего обучения в колледже. Это также было одним из самых тяжёлых дел, над которыми я работал до того момента. Этот проект был первым случаем, когда я по-настоящему углубился в Python, Ubuntu и ROS. В FRC всё было на Java, так что для меня это была совершенно новая территория. Раньше я уже использовал Python и Ubuntu, но никогда не работал с ROS. Понять, как работает ROS, было непростой задачей. В то время я даже не знал, что такое Python-окружение.
Большую часть времени я потратил на то, чтобы заставить Lidar передавать пригодные данные в узел ROS, который я писал. Моей задачей было реализовать узел ROS под названием 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, который был подключён к Lidar Hokuyo URG 04LX UG01. У нас были 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, etc.
У нас не было огромной команды, но несколько имён особенно выделяются:
Tyler был лидером и основателем клуба. Я очень уважал его тогда и уважаю до сих пор. Zachary был руководителем разработки программного обеспечения клуба и помог мне многому научиться о разработке ПО и ROS, за что я благодарен ему до сих пор.
Были и другие участники, например Kevin Barnard и Amit Rotem. Но, к сожалению, я не помню имена и контакты всех первых участников, потому что с момента завершения работы клуба прошло уже более 5 лет.
Большая часть разработки робота происходила по выходным и допоздна ночью после того, как заканчивались занятия. Учиться на инженерной специальности и одновременно заниматься AgBot было очень тяжело, но мы всё же выдержали.
Поездка и хаос
Одна часть всего этого опыта, которую я никогда не забуду, — это сама поездка. Соревнование проходило в West Lafayette, Indiana, рядом с кампусом Purdue University’s. И всё соревнование началось сразу после завершения экзаменационной недели в Mines, так что у нас не было времени прийти в себя после той адской недели.
Мы ехали из Golden, Colorado в Indiana на грузовике Tyler, который также использовался для перевозки робота и всех наших инструментов. Забавный момент в том, что мы выехали буквально за день до недели соревнований. Мы собрали всё, что у нас было — робота, инструменты, аккумуляторы, компьютеры, всё — и поехали из Golden, Colorado в West Lafayette, Indiana. По плану это 18-часовая поездка. На деле с остановками на бензин и туалет она заняла ближе к 20 или 22 часам.
Tyler вёл всё время, живя на напитках Coffee Monster. Другой товарищ по команде, извините, я забыл её имя, но она есть на фотографиях, иногда подменяла его за рулём. По дороге начался сильный ливень. Нам пришлось остановиться у случайной закрытой заправки и взять брезент, чтобы защитить робота. Это было кустарно, это был хаос, это была студенческая робототехника. Но каким-то образом мы добрались.
Когда мы приехали, мы установили наш навес на поле и разложили все наши инструменты. Я сосредоточился на завершении кода и запуске его в работу. Большую часть соревнований мы в основном занимались отладкой робота и попытками заставить его работать, а также смотрели на крутые конструкции роботов других команд.
Так мы выиграли?
Нет
Оглядываясь назад, мы были просто кучкой ребят, пытавшихся построить нечто, что было намного выше нашего уровня опыта. У других команд уровень был совершенно другой. Некоторые были из стартапов. Некоторые — из исследовательских лабораторий. У некоторых была полноценная академическая поддержка. Мы же были небольшой группой студентов, работавших ночами напролёт, надеясь, что Python превратит данные Lidar во что-то полезное.
Наш робот был несовершенным. Он был кустарным. И, честно говоря, к моменту нашего приезда на соревнование он едва работал. Многие люди в команде начали сходить с дистанции, когда поняли, что мы можем не успеть вовремя закончить. Некоторые даже не приехали. Экзамены закончились, робот был не готов, и моральный дух был довольно низким.
Но несколько из нас всё же не сдались
Я не сдался… Tyler не сдался… И люди на фотографии тоже не сдались!
Хотя мы не выиграли и даже не имели полностью функционального робота, я бы ни на что не променял этот опыт. Я узнал о ROS, отладке аппаратного обеспечения, создании систем под давлением, и я узнал о верности. Я понял, насколько важно доводить начатое до конца.
Размышления по состоянию на 2025 год
После сезона 2019 года AgBot закрылся. В основном это было связано с началом COVID почти годом позже, из-за чего все клубы в Mines закрылись на 1–2 года, и к тому времени, когда мир начал возвращаться к «нормальности», я уже выпустился.
Сейчас 2025 год, и, оглядываясь назад на AgBot, я вижу в нём начало всего для себя. Он дал мне мой первый настоящий опыт в робототехнике и научил меня сотрудничать с технической командой. Он поставил меня на путь, который привёл меня к удивительным возможностям.
С тех пор я работал backend-инженером в eBay, разворачивая сервисы, которые обрабатывают миллионы метрик в разных дата-центрах. Основал свой первый стартап, который был сосредоточен на создании автоматизированного ИИ для тестирования на проникновение в сфере кибербезопасности. Запустил Notify Cyber, который достиг десятков тысяч посетителей. Я писал программное обеспечение для Docker, Kubernetes, Postgres и продвинутой ИИ-инфраструктуры.
Но AgBot по-прежнему выделяется как один из лучших опытов в моей жизни. Это было хаотично, стрессово и иногда казалось невозможным, но это научило меня большему, чем когда-либо смог бы любой курс или туториал. Я понял, что даже если у вас нет идеального плана, достаточного финансирования или лучшего оборудования, вы всё равно можете что-то создать, многому научиться и встретить по пути невероятных людей.
Всем из команды AgBot 2019 года — спасибо. Той поездке 2019 года, брезенту, который мы схватили на закрытой заправке, и бессонным ночам — спасибо. Вы дали мне стойкость, чтобы с уверенностью браться за большие проекты, какими бы невозможными они ни казались.
Ресурсы и ссылки
- Главный сайт робототехнических клубов Colorado School of Mines
- Кодовая база AgBot 2019
- Статья Purdue об AgBot
- Статья Purdue с визуальным обзором
- Статья DTN Progressive Farmer
- Аккаунт AgBot в Twitter/X
- Официальный сайт AgBot
- GitHub Зака
- GitHub Кевина
- GitHub Тайлера
Фотогалерея
Команда AgBot в Mines, мы
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Наш робот AgBot
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Видео/GIF
Поля соревнования
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Другие команды на соревнованиях
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339 (2014-2017)
![]() |
![]() |
Другие случайные изображения
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |































































