RICM5 2017-2018 - SmartMove: Difference between revisions

From air
Jump to navigation Jump to search
Line 280: Line 280:
*Cours de management de projets innovants - 4h
*Cours de management de projets innovants - 4h
*Début du travail d'intégration du [https://github.com/googlesamples/android-BluetoothLeGatt GoogleSample BleGATT] en tant qu'activité secondaire
*Début du travail d'intégration du [https://github.com/googlesamples/android-BluetoothLeGatt GoogleSample BleGATT] en tant qu'activité secondaire
*La forme choisie est celle d'un [https://stackoverflow.com/questions/1979369/android-activity-as-a-dialog Dialog Activity] pour avoir une interaction ergonomique et user friendly
|<!-- Vincent --> style="width: 280px;" |
|<!-- Vincent --> style="width: 280px;" |
*Cours de management de projets innovants - 4h
*Cours de management de projets innovants - 4h
Line 295: Line 294:
*Mise sur Git du code arduino.
*Mise sur Git du code arduino.
|<!-- Clément --> style="width: 280px;" style="color:purple" |
|<!-- Clément --> style="width: 280px;" style="color:purple" |
*La forme choisie est celle d'un [https://stackoverflow.com/questions/1979369/android-activity-as-a-dialog Dialog Activity] pour avoir une interaction ergonomique et user friendly
|<!-- Vincent --> style="width: 280px;" style="color:purple" |
|<!-- Vincent --> style="width: 280px;" style="color:purple" |
|-
|-
Line 306: Line 306:
|<!-- Timothée --> style="width: 280px;" |
|<!-- Timothée --> style="width: 280px;" |
|<!-- Clément --> style="width: 280px;" |
|<!-- Clément --> style="width: 280px;" |
*Application fonctionnelle de façon satisfaisante. Cependant, elle ne gère qu'un serveur [https://www.bluetooth.com/specifications/gatt/generic-attributes-overview BLE GATT] là où un par capteur serait nécessaire. Début des modifications en ce sens.
|<!-- Vincent --> style="width: 280px;" |
|<!-- Vincent --> style="width: 280px;" |
|-
|-
Line 312: Line 313:
| rowspan="1" | <span style="color:blue">Remarques</span>
| rowspan="1" | <span style="color:blue">Remarques</span>
|<!-- Anthony --> style="width: 280px;" style="color:purple"|
|<!-- Anthony --> style="width: 280px;" style="color:purple"|


|<!-- Timothée --> style="width: 280px;" style="color:purple" |
|<!-- Timothée --> style="width: 280px;" style="color:purple" |
|<!-- Clément --> style="width: 280px;" style="color:purple" |
|<!-- Clément --> style="width: 280px;" style="color:purple" |
Beaucoup de travail est reste à effectuer afin de permettre la gestion de plusieurs serveurs en simultanée quand l'application de base ne le gère pas du tout. Une meilleure conception aurait réduit l'impact de ce problème
|<!-- Vincent --> style="width: 280px;" style="color:purple" |
|<!-- Vincent --> style="width: 280px;" style="color:purple" |
|-
|-
Line 329: Line 329:
*Hackathlon
*Hackathlon
|<!-- Clément --> style="width: 280px;" |
|<!-- Clément --> style="width: 280px;" |
*Travail de transition pour une gestion multi-serveurs. Modification des structures de données et des Callbacks.
|<!-- Vincent --> style="width: 280px;" |
|<!-- Vincent --> style="width: 280px;" |
*Abandon du code trouvé précédemment car le modèle ne nous correspond pas. Reprise d’un code utilisant un modèle LSTM en Tensorflow, qui reconnait l’activité d’une personne (assis, debout, en train de marcher, montant des marches…)
*Abandon du code trouvé précédemment car le modèle ne nous correspond pas. Reprise d’un code utilisant un modèle LSTM en Tensorflow, qui reconnait l’activité d’une personne (assis, debout, en train de marcher, montant des marches…)

Revision as of 12:23, 9 March 2018

Smart Move

Smartmove est un ambitieux projet imaginé par quatre étudiants de Polytech Grenoble. Smartmove est une approche nouvelle du sport avec l'IoT et l'apprentissage machine.

Smart-move logo.png

Équipe du projet

Membre Rôles
Anthony Geourjon Chef de projet
Timothée Lemaire Responsable hardware (black belt thinkpad)
Clément Rouquier Responsable Dofus
Vincent Turrin Batteur
  • Supervisé par : Bernard Tourancheau, Didier Donsez

Abstract

In 2017, two highly innovative domains emerge  : the Internet of Things and the Artificial Intelligence and especially the machine learning. These technological advances open new possibilities to imagine new ways to help people. In this project, we present our proposal for the Open IoT challenge 4.0 organized by the Eclipse Foundation. This project is also part of the course of Wireless Sensor Networks given by Prof. Bernard Tourancheau at Polytech Grenoble (Engineering school)

Mots clés

  • IoT
  • Machine learning,
  • Sports

Présentation

Présentation du projet dans le cadre de l'Eclipse IoT challenge : Smartmove

SCRUM

Une liste plus actualisé des tâches est disponible sur Trello : https://trello.com/b/RVfoU3gl/smart-move-first-tasks

Sprint 1 - Du 29/01/18 au 04/02/18

  • Définition des rôles
  • Mise en place du projet pour tous les membres du groupe(Trello, Github)
  • Création de la page AIR pour la tenue de journal
  • Prise de contact avec les enseignants concernés
  • Début de la phase de conception
  • Séance de management de projets innovants

Sprint 2 - Du 05/02/18 au 11/02/18

  • Définition des taches et des deadline sur Trello
  • Première expérimentation avec différents modèles de machine learning. Nous faisons face à de très nombreuses contraintes comparé aux modèles que nous trouvons sur le net comme :
    • Nos données sont un flux continu et non un simple échantillon borné à analyser
    • Nous recevons des données de plusieurs capteurs, la synchronisation doit être quasi parfaite pour que les données est un sens.
    • Nous avons découvert des applications d'enregistrement de mouvement fonctionnant sur Android. https://blog.lemberg.co.uk/motion-gesture-detection-using-tensorflow-android
  • TODO parler de BLE et arduino
  • Cours de gestion de projet

Sprint 3 - Du 12/02/18 au 18/02/18

  • Soutenance de mi parcours le mercredi 14/02 de 10h30-11h avec Didier Donsez et Bernard Tourancheau
    • Ils sont satisfait de la direction que prend le projet
    • Didier nous propose de remplacer les Arduino par des SensorTag qui seraient plus adaptés à nos besoins.
  • Expérimentations avec un modèle de machine learning prometteur (LSTP Long short term memory) https://github.com/SmartMove-PolytechGrenoble/TensorFlow-on-Android-for-Human-Activity-Recognition-with-LSTMs
  • Expérimentations d'entrainement de modèle sur nos machines -> problème de config sur GPU
  • Cours de gestion de projet

Sprint 4 - Du 19/02/18 au 25/02/18

Vacances

Sprint 5 - Du 26/02/18 au 04/03/18

  • Premières expérimentations avec le SensorTag malgré les problèmes de piles.
  • Travail sur la gestion des entraînements (au sens, action que veut reconnaître l'utilisateur)
  • Cours de gestion des risques en projets
  • Réunion 1 de suivi avec Didier
    • Il est satisfait de nos avancées (communication téléphone/SensorTag, avancement dans le machine learning, etc)

Sprint 6 - Du 05/03/18 au 11/03/18 (en cours)

  • Réunion 2 de suivi avec Didier

Sprint 7 - Du 12/03/18 au 18/03/18 (prévisions)

  • Soutenance le jeudi 15/03 de 9h-10h
  • Préparation de la soutenance
  • Fusion de tous nos applications de développement en un démonstrateur pour la soutenance

Journal

Sprint1

Date GEOURJON Anthony LEMAIRE Timothée ROUQUIER Clément TURRIN Vincent
SPRINT 1
Lundi 29/01/18 Tâches
  • Récupération du matériel au fablab (Arduino 101)
  • Tentative d'un flash d'un exemple sur la carte
  • Lecture et compréhension des divers documents produits durant le S9 par les 3 autres membres du projet, un gros travail de conception ayant déjà été effectué en amont de mon arrivée
Remarques
  • Impossible de faire marcher quelque chose sur la carte pourtant elle est détecté
  • Confrontation de l'idée que m'ont donné les documents de conception avec la vision des autres membres afin d'assurer une divergence de trajectoire aussi faible que possible
Mardi 30/01/18 Tâches
  • Tentative d'un flash d'un exemple sur la carte
  • La technologie de communication entre les cartes et le téléphone s'effectuera sur la base du Bluetooth BLE. Ayant déjà travaillé sur cette technologie sur le projet UltraTeam, je ferai cette partie.
Remarques
  • Le bootloader de la carte est broken et ne fonctionne depuis Linux, Avec Windows Timothée y arrive facilement
  • Le BLE est une technologie qui m'avait donné beaucoup de tord durant le précédent projet et il m'intéresse de m'y remettre dessus. le nombre de ressources disponibles est assez peu limité et les ressources existantes ont généralement été conçues pour du HardWare spécial
Mercredi 31/01/18 Tâches
  • Cours de management de projets innovants - 4h
  • Cours de management de projets innovants - 4h
  • Cours de management de projets innovants - 4h

Analyse du code d'UltraTeam pour voir ce qui est récupérable du travail déjà effectué dans le cadre du projet antérieur

  • Cours de management de projets innovants - 4h
  • Etude problématique projet
  • Formation tensorflow : tuto simple, structure du code et concepts de base
Remarques
  • Je ne récupérerai que peu de code du précédent projet en raison du nombre important de bricolage. J'ai décidé de me rebaser quasi-exclusivement sur le GoogleSample BleGATT
Vendredi 02/02/18 Tâches
  • Tentative de flash sur l’Arduino récupéré par Anthony au fablab, finalement réussi sur Windows.
  • Essai de l'exemple "HearthRate Monitor" avec connexion Bluetooth.
  • Création d'un dépot Github se basant sur un Fork du Google Sample et qui aura ensuite pour but d'être intégré dans l'application finale créée par les autres.
  • Continuation de la formation TF Visionnage vidéos, notamment conférence sur deep learning adapté à Tensorflow
Remarques
  • Travail avec Clément pour faire fonctionner l'exemple en BLE sur son début d'appli. finalement fonctionnel en demandant l'utilisation du GPS sur android (Comme le requière la spécification BLE)
  • Le GoogleSample se base sur un design AppCompat, ce qui n'est pas pratique pour l'intégration. Je me souviens avoir eu le même problème sur UltraTeam. Je le gèrerai cependant de façon opposée -> Au lieu de passer toute mon application sur le même design, je vais transformer le code pour l'utiliser sans ce Framework.

Sprint 2

Date GEOURJON Anthony LEMAIRE Timothée ROUQUIER Clément TURRIN Vincent
SPRINT 2
Lundi 05/02/18 Tâches
  • Travail sur le AIR
  • Export des taches backlog sur Trello
  • Début du code Arduino en partant de l'exemple "HeartRate Monitor"
  • L'APK fournie par un clone du GoogleSample BleGATT ne trouve pas toujours les périphériques BLE environnants. Début des investigations
Remarques
  • Pas mal de difficultés lors du test, en raison de difficultés de debugging sur l'Arduino.
  • L'application fonctionne sans soucis sur les plus anciennes versions d'Android mais semble avoir des soucis à partir d'une certaine version du SDK toujours indéterminée.
  • Étude des problématiques propres à notre projet : Stream de data, Dynamic Time
Mardi 06/02/18 Tâches
  • Avancement du code Arduino.
  • Etude d’un code de reconnaissance de mouvement tensorflow Android, + test, comprendre pour pouvoir modifier en conséquence
Remarques
  • Résolution des problèmes rencontrés la veille (Mauvais initialisation du module gérant les capteurs), puis travail sur l'envoie des données par blutooth.
  • le problème a également fait l'objet de plusieurs Pull Requests sur le dépo. Certaines ont été validées mais aucune mergées.
Mercredi 07/02/18 Tâches
  • Cours de management de projets innovants - 4h
  • Cours de management de projets innovants - 4h
  • Finalisation du code arduino pour le moment.
  • Cours de management de projets innovants - 4h
  • Début du travail d'intégration du GoogleSample BleGATT en tant qu'activité secondaire
  • Cours de management de projets innovants - 4h
  • Étude approfondie des modèles : il faut sûrement utiliser un LSTM
Remarques
  • Recherches sur les UUID (pour l'arduino).
  • Envoie des valeurs depuis l'arduino sous forme binaire (nécessite de séparer les octets des ints)
  • Mise sur Git du code arduino.
  • La forme choisie est celle d'un Dialog Activity pour avoir une interaction ergonomique et user friendly
Jeudi 08/02/18 Tâches
  • Diverses expérimentations avec le MotionGesture. Installation de Gesture Manager sur mon téléphone et record de quelques mouvemnts sur un seul capteur (ceux du téléphone).
  • Application fonctionnelle de façon satisfaisante. Cependant, elle ne gère qu'un serveur BLE GATT là où un par capteur serait nécessaire. Début des modifications en ce sens.
Remarques

Beaucoup de travail est reste à effectuer afin de permettre la gestion de plusieurs serveurs en simultanée quand l'application de base ne le gère pas du tout. Une meilleure conception aurait réduit l'impact de ce problème

Vendredi 09/02/18 Tâches
  • Hackathlon
  • Travail de transition pour une gestion multi-serveurs. Modification des structures de données et des Callbacks.
  • Abandon du code trouvé précédemment car le modèle ne nous correspond pas. Reprise d’un code utilisant un modèle LSTM en Tensorflow, qui reconnait l’activité d’une personne (assis, debout, en train de marcher, montant des marches…)
Remarques

Sprint 3

Date GEOURJON Anthony LEMAIRE Timothée ROUQUIER Clément TURRIN Vincent
SPRINT 3
Lundi 12/02/18 Tâches
  • Déchiffrage de codes utilisant un modèle LSTM : cela semble être un bon modèle pour notre cas, à voir les résultats pour des moves assez court.
Remarques
Mardi 13/02/18 Tâches
  • Modifications du code pour correspondre à notre formattage de données + modification du prétraitement des données
Remarques
Mercredi 14/02/18 Tâches
  • Conception de la gestion des entraînements. Entraînements au sens "suite d'activités" que l'utilisateur peut faire et vouloir détecter
  • Soutenance mi parcours
  • Soutenance mi parcours
  • Soutenance mi parcours
  • Soutenance mi parcours
  • Résolution problèmes inconnus Tensorflow
Remarques
Jeudi 15/02/18 Tâches
  • Cours gestion
  • Cours gestion
  • Cours gestion
  • Cours gestion
  • Test d'entraîner le modèle avec des jeux de données : impossible à faire tourner hardware trop faible.
Remarques
Vendredi 16/02/18 Tâches
  • Essai tensor flow sur mon CPU
  • Faire tourner Tensorflow sur GPU : fonctionne mieux.
Remarques

Sprint 4 (Vacances)

Date GEOURJON Anthony LEMAIRE Timothée ROUQUIER Clément TURRIN Vincent
SPRINT 4
/!\Vacances/!\
Semaine du 19 au 25 février Tâches
  • [...]
  • [...]
  • [...]
  • Quelques tests sur SensorTag
Remarques

Sprint 5

Date GEOURJON Anthony LEMAIRE Timothée ROUQUIER Clément TURRIN Vincent
SPRINT 5
Lundi 26/02/18 Tâches
  • Cours de gestion
  • Cours de gestion
  • Cours de gestion
  • Cours de gestion
  • Début modification du code Android d'évalutation : comptabilisation, du nombre de mouvement, chronométrage.
Remarques
Mardi 27/02/18 Tâches
  • Travail sur la gestion des entraînements (création d'entrainement et sauvegarde)
  • Début modification code enregistrement data. Objectif : labéliser, choisir librement les limites.
Remarques
Mercredi 28/02/18 Tâches
  • Travail sur la gestion des entraînements (création d'entrainement et sauvegarde)
  • Ajout du support du gyroscope
Remarques
Jeudi 01/03/18 Tâches
  • Travail sur la gestion des entraînements (Visualisation)
  • Entraînement avec nos propres données : il faut beaucoup de données, avec peu de données la précision est vraiment mauvaise.
Remarques
Vendredi 02/03/18 Tâches
  • Travail sur la gestion des entraînements (Visualisation)
  • Réunion 2
  • Réunion 2
  • Réunion 2
  • Réunion 2
  • Récolte de plus de données.
Remarques

Sprint 6 (En cours)

Date GEOURJON Anthony LEMAIRE Timothée ROUQUIER Clément TURRIN Vincent
SPRINT 6
Lundi 05/03/18 Tâches
  • MaJ Air
  • Modif learning pour utiliser les nouvelles infos capteurs : gyroscope + accél, Modifications formattage des données (Python)
Remarques
Mardi 06/03/18 Tâches
  • Le vecteur angulaire n'est pas l'information qu'il nous faut mais plutôt la gravité : changement du code, et reprise de la récupération des données.
Remarques
Mercredi 07/03/18 Tâches
  • En fait différentes variable pour l'apprentissage n'avaient pas été touchées, il est possible d'avoir de bons résultats avec peu de données.
  • Reprise des tests : très bonne précision avec seulement 40 secondes d'entraînement : les mouvements marcher et sauter sont distingués avec une très bonne précision en ligne droite.
Remarques
Jeudi 08/03/18 Tâches
  • Excusé (TOEIC)
  • Rectification après tests : il faut bien l'accélération angulaire, je n'ai pas le capteur sur mon téléphone, je reste sur des infos accéléromètre et c'est précis.
  • Multiples essais en faisant varier les variables pour l'apprentissage tensorflow.
  • Essais et modification du code pour pouvoir faire descendre le nombre de valeur en input assez bas : reconnaître les mouvements de toute durée.
Remarques
Vendredi 09/03/18 Tâches
Remarques

Sprint 7 (à venir)

Date GEOURJON Anthony LEMAIRE Timothée ROUQUIER Clément TURRIN Vincent
SPRINT 7
Lundi 12/03/18 Tâches
Remarques
Mardi 13/03/18 Tâches
Remarques
Mercredi 14/03/18 Tâches
Remarques
Jeudi 15/03/18 Tâches
Remarques