2019 AgBot Challenge
Liceum East High School
Podczas mojego pobytu w East High School w Denver, w stanie Kolorado (2014–2018), byłem mocno zaangażowany w zajęcia pozalekcyjne, a najbardziej wpływowym z nich był klub robotyki, AngelBotics. Dopiero w drugiej klasie do niego dołączyłem, ponieważ na początku skupiałem się na piłce nożnej. Klub głównie brał udział w FIRST Robotics Competition (FRC), co pozwoliło mi zgłębiać inżynierię mechaniczną i elektryczną, a także programowanie. Dzięki AngelBotics nauczyłem się korzystać z narzędzi CAD, drukarek 3D i innego sprzętu inżynieryjnego, zdobywając kontakt z koncepcjami STEM zazwyczaj zarezerwowanymi dla studentów. Początkowo aspirowałem do bycia fizykiem kwantowym, lecz moje doświadczenia z AP Physics i robotyką pokazały mi, że nie jestem zbyt dobry z fizyki, i w rezultacie odciągnęły mnie od ścieżki inżynierii mechanicznej.
Zamiast tego odnalazłem swoją niszę w programowaniu, co zaczęło się od pisania przeze mnie kodu w Pythonie na mojego pierwszego Raspberry Pi i zostało ugruntowane przez projekty w Javie na AP Computer Science. Pomimo trudności z egzaminami, mój nauczyciel, pan Nagel, zachęcał mnie do podążania za tworzeniem oprogramowania, podkreślając wartość projektów ponad wyniki testów. To skłoniło mnie do skupienia się na informatyce jako kierunku studiów na uczelni, z marzeniem o zostaniu inżynierem oprogramowania, a ostatecznie założycielem, jako mojej ścieżki kariery.
Chociaż nie byłem zbyt mocno zaangażowany w AngelBotics z powodu wymagających zajęć i stromej krzywej uczenia się, klub i tak rozpalił we mnie życiową pasję do robotyki. Kiedy więc zacząłem studia, byłem zdeterminowany, aby dołączyć do uczelnianego klubu robotyki i pewnego dnia zbudować firmę, która rozwiązuje rzeczywiste problemy za pomocą robotyki.
School of Mines
Po ukończeniu East High School rozpocząłem studia licencjackie z informatyki na Colorado School of Mines (2018–2022). W trakcie mojego pierwszego semestru sprawdziłem kluby robotyki Mines i odkryłem zupełnie nową grupę robotyczną o nazwie AgBot.
AgBot był nowym klubem robotyki utworzonym z celem zbudowania robota do rywalizacji w 2019 agBots Weed and Feed Competition. Ten konkurs miał dwa główne wyzwania:
- Identyfikacja i eliminacja szkodników oraz chwastów
- Tworzenie nowych metod zbiorów poprzez robotykę
Nasz zespół zdecydował się skupić na pierwszym wyzwaniu. Był to pierwszy udział Mines w konkursie agBot i pierwszy raz, kiedy klub robotyki Mines pracował nad czymś związanym z rolnictwem. To sprawiło, że całe przedsięwzięcie było świeże.
Od razu przyciągnął mnie ten projekt. Moja rodzina przez pokolenia była rolnikami w Turcji, aż do pokolenia mojego taty. Dlatego AgBot wydawał się bliski mojemu sercu, jednocześnie łącząc moją pasję do robotyki i programowania. Pomysł zbudowania robota, który mógłby pomóc rolnikom takim jak moi dziadkowie, był naprawdę ekscytujący.
Rozwój
Bycie częścią zespołu AgBot to jedno z moich najbardziej niezapomnianych doświadczeń ze studiów. Było to także jedno z najtrudniejszych rzeczy, nad którymi pracowałem do tamtego momentu. Ten projekt był pierwszym razem, kiedy naprawdę zagłębiłem się w Pythona, Ubuntu i ROS. W FRC wszystko było w Javie, więc to wszystko było dla mnie nowym terenem. W przeszłości używałem Pythona i Ubuntu, ale nigdy wcześniej nie miałem do czynienia z ROS. Nauka działania ROS była walką pod górę. Nawet nie wiedziałem wtedy, czym jest środowisko Pythona.
Większość czasu spędziłem, próbując sprawić, by Lidar wysyłał użyteczne dane do węzła ROS, który pisałem. Moim zadaniem było zaimplementowanie węzła ROS o nazwie end_detector, który mógł wykrywać, kiedy robot dotarł do końca rzędu upraw, używając danych z Lidara. Teraz brzmi to prosto, ale wtedy wydawało się ogromne.
Zajęło mi około dwóch tygodni debugowania, aby Lidar zaczął komunikować się z moim kodem. Cały kod był napisany albo w C++, albo w Pythonie, głównie w Pythonie. Tak więc mój kod do tego zadania był po prostu w Pythonie. Gdy to zadziałało, zacząłem testować logikę, używając losowych kęp roślin, które znajdowałem na kampusie. Przejeżdżałem stojakiem trzymającym Lidar obok nich i sprawdzałem, czy kod potrafi stwierdzić, kiedy dotarliśmy do końca. Po wielu godzinach i debugowaniu ostatecznie udało mi się sprawić, że wszystko działało przynajmniej w moim środowisku testowym. Gdy próbowaliśmy połączyć wszystko razem, sytuacja wyglądała już inaczej.
Najwięcej czasu spędziłem na sprawianiu, by sprzęt i oprogramowanie ze sobą współpracowały. Sama logika wykrywania końców rzędów była drugorzędna. Ale było to świetne doświadczenie edukacyjne. Przeszedłem drogę od ledwo rozumiejącego ROS do pisania i debugowania węzłów na płycie Jetson z danymi z Lidara na żywo. W tym okresie zacząłem też przechodzić od głównie domyślnego używania Javy jako języka programowania do domyślnego używania Pythona. I według stanu na 2025 rok, jeszcze nie użyłem naprawdę Javy w żadnym z moich projektów ani w kodzie związanym z pracą.
Zespół i stos technologiczny
Używaliśmy Ubuntu 16.04 z ROS Kinetic i Pythonem 2.7 na Nvidia Jetson TX2, który współpracował z Hokuyo URG 04LX UG01 Lidar. Mieliśmy Arduino do wejść z czujników, takich jak ultradźwiękowe czujniki odległości. Nasz kod obsługiwał percepcję, nawigację, sterowanie i opryskiwanie. Repozytorium można zobaczyć tutaj: GitHub Repo. Konkretne napisałem kod można znaleźć w end_detector.py. Oto lista większości komponentów, z których składał się robot:
- Ubuntu 16.04 Xenial
- ROS Kinetic Kame
- Python 2.7
- Nvidia Jetson TX2
- Hokuyo URG-04LX-UG01 Lidar
- Arduino Uno & Mega
- Silniki prądu stałego, enkodery, kontrolery silników, akumulator itp.
Nie mieliśmy ogromnego zespołu, ale kilka nazwisk się wyróżnia:
Tyler był liderem i założycielem klubu. Szanuję go bardzo wtedy i nadal robię to dziś. Zachary był liderem rozwoju oprogramowania dla klubu i pomógł mi nauczyć się bardzo wiele o tworzeniu oprogramowania i ROS, za co jestem wdzięczny do dziś.
Byli też inni członkowie, jak Kevin Barnard i Amit Rotem. Ale niestety nie pamiętam nazwisk i kontaktów wszystkich pierwotnych członków, bo minęło już ponad 5 lat od zakończenia działalności klubu.
Większość prac nad robotem odbywała się w weekendy i do późna w nocy, po tym jak większość naszych zajęć się kończyła. Praca nad dyplomem inżynierskim i AgBot była bardzo wyczerpująca, ale daliśmy radę.
Podróż i chaos
Jedną z części całego tego doświadczenia, której nigdy nie zapomnę, była sama podróż. Konkurs odbywał się w West Lafayette w stanie Indiana, niedaleko kampusu Purdue University. A cały konkurs odbywał się zaraz po zakończeniu tygodnia egzaminów końcowych na Mines, więc nie mieliśmy czasu, by dojść do siebie po tym piekielnym tygodniu.
Pojechaliśmy z Golden w Kolorado do Indiany ciężarówką Tylera, aby jednocześnie przewieźć robota i wszystkie nasze narzędzia. Śmieszne jest jednak to, że ruszyliśmy dosłownie dzień przed tygodniem konkursowym. Spakowaliśmy wszystko, co mieliśmy: robota, narzędzia, baterie, komputery, wszystko, i pojechaliśmy z Golden w Kolorado do West Lafayette w Indianie. Na papierze to 18-godzinna jazda. Z postojami na paliwo i do toalety zajęło nam bliżej 20 albo 22 godzin.
Tyler prowadził przez cały czas, żyjąc napojami Coffee Monster. Inny członek zespołu, przepraszam, zapomniałem jej imienia, ale jest na zdjęciach, czasami go zastępował. Po drodze zaczęło lać jak z cebra. Musieliśmy zjechać na losową zamkniętą stację benzynową i wziąć plandekę, żeby chronić robota. To było prowizoryczne, to był chaos, to była studencka robotyka. Jakimś cudem dotarliśmy.
Kiedy przyjechaliśmy, rozstawiliśmy nasz namiot na polu i rozłożyliśmy wszystkie narzędzia. Skupiłem się na dopracowaniu kodu i uruchomieniu go. Przez większość konkursu głównie debugowaliśmy naszego robota i staraliśmy się, by dobrze działał, a także oglądaliśmy fajne konstrukcje robotów innych drużyn.
Czy więc wygraliśmy?
Nie
Patrząc wstecz, byliśmy po prostu grupą dzieciaków próbujących zbudować coś, co znacznie wykraczało poza nasz poziom doświadczenia. Inne zespoły były na zupełnie innym poziomie. Niektóre pochodziły ze startupów. Niektóre z laboratoriów badawczych. Niektóre miały pełne wsparcie akademickie. My byliśmy małą grupą studentów pracujących po nocach, mających nadzieję, że Python zamieni dane z Lidara w coś użytecznego.
Nasz robot był wadliwy. Był prowizoryczny. I szczerze mówiąc, ledwo działał, gdy dotarliśmy na konkurs. Wielu ludzi w zespole zaczęło się wycofywać, gdy zorientowali się, że możemy nie zdążyć na czas. Niektórzy nawet się nie pojawili. Egzaminy się skończyły, robot nie był gotowy, a morale było dość niskie.
Ale kilku z nas wytrwało
Ja się nie poddałem… Tyler się nie poddał… I ludzie na zdjęciu też się nie poddali!
Chociaż nie wygraliśmy ani nawet nie mieliśmy w pełni funkcjonalnego robota, nie zamieniłbym tego doświadczenia na nic innego. Nauczyłem się o ROS, debugowaniu sprzętu, budowaniu systemów pod presją i nauczyłem się o lojalności. Zrozumiałem, jak ważne jest doprowadzanie spraw do końca.
Refleksja na rok 2025
Po sezonie 2019 AgBot zakończył działalność. Wynikało to głównie z tego, że COVID pojawił się niemal rok później, powodując, że wszystkie kluby na Mines zostały zamknięte na 1–2 lata, a do czasu, gdy świat zaczął wracać do „normalności”, ukończyłem studia.
To jest teraz rok 2025 i patrząc wstecz na AgBota, widzę go jako początek wszystkiego dla mnie. Dał mi moje pierwsze prawdziwe doświadczenie z robotyką i nauczył mnie, jak współpracować z zespołem technicznym. Postawił mnie na ścieżce, która doprowadziła mnie do niesamowitych możliwości.
Od tamtej pory pracowałem jako inżynier backendu w eBay, wdrażając usługi, które przetwarzają miliony metryk w różnych centrach danych. Założyłem mój pierwszy startup, który skupiał się na budowaniu automatycznego testowania penetracyjnego cyberbezpieczeństwa z wykorzystaniem AI. Uruchomiłem Notify Cyber, które osiągnęło dziesiątki tysięcy odwiedzających. Pisałem oprogramowanie dla Docker, Kubernetes, Postgres i zaawansowanej infrastruktury AI.
Ale AgBot nadal wyróżnia się jako jedno z najlepszych doświadczeń w moim życiu. Było chaotycznie, stresująco i czasami wydawało się niemożliwe, ale nauczyło mnie więcej niż kiedykolwiek mogłyby nauczyć jakiekolwiek zajęcia czy samouczek. Nauczyłem się, że nawet jeśli nie masz idealnego planu, wystarczającego finansowania ani najlepszego sprzętu, nadal możesz coś zbudować, nauczyć się mnóstwa rzeczy i po drodze poznać niesamowitych ludzi.
Wszystkim z zespołu AgBot z 2019 roku dziękuję. Za tę podróż samochodową w 2019 roku, za plandekę, którą zabraliśmy z zamkniętej stacji benzynowej, i za nieprzespane noce — dziękuję. Daliście mi hart ducha, by z pewnością siebie realizować duże projekty, bez względu na to, jak niemożliwe się wydają.
Zasoby i linki
- Główna strona internetowa klubów robotyki Colorado School of Mines
- Kod AgBot 2019
- Artykuł o Purdue AgBot
- Artykuł z wizualnym podsumowaniem Purdue
- Artykuł DTN Progressive Farmer
- Konto AgBota na Twitterze/X
- Oficjalna strona internetowa AgBota
- GitHub Zacha
- GitHub Kevina
- GitHub Tylera
Galeria zdjęć
Zespół AgBota z Mine, my
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Nasz robot AgBot
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Wideo/GIF-y
Pola konkurencji
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Inne zespoły na zawodach
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339 (2014-2017)
![]() |
![]() |
Inne losowe obrazy
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |































































