Difference between revisions of "Facitrajet"

From WikiRennes
Jump to: navigation, search
(Équipe)
(Ajout Logiciel et Fonctionnement)
Line 33: Line 33:
  
 
=== Logiciel ===
 
=== Logiciel ===
 +
 +
Le Raspberry Pi utilise un OS Linux "Raspbian", via une image-disque fournie par  le projet Google AIY.
 +
 +
L'orchestrateur est le logiciel Node-RED, en version 0.17.5(?) : il faut mettre à  jour la version fournie par défaut sur Raspbian, en utilisant la commande <code>node-red-upgrade-pi</code>. Les "flows" Node-RED qui font fonctionner la borne sont disponibles sur le dépôt de code du projet.
 +
   
 +
La reconnaissance vocale utilise le projet [https://aiyprojects.withgoogle.com/voice Google AIY - Voice Kit], via un script Python qui crée les connexions nécessaires auprès de l'API Google, avec un jeton de connexion lié à un compte google dédié au projet Facitrajet.
 +
   
 +
Le calcul du trajet est réalisé par appel à l'API Navitia, avec un jeton de connexion dédié au projet Facitrajet.
 +
   
 +
La vérification des pannes se fait par appel à l'[[API Data-Explore]] de Rennes Métropole.
 +
   
 +
Le traitement du résultat de calcul (fichier JSON) est effectué par une application en React.JS, également disponible sur le dépôt. Celle-ci est lancée au démarrage du Raspberry Pi, et s'actualise quand le fichier JSON est modifié (par le flow Node-RED).
 +
   
 +
Enfin, l'interface graphique actuelle, en HTML/CSS, a été codée spécifiquement pour l'écran 7" et nécessite au moins quelques améliorations.
 +
   
 +
=== Fonctionnement ===
 +
   
 +
Le navigateur est lancé au démarrage de la borne, affichant l'interface "client" (et non l'espace de développement Node-RED).
 +
   
 +
L'appel de la fonction de reconnaissance vocale est fait par un appui sur le bouton d'arcade (quand le bon écran est atteint). Le résultat est écrit dans un fichier texte, qui est ensuite lu par Node-RED pour poursuivre le flow.
 +
   
 +
Les pages web ne défilent pas automatiquement : il faut implémenter un fonctionnement par des "websockets" pour permettre un dynamisme entre le serveur Node-RED et le client web.
 +
   
 +
=== Retours ===
 +
   
 +
La présentation au public lors d'In/Out, où plus de 100 personnes sont passées sur notre stand, a permis d'obtenir des retours d'utilisateurs lors des démos. Ceux-ci, récupérés en direct via des post-its, seront publiés ici après leur dépouillement sous forme de synthèse.
  
  

Revision as of 13:59, 23 March 2018

Le projet Facitrajet a été initié lors du marathon créatif MétroMix de novembre 2017. Après quelques mois de collaboration, un premier prototype a été présenté au village "Out" de l'évènement InOut sur le stand de Rennes Métropole, les 17 et 18 Mars 2018.

Cette page vise à documenter le projet, de manière ouverte, pour permettre sa réappropriation et son amélioration par toute personne motivée.

Principe

L'idée fondatrice du projet est de guider un voyageur dans un réseau de transport, à l'aide d'un support papier, imprimé à la demande.

Le support, tout comme la borne qui le fournit, doit être adapté à l'utilisateur et facile d'accès. La cible prioritaire est le public éloigné du numérique, qui ne maîtrise pas les smartphones et leurs applications. Par conséquent, le choix a été fait d'une interface vocale, plus facile à prendre en main qu'un clavier ou un écran tactile.

La force de cette borne numérique est de pouvoir s'adapter immédiatement à son public : en lisant la carte Korrigo, elle connait l'âge de l'usager et peut adapter son affichage/impression. De même, si des préférences de voyage sont indiquées (bagages, poussette, difficultés de déplacement), le système est en mesure de vérifier que le trajet proposé est sans encombres.

Technologies employées

De par sa naissance lors d'un hackathon, le projet a employé des technologies facilement accessibles, avec un besoin de codage minimal. Une maquette de borne a été proposée à la restitution de Métromix, qui établissait les éléments physiques indispensables :

  • un écran,
  • un micro et un haut-parleur,
  • une imprimante thermique.

Dans le même temps, les briques logicielles nécessaires ont été identifiées :

  • moteur de calcul [Navitia.io] pour les itinéraires,
  • données ouvertes de Rennes Métropole pour l'état de fonctionnement des équipements des stations,
  • reconnaissance vocale via Google AIY et son kit de développement ouvert au public,
  • langage React.JS pour la mise en forme du ticket,
  • et enfin le logiciel Node-RED pour l'orchestration des opérations.

Prototype : Mars 2018

Déterminée à poursuivre l'aventure et encouragée par les retours positifs, l'équipe de cinq personnes a poursuivi ses travaux de Novembre à Mars, afin de présenter un prototype fonctionnel au public.

Matériel

Le prototype est basé sur un ordinateur Raspberry Pi, utilisant un OS Linux. Il est connecté à l'écran tactile officiel Raspberry Pi de 7", et au shield "Voice Kit" vendu par Google. Ce shield fournit des connexions pour un microphone stéréo, des enceintes, et un bouton poussoir lumineux de type "arcade". Enfin, une imprimante thermique série (TTL) est reliée par les ports RX/TX du Raspberry Pi.

Un lecteur de carte Korrigo, fourni par Keolis, est relié en USB.

Logiciel

Le Raspberry Pi utilise un OS Linux "Raspbian", via une image-disque fournie par le projet Google AIY.

L'orchestrateur est le logiciel Node-RED, en version 0.17.5(?) : il faut mettre à jour la version fournie par défaut sur Raspbian, en utilisant la commande node-red-upgrade-pi. Les "flows" Node-RED qui font fonctionner la borne sont disponibles sur le dépôt de code du projet.

La reconnaissance vocale utilise le projet Google AIY - Voice Kit, via un script Python qui crée les connexions nécessaires auprès de l'API Google, avec un jeton de connexion lié à un compte google dédié au projet Facitrajet.

Le calcul du trajet est réalisé par appel à l'API Navitia, avec un jeton de connexion dédié au projet Facitrajet.

La vérification des pannes se fait par appel à l'API Data-Explore de Rennes Métropole.

Le traitement du résultat de calcul (fichier JSON) est effectué par une application en React.JS, également disponible sur le dépôt. Celle-ci est lancée au démarrage du Raspberry Pi, et s'actualise quand le fichier JSON est modifié (par le flow Node-RED).

Enfin, l'interface graphique actuelle, en HTML/CSS, a été codée spécifiquement pour l'écran 7" et nécessite au moins quelques améliorations.

Fonctionnement

Le navigateur est lancé au démarrage de la borne, affichant l'interface "client" (et non l'espace de développement Node-RED).

L'appel de la fonction de reconnaissance vocale est fait par un appui sur le bouton d'arcade (quand le bon écran est atteint). Le résultat est écrit dans un fichier texte, qui est ensuite lu par Node-RED pour poursuivre le flow.

Les pages web ne défilent pas automatiquement : il faut implémenter un fonctionnement par des "websockets" pour permettre un dynamisme entre le serveur Node-RED et le client web.

Retours

La présentation au public lors d'In/Out, où plus de 100 personnes sont passées sur notre stand, a permis d'obtenir des retours d'utilisateurs lors des démos. Ceux-ci, récupérés en direct via des post-its, seront publiés ici après leur dépouillement sous forme de synthèse.


Perspectives

Documenté et ouvert, le projet doit maintenant prendre une trajectoire plus "professionnelle". La rémunération de ses porteurs doit être envisagée à court terme, pour permettre un développement serein et rapide d'une solution plus aboutie. Toutes les pistes sont cependant ouvertes.

Sur le plan technique, plusieurs pistes d'améliorations de la borne sont déjà identifiées :

- Intégration de la fréquentation des bus et de la météo
- Utilisation d'un logiciel de reconnaissance vocale respectueux des données personnelles
- Utilisation d'un outil de gestion des dialogues (proposition de collaboration d'une PME locale)
- Application à toute structure nécessitant un guidage : campus, hôpital, administration... 
- Une déclinaison évènementielle est également envisagée


Équipe

Membre Rôle
Julien Bonnaud
Alexandre de Sousa
Guillaume Lavenir Appui à la gestion de projet
Elias Martin Product Owner ; Lead Coder
Astrid Thomas-Bourgneuf Appui "approche usagers"
Sophie Vanwaescappel

Ressources documentaires

[[ http://facitrajet.strikingly.com | Le site officiel du projet]]

Le dépôt de code informatique du projet

La page wiki-rennes lors de MétroMix