Facitrajet

From WikiRennes
Jump to: navigation, search

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. Un résumé succinct du projet est disponible sur le site-façade de présentation.

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

Borne-prototype de Facitrajet, vue de face
Borne-prototype de Facitrajet, vue de face

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.

Deux fonctionnalités sont encore à terminer : la reconnaissance vocale n'est pas intégré au flux (c'est un script Python indépendant) ; et le visuel du ticket n'est pas imprimé car il n'est pas (encore) récupérable sous forme d'un fichier. La démonstration incluait donc un ticket factice, et un appui sur un bouton pour lancer la reconnaissance vocale.

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.

Borne-prototype de Facitrajet, éléments techniques
Borne-prototype de Facitrajet, éléments techniques

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 l'écran correspondant est atteint lors du parcours utilisateur. 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 (nécessiter de 'cliquer' à chaque fois) : il faudrait implémenter un fonctionnement par des "websockets" pour permettre un dynamisme entre le serveur Node-RED et le client web.

Enfin, le trajet mis en forme est affiché (serveur ReactJS indépendant de NodeRed), mais l'impression déclenchée est basique (coordonnées et logo du projet).

Retours

La présentation au public lors d'In/Out 2018, où plus de 100 personnes sont passées sur notre stand, a permis d'obtenir des retours et avis 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 le développement serein et rapide d'une solution plus aboutie. Toutes les pistes sont cependant ouvertes.

Sur le plan technique, au-delà du fonctionnement basique à achever, plusieurs axes d'améliorations de la borne sont déjà identifiés :

- Intégration de la fréquentation des bus et de la météo
- Mise en place d'un service web pour un calcul avant le début du trajet (création d'une image/PDF du trajet)
- 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