Projet

Général

Profil

Protocole EthernetWifi V1 » Historique » Version 14

Anonyme, 11/03/2013 08:53

1 1 Anonyme
h1. Protocole EthernetWifi V1
2
3
h2. Généralités
4
5
Le protocole de communication privilégié est l'UDP.
6
7 5 Anonyme
Le respect de l'endianness (et donc si nécessaire la conversion) doit être si nécessaire assurée au l'envoi comme à la réception.
8 2 Anonyme
9
h2. Valeurs numériques
10
11 6 Anonyme
Toutes les valeurs numériques (récupérées depuis un capteur ou transmises comme consigne) doivent être converties de sorte que leurs valeurs varient entre -32767(valeur minimale théoriquement atteignable) et 32767 (valeur maximale théoriquement atteignable). 
12 1 Anonyme
Un champ de valeur aussi important garantissant une précision en principe suffisante pour les calculs à effectuer par la suite.
13
14
L'usage de int16_t définis dans stdint.h peut donc être pertinent dans le cadre des manipulations de ces valeurs.
15
16 11 Anonyme
Une formule permettant d'obtenir un formatage efficace est : *Val_formatée = (65534 . (Val_Réelle - Val_Min)/(Val_Max - Val_Min)) – 32767 *
17 1 Anonyme
Attention : les calculs doivent être réalisés en float afin d'éviter des pertes importantes au cours de la division.
18
19 14 Anonyme
Pour inverser le formatage, la formule est :* Val_récup = (((Val_formatée + 32767) / 65534) . (Val_Max – Val_Min)) +Val_Min *
20
21 1 Anonyme
Si ce choix semble non pertinent merci de nous contacter.
22
23
*Attention : à l'issue de ce formatage, le 0 ne désigne pas nécessairement la position neutre ou le 0 conventionnel. Cela ne sera vrai que si l'intervalle des valeurs d'origine est centré en 0 (val_min = -val_max).*
24
25 2 Anonyme
h2. Format général de la trame
26 1 Anonyme
27
Le format de trame sera le suivant :
28
*
29 7 Anonyme
<NUM_PAQUET><!><TYPE_TRAME><< ?>|<<:><VAL>[,VAL[,...]]>><!><CTRL_SUM><CRLF>*
30 1 Anonyme
31
Avec :
32
33
<NUM_PAQUET> : numéro du paquet, auto-incrémental, sur 4 chiffres, non signé, en décimal. 
34
35
<!> : caractère "!" utilisé comme séparateur
36
37
<TYPE_TRAME> : suite de 2 caractères en ASCII indiquant les informations portées par la trame (voir plus bas)
38
39
<< ?>|<<:><VAL>[,VAL[,...]]>> valant soit :
40
       -- "?" dans le cadre de la demande d'une (série de) valeurs
41
       -- ":" suivi d'une série de valeurs séparés par des virgules
42 7 Anonyme
43
<CTRL_SUM> consiste en la somme des valeur ASCII de toute la trame jusqu'au caractère "!" précédant cette somme ("!" inclus)
44 1 Anonyme
45
<CRLF> : caractères "\r\n"
46
47
h2. Liste des TYPE_TRAME
48
49
les TYPES_TRAME sont des suites de 2 caractères ASCII
50
51
h3. TYPE_TRAME commençant par un 0
52
53
Ces types sont réservés à des fins de test et ne doivent pas être utilisé dans le cadre d'une implémentation finale.
54
55
h3. TYPE_TRAME commençant par un 1
56
57
Ces types sont réservés à la transmission des erreurs.
58
59
h3. Capteurs
60
61
"Ca" suivi d'une série de 11 valeurs est utilisé pour envoyer l'ensemble des valeurs des capteurs dans l'ordre suivant :
62
accéléro_x, accéléro_y,accéléro_z,gyro_x,gyro_y,gyro_z,magnéto_x,magnéto_y,magnéto_z,baromètre,thermomètre
63
64
h4. Accéléromètres
65
66
"Ax" suivi d'une valeur correspond à l'accéléromètre x
67
"Ay" suivi d'une valeur correspond à l'accéléromètre y
68
"Az" suivi d'une valeur correspond à l'accéléromètre z
69
"Aa" suivi de trois valeurs correspond aux valeurs des trois accéléromètres dans l'ordre x,y,z
70
71
h4. Gyroscopes
72
73
"Gx" suivi d'une valeur correspond au gyroscope x
74
"Gy" suivi d'une valeur correspond au gyroscope y
75
"Gz" suivi d'une valeur correspond au gyroscope z
76
"Ga" suivi de trois valeurs correspond aux valeurs des trois gyroscopes dans l'ordre x,y,z
77
78
h4. Magnétomètre
79
80
"Ax" suivi d'une valeur correspond au magnétomètre x
81
"Ay" suivi d'une valeur correspond au magnétomètre y
82
"Az" suivi d'une valeur correspond au magnétomètre z
83
"Aa" suivi de trois valeurs correspond aux valeurs des trois magnétomètres dans l'ordre x,y,z
84
85
h4. Sonars
86
87
"Sf" suivi d'une valeur correspond au sonar avant (front)
88
"Sb" suivi d'une valeur correspond au sonar arrière (back)
89
"Sl" suivi d'une valeur correspond au sonar gauche (left)
90
"Sr" suivi d'une valeur correspond au sonar droit (right)
91
"Su" suivi d'une valeur correspond au sonar haut (up)
92
"Sd" suivi d'une valeur correspond au sonar bas (down)
93
"S6" suivi de 6 valeurs correspond à la valeur des 6 sonars (ordre : avant, arrière, gauche, droite, bas, haut)
94
95
h4. Autres capteurs
96
97
"B0" suivi d'une valeur correspond au baromètre
98
"TH" suivi d'une valeur correspond au thermomètre
99
"GP" suivi de 8 valeurs correspond aux valeurs du GPS (ordre à définir)
100
101
h3. Moteurs
102
103
104
h4. Du drone vers le contrôleur
105
106
"M1" suivi d'une valeur correspond à la valeur actuelle du moteur 1
107
"M2" suivi d'une valeur correspond à la valeur actuelle du moteur 2
108
"M3" suivi d'une valeur correspond à la valeur actuelle du moteur 3
109
"M4" suivi d'une valeur correspond à la valeur actuelle du moteur 4
110
"Me" suivi de 4 valeurs correspond à la valeur actuelle des 4 moteurs (1,2,3,4)
111
"Mc" suivi d'une valeur correspond à la valeur actuelle de la consigne moteur
112
"M+" suivi de 5 valeurs correspond à la valeur actuelle des 4 moteurs suivi de la consigne moteur
113
114
h4. Du contrôleur vers le drône
115
116
"M1" suivi d'une valeur correspond à la valeur à atteindre pour le moteur 1
117
"M2" suivi d'une valeur correspond à la valeur à atteindre pour le moteur 2
118
"M3" suivi d'une valeur correspond à la valeur à atteindre pour le moteur 3
119
"M4" suivi d'une valeur correspond à la valeur à atteindre pour le moteur 4
120
"Me" suivi de 4 valeurs correspond à la valeur à atteindre pour les 4 moteurs (1,2,3,4)
121
"Mc" suivi d'une valeur correspond à la valeur à atteindre pour la consigne moteur
122
"M+" suivi de 5 valeurs correspond à la valeur à atteindre pour les 4 moteurs suivi de la consigne moteur
123
124 13 Anonyme
h2. Exemples 
125 1 Anonyme
126
On aura ainsi par exemple 
127
128
129 13 Anonyme
0010!Gx?!513
130 1 Anonyme
131
correspond au dixième message échangé, le contrôleur demande au drone la valeur de son gyroscope en x
132
133 13 Anonyme
0011!Gx:21!608
134 1 Anonyme
135
serait la réponse du drone
136
137
ou encore 
138
139 13 Anonyme
0101!0B:21,22,58!828
140 1 Anonyme
141
Qui serait le 101e message d'une série, utilisant un protocole de test (commençant par 0) et renvoyant 3 valeurs
142
143
144 2 Anonyme
h2. Informations complémentaires
145 1 Anonyme
146
*_Notes :_*
147
_1) La présence de bits de bourrage en fin de trames peut être envisagée et pourrait être décidée dans le cadre d'une révision ultérieure de ce document_
148
_2) Ce protocole est encore une ébauche, il est susceptible d'être modifié par la suite_
149
_3) Ce protocole constitue un premier jet destiné à la phase de conception initiale du système, l'optimisation de la vitesse n'est pas privilégiée ici_
150
_4) Ce protocole sera probablement fortement étendu voire totalement abandonné lors de développement ultérieurs du projet, les implémentations de divers protocoles doivent donc pouvoir être interverties aisément au sein du code réalisé (au besoin à l'aide de pattern adéquats). Les révisions cités son suceptibles d'affecter profondément la forme des trames mais aussi de manière non négligeable les informations transmises_
151 3 Anonyme
152
_5)Par ailleurs, de manière plus générale, l'usage des variables définies dans stdint.h pourrait être un gage de portabilité, il me semble donc pertinent d'envisager de les préférer aux variables par défaut._
153 1 Anonyme
154
155
-----------------------------------------------------------------------------
156
157 14 Anonyme
_+Dernière révision : 11/03/2013 9h00+_
158 1 Anonyme
_+Auteurs : Couma Joani -- Faure Axel+_