Project

General

Profile

Todo list » History » Version 24

Rafael Bailon-Ruiz, 2020-11-12 10:42

1 1 Florian Seguin
h1. Todo list
2
3 24 Rafael Bailon-Ruiz
{{>toc}}
4
5 1 Florian Seguin
h2. Mapping
6
7 8 Rafael Bailon-Ruiz
h3. Ameliorer le traitement des donnees brutes
8 1 Florian Seguin
9 8 Rafael Bailon-Ruiz
la partie concerne plus particulierement le filtre "CloudSensorProcessing":https://redmine.laas.fr/projects/nephelae-devel/repository/nephelae_base/revisions/master/entry/nephelae/dataviews/types/CloudSensorProcessing.py. Par sentiment personnel, je trouve que son utilisation pourrait etre plus claire pour un utilisateur n'ayant aucune ou peu de connaissance sur le processus de debruitage du capteur. NOTE : le capteur est egalement susceptible de changer, evitant ainsi la dependance directe avec la batterie.
10
11
h3. Apprentissage des hyperparametres
12
13
Le kernel utilise la classe "WindKernel":https://redmine.laas.fr/projects/nephelae-devel/repository/nephelae_base/revisions/master/entry/nephelae/mapping/GprKernel.py qui utilise directement la "librairie scikit-learn":https://scikit-learn.org/stable/modules/gaussian_process.html pour effectuer les calculs de processus gaussiens. Le probleme est qu'aucun des parametres n'est appris au cours du temps. Integrer leurs calculs dans la boucle serait judicieux. NOTE : Se pencher sur les travaux des anciens stagiaires (si existants...)
14
15
h3. Carte de vent
16
17
Integrer une carte vent 3D qui puisse renvoyer a la fois des informations globales et locales par rapport a la position des UAVs, sur demande de l'utlisateur. Les cartes de bases couplees avec les filtres de vent offrent deja une premiere approche qui pourrait fonctionner. Il faudrait egalement prendre en compte les entrees utilisateurs, comme de nouveaux samples dans la database (cette partie deja faite sur les cartes de vent de bases). L'image suivante serait un bon debut pour obtenir ce que l'on souhaite.
18
19 16 Rafael Bailon-Ruiz
*rbailonr* Check https://xarray.pydata.org/en/stable/
20
21 4 Florian Seguin
!windserver.jpg!
22 1 Florian Seguin
23 22 Rafael Bailon-Ruiz
*rdv Simon Rafael 2020-11-09*
24 23 Rafael Bailon-Ruiz
Modele operationnel: Carte global (pas dense) profil vertical de vient dans le temps. Codifier les incertitudes : "Interval". Regarder des vraies donnees (NOAA per exemple) pour savoir le modele d'erreur utilise. Windy
25 22 Rafael Bailon-Ruiz
26
Vent vertical à l'interieur du nuage.
27
28
Modele scientifique: Carte associee au nuage (SRS du mapping) intialise par le modele globale, mis a jour par le mapping, UAV, modele à priori.
29
30
À etudier la possibilite d'utiliser le vent 3d dans paparazzi per UAV.
31
32 13 Rafael Bailon-Ruiz
h3. Format de donnés database
33
34
*rbailonr* Les données récoltés par CAMS sont stockes dans un fichier .neph qui n'est qu'une séquence d'objets python sérialisés avec "pickle". C'est n'est idéal pour plusieurs raisons:
35
36
* Si la définition d'une classe change, les données sérialisés ne peuvent pas être lus sans la déclaration originale. Par conséquent, l'information n'est pas pérenne.
37
* Le fichier doit être lu et la base de données chargé en mémoire complètement. Certains datasets peuvent devenir très lourds à manipuler.
38
* Exportation de données. Avec un format propriétaire, les donnés ne peuvent pas être utilisées sur d'autres logiciels
39
* Sécurité. Un fichier .neph peut être manipulé par un utilisateur malveillant pour lancer du code indésiré. 
40
* Effet des nouvelles versions de python et/ou pickle à apparaître dans le futur
41
42 15 Rafael Bailon-Ruiz
netCDF works well for mesoNH... Shall we use the format for the NephelaeDatabase?. Some clues:
43
44
* https://gis.stackexchange.com/questions/67012/using-netcdf-for-point-time-series-observations?rq=1
45
* http://cfconventions.org/cf-conventions/v1.6.0/cf-conventions.html#_orthogonal_multidimensional_array_representation_of_time_series
46 17 Rafael Bailon-Ruiz
* https://desktop.arcgis.com/en/arcmap/10.3/manage-data/netcdf/what-is-netcdf-data.htm
47 14 Rafael Bailon-Ruiz
48 21 Rafael Bailon-Ruiz
Traduire donnes .neph dans le nouveu format
49
50 18 Rafael Bailon-Ruiz
Alternative options: 
51
52 19 Rafael Bailon-Ruiz
* SpatiaLite https://en.wikipedia.org/wiki/SpatiaLite SQLite extensions for spatial data
53
* PostGIS https://en.wikipedia.org/wiki/PostGIS PostgreSQL extension
54 18 Rafael Bailon-Ruiz
55 1 Florian Seguin
h2. Interface graphique :
56
57 20 Rafael Bailon-Ruiz
h3. Amélioration des performances
58
59
*rbailonr* L'onglet mapping de l’interface web demande beaucoup de ressources (CPU et memoire). L'usage élevé de CPU est probablement du a que des mises a jour de cartes sont demandés trop souvent et qu'il n y a pas de système de cache. Pour la memoire je n'ai pas trouvé d'explication, mais il est possible de les figures matplotlib restent ouvertes ou que le GC de python ne fasse pas des recoltes aussi souvent que necessaire. Trouver l'origine exacte du problème et proposer un moyen de reduire l'usage de CPU et memoire.
60
61 8 Rafael Bailon-Ruiz
h3. Cookies
62 1 Florian Seguin
63 8 Rafael Bailon-Ruiz
Facultatifs mais peuvent etre tres utile pour des developpeurs ne possedant qu'un seul ecran ou des ressources limitees. Le role des cookies ici serait de garder les parametres de visualisation de page (coordonnees dans la carte + zoom, length scale des vues...). Cela permettrait a un utilisateur de basculer d'une page a une autre sans s'embeter a retoucher les parametres a nouveau.
64
65
*rbailonr* Django permet stocker des "configurations 'session'":https://docs.djangoproject.com/en/3.1/topics/http/sessions/ C'est mieux d'utiliser un framework existant que de gérer le stockage de la configuration à la main. De plus lorsque c'est preconisé d'etablir seulement une cookie session et sauvegarder les informations coté serveur.
66
67
h3. Planner
68
69
Integrer les appels du planner dans l'interface. Deux choix sont possibles : soit on modifie les pages existantes pour ajouter les plans, soit on cree des nouvelles pages + fonctionnalites dans de nouvelles pages. Pour tout les appels, reprendre les methodes utilises pour le module Mission : requetes pour get et requetes pour set. Voir "ici":https://redmine.laas.fr/projects/nephelae-devel/repository/nephelae_gui/revisions/master/show/web/nephelae_gui/config/missions.
70
71 7 Rafael Bailon-Ruiz
h3. Timelines de l'execution des plans
72 1 Florian Seguin
73
L'idee est la suivante, voir s'afficher pour un UAV son plan initial et son plan effectif est leur evolution au cours du temps. Chaque mission est bornee temporellement de 0 a t, t etant la somme des temps des missions, et seraient disposees sur un diagramme de Gantt evoluant au cours du temps. On pourrait voir d'une part si le plan se deroule correctement, et son comportement par rapport au plan initial (si il est meilleur ou pire temporellement). Bonus point si un graphe est ajoute sur la meme page decrivant la consommation estimee est reelle au cours du temps. Utiliser un GraphLine comme sur les pages des sensors2d me semble judicieux.
74
75 8 Rafael Bailon-Ruiz
*rbailonr* On pourrait utiliser un diagramme de gantt pour afficher les taches de la mission. Il existent quelques bibliothèques pour créer des gantt interactifs en javascript; par exemple: https://frappe.io/gantt (tuto: https://www.cssscript.com/interactive-gantt-chart/) 
76 7 Rafael Bailon-Ruiz
77 9 Rafael Bailon-Ruiz
h3. Affichage des erreurs dans le GUI
78
79 10 Rafael Bailon-Ruiz
*rbailonr* Des nombreux erreurs de configuration ne sont affichés que dans les logs. Par exemple établir un rayon de cubature trop grand ou trop petit ne permet pas d'instancier un pattern dans CAMS, mais rien est indiqué à l'utilisateur. Il pense que tout est bon, mais rien ne va s'afficher dans l'onglet de validation des missions.
80 9 Rafael Bailon-Ruiz
81 11 Rafael Bailon-Ruiz
h3. Nettoyage de l'API web
82
83
*rbailonr* Actuellement l'API http utilisée par l'interface graphique ne suit aucun modèle et elle n'est pas documentée. En particulier:
84
85
* C'est difficile de trouver le code correspondant à chaque appel
86 12 Rafael Bailon-Ruiz
* Le modèle de réponse JSON ne suis pas des bonnes pratiques: Les information renvoyées ne sont pas très riches et il n'y a pas de réponse lors d'une erreur.
87 1 Florian Seguin
* It would be nice to comunicate the type and the allowed bounds —defined in the configuration file— for some variables (i.e. turn radius) so the GUI can use this information to restrict input fields. A "range widget":https://materializecss.com/range.html could be used for numerical values.
88 11 Rafael Bailon-Ruiz
89 20 Rafael Bailon-Ruiz
Nous devrions nous inspirer des API existantes (github, twitter,...) et des standards proposés ("JSON API":https://jsonapi.org/) pour créer une interface propre qui serait utilisée par le GUI. Des nouveaux outils pour interagir avec le serveur CAMS pourraient être rajoutés dans le futur
90 11 Rafael Bailon-Ruiz
91 8 Rafael Bailon-Ruiz
h2. Planification
92 1 Florian Seguin
93 8 Rafael Bailon-Ruiz
h3. Acceptation et mise a jour des missions
94 1 Florian Seguin
95 11 Rafael Bailon-Ruiz
Paparazzi a un comportement particulier en ce qui concerne l'ajout des missions du a son utilisation de buffer circulaire pour gérer le tout. Il faut prendre garde au fait qu'un ajout de mission dans une liste ne soit pas dépendant de Paparazzi (ce problème concerne plus les MissionsTypes en eux même que le Planner)
96 3 Florian Seguin
97 1 Florian Seguin
h2. Documentation
98 8 Rafael Bailon-Ruiz
99 11 Rafael Bailon-Ruiz
Documenter fréquemment chaque nouvel ajout, et terminer la documentation générale. C'est une tache qui n'a pas vraiment de fin...
100 5 Florian Seguin
101 1 Florian Seguin
Penser a chaque nouvel ajout son utilisation dans un script ou en ligne de commande.
102
103 8 Rafael Bailon-Ruiz
h2. Extras
104 1 Florian Seguin
105 8 Rafael Bailon-Ruiz
h3. Pour aller plus loin
106
107 11 Rafael Bailon-Ruiz
ajouter un superviseur ou moteur d’exécution. Il sera utile pour faire des taches synchronises avec 2+ UAVs. L’idée serait qu'il puisse changer l’état du plan en UAV en réponse a certains evenements ou signaux.
108 8 Rafael Bailon-Ruiz
109
h3. Pour aller TRES loin
110
111 11 Rafael Bailon-Ruiz
Installer un middleware pour la définition des messages. Le traitement sera propre aux modules (paparazzi ou autre autopilote). (Se pencher sur les middleware qu'utilise ROS2 et l'utilisation d'idl ?)