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. У цьому змаганні було два основних виклики:

  1. Ідентифікація та знищення шкідників і бур’янів
  2. Створення нових методів збору врожаю за допомогою робототехніки

Наша команда вирішила зосередитися на першому виклику. Це був перший раз, коли 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.

Ресурси та посилання

Фотогалерея

Команда AgBot у Майнс, Ми

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