Primer puesto en el Concurso Iberoamericano de Robótica Espacial 2022 - "Caminante Lunar"

¿Estafa con el premio?

Todo comenzó con un post en la página de FAMAF donde me ganó la curiosidad, abrí el link y vi que cumplía los requisitos para participar además de varias de las personas que conozco! Hablamos con la SAE y nos faltaba tener un asesor académico, dado que era un requisito para participar. Hablamos como equipo en qué profesor estaría interesando, tendría tiempo y podría aportarnos más información que sea útil. Entre los profes que fuimos pensando, la SAE nos avisa que había un profesor interesado, y éste estaba en nuestro listado: Juan Fraire.

Al haber seleccionado y confirmado el profesor, nos quedaba elegir un líder de equipo, un nombre y un logo. Como líder quedé yo, porque había encontrado, investigado, coordinado y buscado gente para participar.

La elección del nombre fue pensado desde el inicio de tener una representación bastante patriota, única y fácilmente identificable de nuestro país y que a su vez esté relacionado al espacio.

Belisario fue un ratón que fue lanzado al espacio y fue el primer animal vivo lanzado al espacio en cohete por Argentina. Y sí, el pequeño amigo fue rescatado sano y salvo. Sobre San Martín, no creo que haga falta hablar mucho, pero para quién lea esto y no sea de Argentina o latinoamérica, él es un prócer argentino, llamado también “Padre de la Patria” ya que fue el libertador de Argentina, entre otros países latinoamericanos. Es todo lo que mencionaré así investigas más sobre él.

La elección del logo fue más sencillo al tener definida el concepto que queríamos representar como equipo. Al ser Belisarios por el ratón, estaba claro que tendríamos un ratoncito. Le fuimos agregando ropa espacial, una luna de “queso” celeste con al borde nuestra bandera, siendo el “sol” las estrellas del fondo espacial. Todo esto con nuestro nombre, universidad y país.

Finalmente participamos como equipo bajo el nombre de “Belisarios de San Martín” con nuestro característico logo, ganando el concurso con el Primer puesto.

Ganadores primer puesto

¿De qué se trató el concurso?

Es el primer concurso de Programa Espacial Universitario (PEU de ahora en más) de UNAM, con el afán de motivar a las nuevas generaciones con el uso de tecnología de comunicacion remota. Esta orientado para estudiantes de nivel licenciatura y posgrado de universidades iberoamericanas.

El objetivo principal del concurso es que a través del control remoto de un robot los estudiantes logren resolver diversas situaciones adversas que ponen en riesgo el éxito de las misiones robóticas. Para resolver las situaciones debíamos desarrollar funciones para el robot Takeshi.

Todo muy interesante, pero ¿qué es la robótica?

Robótica es la ciencia que estudia la conexión inteligente entre la percepción y la acción.

Takeshi

Es un robot Human Support Robot (HSR)de Toyota, llamado Takashi está formado por:

  • Una base móvil omnidireccional,
  • Manipulador de 5 DoF
  • Cámaras RGB y RGB-D en la cabeza
  • Cámara RGB en el afector final
  • Lidar en la base móvil
  • Bocinas y micrófono

Takeshi técnico

Los desarrollos para el robot debían ser implementados en ROS con Python y C++, utilizando Gazebo. A continuación explicaremos al respecto.

¿Qué es ROS?

ROS (Robot Operating System), no es realmente un ‘sistema operativo’, mejor dicho es un conjunto de herramientas para manejar interfaces de los módulos que conforman al robot a controlar: Sensores, Movimientos, y Cómputo.

Implementa funcionalidades comúnmente usadas en el desarrollo de robots como el paso de mensajes entre procesos y la administración de paquetes.

¿Qué es GAZEBO?

Gazebo, por su parte, es una herramienta de simulación. Sirve para iterar sobre diseños físicos, como nuestros robots, en entornos realistas de buena fidelidad.

Más información

Lenguajes a utilizar

Se utiliza ROS (framework) que se puede realizar en módulos separados con:

  • C++
  • Python

Algunas preguntas

¿Existirá algún tipo de apoyo por parte de los organizadores del concurso para los equipos participantes, como becas, apoyos para asistir a la locación de la premiación, etc.?

Rta: No. Cada equipo será responsable de buscar los medios que le faciliten realizar su proyecto.


Sobre el desarrollo de CIRE22

Tuvimos que realizar el desarrollo de funciones para el robot Takeshi con ROS en Python y C++. Esto fue desarrollado durante 5 etapas, con una duración desde mayo del 2022 a noviembre de 2022.

Es importante destacar que durante toda la participación del mismo, estuvimos cursando las materias y algunos a su vez trabajando formalmente.

Etapas

  • Etapa 1: challenge de eliminación superada, sin puestos. Originalmente 57 equipos, quedando 21.
  • Etapa 2 : 2do puesto de 21 equipos.
  • Etapa 3: 3er puesto de 11 equipos.
  • Etapa 4: 1er puesto de 8 equipos.
  • Etapa 5: Finalistas, ganadores del 1er puesto.

Etapa 1

Durante esta etapa tuvimos muchísimos inconvenientes para correr el sistema de ROS en las máquinas virtuales. La simulación corría a menos de 1 fps y era imposible realizar muchas pruebas. Solicitamos varias veces ayuda a los responsable del concurso para mejorar esta situación, ya que esta limitación se originaba por una configuración pre-establecida de la iso que nos compartieron. Y no todos los equipos presentaban este problema…

Probamos instalar la iso con todos los emuladores posibles, en diversos equipos, en Linux, Mac y Windows, pero nada daba resultado. La mayor mejora que obtuvimos es con una notebook con un procesador AMD que lograba correr a 2.5 fps.

Esta etapa era realizar una eliminación de aquellos equipos que no realicen el desafío o no lograran completarlo exitosamente.

El objetivo de esta etapa era mover el robot de un punto a a un punto b.

Nos costó bastante ya que para cada prueba había que esperar un tiempo considerablemente alto solo para que el entorno esté listo para correr, y la simulación al estar como máximo a 1 fps, cada prueba duraba alrededor de 15 min. Afortunadamente, somos tercos y corriendo cada uno la simulación con pequeños cambios en el código, logramos dar con la solución a tiempo para entregar, y el resto del tiempo nos dedicamos a realizar investigación para dar con una alternativa para correr mejor la simulación.

Etapa 2

Objetivo

Para completar con éxito esta misión deberán:

  1. Evitar colisiones.
  2. Completar el ejercicio en el menor tiempo posible.
  3. Completar el ejercicio en el menor número de movimientos.
  4. Grabar el video de la corrida en gazebo.
  5. Subir los códigos a los gits de cada equipo.
  6. Utilizar la funcion get coordinates provista para desplegar el punto y el tiempo de inicio y de final de la corrida.

Lo que ocurrió en esta etapa, es que continuamos con los problemas para correr la simulación, pero los tiempos no nos daban para realizar instalaciones de 0 de todo para probar correrlo sin la ISO. así que nuevamente tuvimos que usar la estrategia de correr todo en paralelo con cambios para poder probar las simulaciones sin afectar el tiempo de entrega.

Particularmente, uno de los sensores de nuestro robot no funcionaba correctamente (no distinguía derecha e izquierda de los objetos a su alrededor) y el tópico que nos daba la información era único (aún no se habían liberado los otros que tópicos de los otros sensosres que permitían detectar colisiones). Terminamos utilizando una heurística intercalando el supuesto de “objeto a la derecha” y “objeto a la izquierda” esquivándolo con “números mágicos” para la “fuerza de esquive” y la velocidad de movimiento, para lograr llegar al destino final sin chocar con nada.

Etapa 3

Conceptos básicos de visión computacional y herramientas disponibles:

  • Formación de imágenes.
  • Operaciones básicas de segmentación de color.
  • Modelo Pinhole.
  • Operaciones Básicas de Segmentación de planos usando RGBD.
  • Transformación de coordenadas con respecto al mapa y respecto al sensor.

Objetivos

  1. Visitar las estaciones de trabajo realizando evasión de obstáculos.
  2. Diseñar un algoritmo que permita estimar la ubicación de los objetos utilizando las cámaras de Takeshi.
  3. Publicar una tf que permita mostrar desde RVIZ la estimación de la posición de los objetos.
  4. Almacenar las coordenadas respecto al mapa de cada objeto localizado en un archivo txt, el cual deberá ser incluido en el formulario de entrega.

Para esta etapa ya no podíamos continuar corriendo a 1 fps dado que ni llegábamos por la cantidad de tópicos y sensores que se utilizaban durante la simulación, impidiendo directamente ejecutar la simulación (pantalla negra y luego un crash global).

Quedaba un día para entregar la misión y estábamos desesperados, porque nos encontrábamos bloqueados realizando cambios a ciegas, sin respuestas de los profesores y representantes del concurso. Milagrosamente, una persona participante de otra universidad y país, nos ayudó pasándonos un tutorial de cómo instalar de forma “cruda” la iso que nos pasaron a un USB, realizando unas modificaciones para que acepte cambiar los límites de la misma, además de que esto permitía utilizar la GPU y aumentar la RAM. El guía que nos pasó no fue exactamente lo que terminamos haciendo para resolver el problema, pero si nos ayudó a entender qué apartados debían ser modificados para funcionar correctamente.

Empezamos bastante tarde esta etapa hasta que solucionamos el problema y usábamos una partición de nuestros discos con un pendrive booteable con el sistema de ROS, Gazebo y las credenciales de Toyota instaladas a mano y cambiando las actualizaciones del sistema para que nunca más ocurran (ya que esto revertía los cambios). Pero cuando lo resolvimos… 25 fps estables ;) ya nada nos detenía de realizar mejores pruebas e iteraciones sin problema… pero estábamos a contra-reloj. Nada que desvelarse codeando y probando no lo solucione.

El único inconveniente que tuvimos, que nos enteramos después de la entrega, al tener la devolución de la misión, fue que uno de los objetos no nos cargó correctamente y el color original era otro al que nosotros veíamos en nuestra simulación (debido a que teníamos inhabilitadas las actualizaciones que otorgaba Toyota a los sistemas, no se nos actualizó el modelo con el nuevo, que de hecho ni sabíamos que era otro).

Etapa 4

Objetivo

Desarrollar un algoritmo para que el robot navegue por el ambiente simulado mientras realiza un mapa.

  1. La posición de inicio puede variar, por lo que el mapa puede quedar con un cero diferente.
  2. El robot debe explorar el ambiente de manera autónoma para construir el mapa.
  3. El robot debe evitar chocar con cualquier objeto.
  4. Al terminar de explorar, el robot debe regresar al punto de inicio (navegar al punto (0,0)).
  5. Todo debe ejecutarse con un solo archivo *.launch

Criterios de evaluación

  1. Número de colisiones (se penalizará cada colisión)
  2. Parecido del mapa con el ambiente
  3. Tiempo de ejecución
  4. Que el robot regrese al punto de inicio.

Etapa 5

Objetivo

Desarrollar un algoritmo para que el robot navegue por el ambiente simulado de la manera en que el equipo lo decida y mueva el brazo.

  1. La posición de inicio puede variar.
  2. El robot debe evitar chocar con cualquier objeto.
  3. El robot debe mover el brazo
  4. Al terminar de explorar, el robot debe regresar al punto de inicio (navegar al punto (0,0)).

Todo debe ejecutarse con un solo archivo *.launch

Criterios de evaluación

  1. Desplazamiento del brobot (se penalizará cada colisión)
  2. Movimiento de brazo robótico
  3. Tiempo de ejecución
  4. Que el robot regrese al punto de inicio.

Misión Lunar

  1. Takeshi deberá avanzar 1.3 metros al frente.
  2. Takeshi debe subir y bajar su brazo robótico.
  3. Takeshi deberá mover el cuello de lado a lado.

Belisarios: finalistas y ganadores

Premio... ¿Qué ocurrió?

El premio lo “seguimos esperando” desde Noviembre de 2022. Sos 8 impresoras 3D.

Ultimo Update PEU UNAM

Así que el siguiente paso sería viajar a Ciudad de México y retirar las impresoras. Luego traerlas en avión por nuestra cuenta…

Si lo hacemos habrá un video al respecto de todas las etapas ;)

Reconocimientos y certificados

Certificado completo

Certificado equipo

Mi Certificado

Links

Web del concurso

Noticia creada por Gaceta UNAM

Share: LinkedIn