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 participó principalmente en la Competencia de Robótica FIRST (FRC), lo que me permitió explorar la ingeniería mecánica y eléctrica, así como la programación. A través de AngelBotics, aprendí a usar herramientas CAD, impresoras 3D y otros equipos de ingeniería, ganando exposición a conceptos STEM generalmente reservados para estudiantes universitarios. Inicialmente aspirando a ser físico cuántico, 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 un camino en ingeniería mecánica.
En cambio, encontré mi nicho en la programación, que comenzó con escribir código en Python para mi primera Raspberry Pi y se consolidó a través de proyectos en Java en AP Ciencias de la Computación. A pesar de tener dificultades con los exámenes, mi profesor, el Sr. Nagel, me animó a seguir el desarrollo de software, enfatizando el valor de los proyectos sobre las calificaciones de los exámenes. Esto me llevó a centrarme en la informática como mi carrera en la universidad con el sueño de convertirme en ingeniero de software y eventualmente fundador en mi carrera.
Aunque no estuve tan involucrado en AngelBotics debido a mi exigente carga de trabajo y la empinada curva de aprendizaje, aún así despertó una pasión de por vida por la robótica. Así que cuando comencé la universidad, estaba decidido a unirme a un club de robótica universitario y algún día construir una empresa que resolviera 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 Escuela de Minas de Colorado (2018-2022). Durante mi primer semestre, revisé los clubes de robótica de Mines y descubrí un nuevo grupo de robótica llamado AgBot.
AgBot era un nuevo club de robótica formado con el objetivo de construir un robot para competir en la Competencia de 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 a Través de la Robótica
Nuestro equipo eligió centrarse en el primer desafío. Era la primera vez que Mines participaba en la competencia de 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 fresco.
Me sentí inmediatamente atraído por el proyecto. Mi familia fue agricultora en Turquía durante generaciones, hasta la generación de mi padre. Así que AgBot se sentía cercano a casa, uniendo 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 he trabajado hasta ese momento. Este proyecto fue la primera vez que realmente me sumergí en Python, Ubuntu y ROS. En FRC, todo estaba en Java, así que este era un territorio completamente nuevo para mí. Había usado Python y Ubuntu en el pasado, 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 hacer que un Lidar enviara datos utilizables a un nodo ROS que estaba escribiendo. Mi tarea era implementar un Nodo ROS llamado end_detector que pudiera detectar cuándo el robot alcanzaba el final de una fila de cultivos utilizando datos de Lidar. Suena simple ahora, pero en ese momento se sentía enorme.
Me tomó alrededor de dos semanas de depuración hacer que el Lidar hablara con mi código. Todo el código estaba escrito en C++ o Python, principalmente Python. Así que, mi código era solo Python para este trabajo. Una vez que eso funcionó, comencé a probar la lógica usando parches aleatorios de plantas que encontré en el campus. Rodaría un soporte que sostenía el Lidar junto a ellas y vería si el código podía decir cuándo llegamos al final. Después de muchas horas y depuración, finalmente logré que todo funcionara al menos en mi entorno de prueba. Era una historia diferente cuando intentamos combinar todo.
La mayor parte de mi tiempo se dedicó a hacer que el hardware y el software se comunicaran entre sí. La lógica real para detectar los finales de las filas vino en segundo lugar. Pero fue una gran experiencia de aprendizaje. Pasé de apenas entender 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 en su lugar usar Python. Y, a partir de 2025, aún no he utilizado realmente Java para ninguno de mis proyectos o bases de código relacionadas con el trabajo.
Equipo y Stack Tecnológico
Ejecutamos Ubuntu 16.04 con ROS Kinetic y Python 2.7 en un Nvidia Jetson TX2 que se comunicaba con un Lidar Hokuyo URG 04LX UG01. Teníamos Arduino(s) para entradas de sensores como 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 conformaron 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, Encoders, Controladores de Motores, Batería, etc.
No teníamos un gran equipo, pero algunos nombres destacan:
Tyler era el líder y fundador del club. Lo respetaba mucho entonces y todavía lo hago hoy. Zachary era el líder del desarrollo de software del club y me ayudó a aprender mucho sobre desarrollo de software y ROS, por lo que 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 y 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 tarde en la noche después de que la mayoría de nuestras clases terminaran. Trabajar en un título de ingeniería y en AgBot fue muy agotador, pero lo logramos.
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 de Purdue. Y toda la competencia tuvo lugar justo después de que terminó la semana de exámenes en Mines, así que no tuvimos tiempo para recuperarnos de esa semana infernal.
Condujimos desde Golden, Colorado, hasta Indiana usando la camioneta de Tyler para también transportar el robot y todas nuestras herramientas. Lo curioso 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 condujimos desde Golden, Colorado, hasta West Lafayette, Indiana. Eso es un viaje de 18 horas en papel. Nos tomó más cerca de 20 o 22 horas con paradas para gasolina y baño.
Tyler condujo todo el tiempo, viviendo de bebidas Coffee Monster. Otro compañero de equipo, lo siento, olvidé su nombre pero está en las fotos, a veces tomaba el relevo. En el camino, comenzó a llover a cántaros. Tuvimos que detenernos en una gasolinera cerrada al azar y agarrar una lona para proteger el robot. Fue desastroso, fue un caos, fue robótica universitaria. De alguna manera, lo logramos.
Cuando llegamos, montamos nuestro toldo en el campo y organizamos todas nuestras herramientas. Me concentré en terminar el código y hacerlo funcionar. Durante la mayor parte de la competencia, trabajamos principalmente en depurar nuestro robot y hacerlo funcionar bien, además de revisar las geniales construcciones de robots de otros equipos.
¿Entonces, Ganamos?
No
Mirando hacia atrás, éramos solo un grupo de chicos tratando de construir algo que estaba muy por encima de nuestro nivel de experiencia. Los otros equipos estaban en un nivel completamente diferente. Algunos eran de startups. Algunos eran de laboratorios de investigación. Algunos tenían apoyo académico completo. Éramos un pequeño grupo de estudiantes de pregrado que pasaban noches en vela, esperando que Python convirtiera los datos de Lidar en algo útil.
Nuestro robot tenía fallas. Era desastroso. Y, honestamente, apenas funcionó para cuando llegamos a la competencia. Muchas personas en el equipo comenzaron a abandonar cuando se dieron cuenta de que podríamos no terminar a tiempo. Algunos ni siquiera se presentaron. Los exámenes habían terminado, el robot no estaba listo y la moral estaba bastante baja.
Pero algunos de nosotros nos mantuvimos firmes.
No me rendí… Tyler no se rindió… ¡Y la gente en la foto tampoco se rindió!
A pesar de que 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ó. Esto se debió principalmente a que COVID comenzó casi un año después, causando que todos los clubes en Mines se cerraran durante 1-2 años y para cuando el mundo comenzó a volver a la “normalidad”, me gradué.
Ahora es 2025, y al mirar hacia atrás en 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 a través de centros de datos. Fundé mi primera startup que se centró en construir pruebas de penetración de ciberseguridad automatizadas con IA. Lanzé Notify Cyber, que alcanzó decenas de miles de visitantes. He escrito software para Docker, Kubernetes, Postgres e infraestructura avanzada de IA.
Pero AgBot sigue destacándose como una de las mejores experiencias de mi vida. Fue caótico, estresante y a veces parecía imposible, pero me enseñó más de lo que cualquier clase o tutorial podría haber hecho. Aprendí que incluso si no tienes el plan perfecto o suficiente financiamiento o el mejor hardware, aún puedes construir algo, aprender un montón y conocer personas increíbles en el camino.
A todos los de el equipo de AgBot 2019, gracias. A ese viaje por carretera de 2019, la lona que agarramos en una gasolinera cerrada y las noches sin dormir, gracias. Me diste la determinación para perseguir grandes proyectos con confianza, sin importar cuán imposibles parezcan.
Recursos y Enlaces
- Sitio Web Principal de los Clubes de Robótica de la Escuela de Minas de Colorado
- Base de Código de AgBot 2019
- Artículo de AgBot de Purdue
- Artículo de Recapitulación 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 Mines, Nosotros
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Nuestro Robot AgBot
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Videos/GIFs
![]() |
![]() |
![]() |
![]() |
![]() |
Campos de la Competencia
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Otros Equipos en las Competencias
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339 (2014-2017)
![]() |
![]() |
Otras Imágenes Aleatorias
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |




































































