InMoov. Avances y nuevo cerebro

IMG_2185Hace ya casi un año que comencé a montarme este robot. Cada vez que tengo algo de tiempo pongo la impresora a trabajar y voy avanzando en el montaje. Ya esta lista la cabeza, el pecho, el brazo derecho y parte del izquierdo.

Como pensar es gratis y te permite hacer otras cosas al mismo tiempo, llevo algún tiempo dándole vueltas a la cabeza a programarme yo un cerebro para el robot, en vez de utilizar MyRobotLab como hasta ahora. Este verano, con algo más de tiempo libre, decidí poner en marcha todas aquellas ideas que me rondaban la cabeza. El principal motivo de programarme yo un cerebro es el tema del reconocimiento de voz, ya que MyRobotLab usa Sphinx y es complicado hacer que te reconozca hablando en Español (ya esta en desarrollo una nueva versión que mejora en este aspecto). También me parecía una aplicación demasiado genérica, y quería empezar a montarme un cerebro que, en un futuro fuera una aplicación que out-of-the-box permitiera gestionar el InMoov sin que el usuario tuviera muchos conocimientos de informática. Y porqué no, también tenía ganas de programar un rato. 🙂

El cerebro

El cerebro del InMoov lo he programado en Python 3, que en un futuro lo embeberé en una RaspBerry PI para dotar al robot de autonomía. Este cerebro implementa las siguientes funcionalidades:

  • Control de todos los servos enviando comandos por el puerto serie al Arduino
  • ChatBot para ser capaz de mantener una conversación y reconocer ordenes
  • Embebe un servidor Web que publica una serie de servicios REST que permiten enviar las órdenes al cerebro
  • Implementa TTS (Text to Speech) mediante la API de Google

Todo el proyecto está subido a GitHub aquí: https://github.com/ugogarcia/inmoovbrainserver

El interfaz de usuario

Éste lo he programado como una Web, que envía las órdenes al cerebro a través de su API REST. Es un interfaz muy sencilla que permite:

  • Controlar manualmente cada uno de los servos
  • Enviar comandos al intérprete de Python del cerebro para controlar el robot
  • Reconoce la voz utilizando  la API Web Speech de Google. El texto reconocido se envia al cerebro mediante la consola del interfaz web

En el siguiente enlace se encuentra el proyecto de GitHub: https://github.com/ugogarcia/inmoovbrainconsole

Una pequeña prueba

Mientras termino de montar el brazo izquierdo y lo conecto todo, aquí os dejo un pequeño video del funcionamiento del robot con su recién estrenado cerebro. Las órdenes de voz son procesadas por la rutina de ChatBot implementada y transformada en órdenes.

Pronto, más avances. ¡Esto marcha!

11 comentarios sobre “InMoov. Avances y nuevo cerebro”

  1. Me alegro de ver un desarrollo de Inmoov que piense en español… mi ingles es muy nulo…
    Estoy esperando tener los servos montados,de los cuales tengo los de 1 brazo ,codo y hombro pero aún me llevara un tiempo.
    Un saludo

  2. disculpe encontre una web de su pagina que puedes controlar el inmoov pero tengo problemas al controlar los servos nos e si me podrias ayudar estyo ocupando una raspberry 3 con raspbian

  3. disculpe estuve checado su pagina y esta muy bien intente correr unos de sus ejemplo es la de la pagina web que puedes controlar a inmoov https://github.com/ugogarcia/inmoovbrain en este link segui las intrucciones. y ya lo configure pero me genera un error en la asignacion del puerto no se si me podrias ayudar estoy ocupando una raspberry pi 3 con rasbian

    1. Hola Alfonso,

      me alegro que hayas podido hacer funcionar el programa! Con respeto a hacer hablar el InMoov lo puedes hacer a través del comando “say”. Cuando arrancas el servidor, te conectas a la consola Web por la URL https://localhost:8443/console/inmoovconsole.html e introduces el comando myInMoov.say(“texto de prueba”). Con este comando conseguirás que el InMoov mueva la boca al mismo tiempo que dice “texto de prueba”.

      También puedes enviar comandos de “voz” (en lenguaje natural) al InMoov. Para ello, introduce el comando myInMoov.voiceCommand(“hola”). Esto lo que hace es enviar el texto “hola” al ChatBot. Según como esté configurado te responderá de una manera u otra. Puedes configurarlo modificando el archivo chatbot.xml.

      Si en vez de enviarle los comandos escritos quieres hablarle al InMoov puedes hacerlo pulsando el icono de un micrófono que hay arriba a la derecha. Esto utiliza la API Web Speech de Google. En una RaspBerry entiendo que debe poder configurarse, pero no lose probado aún (aunque es mi objetivo cuando diseñé esta consola).

      ¡Cualquier duda me comentas! ¡Buena suerte!

  4. Hola, ante todo darte las gracias por compartir esta información.
    En Segundo lugar me gustaría ver como vas avanzando.
    Gracias

  5. Hola buenos días, ante todo agradecerte el trabajo que haces publicando tus avances con el inmoov, para mi es un proyecto que se ha retrasado bastante, pero ahora que tengo la parte principal, la impresora 3d me gustaría, a poder ser, que me aconsejaras por donde empezar, que partes imprimir, la electronica a usar y los videos si los hay donde expliques como lo haces.

    1. Hola Javier! Toda la información la tienes en la página oficial de InMoov: http://www.inmoov.fr. Ahí encontrarás toda la información necesaria de todas las piezas a imprimir, la electrónica a usar, etc. También desde ahí tienes un enlace al grupo de Google donde se debate todo esto.

      Con respecto a por dónde empezar, casi todo el mundo empieza por la mano, ya que es relativamente sencilla de imprimir y da mucho juego. A partir de ahí ya como tú prefieras: un brazo, el torso, la cabeza, etc. También hay otra gente que empieza por la cabeza para no imprimir el robot entero. Depende de tus preferencias (las piezas de la cabeza son más dificiles de imprimir y montar que las de la mano…).

      Chao!

  6. Hola Ugo, como ya sabes estoy haciendo el INMOOV en estos momentos estoy terminando las piernas aunque estas no están motorizadas. De la cintura para arriba esta todo terminado y motorizado. Ahora empieza lo divertido quiero que reconozca la voz pero en español. He visto tu programa inmoovbrainserver
    master. He intentado entrar en la web speechde google y me da error. Que programa utilizas para el reconocimiento de voz puede ser el EASY Veear. en espera de tus noticias un cordial saludo.
    Gracias .

    1. Hola Emilio!

      Yo en mi programa uso Google Speech API para el reconocimiento de voz. Dado que el “cerebro” es una aplicación con interfaz Web, el navegador se encarga de llamar a la API de Google para reconocer la voz y devolver el texto, que después es interpretado por el servidor en Python. Hace tiempo que no avanzo en el proyecto por falta de tiempo, no se si actualmente la API de Google se sigue pudiendo usar de manera gratuita o no.
      Puedes probar InMoovBrainServer o MyRobotLab, que es el software “oficial” para usar con InMoov. creo que también usa Google Speech API para el reconocimiento de voz en Español.
      Las placas como EasyVR están bien, pero está muy lejos de las opciones que te comento, ya que estas placas sólo reconocen comandos concretos (y un número limitado). Con InMoovBrainServer o MyRobotLab podrás reconocer frases completas y tener un diálogo más natural con el robot (incluso le podrás pedir lo mismo de varias formas). Es decir, con EasyVR le podrás ordenar cosas como “Habla” o “Anda” y con las otras opciones puedes reconocer frases completas que después, en el caso de InMoovBrainServer se analiza para entender qué estás preguntando y responder en consecuencia.

      Suerte en tu aventura!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.