Desafío AgBot 2019

Escuela Secundaria East

Durante mi tiempo en Escuela Secundaria East en Denver, Colorado (2014-2018), participé activamente en actividades extracurriculares, siendo la más impactante el club de robótica, AngelBotics. No fue hasta mi segundo año de secundaria que me uní, debido a un enfoque inicial en el fútbol. El club participaba 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, obteniendo exposición a conceptos STEM generalmente reservados para estudiantes universitarios. Inicialmente aspiraba a ser físico cuántico, pero mis experiencias en AP Physics y robótica me mostraron que no era tan bueno en física y me alejaron de una trayectoria en ingeniería mecánica.

En su lugar, encontré mi nicho en la programación, que comenzó con la escritura de código Python para mi primer Raspberry Pi y se consolidó mediante proyectos en Java en AP Computer Science. A pesar de tener dificultades con los exámenes, mi profesor, Sr. Nagel, me animó a seguir el desarrollo de software, enfatizando el valor de los proyectos sobre las notas de los exámenes. Esto me impulsó a enfocarme en la informática como mi carrera universitaria con el sueño de convertirme en ingeniero de software y eventualmente en fundador de mi carrera.

Aunque no estaba muy involucrado en AngelBotics debido a la carga académica y la curva de aprendizaje, todavía 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 crear 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 Colorado School of Mines (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 creado 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:

  1. Identificación y erradicación de plagas y malezas
  2. Creación de nuevos métodos de cosecha mediante robótica

Nuestro equipo decidió enfocarse en el primer desafío. Fue la primera vez que Mines participaba en la competencia AgBot, y 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 atrajo inmediatamente 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, combinando 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 muy emocionante.

Desarrollo

Ser parte del equipo 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 sumergí en Python, Ubuntu y ROS. En FRC todo estaba en Java, así que esto era territorio 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 del tiempo intentando 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 cuando el robot llegaba al final de una fila de cultivos usando datos del Lidar. Suena simple ahora, pero entonces parecía enorme.

Me tomó unas dos semanas de depuración lograr 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 funcionó, comencé a probar la lógica con parches aleatorios de plantas que encontré en el campus. Pasaba el soporte con el Lidar por encima de ellas y veía si el código podía decir cuándo llegábamos al final. Después de muchas horas y depuración, finalmente logré que todo funcionara al menos en mi entorno de pruebas. Fue otra historia cuando intentamos combinar todo.

Mi tiempo se dedicó principalmente a hacer que el hardware y el software se comunicaran. La lógica real para detectar el final de la fila 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 tiempo real. También fue durante este tiempo que cambié de usar principalmente Java a preferir Python. Y, a partir de 2025, aún no he usado Java en ninguno de mis proyectos o bases de código relacionadas con el trabajo.

Equipo y Tecnologías

Usamos Ubuntu 16.04 con ROS Kinetic y Python 2.7 en un Nvidia Jetson TX2 que se conectaba a un Hokuyo URG 04LX UG01 Lidar. Teníamos Arduino(s) para sensores como medidores de distancia ultrasónicos. Nuestro código manejaba percepción, navegación, control y pulverización. Puedes ver el repositorio aquí: Repositorio de GitHub. El código específico que escribí está en end_detector.py. Aquí está la lista de la mayoría de los componentes que formaron el robot:

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Hokuyo URG-04LX-UG01 Lidar
  • Arduino Uno & Mega
  • Motores DC, codificadores, controladores de motor, batería, etc.

No teníamos un equipo grande, pero algunos nombres destacan:

Tyler era el líder y fundador del club. Lo respetaba mucho entonces y todavía hoy. Zachary lideraba el desarrollo de software del club y me enseñó mucho sobre desarrollo de software y ROS, por lo que le estoy agradecido hasta 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 se cerró.

La mayor parte del desarrollo del robot ocurrió los fines de semana y hasta altas horas de la noche después de que la mayoría de nuestras clases terminaran. Trabajar en una carrera 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 realizó en West Lafayette, Indiana, cerca del campus de Purdue University. Y la competencia tuvo lugar justo después de la semana de finales en Mines, así que no tuvimos tiempo para recuperarnos de esa semana de infierno.

Condujimos desde Golden, Colorado, a Indiana usando la camioneta de Tyler para transportar el robot y todas nuestras herramientas. Lo curioso es que empezamos 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, los computadores, todo, y condujimos de Golden a West Lafayette. Eso son 18 horas en papel, pero nos tomó cerca de 20 a 22 horas con paradas para gasolina y baños.

Tyler condujo todo el tiempo, alimentándose de bebidas Coffee Monster. Otra compañera, cuyo nombre olvidé pero aparece en las fotos, lo reemplazó a veces. En el camino empezó a llover a cántaros. Tuvimos que detenernos en una gasolinera cerrada y agarrar una lona para proteger el robot. Fue improvisado, caótico, y típico de la robótica universitaria. De alguna manera lo logramos.

Al llegar, instalamos nuestro toldo en el campo y organizamos nuestras herramientas. Yo me concentré en terminar el código y hacerlo funcionar. Durante la mayor parte de la competencia, trabajamos principalmente en depurar nuestro robot y en observar los impresionantes robots de los otros equipos.

¿Ganamos?

No

Al mirar atrás, éramos solo un grupo de niños intentando construir algo que estaba muy por encima de nuestro nivel de experiencia. Los otros equipos estaban en otro nivel. Algunos eran de startups. Otros eran de laboratorios de investigación. Algunos tenían apoyo académico completo. Nosotros éramos un pequeño grupo de estudiantes de pregrado trabajando toda la noche, esperando que Python convirtiera los datos del Lidar en algo útil.

Nuestro robot tenía fallas. Era improvisado. Y honestamente, apenas funcionaba cuando llegamos a la competencia. Muchos del equipo empezaron a abandonar cuando se dieron cuenta de que quizás no terminaríamos a tiempo. Algunos ni siquiera aparecieron. Los exámenes finales habían terminado, el robot no estaba listo y la moral estaba baja.

Pero algunos de nosotros nos quedamos.

Yo no me rendí… Tyler no se rindió… ¡Y las personas en la foto tampoco se rindieron!

Aunque no ganamos ni tuvimos un robot totalmente 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 terminar lo que se empieza.

Reflexión, a partir de 2025

Después de la temporada 2019, AgBot cerró. Esto se debió principalmente a la pandemia de COVID, que comenzó casi un año después, provocando que todos los clubes de Mines cerraran por 1-2 años y, cuando el mundo empezó a volver a la “normalidad”, me gradué.

Ahora es 2025, y al mirar atrás, veo a AgBot como el comienzo de todo para mí. Me dio mi primera experiencia real con la robótica y me enseñó a 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 backend en eBay, desplegando servicios que procesan millones de métricas en centros de datos. Fundé mi primera startup enfocada en 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 siendo 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. Aprendí que aunque no tengas el plan perfecto, suficiente financiación o el mejor hardware, aún puedes construir algo, aprender mucho y conocer personas increíbles en el camino.

A todos del equipo AgBot 2019, gracias. Al viaje de 2019, la lona que agarramos en una gasolinera cerrada y las noches sin dormir, gracias. Me dieron la determinación para perseguir grandes proyectos con confianza, sin importar lo imposible que parezcan.

Recursos y Enlaces

Galería de Fotos

Equipo AgBot de Mines, Nosotros

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

Nuestro Robot 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

Videos/GIFs

IMG_6724.gif NEHE1091.gif demo.gif random_demo.gif
rogo_hardware.gif

Campos de la Competencia

IMG_8848.jpeg IMG_8849.jpeg IMG_8850.jpeg IMG_8851.jpeg
IMG_9042.jpeg IMG_9666.jpeg IMG_9668.png land.jpeg

Otros Equipos en la Competencia

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

Otras Imágenes Aleatorias

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