Projet Groupe 4

Présentation du projet

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 :

Communication :

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 :

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

Explication des différents boutons :

Serveur :

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

Possibles erreurs :