Desafío AgBot 2019
Escuela Secundaria East
Durante mi tiempo en la Escuela Secundaria East en Denver, Colorado (2014-2018), estuve muy involucrado en actividades extracurriculares, siendo la más impactante el club de robótica, AngelBotics. No fue hasta mi segundo año que me uní, debido a un enfoque inicial en el fútbol. El club participaba principalmente en la Competencia de Robótica FIRST (FRC), permitiéndome explorar ingeniería mecánica y eléctrica, así como programación. A través de AngelBotics, aprendí a usar herramientas CAD, impresoras 3D y otros equipos de ingeniería, obteniendo exposición a conceptos STEM generalmente reservados para estudiantes universitarios. Inicialmente aspiraba a ser Físico Cuántico, pero mis experiencias en Física AP y robótica me mostraron que no era tan bueno en física y, a su vez, me alejaron de una trayectoria en ingeniería mecánica.
En cambio, encontré mi nicho en la programación, que comenzó escribiendo código Python para mi primera Raspberry Pi y se consolidó a través de proyectos en Java en AP Computer Science. A pesar de tener dificultades con los exámenes, mi profesor, el Sr. Nagel, me animó a perseguir el desarrollo de software, enfatizando el valor de los proyectos por encima de las calificaciones en los exámenes. Esto me llevó a centrarme en ciencias de la computación como mi carrera en la universidad con el sueño de convertirme en ingeniero de software y eventualmente en fundador para mi carrera.
Aunque no estuve tan involucrado en AngelBotics debido a mi exigente carga académica y a la pronunciada curva de aprendizaje, aun así despertó en mí una pasión de por vida por la robótica. Así que cuando empecé la universidad, estaba decidido a unirme a un club de robótica universitario y algún día construir una empresa que resuelva problemas del mundo real con robótica.
Escuela de Minas
Después de graduarme de la Escuela Secundaria East, comencé mi licenciatura en Ciencias de la Computación en la Colorado School of Mines (2018-2022). Durante mi primer semestre, revisé los clubes de robótica de Mines y descubrí un grupo de robótica completamente nuevo llamado AgBot.
AgBot era un nuevo club de robótica formado con el objetivo de construir un robot para competir en la Competencia agBots Weed and Feed 2019. Esta competencia tenía dos desafíos principales:
- Identificación y erradicación de plagas y malezas
- Creación de nuevos métodos de cosecha mediante robótica
Nuestro equipo decidió enfocarse en el primer desafío. Era la primera vez que Mines participaba en la competencia agBot, y era la primera vez que un club de robótica de Mines trabajaba en algo relacionado con la agricultura. Eso hizo que todo se sintiera novedoso.
Me atrajo inmediatamente el proyecto. Mi familia fue agricultora en Turquía durante generaciones, hasta la generación de mi padre. Así que AgBot se sintió cercano a casa, al mismo tiempo que unía mi pasión por la robótica y la programación. La idea de construir un robot que pudiera ayudar a agricultores como mis abuelos era realmente emocionante.
Desarrollo
Ser parte del equipo de AgBot es una de mis experiencias universitarias más memorables. También fue una de las cosas más difíciles en las que había trabajado hasta ese momento. Este proyecto fue la primera vez que realmente me adentré en Python, Ubuntu y ROS. En FRC, todo estaba en Java, así que esto era territorio completamente nuevo para mí. Había usado Python y Ubuntu antes, pero nunca había tocado ROS. Aprender cómo funcionaba ROS fue una batalla cuesta arriba. Ni siquiera sabía qué era un entorno de Python en ese entonces.
Pasé la mayor parte de mi tiempo tratando de lograr que un Lidar enviara datos utilizables a un nodo de ROS que estaba escribiendo. Mi tarea era implementar un Nodo ROS llamado end_detector que pudiera detectar cuándo el robot llegaba al final de una hilera de cultivo usando datos de Lidar. Ahora suena simple, pero en ese momento me parecía enorme.
Me tomó alrededor de dos semanas de depuración lograr que el Lidar hablara con mi código. Todo el código estaba escrito ya sea en C++ o en Python, principalmente en Python. Así que mi código para este trabajo era solo Python. Una vez que eso funcionó, comencé a probar la lógica usando parches aleatorios de plantas que encontré en el campus. Haría pasar el soporte que sostenía el Lidar frente a ellos y vería si el código podía decir cuándo llegábamos al final. Después de muchas horas y depuración, eventualmente logré que todo funcionara al menos en mi entorno de prueba. Era otra historia cuando intentamos combinar todo.
La mayor parte de mi tiempo se dedicó a lograr que el hardware y el software se comunicaran entre sí. La lógica real para detectar los finales de hilera vino después. Pero fue una gran experiencia de aprendizaje. Pasé de entender apenas ROS a escribir y depurar nodos en una placa Jetson con datos de Lidar en vivo. También fue durante este tiempo que cambié de usar principalmente Java como mi lenguaje de programación a usar Python por defecto. Y, a partir de 2025, todavía no he usado realmente Java para ninguno de mis proyectos o bases de código relacionadas con el trabajo.
Equipo y pila tecnológica
Ejecutábamos Ubuntu 16.04 con ROS Kinetic y Python 2.7 en una Nvidia Jetson TX2 que se interfaciaba con un Lidar Hokuyo URG 04LX UG01. Teníamos Arduino(s) para entradas de sensores como los medidores de distancia ultrasónicos. Nuestro código manejaba percepción, navegación, control y rociado. Puedes ver el repositorio aquí: Repositorio de GitHub. El código específico que escribí se puede encontrar en end_detector.py. Aquí está la lista de la mayoría de los componentes que conformaban el robot:
- Ubuntu 16.04 Xenial
- ROS Kinetic Kame
- Python 2.7
- Nvidia Jetson TX2
- Lidar Hokuyo URG-04LX-UG01
- Arduino Uno y Mega
- Motores de CC, codificadores, controladores de motor, batería, etc.
No teníamos un equipo enorme, pero destacan algunos nombres:
Tyler fue el líder y fundador del club. Lo respetaba mucho entonces y todavía lo hago hoy. Zachary fue el responsable del desarrollo de software del club y me ayudó a aprender mucho sobre desarrollo de software y ROS, por lo cual le estoy agradecido hasta el día de hoy.
También había otros miembros, como Kevin Barnard y Amit Rotem. Pero lamentablemente no recuerdo los nombres ni los contactos de todos los miembros originales, ya que han pasado más de 5 años desde que el club terminó.
La mayor parte del desarrollo del robot ocurrió durante los fines de semana y hasta altas horas de la noche después de que terminaban la mayoría de nuestras clases. Trabajar en una carrera de ingeniería y en AgBot fue muy exigente, pero perseveramos.
El viaje y el caos
Una parte de toda esta experiencia que nunca olvidaré fue el viaje en sí. La competencia se llevó a cabo en West Lafayette, Indiana, cerca del campus de la Universidad Purdue. Y toda la competencia tuvo lugar justo después de que terminara la semana de finales en Mines, así que no tuvimos tiempo de recuperarnos de esa semana infernal.
Manejamos desde Golden, Colorado, hasta Indiana usando la camioneta de Tyler para también transportar el robot y todas nuestras herramientas. Lo gracioso es que comenzamos el viaje literalmente un día antes de la semana de la competencia. Empacamos todo lo que teníamos, el robot, las herramientas, las baterías, las computadoras, todo, y manejamos desde Golden, Colorado, hasta West Lafayette, Indiana. Eso son 18 horas de viaje sobre el papel. Nos tomó más bien 20 o 22 horas con paradas para gasolina y baño.
Tyler manejó todo el tiempo, sobreviviendo con bebidas Coffee Monster. Otra compañera de equipo, perdón, olvidé su nombre pero está en las fotos, lo reemplazó a veces. En el camino, empezó a llover a cántaros. Tuvimos que orillarnos en una estación de servicio cerrada al azar y agarrar una lona para proteger el robot. Fue improvisado, fue caos, fue robótica universitaria. De alguna manera, llegamos.
Cuando llegamos, instalamos nuestra carpa en el campo y colocamos todas nuestras herramientas. Yo me enfoqué en terminar el código y hacerlo funcionar. Durante la mayor parte de la competencia, principalmente trabajamos en depurar nuestro robot y lograr que funcionara bien, además de revisar los robots geniales de los otros equipos.
¿Entonces ganamos?
No
Mirándolo en retrospectiva, éramos solo un grupo de jóvenes tratando de construir algo que estaba muy por encima de nuestro nivel de experiencia. Los otros equipos estaban en un nivel completamente diferente. Algunos venían de startups. Algunos de laboratorios de investigación. Algunos tenían apoyo académico completo. Éramos un grupo pequeño de estudiantes universitarios pasando noches en vela, con la esperanza de que Python convirtiera los datos de Lidar en algo útil.
Nuestro robot tenía fallas. Era improvisado. Y, honestamente, apenas funcionaba cuando llegamos a la competencia. Muchas personas del equipo comenzaron a abandonar cuando se dieron cuenta de que tal vez no terminaríamos a tiempo. Algunos ni siquiera aparecieron. Los finales habían terminado, el robot no estaba listo y la moral era bastante baja.
Pero algunos nos mantuvimos firmes
No me rendí… Tyler no se rindió… ¡Y la gente de la foto tampoco se rindió!
Aunque no ganamos ni siquiera tuvimos un robot completamente funcional, no cambiaría esa experiencia por nada. Aprendí sobre ROS, depuración de hardware, construcción de sistemas bajo presión, y aprendí sobre lealtad. Me di cuenta de lo importante que es llevar las cosas hasta el final.
Reflexión, a partir de 2025
Después de la temporada 2019, AgBot cerró sus operaciones. Esto se debió principalmente a que la COVID llegó casi un año después, lo que hizo que todos los clubes de Mines se cerraran durante 1-2 años y, para cuando el mundo empezó a volver a la “normalidad”, yo me gradué.
Ahora es 2025, y al mirar atrás a AgBot, lo veo como el comienzo de todo para mí. Me dio mi primera experiencia real con la robótica y me enseñó cómo colaborar con un equipo técnico. Me puso en un camino que me ha llevado a oportunidades increíbles.
Desde entonces, he trabajado como ingeniero de backend en eBay, implementando servicios que ingieren millones de métricas en todos los centros de datos. Fundé mi primera startup, que se centró en construir pruebas de penetración de ciberseguridad automatizadas por IA. Lancé Notify Cyber, que alcanzó decenas de miles de visitantes. He escrito software para Docker, Kubernetes, Postgres e infraestructura avanzada de IA.
Pero AgBot sigue destacando como una de las mejores experiencias de mi vida. Fue caótico, estresante y a veces parecía imposible, pero me enseñó más que cualquier clase o tutorial jamás podría. Aprendí que incluso si no tienes el plan perfecto, ni suficiente financiación, ni el mejor hardware, aun así puedes construir algo, aprender muchísimo y conocer a personas increíbles en el camino.
A todos los del equipo de AgBot de 2019, gracias. A ese viaje por carretera de 2019, a la lona que tomamos en una gasolinera cerrada y a las noches sin dormir, gracias. Me dieron la fortaleza para perseguir proyectos grandes con confianza, sin importar lo imposibles que parezcan.
Recursos y Enlaces
- Sitio web principal de los clubes de robótica de la Colorado School of Mines
- Base de código de AgBot 2019
- Artículo de AgBot de Purdue
- Artículo de resumen visual de Purdue
- Artículo de DTN Progressive Farmer
- Cuenta de Twitter/X de AgBot
- Sitio web oficial de AgBot
- GitHub de Zach
- GitHub de Kevin
- GitHub de Tyler
Galería de Fotos
Equipo de AgBot de Mine, Nosotros
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Nuestro robot AgBot
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Videos/GIFs
Campos de la competencia
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Otros equipos en las competencias
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339 (2014-2017)
![]() |
![]() |
Otras imágenes aleatorias
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |































































