2019 AgBot Challenge
Східна старша школа
Під час мого навчання в Східній старшій школі у Денвері, Колорадо (2014-2018), я був дуже активно залучений до позакласних занять, і найзначущішим із них був робототехнічний клуб AngelBotics. Я приєднався до нього лише на другому курсі, оскільки спочатку зосереджувався на футболі. Клуб переважно брав участь у FIRST Robotics Competition (FRC), що дало мені змогу досліджувати механічну та електричну інженерію, а також програмування. Через AngelBotics я навчився користуватися CAD-інструментами, 3D-принтерами та іншим інженерним обладнанням, отримавши доступ до STEM-концепцій, які зазвичай залишаються для студентів коледжу. Спочатку я прагнув стати квантовим фізиком, але мій досвід на AP Physics і в робототехніці показав мені, що в фізиці я не такий уже й сильний, і це, своєю чергою, відвернуло мене від шляху механічного інженера.
Натомість я знайшов свою нішу в програмуванні, що почалося з того, що я писав Python-код для свого першого Raspberry Pi, і закріпилося через проєкти на Java в AP Computer Science. Попри труднощі з іспитами, мій учитель, містер Нагел, заохочував мене обрати розробку програмного забезпечення, наголошуючи на цінності проєктів, а не балів за тести. Це спонукало мене зосередитися на комп’ютерних науках як на спеціальності в коледжі з мрією стати інженером-програмістом і зрештою засновником компанії як моєї кар’єри.
Хоча я не був надто залучений в AngelBotics через моє напружене навчальне навантаження та круту криву навчання, це все ж запалило в мені пожиттєву пристрасть до робототехніки. Тож коли я вступив до коледжу, я був налаштований приєднатися до коледжного робототехнічного клубу й одного дня створити компанію, яка розв’язує реальні проблеми за допомогою робототехніки.
Школа шахт
Після закінчення Східної старшої школи я розпочав навчання на бакалавраті з комп’ютерних наук у Колорадській школі шахт (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, який взаємодіяв із 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
- Двигуни постійного струму, енкодери, контролери двигунів, акумулятор тощо.
У нас не була велика команда, але кілька імен виділяються особливо:
Тайлер був лідером і засновником клубу. Я дуже поважав його тоді й поважаю досі. Захарі був керівником програмної розробки клубу й допоміг мені багато чого навчитися про розробку програмного забезпечення та ROS, за що я вдячний і донині.
Були й інші учасники, наприклад Kevin Barnard і Amit Rotem. Але, на жаль, я не пам’ятаю імен та контактів усіх початкових учасників, оскільки з моменту завершення діяльності клубу минуло понад 5 років.
Більшість розробки робота відбувалася на вихідних і допізна вночі після того, як закінчувалися наші заняття. Працювати над інженерною спеціальністю та AgBot було дуже виснажливо, але ми все ж таки пройшли через це.
Поїздка і хаос
Одна частина всього цього досвіду, яку я ніколи не забуду, — це сама поїздка. Змагання проходили у Вест-Лафаєтті, Індіана, неподалік від кампусу Університету Пердью. І все змагання відбувалося одразу після того, як у Mines завершився тиждень іспитів, тож у нас не було часу оговтатися від цього пекельного тижня.
Ми їхали з Голдена, Колорадо, до Індіани на пікапі Тайлера, щоб також перевезти робота й усі наші інструменти. Але кумедно те, що ми вирушили буквально за один день до тижня змагань. Ми запакували все, що мали: робота, інструменти, батареї, комп’ютери, усе — і поїхали з Голдена, Колорадо, до Вест-Лафаєтта, Індіана. За документами це 18-годинна поїздка. Насправді вона зайняла ближче до 20 або 22 годин з урахуванням зупинок на пальне та вбиральню.
Тайлер керував увесь час, живлячись напоями Coffee Monster. Інша товаришка по команді, вибачте, я забув її ім’я, але вона є на фото, іноді його підміняла. Дорогою почалася сильна злива. Нам довелося з’їхати на узбіччя біля випадкової закритої заправки й узяти брезент, щоб захистити робота. Це було незграбно, це був хаос, це була студентська робототехніка. Якимось чином ми таки дісталися.
Коли ми прибули, ми встановили наш навіс на полі й розклали всі наші інструменти. Я зосередився на завершенні коду та на тому, щоб змусити його працювати. Протягом більшої частини змагання ми переважно працювали над налагодженням нашого робота й тим, щоб він добре працював, а також дивилися на круті робототехнічні розробки інших команд.
То чи виграли ми?
Ні
Озираючись назад, ми були просто купкою дітей, які намагалися створити щось, що було далеко за межами нашого рівня досвіду. Інші команди були на зовсім іншому рівні. Деякі були зі стартапів. Деякі — з дослідницьких лабораторій. Деякі мали повну академічну підтримку. Ми були невеликою групою студентів, які не спали ночами, сподіваючись, що Python перетворить дані Lidar на щось корисне.
Наш робот мав недоліки. Він був незграбний. І, чесно кажучи, він ледь працював на момент, коли ми дісталися до змагання. Багато людей у команді почали відмовлятися від участі, коли зрозуміли, що ми можемо не встигнути завершити все вчасно. Деякі навіть не з’явилися. Іспити закінчилися, робот був не готовий, а моральний стан був досить низьким.
Але кілька з нас залишилися до кінця
Я не здався… Тайлер не здався… І люди на фото теж не здалися!
Хоча ми й не виграли та навіть не мали повністю функціонального робота, я не проміняв би цей досвід ні на що. Я навчився ROS, налагодженню апаратного забезпечення, створенню систем під тиском, і я навчився вірності. Я зрозумів, наскільки важливо доводити справи до кінця.
Роздуми станом на 2025 рік
Після сезону 2019 року AgBot припинив свою діяльність. Це було здебільшого через те, що COVID почався майже через рік потому, що спричинило закриття всіх клубів у Mines на 1-2 роки, і до того часу, коли світ почав повертатися до «нормальності», я вже закінчив навчання.
Нині 2025 рік, і, озираючись назад на AgBot, я бачу в ньому початок усього для себе. Він дав мені перший справжній досвід у робототехніці та навчив мене, як співпрацювати з технічною командою. Він поставив мене на шлях, який привів мене до неймовірних можливостей.
Відтоді я працював бекенд-інженером в eBay, розгортаючи сервіси, що обробляють мільйони метрик у різних дата-центрах. Заснував свій перший стартап, який зосереджувався на створенні автоматизованого AI-пентестингу для кібербезпеки. Запустив Notify Cyber, який набрав десятки тисяч відвідувачів. Я писав програмне забезпечення для Docker, Kubernetes, Postgres і передової AI-інфраструктури.
Але 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)
![]() |
![]() |
Інші випадкові зображення
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |































































