Lessons from Competing at the 2019 AgBot Challenge
East High School
During my time at East High School in Denver, Colorado (2014-2018), I was heavily involved in after-school activities, with the most impactful being the robotics club, AngelBotics. It wasn’t until my sophomore year that I joined, due to an initial focus on soccer. The club primarily participated in the FIRST Robotics Competition (FRC), allowing me to explore mechanical and electrical engineering, as well as programming. Through AngelBotics, I learned to use CAD tools, 3D printers, and other engineering equipment, gaining exposure to STEM concepts generally reserved for college students. Initially aspiring to be a Quantum Physicist, my experiences in AP Physics and robotics showed me that I was not that good at physics and in turn steered me away from a mechanical engineering path.
Instead, I found my niche in programming, which started with me writing Python code for my first Raspberry Pi and was solidified through Java projects in AP Computer Science. Despite struggling with exams, my teacher, Mr. Nagel, encouraged me to pursue software development, emphasizing the value of projects over test scores. This prompted me to focus on computer science as my degree in college with the dream of becoming a software engineer and eventually a founder for my career.
Although i was not that involved in AngelBotics due to my demanding coursework and the steep learning curve, it still sparked a lifelong passion for robotics. So when I started college, I was determined to join a college robotics club and one day build a company that solves real-world problems with robotics.
School of Mines
After graduating from East High School, I started my Bachelors in Computer Science at the Colorado School of Mines (2018-2022). During my very first semester, I checked out Mines robotics clubs and discovered a brand new robotics group called AgBot.
AgBot was a new robotics club formed with the goal to build a robot to compete in the 2019 agBots Weed and Feed Competition. This competition had two main challenges:
- Pest and Weed Identification and Eradication
- Creating New Harvest Methods Through Robotics
Our team chose to focus on the first challenge. It was Mines’ first time entering the agBot competition, and it was the first time a Mines robotics club had worked on anything agriculture related. That made the whole thing feel fresh.
I was immediately drawn to the project. My family were farmers in Turkey for generations, up until my dads generation. So AgBot felt close to home well tieing in my passion of robotics and programming. The idea of building a robot that might help farmers like my grandparents was really exciting.
Development
Being part of the AgBot team is one of my most memorable college experiences. It was also one of the hardest things I have worked up until that point. This project was the first time I really dove into Python, Ubuntu, and ROS. In FRC, everything was in Java, so this was all new territory for me. I had used Python and Ubuntu in the past, but I had never touched ROS. Learning how ROS worked was an uphill battle. I did not even know what a Python environment was back then.
I spent most of my time trying to get a Lidar to send usable data into a ROS node I was writing. My task was to implement a ROS Node called end_detector
that could detect when the robot reached the end of a crop row using Lidar data. It sounds simple now, but back then it felt huge.
It took me about two weeks of debugging to get the Lidar talking to my code. The entire code was written either in C++ or Python, mainly Python. So, my code was just Python for this job. Once that worked, I started testing the logic using random patches of plants I found on campus. I would roll the a stand holding the Lidar past them and see if the code could tell when we reached the end. After many hours and debugging, I eventually got everything working at least in my test environment. It was a different story when we tried to combine everything together.
My time was mostly spent getting the hardware and software talking to each other. The actual logic for detecting row ends came second. But it was a great learning experience. I went from barely understanding ROS to writing and debugging nodes on a Jetson board with live Lidar data. It was also during this time, I shifted from mainly defaulting to Java as my programming language to instead default to Python. And, as of 2025, I have yet to really use Java for any of my projects or work-related code bases.
Team and Tech Stack
We ran Ubuntu 16.04 with ROS Kinetic and Python 2.7 on a Nvidia Jetson TX2 that interfaced with a Hokuyo URG 04LX UG01 Lidar. We had Arduino(s) for sensor inputs like ultrasonic range finders. Our code handled perception, navigation, control, and spraying. You can see the repository here: GitHub Repo. The specific code I wrote can be found in end_detector.py. Here is the list of most of the components that made up the robot:
- 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.
We did not have a huge team, but a few names stand out:
Tyler was the leader and founder of the club. I respected him a lot then and still do today. Zachary was the lead of the software development for the club and helped teach me a lot about software development and ROS which I am grateful to this day for.
There were other members too, like Kevin Barnard and Amit Rotem. But I sadly do not remember the names and contacts of all the original members sense it’s been over 5 years sense the club wrapped up.
Most of the development of the robot happened during the weekends and late into the night after most of our classes wrapped up. Working on an engineering degree and AgBot was very taxing, but we willed though it.
The Trip and the Chaos
One part of this whole experience I will never forget was the trip itself. The competition was held in West Lafayette Indiana, close to Purdue University’s campus. And the whole competition took place right after finals week wrapped up at Mines, so we had no time to recover from that hell week.
We drove from Golden Colorado to Indiana using Tyler’s truck to also hall the robot and all of our tools. The funny thing though, is that we started the drive literally one day before the competition week. We packed up everything we had, the robot, the tools, the batteries, the computers, everything, and drove from Golden Colorado to West Lafayette Indiana. That is an 18 hour drive on paper. It took us closer to 20 or 22 hours with gas and restroom breaks.
Tyler drove the entire time, living off Coffee Monster drinks. Another teammate, sorry I forgot her name but she is in the photos, took over for him sometimes. Along the way, it started pouring rain. We had to pull over at a random closed gas station and grab a tarp to protect the robot. It was janky, it was chaos, it was college robotics. Somehow, we made it.
When we arrived, we setup our canopy on the field and setup all of our tools. I focused on finishing up the code and getting it to run. For most of the competition, we mainly worked on debugging our robot and getting it to work well also checking out the other teams cool robot builds.
So Did We Win?
No
Looking back, we were just a bunch of kids trying to build something that was way beyond our level of experience. The other teams were on a whole different level. Some were from startups. Some were from research labs. Some had full on academic support. We were a small group of undergrads pulling all nighters, hoping Python would turn Lidar data into something useful.
Our robot was flawed. It was janky. And honestly, it barely worked by the time we got to the competition. Many people on the team started dropping out when they realized we might not finish in time. Some did not even show up. Finals had ended, the robot was not ready, and morale was pretty low.
But a few of us stuck it out
I did not give up… Tyler did not give up… And the folks in the photo, they did not give up either!
Even though we did not win or even have a fully functional robot, I would not trade that experience for anything. I learned about ROS, hardware debugging, building systems under pressure, and I learned about loyalty. I realized how important it is to see things through.
Reflection, As Of 2025
After the 2019 season, AgBot closed down shop. This was mainly due to COVID kicking in a nearly 1 year later, causing all clubs at Mines to shut down for 1-2 years and by the time the world starting to get back to “normal” I graduated.
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.
Resources and Links
- Colorado School of Mines Robotics Clubs Main Website
- AgBot 2019 Code Base
- Purdue AgBot Article
- Purdue Visual Recap Article
- DTN Progressive Farmer Article
- AgBot’s Twitter/X Account
- AgBot’s Official Website
- Zach’s GitHub
- Kevin’s GitHub
- Tyler’s GitHub
Photo Gallery
Mine’s AgBot Team, Us
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Our AgBot Robot
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Videos/GIFs
![]() |
![]() |
![]() |
![]() |
![]() |
Competition’s Fields
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Other Teams At The Competitions
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339 (2014-2017)
![]() |
![]() |
Other Random Images
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |