Introducción

El propósito del proyecto es crear una red neuronal para entrenar un modelo en tensorflow capaz de reconocer el robot Clearpath Husky,para posteriormente implementar este modelo en una simulación de Gazebo y más adelante en el robot físico.

Si no entiendes muy bien lo que a continuación viene, puedes simplemente leer la conclusión

En primera instancia el proyecto comenzó a ser implementado en Ubuntu 16.04 (Xenial). Existen dos distribuciones de ROS soportadas por Ubuntu 16.04: Kinetic Kame y Lunar Loggerhead. Se comenzó, ingenuamente a trabajar con Kinetic. El problema que más adelante surgió es que Kinetic soporta oficialmente Python 2.7, versiones mayores a 2.7 presentan problemas. Para trabajar con Tensorflow se requiere Python >= 3.5 (aunque es posible usarlo con Python<3.5 , se tendrían que usar versiones antiguas de Tensorflow, pero es más complicado ajustar algoritmos y redes neuronales para usarse con paqueterías antiguas, aunque es una opción).

Después, se decidió cambiar el sistema operativo a Ubuntu 18.04 (Bionic), pues la distribución subsecuente de Kinetic y Lunar, es decir Melodic, tiene soporte, auque aún de prueba, para python>=3.5.

Dato: En Mayo 2020 salió la distribución de ROS Noetic Ninjemys, que soporta oficialmente Python 3.8, y es dirigida para Ubuntu 20.04 Focal Fossa.

Nuevo Problema: Al ser relativamente nueva esta distribución (ROS Noetic) algunos paquetes para simulación, principalemte husky_gazebo aún no tienen soporte para la misma.

Solución: El 8 de Septiembre del 2020, el equipo de husky comentó en su cuenta de Github que planeaban comenzar a trabajar en un lazamiento para Noetic a finales de 2020, y que se tenía la intención de tener soporte «pronto».

Se pueden modificar los códigos de los paquetes de simulación del husky y tratar que sean compatibles para Noetic, pero no es recomendable pues ya hay un equipo especializado en eso, y hay otras áreas (para este proyecto) de aprendizaje.

Get Started

El proyecto consta de dos etapas principales y hay un repositorio para cada etapa:

Cada etapa tiene un contexto, instalación y la aplicación final. Se tratará de explicar a grandes rasgos lo necesario para entender y reproducir cada etapa. Además se agregaran algunos links, muchas veces en inglés, con información adicional. Los denotados por 👁 son generalmente para conocimiento de algún tema.

Consejo

Se puede usar Ubuntu 18.04, con ROS Melodic. En cuanto salgan los paquetes de husky_gazebo compatibles con ROS Noetic, sería ideal trasladar el proyecto a Ubuntu 20.04 (Focal Fossa) para que se pueda comunicar el entrenamiento con la implementación sin problemas. Ahorita se tiene documentado:

  1. Pasos para entrenar y guardar el modelo.
  2. Implementación de un modelo de Keras en un nodo que se suscribe al tópico de la cámara local del dispositivo y publica dos tópicos uno con el nombre del objeto detectado y otro con la probabilidad de que sea el objeto.

TO DO:

  1. Entrenar el modelo con GPU o en línea, pues solo se entrenó con CPU.
  2. Hacer diferentes pruebas con diferentes modelos de model_zoo y el elegir el de mejor resultado.
  3. Guardar el modelo en formato de Keras (h5), ahorita solo de guarda en (.pb).
  4. Usar el modelo (h5) en el código que ya se tiene.
  5. Cambiar el tópico de camera/image_raw al tópico de la camara del husky o huskys.