Un robot avec un Raspberry Pi programmé en JAVA

Voici une petite présentation du défi que je me suis lancé. Cette description n’est pas exhaustive et est amenée à évoluer au cours du projet.

Ce projet consiste à développer un robot en utilisant un Raspberry Pi et le langage JAVA.
Equation robot
Ce robot devra avoir les facultés suivantes :

  • la collecte d’informations :
    • la vue : le robot devra être capable de reconnaître des personnes grâce à la reconnaissance faciale. Il pourra, dans un second temps pouvoir reconnaître certains objets.
    • l’ouïe : le robot devra être capable de reconnaître ce que disent les personnes grâce à la reconnaissance vocale.
  • le retour d’informations et la réaction :
    • la parole : le robot devra être capable de parler grâce à la synthèse vocale.
    • la mobilité : le robot devra être capable de se mouvoir et de naviguer dans un environnement inconnu.
  • une intelligence artificielle : grâce aux facultés précédentes, le robot devra être capable d’interpréter, d’interagir et de prendre des décisions en conséquence avec l’environnement qui l’entoure (personnes, lieux, …).

 

Côté matériel :

 

Côté logiciel :

Pour cette partie là, je vais essayer, dans la mesure du possible, d’utiliser des outils/librairies libres et open-source qui ne soient pas trop compliqués à appréhender.

  • la distribution Raspbian pour le Raspberry Pi. J’ai choisi cette OS, car dans sa dernière version, il inclut JAVA 7 dès l’installation. C’est toujours ça de moins à configurer !!!
  • le langage JAVA 7 pour la partie développement.
  • la librairie OpenIMAJ pour la vision artificielle et la reconnaissance faciale. C’est une librairie d’analyse multimédia sous licence BSD développée par des chercheurs de l’université de Southampton au Royaume-Uni. C’est une librairie très bien conçue qui permet des choses étonnantes en matière de reconnaissance, rapide et entièrement écrite en JAVA.
  • la librairie Sphinx 4 pour la reconnaissance vocale.
  • les librairies FreeTTS / MBROLA par l’intermédiaire de la librairie SI VOX pour la synthèse vocale. SI_VOX est en quelque sorte, l’implémentation française de FreeTTS permettant de prendre en compte le modèle des voix françaises de MBROLA. C’est un projet développé par des étudiants de l’ESSI à Sophia-Antipolis et placé sous licence MBROLA (l’utilisation ne peut pas être faite pour des projets commerciaux).
  • la machine virtuelle Java LeJOS et la librairie LeJOS NXJ permettant de contrôler la brique NXT des Lego Mindstorms pour, entre autres, les déplacements du robot.

Avec tout cela, nous sommes en mesure de commencer à concevoir notre futur robot ;-). Il n’y a plus qu’à se lancer.

Nicolas

Développeur JAVA, je suis passionné de robotique depuis quelques années, notamment tout ce qui concerne la partie programmation (vision artificielle, synthèse et reconnaissance vocale, intelligence artificielle, ...).

2 commentaires :

  1. Je comprends que ton article présente un projet intéressant pour développer un robot avec un Raspberry Pi en utilisant Java. L’intégration de capacités comme la reconnaissance faciale, la reconnaissance vocale, la synthèse vocale et la mobilité semble prometteuse. J’apprécie que tu partages les détails techniques et les bibliothèques envisagées. Merci pour cet aperçu passionnant de ton projet ambitieux!

    • Bonjour Jérôme,
      Merci pour ton commentaire.
      Depuis le temps que j’ai écrit cette page, de l’eau a coulé sous les ponts : plus de 10 ans ! Et le projet a bien avancé même si je n’ai pas mis à jour ce blog.
      A la place du Raspberry Pi, je me suis orienté vers le Jetson Nano de NVidia, plus puissant pour la partie IA embarquée, puisqu’il a une carte GPU CUDA spécialement dédiée à ça.
      Et pas plus loin que cette semaine, j’ai intégré un agent conversationnel en m’appuyant sur l’API OpenAI (avec ChatGPT 3.5) et le framework LangChain4J. C’est bluffant et largement suffisant pour ce que je veux en faire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *