Atelier du 9/11/2019

Cette première 1/2 journée nous a permis de discuter autour du robot et des fonctions que l’on attend de lui.

Au delà des fonctions de base présentées, comme la capacité de se déplacer, celle de parler et enfin celle de reconnaître les personnes ou les objets qui l’entourent, d’autres sont apparues dans les échanges.

Le robot pourrait est considéré comme un membre de l’équipe de la médiathèque et assurer certaines taches qui incombent aussi aux agents, comme l’accueil du public par exemple.

Comme évolution, il serait intéressant de lui ajouter des capacités supplémentaires, comme :

  • la capacité de se localiser,
  • celle d’utiliser l’ascenseur pour assurer ses déplacement entre les étages, peut-être de manière assistée,
  • ou enfin celle de manipuler des ouvrages, pour les déplacer ou se déplacer avec eux (transport).

Une autre discussion a aussi eu lieu sur le choix d’une intelligence répartie (plus facile à mettre en oeuvre initialement) ou une intelligence centrale sous la forme d’un système contrôlant les autres composants. Après plusieurs échanges sur le sujet, la solution d’une intelligence centrale est apparue la plus évolutive pour le futur du robot, par exemple avec l’ajout de nouvelles fonctions.

Les groupes ont ensuite été formés pour chacun des composants initiaux :

Groupe Déplacement

Il sera formé autour d’Anissa, de Thomas et de Monsieur K. (excusé pour ce premier atelier).

Il devra assurer l’interface entre le carte de contrôle des moteurs et des capteurs de distance (ultra-son).

Il implémentera des parcours pré-définis qui pourront être déclenchés par le système de contrôle. Il pourra retourner les distances mesurées par les capteurs. Il informera aussi le système de contrôle du bon déroulement (ou pas) du parcours. Le parcours pourra, à tout moment, être interrompu, puis repris à la demande du système de contrôle.

Les commandes retenues sont :

  • Avancer <[-]xx.x> : avancer d’une distance indiquée en paramètre, une valeur négative indique de reculer.
  • Tourner <[-]xx.x> : tourner à droite de l’angle indiqué en degrés, à gauche par valeur négative. Les valeurs attendues sont dans l’interval [-180.0, 180.0].
  • Parcourir <nnn> : déclenche l’exécution du parcours indiqué.
  • Stopper : interrompt la commande en cours ; une reprise est possible avec la commande suivante.
  • Reprendre : reprendre la commande précédente pour la terminer.
  • Mesurer <"ss"> : Déclencher la mesure avec le capteur indiquer.

Chaque commande donne lieu à une réponse à la fin de son exécution, ou en cas d’erreur.

Groupe Synthèse vocale

Il sera formé autour de Doryan et Baptiste.

Ce module devra assurer la synthèse vocale des phrases transmises par le système de contrôle. Il utilisera un moteur TTS (Text to Speech) qui transformera automatiquement les textes reçus en séquences sonores. Chaque séquence devra correspondre à des phrases afin que le système profite de son analyse syntaxique et grammaticale pour utiliser des tonalités cohérentes avec la structure de ces phrases (ton montant et descendant en début et fin de phrase).

Les commandes retenues sont :

  • Parler <"ss"> : prononce la phrase indiquée. D’autres paramètres pourraient être ajoutés pour choisir le volume ou la tonalité de la voix.
  • Stopper : interrompt la phrase en cours. Aucun reprise n’est possible.

Chaque commande donne lieu à une réponse à la fin de son exécution, ou en cas d’erreur.

Groupe de Reconnaissance de forme

Il sera formé autour de Malek, Stéphane et Rémi.

Ce module doit assurer la reconnaissance de formes (ou d’objets) grâce à une caméra fixée sur le robot et un module TensorFlow installé sur la carte Raspberry PI.

Les commandes retenues sont pas définitives !

Le comportement de ce module est un peu différent des autres, dans le sens où il devra en permanence transmettre au système de contrôle les éléments qu’il reconnait dans l’image courante de sa caméra.

Pour le moment, la seule commande consiste en un filtre d’objets que seuls le système peut reconnaître, les autres étant ignorés.

  • Filtrer <["ss1","ss2"]> : liste d’objets sur lesquels la reconnaissance doit se “concentrer”. Le filtrage pourra être supprimé en passant un paramètre nul.

Le module transmettra en continu la liste des objets détectés lors de chaque phase d’analyse.

Chaque commande donne lieu à une réponse à la fin de son exécution, ou en cas d’erreur.

Module de contrôle

Comme indiqué en introduction, ce module a été imaginé suite à des discussions pendant l’atelier.

Ce module devra assurer la coordination des différents modules en leur transmettant des commandes ou sur la base des réponses retournées.

Dans un premier temps, il a été suggéré de développer une machine à états finis pour assurer le comportement du robot.

Communication entre les modules

Par simplicité la communication entre les modules sera assurée par des « tubes nommés ». Ces mécanismes permettent une communication simple entre applications, comme avec des fichiers, sans mettre en oeuvre de complexité liée aux réseaux. Par contre, il nécessite que les modules applicatifs fonctionnent sur la même machine.

Afin de normaliser les échanges, on utilisera le formalisme JSON qui va nous permettre de sérialiser les messages échangés.

La suite : Atelier du 16 nov. 2019