Ceci est une ancienne révision du document !
NiceRide
Présentation du Projet
- Nom1: Haouel Ameni
- Nom 2: Jebara Insaf
- Thème du projet: covoiturage
- Nom du Projet:NiceRide
Un Scénario d'illustration du Projet
Toto est un étudiant de Polytech Sophia Antipolis qui passe des heures pour arriver à Sophia tandis que normalement la distance ne prend que 45 minutes.
Alors pourquoi pas une solution pour Toto ?
La solution consiste en une application mobile qui permet de géo-localiser les étudiants de Polytech se trouvant à proximité de l’utilisateur pour but de trouver un accompagnant ou du covoiturage. La géolocalisation des étudiants est définie par des coordonnées X, Y se trouvant dans une zone initialisée selon ces coordonnées. L'attribution des étudiants aux voitures sera effectuée à travers un algorithme de clustering.
On prend en considération la position de l’étudiant, le temps écoulé pour un chauffeur pour récupérer un étudiant, etc ..
Par conséquent Toto qui se trouve à Nice. Il se connecte via l'application et trouve N personnes connectées proches de lui sur une Map. Il peut alors contacter ces personnes par messagerie afin de se mettre d'accord pour un covoiturage. Celui qui reçoit la demande peut confirmer ou refuser selon le nombre de places restant. Donc l'application simplifie la vie de l'étudiant à Polytech et lui permet d'avoir un réseau social plus enrichi.
Matériel Disponible
• Référence du SmartPhone : Samsung Galaxy A5
• Caractéristiques techniques: http://fr.gsmchoice.com/fr/catalogue/samsung/galaxya5hspa/Samsung-Galaxy-A5-HSPA.html
• Capteurs: accéléromètre , Proximité
• Communication et réseaux: WLAN, bluetooth, GPS, NFC, 3G(HSPA+)
• Caractéristiques de l'OS : Android 5.0.2
• Environnements logiciels utilisables pour développer sur ce Smartphone : Les services offerts par cet OS facilitent l'exposition des données fournies par le smartphone et spécifiquement l'exploitation des flux des données injectés dans le téléphone.
Architecture logicielle de notre application
Notre architecture est décortiquée en 3 parties :
- Le client : L’application Android qui sera installée sur le smartphone de l’utilisateur
- La partie serveur : qui constitue la partie de traitement de donnée et qui englobe notre algorithme faisant tourner une partie de l’application
- La partie base de données qui est déployée sur le cloud Firebase.
Notre application offre les services suivants :
- Connexion personnalisée du propriétaire et du client
- Ajout de trajet (ride) à l’instant donnée
- Consultation de la liste des trajets disponibles à parti de l’instant où le demandeur de trajet fait sa requête.
- Filtrage des données de trajets selon la destination demandée.
- L’utilisateur peut contacter le propriétaire de la voiture pour une demande de trajet, c’est lors qu’une notification informe le propriétaire.
- Consultation des listes de demandes reçues au propriétaire et affectation aux clients selon la position la plus proche et le nombre de places disponibles dans la voiture.
Les données sont échangées avec le cloud en mode online et mode offline.
Le mode offline est une fonctionnalité offerte par Firebase et qui se charge automatiquement de la sauvegarde des données en mémoire cache. Si aucune connexion à internet n'est disponible alors seulement quelques données sont affichées. Dès lors qu'une connexion est à nouveau disponible la synchronisation s'effectue automatiquement.
Ressources utilisées dans le Projet
Liste des capteurs
- GPS et réseau mobile pour la géolocalisation et le suivi de l'utilisateur.
API utilisées
- GoogleMapAPI(Gmap): https://developers.google.com/maps/documentation/android-api/?hl=fr
Algorithme utilisé
- Algorithme de Clustering: Les propriétaires de voitures seront des clusterheads et les autres personnes seront des sous cluster afin de simplifier le processus d'affectation des clients aux voitures.
- Affectation des clients(nœud) au cluster dépend de la distance entre le clusterhead(chauffeur) et le nœud pour cela on a implémenté l'algorithme du plus proche voisin(KNN - Nearest Neighbour)
- Reconnaissance de l'activité: non supervisé
Version OS: 5.0.2
SDK utilisé: Le SDK d’Android nous permettra d’avoir accès aux données du GPS.
https://developer.android.com/guide/topics/sensors/sensors_motion.html
https://developer.android.com/studio/index.html
Conclusion sur la faisabilité du Projet :
Les fonctionnalités offertes par cet application tel que la géo-localisation est un service à consommer en utilisant les données collectées du GPS pour ensuite être traduites en des coordonnées sur une map en utlisant l'API google Map V2. La communication inter-utilisateurs sera traduite par de simples évènements et une notification pour faire savoir qu'un échange a lieu.
Rendu Final
Code Source
Ci-dessous le lien pour accéder respectivement au code source de la partie serveur Nodejs ainsi que la partie Android: https://github.com/AmeniAol/Elim_App
https://drive.google.com/file/d/0B1qpaIz-lhLMTG9DQTdIU3BRMzQ/view
Fonctionnement de la machine serveur
Le serveur reçoit en entrée les positions de la véhicule (longitude + latitude ) ainsi la longitude et la latitude des utilisateurs qui ont demandé de rejoindre cette véhicule pendant un trajet bien déterminé qui est proportionnelle à la position courante de la véhicule. Pour chaque utilisateur qui a demandé de rejoindre cette véhicule, nous calculons la distance qui sépare chaque client de la véhicules pour ensuite les comparer et les attribués selon les places disponible dans cette voiture. l'attribution est enregistrée sur notre cloud(firebase) sous forme de cluster un Owner(véhicule) plus les clients associés à ce trajet.
Exécution de l'application
- Installation de l'environnement
Il suffit de télécharger le code du serveur sur le lien https://github.com/AmeniAol/Elim_Server ainsi télécharger l'environnement à partir du lien https://nodejs.org/en/download/ puis entrer dans le dossier du serveur appuyer sur clt+shift pour accéder à la ligne de commande nodejs pour ensuite taper la commande node index.js et le script se lance.
- Installation de l'apk:
Télécharger l'apk suivant :app-debug.rar Installer l'apk pour pouvoir manipuler l'application:
* Utilisation de l'application: Après avoir téléchargé l'application, ouvrir l'application installée et manipuler les interfaces suivantes: En tant que propriétaire se connecter avec Login : amelie Mot de passe : amelie
En tant que client se connecter avec Login : insaf Mot de passe : insaf