Outils pour utilisateurs

Outils du site


Panneau latéral

Accueil

Select other language :


Apprentissage

Enseignements

Enseignements Département Informatique SI5 et Master IFI

Enseignements Département Bâtiment Polytech'Nice

Autres Formations française et étrangère

Activités administratives, Ingénierie et Innovation Pédagogiques

Apprentissage Département Informatique SI5/Master 2 ingénierie informatique EUR DS4H


Recherche

Valorisation de la Recherche

Dépôts Logiciels à l’Agence de Protection des Programme (APP)

Valorisation des résultats de recherche et transfert

Diffusion de la Culture scientifique et Technologique

Communications de presse

Séminaire ENSI Tunis

Pédagogie Innovante

Relations industrielles et socio-économique

Organisation de Manifestations

  • Conférence sur les FabLabs, Alexandre Schneider, Professeur Agrégé en Génie Mécanique, Université de Reims Champagne-Ardenne Web
  • Journées UbiMob'14 Site Web

Animation de la Recherche

U-Santé

Privé

Outils

Sources d'Informations

cours:plim:projet16_17:gr4:gr4

Projet Groupe 4

Présentation du projet

  • Nom 1 : Stackler Mathieu (IAM)
  • Créneau (AM ou PM) : AM
  • Nom 2 : Bin Sabari Shafiq Daniel (IAM)
  • Créneau (AM ou PM) : PM
  • Nom du projet : Localisation de Points d'Intérêt

Un scénario d'illustration du Projet

Bob est un utilisateur qui veut savoir où il passe son temps. Avec Localisator, ses positions GPS ainsi que son altitude seront enregistrées par le téléphone. L'application pourra ensuite faire des regroupements de positions afin d'identifier les lieux les plus fréquentés par l'utilisateur. On peut ensuite faire des regroupements de points (barycentres) afin de trouver les points d'intérêts de l'utilisateur (domicile, lieu de travail, magasins, …). Avec les données de plusieurs utilisateurs, on peut identifier les points intéressants comme par exemple les lieux touristiques ou les restaurants préférés par un ensemble d’utilisateurs. Ces points d’intérêts peuvent être ensuite proposés aux autres utilisateurs quand ils sont à proximité de ces derniers, pendant leurs voyages par exemple. L'application pourra les afficher sur une carte.

Matériel Disponible

Référence du SmartPhone : Sony Xperia Z3 Compact

Caractéristiques techniques : http://www.sonymobile.com/fr/products/phones/xperia-z3-compact/specifications/#tabs

Capteurs :

  • Accéléromètre
  • Luminosité
  • Orientation
  • Proximité
  • Gyroscope
  • Son
  • Magnétique
  • Pression
  • Caméra
  • Boussole

Communication :

  • WiFi 802.11a/ac/b/g/n
  • Bluetooth 4.0
  • A-GPS
  • 3G/4G
  • GPS

La cible Mobile

Notre cible sera n’importe quel utilisateur utilisant un smartphone (équipé d’un GPS et d’un baromètre) sous Android. Voici la référence de smartphone que nous allons utiliser pour développer et tester notre application :

Référence du Smartphone : Sony Xperia Z3 Compact

Caractéristiques techniques : http://www.sonymobile.com/fr/products/phones/xperia-z3-compact/specifications/#tabs

L'environnement logiciel

Le développement de l’application sera fait sous Android Studio. Le développement du serveur sera fait sur n'importe quel IDE supportant Java.

L'activité à reconnaître

Nous enregistrons les positions d’un utilisateur pendant toute la durée que le téléphone est allumé. La reconnaissance d’activité est faite avec les paramètres comme l’heure et la durée de temps que l’utilisateur reste sur un lieu. Nous pouvons faire des hypothèses, par exemple, son lieu de travail étant le lieu où il passe sa journée de lundi à vendredi, et sa maison étant le lieu qu’il reste de la nuit jusqu’au matin.

Ressources utilisées dans le Projet

Liste des capteurs mais aussi Data collectés par le Mobile, utilisés pour le projet :

  • GPS avec en plus le réseau mobile pour obtenir la position de l'utilisateur
  • Baromètre pour connaître l’altitude, qui va donner une meilleure précision de la position

Liste des SDK et API pour l'accès à ces informations :

Les algorithmes

Nous avons choisi d’utiliser l’algorithme de partitionnement en k-means. Cet algorithme est adapté pour faire le clustering, qui est le cœur de notre application. La reconnaissance sera faite en mode non supervisé.

Les métriques qui seront utilisées pour l’apprentissage sont les coordonnées GPS et l’altitude, et le temps d’enregistrement de coordonnées. Pour faire le clustering, il faut identifier les points communs pour une zone, dont les distances entre les points, et aussi l’heure d’enregistrement. Donc, si la distance entre les points est faible et le temps d’enregistrement est proche, ils appartiennent à une même zone. Les barycentres peuvent être choisis en prenant les points de GPS dans des heures spécifiques (minuit peut par exemple identifier le domicile).

Pour identifier les lieux touristiques, on peut considérer par exemple les points qui ne sont ni la maison ni le lieu de travail de l’utilisateur, et les lieux visitées pendant les weekends ou les jours fériés.

Faisabilité

La récupération des coordonnées GPS ainsi que l'altitude de l'utilisateur ne posent pas de problème, le mobile disposant d'un capteur GPS et d'un baromètre. L'affichage des points d'intérêts via Google Maps est également faisable, car notre algorithme donnera directement la longitude et la latitude des points d'intérêts, il suffira alors juste de les afficher.

Liste des SDK et API pour l'accès à ces informations :

Une contrainte de cette application est que les données doivent être enregistrées pendant toute la durée d’allumage de téléphone, donc elle doit tourner toujours en arrière-plan. Cela peut réduire l’autonomie de la batterie.

Ensuite, après le partitionnement par l’algorithme d’apprentissage, nous avons bien des zones, mais nous n’avons pas toujours automatiquement la description de ces zones. On pourrait dans ces cas utiliser les données de sites comme Google Maps pour identifier les lieux, et peut-être demander la confirmation de l’utilisateur pour valider notre hypothèse.

Rendu Final

Code

Pour lancer le serveur, extraire le .zip et lancer le .jar avec la commande java -jar <nom de jar>

Jar du serveur : localisatorserveur-1.0-snapshot-shaded.jar.zip

APK : localisator.apk.zip

Code Source

Le code source est disponible sur GitHub:

→ application : https://github.com/shafdanny/localisator

→ serveur : https://github.com/MathieuStackler/LocalisatorServeur

How To

Application Androïd :

Développée avec Androïd Studio

  • Télécharger le .zip
  • L'extraire
  • Lancer l'installation de l'apk
  • Accepter les permissions pour le GPS et le Storage Externe
  • Mettre l'adresse IP du serveur suivi du port 4567 (voir image)

Explication des différents boutons :

  • Envoie des données : envoie les coordonnées GPS de l'application au serveur. Le serveur calcule le nombre de clusters défini par l'utilisateur (entre 2 et 4).
  • Lancement Service : démarre la collecte de coordonnées GPS.
  • Arrêt Service : arrête la collecte de coordonnées GPS.
  • Suppression des données : supprime les coordonnées GPS stockées en local sur le téléphone.
  • Map : affiche Google Maps avec les clusters précédemment calculés.
  • Find Match : envoie une requête au serveur pour savoir si d'autres ID ont des clusters identiques aux notre. Affichage d'un Toast avec les ID.
Serveur :

Développé sur un IDE supportant Java (Eclipse ou IntellIJ)

  • Télécharger le .zip
  • L'extraire
  • Dans un terminal, utiliser la commande “java -jar LocalisatorServeur-1.0-SNAPSHOT-shaded.jar”
Possibles erreurs :
  • Lancer le serveur depuis un IDE (Eclipse ou IntellIJ) en cas de time-out avec le jar.
cours/plim/projet16_17/gr4/gr4.txt · Dernière modification: 2017/02/19 13:14 par mstackler