P18 Localisation of quadrotors : Différence entre versions

De Wiki d'activités IMA
(Calendrier prévisionnel)
(Choix technologiques)
 
(40 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 15 : Ligne 15 :
 
====<span style="color:#6B8E23">Objectif du projet</span>====
 
====<span style="color:#6B8E23">Objectif du projet</span>====
  
L'objectif de ce projet est de développer une interface logicielle permettant de traiter en temps réel les informations de localisation d'un drone et de balises, dans le but de définir leur localisation dans l'espace.
+
L'objectif de ce projet est de développer une interface logicielle permettant de traiter en temps réel les informations de localisation d'un drone et de balises, dans le but de définir leur localisation dans l'espace, en intérieur.
  
 
====<span style="color:#6B8E23">Description du projet</span>====
 
====<span style="color:#6B8E23">Description du projet</span>====
  
Pour réaliser le contrôle de drones, la première étape importante est de donner ses informations de position. Le but du projet est de développer une interface logicielle permettant de localiser le drone en temps réel. Le drone se déplace dans un environnement dans lequel ont été installées de multiples balises. Il est équipé d'une carte, lui permettant de recevoir les distances relatives entre lui-même et les balises, sur laquelle différents algorithmes vont être implémentés pour effectuer la localisation en temps réel. Le projet requiert des compétences en développement hardware (Crazyflie 2.0, voir https://wiki.bitcraze.io/) et software (langage C/C++/Python/Javascript/HTML...).
+
Pour réaliser le contrôle de drones, la première étape importante est de donner ses informations de position. Le but du projet est de développer une interface logicielle permettant de localiser le drone en temps réel en intérieur. Le drone se déplace dans un environnement dans lequel ont été installées de multiples balises. Il est équipé d'une carte, lui permettant de recevoir les distances relatives entre lui-même et les balises, sur laquelle différents algorithmes vont être implémentés pour effectuer la localisation en temps réel. Le projet requiert des compétences en développement hardware (Crazyflie 2.0, voir https://wiki.bitcraze.io/) et software (langage C/C++/Python/Javascript/HTML...).
  
 
Il se divise en 4 étapes principales, qui sont:
 
Il se divise en 4 étapes principales, qui sont:
1) Choisir les technologies utilisées
+
*1) Choisir les technologies utilisées
2) Choisir l'architecture (OS / APIs)
+
*2) Choisir l'architecture (OS / APIs)
3) Développer les différentes parties du projet
+
*3) Développer les différentes parties du projet
4) Intégrer et connecter les différentes parties du projet
+
*4) Intégrer et connecter les différentes parties du projet
  
 +
La localisation étant en intérieur, le protocole GPS n'est donc pas assez précis pour les applications ciblées. La mise en place d'un tel dispositif permettrait grâce à l'utilisation d'un algorithme d'estimer avec une bonne précision les positions en intérieur d'une balise centrale (appelée Tag) et de balises (appelées Anchor). Le Tag scanne en temps réel la distance relative aux différentes balises, et il nous est retourné la position des balises et du Tag grâce à l'algorithme de localisation.
  
 +
Le projet se compose de 3 parties:
 +
* Collect & parse: collecter les données envoyées par les balises en communiquant avec un serveur et récupérer les données adéquates par un tri
 +
* Localise: déterminer la matrice de position des balises et du Tag en traitant les données récupérées
 +
* Display: développer l'interface homme machine pour afficher, étudier et utiliser les données traitées
  
 +
Nous travaillerons dans un premier temps dans une optique temps différé avant de travailler en temps réel. Cela nous permettra d'acquérir des données utiles et réutilisables en aval.
 +
 +
A l'aboutissement du projet, nous devrions être capable via l'interface homme machine développée d'afficher précisément la position spatiale des balises ainsi que du Tag, grâce àl'utilisation d'un algorithme de localisation et des données récupérées, et d'afficher d'autres données relatives au déplacement du Tag ou des balises dans l'espace.
 +
 +
Si le temps le permet, nous pourrons aussi être amenés à adapter et utiliser l'interface développée pour l'utilisation d'un drone.
  
 
''Sujet originel''
 
''Sujet originel''
  
 
To achieve the control of quadrotors, the first important task to give its position information. This project is to develop a software(GUI) to localize the quadrotors in real-time. The quadrotor is flying in an environment where several transmitters have been installed. The quadrotor is equipped with a deck to receive the relative distances between the deck and all transmitters, based on which different algorithms will be implemented to realize the real-time localization. The candidates need to have both experiences on hardware (Crazyflie 2.0, see https://wiki.bitcraze.io/) and software development (C/C , Python…).  
 
To achieve the control of quadrotors, the first important task to give its position information. This project is to develop a software(GUI) to localize the quadrotors in real-time. The quadrotor is flying in an environment where several transmitters have been installed. The quadrotor is equipped with a deck to receive the relative distances between the deck and all transmitters, based on which different algorithms will be implemented to realize the real-time localization. The candidates need to have both experiences on hardware (Crazyflie 2.0, see https://wiki.bitcraze.io/) and software development (C/C , Python…).  
 
 
 
---
 
 
A l'aboutissement du projet, nous devrions être capable de détecter une communication LoRa dans la bande des 868 MHz, et de la brouiller elle seule, sans incidence sur les autres communications sur d'autres fréquences du réseau LoRa.
 
 
Pour ce faire, nous devrons réaliser un montage réalisant un brouillage sur la plage 863-870Mhz afin d'empêcher toute communication LoRa, en envoyant du bruit électronique sur toute la plage de fréquence.
 
 
Pour la suite du projet, nous perfectionnerons ce montage pour qu'il puisse détecter une communication LoRa à une fréquence donnée (grâce au "join-request message" de 18 octets envoyés par le end-point/node, ou bien grâce aux informations données dans le préambule des paquets), afin d'envoyer des données erronées et de bloquer uniquement cette communication.
 
 
Si le temps et le budget le permettent, nous pourrons aussi être amenés à brouiller la plage de fréquences autour des 433 MHz (aussi utilisé par le réseau LoRa).
 
 
  
  
Ligne 64 : Ligne 61 :
 
* Réalisation de l'interface logicielle (Web//Logiciel/Application) (**h)
 
* Réalisation de l'interface logicielle (Web//Logiciel/Application) (**h)
 
* Intégration des différentes parties (**h)
 
* Intégration des différentes parties (**h)
* Test et débuguage (**h)
+
* Test et débuggage (**h)
  
 
====<span style="color:#6B8E23">Choix techniques : matériel et logiciel</span>====
 
====<span style="color:#6B8E23">Choix techniques : matériel et logiciel</span>====
  
Afin de développer ce dispositif, nous allons utiliser une Raspberry Pi 3 associée à une carte réceptrice, qui communique avec 4 balises composées chacune d'une carte émettrice radio (UWB5C) et alimentées par batteries. La carte réceptrice joue le rôle du drone à localiser et communiquera les données émises par les balises vers l'ordinateur via Bluetooth.
+
Afin de développer ce dispositif, nous allons utiliser une Raspberry Pi 3 associée à une carte réceptrice, qui communique avec 4 balises composées chacune d'un microcontrôleur et d'une carte émettrice radio (UWB5C) et alimentées par batteries. La carte réceptrice joue le rôle du drone à localiser et communiquera les données émises par les balises vers l'ordinateur via Bluetooth.
 +
 
 +
====<span style="color:#6B8E23">Choix technologiques</span>====
 +
 
 +
Voici les technologies que nous utilisons pour chacune des parties de ce projet.
 +
 
 +
    1) Serveur de collecte des données:
 +
      Scanne et parse les données récupérées pour fournir la matrice D des distances relatives du tag aux 4 balises
 +
        - API
 +
        - Python / Serveur Flask
 +
 
 +
    2) Serveur de localisation (fourni):
 +
      Calcule grâce à l'algorithme de localisation et la matrice D les positions spatiales des 4 noeuds et du tag
 +
        - API
 +
        - Bootstrap
 +
        - Jquery
 +
        - Python
 +
 
 +
    3) Interface utilisateur:
 +
      Affiche courbes, visualisation 3D, boutons ou données des fichiers envoyées par le serveur de localisation
 +
        - HTML5 / Javascript
 +
        - Fichiers JSON (serveurs de collecte et de localisation)
  
 
===<span style="color:#4169E1">'''Calendrier prévisionnel'''</span>===
 
===<span style="color:#4169E1">'''Calendrier prévisionnel'''</span>===
Ligne 74 : Ligne 92 :
 
====<span style="color:#6B8E23">Liste des tâches à effectuer</span>====
 
====<span style="color:#6B8E23">Liste des tâches à effectuer</span>====
  
'''A modifier'''
+
# Se documenter sur le projet
 +
##Langages et technologies utilisées
 +
##Matériel utilisé
 +
##Mettre en place du travail sur le Git
 +
# Réaliser le serveur de collecte
 +
##Récupérer les trames envoyées par bluetooth par le TAG via la Raspberry Pi
 +
##Intégrer le serveur de localisation pour interpréter les trames
 +
##Tester et optimiser
 +
# Réaliser l'interface Web utilisateur
 +
##Implémenter le serveur de collecte et de localisation
 +
##Afficher et traiter les données stockées dans les fichiers JSON via le serveur (temps différé + temps réel)
 +
##Tester et optimiser
 +
 
 +
==<span style="color:#000080">'''Feuille d'heures'''</span>==
 +
 
 +
{| class="wikitable"
 +
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Après Noël !! Total
 +
|-
 +
| Cahier des charges / Wiki / Gitlab
 +
|  4h
 +
|  3h
 +
|  1h
 +
|  x
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Documentation sur les technos utilisées
 +
|  2h
 +
|  4h
 +
|  3h
 +
|  2h
 +
|  3h
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Documentation sur le matériel
 +
|  2h
 +
|  1h
 +
|  1h
 +
|  2h
 +
|  1h
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Recherche et développement du serveur de collecte
 +
|
 +
|  1h
 +
|  2h
 +
|  3h
 +
|  3h30
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Recherche et développement de l'interface Web
 +
 +
|  2h
 +
|  1h
 +
|  3h
 +
|  5h
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Recherche et intégration du serveur de localisation
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Intégration des différentes parties
 +
|
 +
|
 +
|
 +
|
 +
| 2h
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Tests et débuggage
 +
|
 +
|  1h
 +
|  2h
 +
|  1h
 +
|  1h
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Optimisation/Correction des programmes
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|}
 +
 
 +
==<span style="color:#000080">'''Avancement du Projet'''</span>==
 +
 
 +
===<span style="color:#4169E1">'''Phase préparatoire'''</span>===
 +
 
 +
''[[Jeu 21/09/17 - Ven 22/09/17]]''
 +
*Rendez-vous de mise au point du cahier des charges avec les encadrants/intervenants (M. ZHENG Gang et M. DAGHER Roudy)
 +
*Elaboration du cahier des charges
 +
*Elaboration de la page Wiki (préparation de la mise en page et présentation du sujet)
 +
*Préparation du travail sous forme de Mind Map
 +
 
 +
===<span style="color:#4169E1">'''Semaine 1'''</span>===
 +
 
 +
''[[Jeu 28/09/17 - Ven 29/09/17]]''
 +
*Revue du Cahier des Charges avec les encadrants
 +
*Lecture et recherches sur les technologies adaptées
 +
*Construction de la suite de la Mind Map
 +
*Création du Gitlab
 +
 
 +
===<span style="color:#4169E1">'''Semaine 2'''</span>===
 +
 
 +
''[[Jeu 05/10/17 - Ven 06/10/17]]'' 
 +
*Précisions sur le cahier des charges
 +
*Listage du matériel
 +
*Recherche et détermination de solutions technologiques possibles pour les fonctions demandées
 +
*Début du travail sur le serveur de collecte
 +
*Apprentissage du langage Python et de l'utilisation du framework Flask
 +
 
 +
===<span style="color:#4169E1">'''Semaine 3'''</span>===
 +
 
 +
''[[Mer 11/10/17 - Jeu 12/10/17]]'' 
 +
*Recherche et développement initial du serveur de collecte de données
 +
*Complément du Git sur les tâches à effectuer
 +
 
 +
Nous avons commencé à créer un serveur flask renvoyant pour l'instant une matrice aléatoire. Lors de la requête URL "../matrice", nous voyons bien une matrice aléatoire apparaître sur la page Web. Nous essayons de nous connecter à la Raspberry Pi en redirigeant son port série vers le Bluetooth de façon à récupérer de vraies matrices de distance entre le drone (ie commutateur central) et les balises. Nous pourrons afficher ensuite ces matrices, ou alors les stocker dans un fichier en attendant le traitement de celles-ci.
 +
 
 +
[[Fichier:Requete s3.PNG|300px|serveur flask]]
 +
 
 +
Nous avons plusieurs problèmes avec le Bluetooth pour se connecter avec la Raspberry Pi. Quand nous aurons réussi à nous connecter au port série de la Raspberry pi alors nous pour gérer le traitement des données récupérées.
 +
 
 +
===<span style="color:#4169E1">'''Semaine 4'''</span>===
 +
 
 +
''[[Mer 18/10/17 - Jeu 19/10/17]]'' 
 +
*Configuration de la Raspberry Pi car problèmes de connectivité Bluetooth rencontrés
 +
**Nous arrivons à connecter la Raspberry Pi sous Windows mais la connexion sous Linux pose problème (travail en suspens en attendant la disponibilité de l'encadrant)
 +
*Début du développement de l'interface Web
 +
**Traitement d'une matrice dans un fichier JSON
 +
**Affichage sous forme de tableau de la matrice
 +
**Utilisation du serveur de requête en Python avec chargement de template HTML
 +
**Mise en forme de la trame de la page en HTML/CSS avec le framework Bootstrap
 +
**Ajout d'un set de distances (d1, d2, d3, d4) dans la matrice lors d'un appui sur un bouton Chargement en utilisant un fichier Javascript
 +
 
 +
===<span style="color:#4169E1">'''Semaine 5'''</span>===
 +
 
 +
''[[Mer 25/10/17 - Ven 27/10/17]]'' 
 +
*Résolution des problèmes de connectique Bluetooth sur la Raspberry Pi
 +
*Développement de l'interface Web
 +
**Traitement d'une matrice dans un fichier JSON
 +
**Début de l'ajout d'un set de distances depuis une matrice contenue dans un fichier JSON
 +
 
 +
===<span style="color:#4169E1">'''Semaine 6'''</span>===
 +
 
 +
''[[Mer 08/11/17 - Ven 10/11/17]]'' 
 +
*Travail sur le serveur de collecte des données
 +
**Mise en place de la communication entre le port série de notre machine et le port série de la carte via Bluetooth de la RPi3
 +
**Récupération et traitement (parse) manuels des données de distances dans un fichier .log via TCP/IP<->Bluetooth
 +
**Début de l'automatisation du procédé par script Python (requete.py)
 +
*Développement de l'interface Web
 +
**Chargement sur commande d'un set de distances depuis une matrice contenue dans un fichier JSON
 +
*Travail sur le layout du site
 +
 
 +
===<span style="color:#4169E1">'''Semaine 7'''</span>===
  
# Documentation sur le réseau LoRa
+
''[[Mer 15/11/17 - Ven 17/11/17]]''
##moyen de transmission
+
*
##format de modulation
 
##trame des paquets
 
# Réalisation du premier montage brouillant toute la plage
 
##contrôler l'émetteur RF du cc430
 
##programmer un bruitage sur la plage 863-870MHz
 
##test et optimisation
 
# Ajout d'un récepteur LoRa pour détecter et brouiller une seule communication
 
##contrôler le récepteur LoRa avec le cc430 par protocole spi
 
##détecter une communication LoRa à une fréquence donnée
 
##contrôler l'émetteur RF afin de brouiller cette communication de manière brutale
 
##brouiller cette communication en tentant de changer les données du paquet
 
##test et optimisation
 

Version actuelle datée du 16 novembre 2017 à 17:17

Cahier des charges

Présentation générale du projet

Contexte

Dans un monde de plus en plus connecté, de nombreux drones sont déployés pour diverses applications comme l'espionnage, la surveillance, la cartographie de lieux et la livraison de colis. Les technologies nécessaires pour contrôler ces drones sont des sujets de recherche actuels.

Le contrôle de ceux-ci passe tout d'abord par la maîtrise de leur position dans l'espace. Le développement des applications liées à l'utilisation de drones nécessite un travail important sur la localisation spatiale d'objets connectés.

De plus, dans un souci d'utilisation, il est essentiel de développer des interfaces logicielles permettant d'exploiter ces données.

Objectif du projet

L'objectif de ce projet est de développer une interface logicielle permettant de traiter en temps réel les informations de localisation d'un drone et de balises, dans le but de définir leur localisation dans l'espace, en intérieur.

Description du projet

Pour réaliser le contrôle de drones, la première étape importante est de donner ses informations de position. Le but du projet est de développer une interface logicielle permettant de localiser le drone en temps réel en intérieur. Le drone se déplace dans un environnement dans lequel ont été installées de multiples balises. Il est équipé d'une carte, lui permettant de recevoir les distances relatives entre lui-même et les balises, sur laquelle différents algorithmes vont être implémentés pour effectuer la localisation en temps réel. Le projet requiert des compétences en développement hardware (Crazyflie 2.0, voir https://wiki.bitcraze.io/) et software (langage C/C++/Python/Javascript/HTML...).

Il se divise en 4 étapes principales, qui sont:

  • 1) Choisir les technologies utilisées
  • 2) Choisir l'architecture (OS / APIs)
  • 3) Développer les différentes parties du projet
  • 4) Intégrer et connecter les différentes parties du projet

La localisation étant en intérieur, le protocole GPS n'est donc pas assez précis pour les applications ciblées. La mise en place d'un tel dispositif permettrait grâce à l'utilisation d'un algorithme d'estimer avec une bonne précision les positions en intérieur d'une balise centrale (appelée Tag) et de balises (appelées Anchor). Le Tag scanne en temps réel la distance relative aux différentes balises, et il nous est retourné la position des balises et du Tag grâce à l'algorithme de localisation.

Le projet se compose de 3 parties:

  • Collect & parse: collecter les données envoyées par les balises en communiquant avec un serveur et récupérer les données adéquates par un tri
  • Localise: déterminer la matrice de position des balises et du Tag en traitant les données récupérées
  • Display: développer l'interface homme machine pour afficher, étudier et utiliser les données traitées

Nous travaillerons dans un premier temps dans une optique temps différé avant de travailler en temps réel. Cela nous permettra d'acquérir des données utiles et réutilisables en aval.

A l'aboutissement du projet, nous devrions être capable via l'interface homme machine développée d'afficher précisément la position spatiale des balises ainsi que du Tag, grâce àl'utilisation d'un algorithme de localisation et des données récupérées, et d'afficher d'autres données relatives au déplacement du Tag ou des balises dans l'espace.

Si le temps le permet, nous pourrons aussi être amenés à adapter et utiliser l'interface développée pour l'utilisation d'un drone.

Sujet originel

To achieve the control of quadrotors, the first important task to give its position information. This project is to develop a software(GUI) to localize the quadrotors in real-time. The quadrotor is flying in an environment where several transmitters have been installed. The quadrotor is equipped with a deck to receive the relative distances between the deck and all transmitters, based on which different algorithms will be implemented to realize the real-time localization. The candidates need to have both experiences on hardware (Crazyflie 2.0, see https://wiki.bitcraze.io/) and software development (C/C , Python…).


Calendrier

Avant le 29/09/17 - Élaboration du Cahier des charges, de la liste des tâches et du calendrier prévisionnel

Avant fin Octobre - Serveur de collecte et début du développement de l'interface logicielle

Avant fin Décembre - Interface logicielle

A la fin du PFE - Intégration finale des différentes parties (Serveur de collecte des données & Serveur de localisation & Interface logicielle)

Répartition du volume de travail (***h):

  • Recherche sur les technologies à utiliser (**h)
  • Développement du serveur de collecte de données (**h)
  • Réalisation de l'interface logicielle (Web//Logiciel/Application) (**h)
  • Intégration des différentes parties (**h)
  • Test et débuggage (**h)

Choix techniques : matériel et logiciel

Afin de développer ce dispositif, nous allons utiliser une Raspberry Pi 3 associée à une carte réceptrice, qui communique avec 4 balises composées chacune d'un microcontrôleur et d'une carte émettrice radio (UWB5C) et alimentées par batteries. La carte réceptrice joue le rôle du drone à localiser et communiquera les données émises par les balises vers l'ordinateur via Bluetooth.

Choix technologiques

Voici les technologies que nous utilisons pour chacune des parties de ce projet.

   1) Serveur de collecte des données:
      Scanne et parse les données récupérées pour fournir la matrice D des distances relatives du tag aux 4 balises
       - API
       - Python / Serveur Flask
   2) Serveur de localisation (fourni):
      Calcule grâce à l'algorithme de localisation et la matrice D les positions spatiales des 4 noeuds et du tag
       - API
       - Bootstrap
       - Jquery
       - Python
   3) Interface utilisateur:
      Affiche courbes, visualisation 3D, boutons ou données des fichiers envoyées par le serveur de localisation
       - HTML5 / Javascript
       - Fichiers JSON (serveurs de collecte et de localisation)

Calendrier prévisionnel

Liste des tâches à effectuer

  1. Se documenter sur le projet
    1. Langages et technologies utilisées
    2. Matériel utilisé
    3. Mettre en place du travail sur le Git
  2. Réaliser le serveur de collecte
    1. Récupérer les trames envoyées par bluetooth par le TAG via la Raspberry Pi
    2. Intégrer le serveur de localisation pour interpréter les trames
    3. Tester et optimiser
  3. Réaliser l'interface Web utilisateur
    1. Implémenter le serveur de collecte et de localisation
    2. Afficher et traiter les données stockées dans les fichiers JSON via le serveur (temps différé + temps réel)
    3. Tester et optimiser

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Heures S11 Heures S12 Après Noël Total
Cahier des charges / Wiki / Gitlab 4h 3h 1h x
Documentation sur les technos utilisées 2h 4h 3h 2h 3h
Documentation sur le matériel 2h 1h 1h 2h 1h
Recherche et développement du serveur de collecte 1h 2h 3h 3h30
Recherche et développement de l'interface Web 2h 1h 3h 5h
Recherche et intégration du serveur de localisation
Intégration des différentes parties 2h
Tests et débuggage 1h 2h 1h 1h
Optimisation/Correction des programmes

Avancement du Projet

Phase préparatoire

Jeu 21/09/17 - Ven 22/09/17

  • Rendez-vous de mise au point du cahier des charges avec les encadrants/intervenants (M. ZHENG Gang et M. DAGHER Roudy)
  • Elaboration du cahier des charges
  • Elaboration de la page Wiki (préparation de la mise en page et présentation du sujet)
  • Préparation du travail sous forme de Mind Map

Semaine 1

Jeu 28/09/17 - Ven 29/09/17

  • Revue du Cahier des Charges avec les encadrants
  • Lecture et recherches sur les technologies adaptées
  • Construction de la suite de la Mind Map
  • Création du Gitlab

Semaine 2

Jeu 05/10/17 - Ven 06/10/17

  • Précisions sur le cahier des charges
  • Listage du matériel
  • Recherche et détermination de solutions technologiques possibles pour les fonctions demandées
  • Début du travail sur le serveur de collecte
  • Apprentissage du langage Python et de l'utilisation du framework Flask

Semaine 3

Mer 11/10/17 - Jeu 12/10/17

  • Recherche et développement initial du serveur de collecte de données
  • Complément du Git sur les tâches à effectuer

Nous avons commencé à créer un serveur flask renvoyant pour l'instant une matrice aléatoire. Lors de la requête URL "../matrice", nous voyons bien une matrice aléatoire apparaître sur la page Web. Nous essayons de nous connecter à la Raspberry Pi en redirigeant son port série vers le Bluetooth de façon à récupérer de vraies matrices de distance entre le drone (ie commutateur central) et les balises. Nous pourrons afficher ensuite ces matrices, ou alors les stocker dans un fichier en attendant le traitement de celles-ci.

serveur flask

Nous avons plusieurs problèmes avec le Bluetooth pour se connecter avec la Raspberry Pi. Quand nous aurons réussi à nous connecter au port série de la Raspberry pi alors nous pour gérer le traitement des données récupérées.

Semaine 4

Mer 18/10/17 - Jeu 19/10/17

  • Configuration de la Raspberry Pi car problèmes de connectivité Bluetooth rencontrés
    • Nous arrivons à connecter la Raspberry Pi sous Windows mais la connexion sous Linux pose problème (travail en suspens en attendant la disponibilité de l'encadrant)
  • Début du développement de l'interface Web
    • Traitement d'une matrice dans un fichier JSON
    • Affichage sous forme de tableau de la matrice
    • Utilisation du serveur de requête en Python avec chargement de template HTML
    • Mise en forme de la trame de la page en HTML/CSS avec le framework Bootstrap
    • Ajout d'un set de distances (d1, d2, d3, d4) dans la matrice lors d'un appui sur un bouton Chargement en utilisant un fichier Javascript

Semaine 5

Mer 25/10/17 - Ven 27/10/17

  • Résolution des problèmes de connectique Bluetooth sur la Raspberry Pi
  • Développement de l'interface Web
    • Traitement d'une matrice dans un fichier JSON
    • Début de l'ajout d'un set de distances depuis une matrice contenue dans un fichier JSON

Semaine 6

Mer 08/11/17 - Ven 10/11/17

  • Travail sur le serveur de collecte des données
    • Mise en place de la communication entre le port série de notre machine et le port série de la carte via Bluetooth de la RPi3
    • Récupération et traitement (parse) manuels des données de distances dans un fichier .log via TCP/IP<->Bluetooth
    • Début de l'automatisation du procédé par script Python (requete.py)
  • Développement de l'interface Web
    • Chargement sur commande d'un set de distances depuis une matrice contenue dans un fichier JSON
  • Travail sur le layout du site

Semaine 7

Mer 15/11/17 - Ven 17/11/17