2019 AgBot Виклик
Східна середня школа
Під час мого навчання у Східна середня школа у Денвері, Колорадо (2014‑2018), я активно брав участь у позашкільних заходах, причому найвпливовішим був робототехнічний клуб, AngelBotics. Я приєднався лише у другому курсі, оскільки спочатку зосереджувався на футболі. Клуб переважно брав участь у FIRST Robotics Competition (FRC), що дозволило мені вивчати механічну та електричну інженерію, а також програмування. Через AngelBotics я навчився користуватися CAD‑інструментами, 3D‑принтерами та іншим інженерним обладнанням, отримавши доступ до STEM‑концепцій, які зазвичай доступні лише студентам коледжу. Спочатку я мріяв стати квантовим фізиком, але досвід у AP Physics та робототехніці показав, що я не дуже сильний у фізиці, і це відвернуло мене від шляху механічної інженерії.
Замість цього я знайшов своє покликання у програмуванні, яке почалося з написання коду на Python для мого першого Raspberry Pi і закріпилося у проектах на Java у курсі AP Computer Science. Незважаючи на труднощі з іспитами, мій вчитель, пан Нагель, заохочував мене займатися розробкою програмного забезпечення, підкреслюючи цінність проєктів над оцінками. Це спонукало мене обрати комп’ютерні науки як спеціальність у коледжі з мрією стати інженером‑програмістом і зрештою засновником.
Хоча я не був дуже залучений у AngelBotics через інтенсивне навчання та круту криву навчання, це все ж розпалило в мені довготривалу пристрасть до робототехніки. Тож, коли я розпочав навчання у коледжі, я був сповнений рішучості приєднатися до коледжного робототехнічного клубу і одного дня створити компанію, яка вирішуватиме реальні проблеми за допомогою робототехніки.
Школа копалень
Після закінчення Східної середньої школи я розпочав бакалаврат з комп’ютерних наук у 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 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‑мотори, енкодери, контролери моторів, акумулятори тощо
У нас не було великої команди, але кілька імен виділяються:
Тайлер був лідером і засновником клубу. Я дуже його поважав тоді і досі. Закарі був головним розробником програмного забезпечення клубу і багато чого навчив мене про розробку ПЗ та ROS, за що я йому досі вдячний.
Були й інші учасники, такі як Kevin Barnard та Аміт Ротем. Але, на жаль, я не пам’ятаю імен та контактів усіх оригінальних учасників, бо пройшло понад 5 років з моменту завершення клубу.
Більшість розробки робота відбувалася у вихідні та пізно ввечері після закінчення занять. Поєднання інженерного навчання та AgBot було дуже виснажливим, але ми все ж продовжували.
Поїздка та хаос
Одна частина цього досвіду, яку я ніколи не забуду, — сама поїздка. Змагання проходили у Вест‑Лаффайеті, Індіана, неподалік від кампусу Purdue University. І весь захід відбувся одразу після того, як закінчилася тиждень фіналів у Mines, тому у нас не було часу на відновлення після тієї «пекельної» тижня.
Ми їхали з Голдена, Колорадо, до Індіани на вантажівці Тайлера, в якій перевозили робота та всі наші інструменти. Смішно, але ми вирушили буквально за день до тижня змагань. Ми запакували все, що мали — робота, інструменти, акумулятори, комп’ютери, усе — і вирушили з Голдена до Вест‑Лаффайету. На папері це 18‑годинна поїздка. На практиці — близько 20‑22 годин з урахуванням заправок та перерв у туалет.
Тайлер їхав увесь час, живлячись напоями Coffee Monster. Інша учасниця, вибачте, я забув її ім’я, але вона присутня на фото, іноді заміняла його. По дорозі почався сильний дощ. Ми змушені були зупинитися на випадковій зачиненій заправці і накрити робот підстилкою, щоб захистити його. Це було кумедно, це був хаос, це була коледжна робототехніка. Якимось чином ми це подолали.
Коли ми прибули, ми встановили наш намет на полі та розклали всі інструменти. Я зосередився на завершенні коду та його запуску. Протягом більшої частини змагання ми в основному працювали над налагодженням нашого робота та його оптимізацією, а також оглядали інші круті проєкти команд.
Чи виграли ми?
Ні
Озираючись назад, ми були просто групою підлітків, які намагалися створити щось, що значно перевищувало наш рівень досвіду. Інші команди були на зовсім іншому рівні. Деякі були зі стартапів. Деякі — з дослідних лабораторій. Деякі мали повну академічну підтримку. Ми були невеликою групою студентів, які працювали ночами, сподіваючись, що Python перетворить дані Lidar у щось корисне.
Наш робот був недосконалим. Він був «жахливим». І, чесно кажучи, він ледь працював до моменту змагання. Багато людей у команді почали відходити, коли зрозуміли, що ми, можливо, не встигнемо. Деякі навіть не з’явилися. Фінали закінчилися, робот не був готовий, а мораль був низькою.
Але кілька з нас залишилися
Я не здався… Тайлер не здався… І люди на фото також не здалися!
Хоча ми не виграли і навіть не мали повністю функціонального робота, я не обміняв би цей досвід ні на що. Я навчився ROS, діагностиці апаратури, створенню систем під тиском і навчився вірності. Я зрозумів, наскільки важливо доводити справи до кінця.
Рефлексія, станом на 2025 рік
Після сезону 2019 року AgBot припинив свою діяльність. Це сталося головним чином через COVID, який розпочався майже через рік, змусивши всі клуби в Mines закритися на 1‑2 роки, і коли світ почав повертатися до «нормального», я вже закінчив навчання.
It is now 2025, and looking back at AgBot, I see it as the beginning of everything for me. It gave me my first real experience with robotics and taught me how to collaborate with a technical team. It set me on a path that has led me to amazing opportunities.
Since then, I have worked as a backend engineer at eBay, deploying services that ingest millions of metrics across data centers. Founded my first startup that focused on building AI automated cybersecurity penetration testing. Launched Notify Cyber, which reached tens of thousands of visitors. I have written software for Docker, Kubernetes, Postgres, and advanced AI infrastructure.
But AgBot still stands out as one of the best experiences of my life. It was chaotic, stressful, and sometimes felt impossible, but it taught me more than any class or tutorial ever could. I learned that even if you do not have the perfect plan or enough funding or the best hardware, you can still build something, learn a ton, and meet incredible people along the way.
To everyone from the 2019 AgBot team, thank you. To that 2019 road trip, the tarp we grabbed at a closed gas station, and the sleepless nights, thank you. You gave me the grit to pursue big projects with confidence, no matter how impossible they seem.
Ресурси та посилання
- Офіційний веб‑сайт клубу робототехніки Colorado School of Mines
- База коду AgBot 2019
- Стаття про AgBot у Purdue
- Стаття з візуальним підсумком Purdue
- Стаття DTN Progressive Farmer
- Обліковий запис AgBot у Twitter/X
- Офіційний веб‑сайт AgBot
- GitHub Зака
- GitHub Кевіна
- GitHub Тайлера
Фотогалерея
Команда AgBot у Майнс, Ми
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Наш робот AgBot
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Відео/GIFи
![]() |
![]() |
![]() |
![]() |
![]() |
Поля змагання
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Інші команди на змаганнях
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339 (2014‑2017)
![]() |
![]() |
Інші випадкові зображення
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |