« Pepper 2019 » – Détection de wifi

Le problème de la localisation.

Le guidage par le robot implique que l’on connaisse à chaque instant sa localisation précise. Le principe retenu est la triangulation de position en fonction de la force des signaux wifi du voisinage. La surface du CHBS est recouverte par plus de 900 bornes wifi. Un sous ensemble de ces bornes précisément identifiées et placées sur un plan sera suffisant pour permettre une géolocalisation convenable.

Sachant que ce principe de guidage par wifi est une clé fondamentale du projet, quelques mesures ont été faites afin de vérifier la faisabilité.
Dans la figure ci dessous, sont pointées quelques bornes wifi dans le couloir qui conduit de l’accueil au « pôle femme, mère, enfant ». Seules sont mentionnées les bornes visibles dans le couloir. Il en existe de nombreuses autres …

 

Un programme de test détaillé plus bas a permis de faire des relevés de forces des signaux wifi présents dans le niveau 0.
Dans le tableau suivant, seules quelques bornes sont sélectionnées :

Ces bornes suffisent pour obtenir la position de l’utilisateur dans le couloir principal : la courbe obtenue en prenant le maximum de la famille des courbes sélectionnées paraît facilement exploitable

Programme de test

Préliminaire

Le programme de test est écrit en python et nécessite le module wifi. Installation :
pip install wifi
Le module date un peu, mais est toujours fonctionnel : https://github.com/rockymeza/wifi

# -*- coding: utf-8 -*-
# Claude G. - 2018

import wifi


def Search():
    wifilist = []
    cells = wifi.Cell.all('wlp3s0')
    for cell in cells:
        wifilist.append(cell)
    return wifilist

"""
 calcule la qualité q d'un signal sous forme d'entier
  0 < q <= 70 à partir de n = "q/70" 
""" 
def quality(n) : 
    q = int((n.quality.split('/'))[0]) 
    return q 

""" reçoit un tableau de dictionnaires (de wifi) renvoie le tableau rangé par 
    ordre décroissant de force de signal 
""" 
def triBulle(a) : 
    n = len(a) 
    print(n) 
    for i in range(n-1) : 
        for j in range(n-1,i,-1) :
            print(a[j]) 
            if quality(a[j]) > quality(a[j-1]) :
                a[j],a[j-1] = a[j-1],a[j]


"""
 Reçoit une liste de wifi du voisinage
 et renvoie la liste des wifi appartenant à l'établissement
"""
def selectionneWifi(liste):
    return liste
    

if __name__ == '__main__':
    # Récupération de la liste des wifi
    lw = Search()
    print(lw)
    # .. rangement par ordre décroissant de force
    triBulle(lw)
    # on ne garde que les wifi connus
    lw = selectionneWifi(lw) 
    for lwi in lw:
       print(lwi.ssid + " " + lwi.address + " " + lwi.quality)
       print( str(quality(lwi)) )

Extrait de la sortie du programme en un point donné :


wifi-chbs 34:BD:C8:AC:49:32 25/70
25
wifi-chbs-mobiles 34:BD:C8:AC:4A:2F 24/70
24
\x00 34:BD:C8:AC:4A:2E 23/70
23
wifi-chbs-patients 34:BD:C8:AC:49:34 23/70
23
\x00 34:BD:C8:AC:4A:29 23/70
23

Projet « Pepper 2019 »

Le projet se situe dans le contexte global de l’amélioration de l’accueil au sein du Centre Hospitalier de Bretagne Sud (CHBS de Lorient).
Pour bien comprendre les enjeux, il est important d’avoir quelques chiffres en tête :

  • 97 500 m2 de planchers construits – 42 000 m2 de surface utile

  • Plus de 3000 locaux

  • 691 lits et places dont 118 pour le pôle Femme-Mère-Enfant et 573 pour les activités de médecine et de chirurgie,

  • 4 plateaux d’hébergement comprenant chacun 112 lits,

  • 4 unités de 28 lits par plateau,

  • 80 % de chambres individuelles,

  • 1500 places de stationnement.

  • le système d’informations du CHBS en quelques chiffres :

    • Environ 120 outils informatiques différents ( pour le médical, l’administratif, DRH, paye , radiologie, imagerie …)

    • 3000 ordinateurs

    • plus de 900 bornes wifi, rien que sur le site du CHBS ( données, téléphone, sécurité …)

Malgré la qualité reconnue de l’accueil et une signalétique présente, il est très fréquent que les visiteurs se perdent en allant à leur rendez vous, étant donné la longueur des couloirs et le nombre d’intersections et de niveaux.

À certaines heures de la journée ou de la soirée, il peut, dans certains endroits, n’y avoir personne pour indiquer une direction ou une destination.

L’idée explorée par les responsables du CHBS est d’avoir une flotte de robots interactifs, pour renseigner et guider.

C’est dans ce cadre que se projet prend naissance : un robot Pepper va être programmé et testé pour des missions d’accueil et de guidage. Pour cela, des réunion avec les responsables du CHBS, accompagnée d’une visite officielle du CHBS nous a permis de rencontrer les cadres de santé des différents services du CHBS qui sont partants pour ce projet.

Note : dans ce même contexte, un autre projet est mené, plus exigeant en terme d’interactivité, mais a priori plus simple en terme de guidage. Ce 2ème projet, présenté dans un autre document concerne uniquement la chirurgie ambulatoire.

Pepper : le robot Pepper est un robot humanoïde de 1,20m de hauteur incluant quatre microphones directionnels ; une caméra 3D et deux HD ; deux émetteurs et récepteurs à ultrasons ; six capteurs lasers ; trois détecteurs d’obstacles ; trois roues omnidirectionnelles ; vingt moteurs haute précision pour les gestes (tête, bras, dos) ; accès autonome à Internet ; écran tactile de 10 pouces ; batterie lithium-ion de grande capacité (autonomie d’environ 12 heures).

Ce robot est spécialisé dans l’interactivité : conversation, reconnaissance faciale …

Expériences similaires

Des expériences ont déjà été conduites, comme par exemple dans les hôpitaux belges de Liège et d’Ostend en juin 2016. Les difficultés rencontrées, et les erreurs commises là bas doivent être prises en compte dans la réalisation pour le CHBS. En particulier :

  • si le robot est placé à l’accueil dans un emplacement quelconque, le public passe sans le voir : il est complètement transparent.
    Même avec une certaine interactivité, il a du mal à capter l’attention. Une présentation humaine (à partir de l’accueil) paraît indispensable dans un premier temps ;

  • les tests avec le public doivent se faire avec des programmes ne nécessitant pas la présence active d’un informaticien qui « débugge » en direct ;

  • l’interaction image/son devra toujours être doublée par une proposition d’interaction sur la tablette embarquée. En effet, la reconnaissance faciale de Pepper fonctionne bien pour un visage plutôt proche de la caméra. D’autre part, il est en difficulté lorsqu’il y a plusieurs visages. Or, dans un hall d’accueil, on peut s’attendre à des arrivées de visiteurs accompagnés de leur famille, voire à des attroupements.

  • Pepper est sensible aux bruits de fond. Des travaux, des enfants qui chahutent rendent l’interaction vocale difficile.

  • Pour le guidage, l’utilisation des capteurs infra rouge ne suffit pas à cause des variations de lumière.

Ces résultats doivent être pris comme points d’entrées pour la réalisation. Les tests devront être faits régulièrement sur site, afin de valider les étapes en situation réelle.

Ubuntu touch – libertine

Libertine est un conteneur qui permet d’installer les applications standard linux dans une tablette
ou smartphone installée avec « Ubuntu touch ».

Installation du conteneur

  1. Mettre le smartphone en mode développeur
  2. Toutes les manipulations suivantes sont à faire à partir d’un shell distant avec adb par exemple. L’installation ne fonctionne pas (y compris en mode administrateur) avec la console locale de Ubuntu Touch.
    • Dans une console du pc: adb shell
    • Dans le shell ainsi ouvert :
      libertine-container-manager create -i xenial
      L’option -i indique le nom choisi pour le conteneur (cela peut être ce que vous voulez).
  3. Pour installer un logiciel dans le conteneur :
    • libertine-container-manager exec -i xenial -c « /bin/bash »
      Ceci crée un shell en mode superuser
    • # sudo apt install thunderbird