Workflow - AndreinaW/connected-frame GitHub Wiki

Workflow

Introduction

Ci-dessous est décrit le workflow des données et des différentes interactions aussi bien entre la partie embarquée (Raspberry PI) que la partie serveur. Nous allons chercher à expliquer du mieux possible toutes les étapes nécessaires à la réalisation et la validation d'un scénario.

Workflow scénario 1

Prenons le scénario 1 où le contexte est le musée. Nous allons nous concentrer sur l'interaction avec la caméra.

  1. Tout d'abord une personne va venir se positionner devant l'objet. La caméra va venir capter l'image.
    Plus précisément nous pensons prendre des photos à intervalle régulier et traiter ces photos pour détecter la présence d'un visage. A partir du moment où un visage est détecté, on changera très certainement de mode de capture photo (fréquence de capture image augmentée etc...) Pour prendre des images avec une caméra sur raspberry on peut dans un premier temps utiliser les commandes suivantes raspistill -o image.jpg ainsi que raspivid -o video.h264 -t 10000. C'est possible aussi d'utiliser python pour la manipuler comme est montré dans ce tutorial. Egalement on pourrait se servir de node red afin des captures des images. En utilisant le plug in 'node-red-contrib-camerapi' on récupère les images de respberry pi. Voici le tutoriel de simple utilisation : tutorial_node-red-contrib-camerapi.
  2. Une fois la photo capturée c'est à OpenCV de prendre le relais pour traiter l'image. On cherchera dans un premier à détecter la présence d'un visage comme dit précédemment.
  3. Une fois la présence d'une personne détectée, alors, on prendra des images à intervalle plus rapprochés (comme décris dans le 1.). On se servira de OpenCV pour faire du traitement d'image (détourage du visage, couleur de l'image en noire et blanc) pour réduire la taille de l'image (pour optimiser la vitesse de traitement ?) et pouvoir extraire des données depuis ces images traitées
  4. Nous prévoyons d'envoyer les données extraites (soit les statistiques liées au visage des personnes s'étant présentées face à l'objet) à intervalle régulier (1h, 2h, 24h).
  5. Notre serveur sera écrit en Python et communiquera avec une base de données MongoDB.

Pour faire les étapes précédentes on prévoit d'utiliser node-red pour faciliter toute la communication entre le serveur sur lequel nous enverrons nos statistiques et la raspberry sur laquelle seront récoltées les données.

C'est ce même serveur qui sera donc responsable d'afficher les données lorsque les utilisateurs finaux voudront consulter les statistiques.

Workflow scénario 2

Dans cette partie sera détaillée le workflow en prenant en compte le scénario dans lequel un utilisateur utilisera à la fois le microphone embarqué et où les enceintes elles aussi embarquées devront émettre du son (synthèse vocale). Pour effectuer la reconnaissance vocal on va utiliser Kalliope est un assistant vocal personnel. Il attends les question de côté l' utilisateur pour ensuite les analyser puis donner une réponse. Éventuellement on pourrais utiliser Gladys.

Dans le scénario 1 notre contexte est le musée. Nous allons nous concentrer sur les interactions avec le microphone et les hautes-parleurs.

  1. Tout d'abord notre utilisateur devrait se positionner devant l'objet. Il a la possibilité de poser certains questions à notre objet et ensuite avoir sa répons. Cette partie va être gérer par le software integré : Kalliope qui est très simple dans l'utilisation. Kalliope est toujours actif et attend à recevoir un signal vocal d'entrée pour ensuite le transférer et y répondre. Le mot clé "Kalliope" va déclancher le mécanisme et ainsi notre systéme sera à l'écoute. Toute les questions vont devoir prendre une forme "Kalliope + la question que nous allons vouloir poser", example "Kalliope give me the infromations about the painter". Utilisateur va donc devoir commencer à parler devant notre objet et le microphone va l'enregistrer.
  2. Ensuite c'est le Kalliope qui va prendre le rélais. Si le format de la question posée est accepté, alors l'utilisateur aura sa réponse en forme vocal grâce aux enceintes bluetooth. C'est à nous de décider quel type de questions ainsi que les réponses seront disponibles aux utilisateurs. Principalement ils vont dépondre de context et des informations que nous aimerons transmettre. Nous allons vouloir aussi créer une API qui va permettre de rajouter les questions et réponse possibles de Kalliope. Pour ca nous allons rajoute des fichier "brain" qui vont être sous forme reconnaissable par notre logiciel.