-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMAE_BR.drawio
396 lines (396 loc) · 45.8 KB
/
MAE_BR.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
<mxfile host="app.diagrams.net" modified="2023-10-24T20:14:35.492Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0" etag="vWgqcdZuc1LVmWHeJbXs" version="22.0.6" type="github">
<diagram name="Page-1" id="hf3ef-Y2EWKjDb-jeJQz">
<mxGraphModel dx="1374" dy="795" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="ciBssF_R8I6i2YH_fjGX-17" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;dashPattern=8 8;" parent="1" vertex="1">
<mxGeometry x="190" y="970" width="470" height="350" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-19" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;dashPattern=8 8;" parent="1" vertex="1">
<mxGeometry x="690" y="970" width="440" height="350" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-1" target="uh5GhXnPHYMRlya4kCUN-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-1" value="<div>ROT_INITIALE</div><div>(rotation vers le</div><div>cap objectif)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="300" y="210" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-3" value="<div>Si orientation finale terminée</div><div>(dernier point)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-2" target="uh5GhXnPHYMRlya4kCUN-4" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-2" value="<div>ROT_FINALE</div><div>(rotation vers le <br></div><div>cap objectif de fin)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="300" y="540" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-3" target="uh5GhXnPHYMRlya4kCUN-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-4" value="<div>Si pas d'orientation finale</div><div>demandée (point transitoire)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;labelBackgroundColor=default;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-3" target="uh5GhXnPHYMRlya4kCUN-4" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-3" value="<div>AVANCE_RAMPE</div><div>(avance rectiligne)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="300" y="370" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-9" value="Ordre de déplacement" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-4" target="uh5GhXnPHYMRlya4kCUN-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="610" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-17" value="<div>Mise en Idle des axes</div><div>(moteurs inactifs)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-4" target="ONuOxpNwqjPkGdF1RgSP-6" edge="1">
<mxGeometry x="0.7108" y="3" relative="1" as="geometry">
<mxPoint x="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JwW5drimF2jROwmTF-nK-1" value="Si rotation unique demandée" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-1" target="uh5GhXnPHYMRlya4kCUN-4" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-4" value="<div>READY</div><div>(asservi sur la</div><div>position objectif)</div><div>/placer la pos objectif <br></div><div>sur la pos du robot<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="660" y="350" width="120" height="90" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-19" value="<div>Les 2 bumpers activés</div><div>+ un certain timer pour bien se caler<br></div><div>/reset coords sur l'axe concerné<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-5" target="uh5GhXnPHYMRlya4kCUN-4" edge="1">
<mxGeometry x="-0.0496" y="15" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-5" value="<div>RECALAGE</div><div>(reculer droit et détecter le contact aux bumpers)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="1010" y="350" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-20" value="<div>Le robot est arrêté <br></div><div>(vitesse de consigne nulle)<br></div><div>/placer le point objectif sur <br></div><div>la position du robot<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-6" target="uh5GhXnPHYMRlya4kCUN-4" edge="1">
<mxGeometry x="-0.4435" y="3" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JwW5drimF2jROwmTF-nK-3" value="<div>From any state</div><div>except IDLE<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="uh5GhXnPHYMRlya4kCUN-6" edge="1">
<mxGeometry x="-1" y="3" relative="1" as="geometry">
<mxPoint x="1120" y="557.5" as="sourcePoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-6" value="<div>EMERGENCY_BRAKE</div><div>(freinage max)</div><div>-&gt; commande directe des moteurs ? Sinon l'asserv pourrait ne pas suivre<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="890" y="515" width="160" height="85" as="geometry" />
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-7" value="<div>STOP</div><div>(moteurs bloqués)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="740" y="673" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-8" value="<div>ERREUR</div><div>(de la teensy ou de l'Odrive, on bloque les moteurs)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="300" y="630" width="140" height="80" as="geometry" />
</mxCell>
<mxCell id="uh5GhXnPHYMRlya4kCUN-9" value="<div>RECALAGE_TERMINE ?<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="870" y="750" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-13" value="Ordre de recalage" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="uh5GhXnPHYMRlya4kCUN-4" target="uh5GhXnPHYMRlya4kCUN-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-15" value="<div>Mise en close loop des axes</div><div>(s'ils sont bien en Idle)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="1" source="ONuOxpNwqjPkGdF1RgSP-6" target="uh5GhXnPHYMRlya4kCUN-4" edge="1">
<mxGeometry x="-0.3253" y="13" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ONuOxpNwqjPkGdF1RgSP-6" value="IDLE" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="670" y="100" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-8" value="-&gt; MotorStop" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="ciBssF_R8I6i2YH_fjGX-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="530" y="890" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-31" value="<div>Upon Alarm</div><div>(CallFirefighters)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-1" target="ciBssF_R8I6i2YH_fjGX-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-35" value="<div>Upon Call</div><div>if dest_floor !=</div><div>event floor</div><div>(<br></div><div>-&gt; MotorUp OR</div><div>-&gt; MotorDown</div><div>)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="ciBssF_R8I6i2YH_fjGX-1" target="ciBssF_R8I6i2YH_fjGX-4" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-1" value="<div><b>ELEVATOR_IDLE</b></div><div align="left">entry : -&gt; MotorStop</div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="470" y="1000" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-24" value="direction = 0" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="ciBssF_R8I6i2YH_fjGX-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="980" y="880" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-40" value="Upon MotorUp" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-3" target="ciBssF_R8I6i2YH_fjGX-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-43" value="Upon MotorDown" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-3" target="ciBssF_R8I6i2YH_fjGX-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-3" value="<div><b>MOTOR_STOPPED</b></div><div align="left">entry : direction = 0</div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="920" y="990" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-32" value="<div>Upon Alarm</div><div>(CallFirefighters)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-4" target="ciBssF_R8I6i2YH_fjGX-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-33" value="<div>Upon FloorSensor</div><div>if expected floor is not <br></div><div>the event floor</div><div>(CallMaintenance)<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="ciBssF_R8I6i2YH_fjGX-4" target="ciBssF_R8I6i2YH_fjGX-5" edge="1">
<mxGeometry x="-0.2667" y="10" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-34" value="<div>Upon FloorSensor</div><div>if expected floor is <br></div><div>the event floor</div><div>()<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="1" source="ciBssF_R8I6i2YH_fjGX-4" target="ciBssF_R8I6i2YH_fjGX-1" edge="1">
<mxGeometry x="0.1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-4" value="<div><b>ELEVATOR_MOVING</b></div><div align="left">entry : <br></div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="270" y="1115" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-5" value="<div><b>ELEVATOR_PANIC</b></div><div>entry : -&gt; MotorStop</div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="450" y="1230" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-25" value="Upon MotorStop" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-6" target="ciBssF_R8I6i2YH_fjGX-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-42" value="Upon MotorDown" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-6" target="ciBssF_R8I6i2YH_fjGX-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-6" value="<div><b>MOTOR_UP</b></div><div align="left">entry : direction = 1</div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="750" y="1200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-26" value="Upon MotorStop" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-7" target="ciBssF_R8I6i2YH_fjGX-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-41" value="Upon MotorUp" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-7" target="ciBssF_R8I6i2YH_fjGX-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-7" value="<div><b>MOTOR_DOWN</b></div><div align="left">entry : direction = -1</div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="980" y="1200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-9" value="<div>FloorEvent</div><div><br></div><div>- int floor<br></div>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="240" y="1400" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;endArrow=block;endFill=0;" parent="1" source="ciBssF_R8I6i2YH_fjGX-10" target="ciBssF_R8I6i2YH_fjGX-9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-10" value="<div>Call<br></div>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="380" y="1380" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;endArrow=block;endFill=0;" parent="1" source="ciBssF_R8I6i2YH_fjGX-11" target="ciBssF_R8I6i2YH_fjGX-9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-11" value="FloorSensor" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="380" y="1450" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-12" value="Alarm" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="380" y="1510" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-18" value="<div align="left">- int initial_floor = 0</div><div align="left">- int current_floor</div><div align="left">- int dest_floor<br></div>" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="200" y="1000" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-20" value="<div align="left">- int direction</div><div align="left">public :</div><div align="left">- int getDirection()<br></div>" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="710" y="990" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-21" value="MotorUp" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="760" y="1380" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-22" value="MotorDown" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="760" y="1450" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-23" value="MotorStop" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="760" y="1520" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-27" value="<div>Ici on n'a pas de react dans les états eux-mêmes, juste le react par défaut pour n'importe quel state</div><div>C'est suffisant ici car le react ne dépend pas de l'état dans lequel on se trouve<br> </div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="860" y="1370" width="250" height="150" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-28" value="<div>Les reacts ont une def par défaut qui est celle d'ignorer les events Call et FloorSensor</div><div>Par contre le react par défaut sur l'event Alarm est de transitionner vers Panic et de lancer CallFirefighters</div><div><br></div><div>Le react au Call est dans IDLE, qui change dest_floor, envoie un event MotorUp ou MotorDown, et transitionne vers MOVING</div><div><br></div><div>Le react au FloorSensor est dans MOVING, si le signal correspond au FloorSensor.floor on transitionne vers IDLE, sinon on transitionne vers Panic<br></div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="480" y="1325" width="210" height="245" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-46" value="<div>Upon GoalReachedEvent</div><div>if goalType is TRANS<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#00CC00;" parent="1" source="ciBssF_R8I6i2YH_fjGX-47" target="ciBssF_R8I6i2YH_fjGX-52" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-47" value="<div><b>INIT_ROT</b></div><div>(rotation pour s'aligner sur la traj)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="2140" y="130" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-48" value="<div>Upon GoalReachedEvent</div><div>if goalType is FINAL<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;strokeColor=#00CC00;" parent="1" source="ciBssF_R8I6i2YH_fjGX-49" target="ciBssF_R8I6i2YH_fjGX-55" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-49" value="<div><b>FINAL_ROT</b></div><div>(rotation vers le <br></div><div>cap objectif)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="2140" y="530" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-50" value="<div>Upon GoalReachedEvent</div><div>and goalType is FINAL<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#00CC00;" parent="1" source="ciBssF_R8I6i2YH_fjGX-52" target="ciBssF_R8I6i2YH_fjGX-49" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2200" y="510" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-51" value="<div>Upon GoalReachedEvent</div><div><div>if goalType is TRANS</div><div>or REVERSE<br></div></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;labelBackgroundColor=default;entryX=0;entryY=0.75;entryDx=0;entryDy=0;strokeColor=#00CC00;" parent="1" source="ciBssF_R8I6i2YH_fjGX-52" target="ciBssF_R8I6i2YH_fjGX-55" edge="1">
<mxGeometry x="0.1088" y="-5" relative="1" as="geometry">
<mxPoint as="offset" />
<Array as="points">
<mxPoint x="2580" y="405" />
<mxPoint x="2580" y="360" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-52" value="<div><b>FORWARD</b></div><div>(avance rectiligne)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="2140" y="360" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-53" value="<div>Upon GoalReachedEvent</div><div>if goalType == ORIENT<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;strokeColor=#00CC00;" parent="1" source="ciBssF_R8I6i2YH_fjGX-47" target="ciBssF_R8I6i2YH_fjGX-55" edge="1">
<mxGeometry x="-0.0732" relative="1" as="geometry">
<mxPoint x="2850" y="300" as="targetPoint" />
<mxPoint x="2710" y="200" as="sourcePoint" />
<Array as="points">
<mxPoint x="2500" y="175" />
<mxPoint x="2500" y="330" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-54" value="Upon BrSetToIdleEvent" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;strokeColor=#171717;" parent="1" source="ciBssF_R8I6i2YH_fjGX-55" target="ciBssF_R8I6i2YH_fjGX-57" edge="1">
<mxGeometry x="0.2959" y="-12" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="2wvSedpEUKUVcXHPRgGq-1" value="<div>Upon OrderEvent</div><div>if goalType is ORIENT, <br></div><div>TRANS or FINAL<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;strokeColor=#CC00CC;" parent="1" source="ciBssF_R8I6i2YH_fjGX-55" target="ciBssF_R8I6i2YH_fjGX-47" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2750" y="280" />
<mxPoint x="2670" y="280" />
<mxPoint x="2670" y="145" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="Cgg4pRgrw1nAHNjQ0Tcx-1" value="<div>Upon OrderEvent</div><div>if goalType is REVERSE<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;strokeColor=#CC00CC;exitX=0;exitY=0.5;exitDx=0;exitDy=0;dashed=1;" parent="1" source="ciBssF_R8I6i2YH_fjGX-55" target="ciBssF_R8I6i2YH_fjGX-52" edge="1">
<mxGeometry x="0.3672" relative="1" as="geometry">
<mxPoint x="2700" y="390" as="sourcePoint" />
<Array as="points">
<mxPoint x="2400" y="345" />
<mxPoint x="2400" y="375" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-55" value="<div><b>READY</b></div><div>(asservi sur la</div><div>position objectif)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="2720" y="315" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-56" value="Upon BrGetReadyEvent" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;strokeColor=#171717;" parent="1" source="ciBssF_R8I6i2YH_fjGX-57" target="ciBssF_R8I6i2YH_fjGX-55" edge="1">
<mxGeometry x="0.5111" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-58" value="INIT" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=12;" parent="1" target="ciBssF_R8I6i2YH_fjGX-57" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2795" y="20" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="Zbf--YNUXzCRcsGXJnKa-1" value="<div>Upon BrSetToIdleEvent</div><div>from any other state<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="ciBssF_R8I6i2YH_fjGX-57" edge="1">
<mxGeometry x="-0.9995" y="-2" relative="1" as="geometry">
<mxPoint x="2640" y="98" as="sourcePoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-57" value="<div><b>IDLE</b></div><div>(moteurs inactifs)<b><br></b></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="2730" y="68" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-59" value="<div>BumperEvent</div><div><br></div><div align="left">- bool isLeft<br></div>" style="rounded=0;whiteSpace=wrap;html=1;shadow=0;glass=0;imageAspect=1;fillOpacity=100;strokeOpacity=100;textOpacity=20;" parent="1" vertex="1">
<mxGeometry x="2530" y="630" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-60" value="StopEvent" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="3848" y="750" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-62" value="if w == 3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="ciBssF_R8I6i2YH_fjGX-61" target="ciBssF_R8I6i2YH_fjGX-60" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-61" value="<div>OrderEvent</div><div><br></div><div align="left">- float x</div><div align="left">- float y</div><div align="left">- float theta</div><div align="left">- int w<br></div>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="2640" y="630" width="80" height="100" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-63" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="3808" y="807" as="sourcePoint" />
<mxPoint x="3808" y="27" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-64" value="<div><b>MOTOR_STOPPED</b></div><div>(motors blocked)</div><div align="left"><br></div><div align="left">entry : <br></div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="3838" y="417" width="160" height="96" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-66" value="<div><b>MOTOR_RUNNING</b></div><div>(axis state is closed_loop)</div><div><b><br></b></div><div align="left">entry : <br></div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="3958" y="260" width="160" height="110" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-67" value="<div><b>MOTOR_ERROR</b></div><div align="left">entry : <br></div><div align="left">exit : (de manière à faire repartir l'axe)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="4028" y="495" width="160" height="96" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-77" value="Asserv" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="ciBssF_R8I6i2YH_fjGX-68" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2439.9999999999995" y="725" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-68" value="<div>GoalReachedEvent</div><div>&nbsp;- int objType<br></div>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="2495" y="700" width="130" height="50" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-69" value="x2" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=32;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="4188" y="360" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-78" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="ciBssF_R8I6i2YH_fjGX-70" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="3838" y="20" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-70" value="<div><b>MOTOR_IDLE</b></div><div>(axis idle state, no pwm)</div><div><b><br></b></div><div align="left">entry : <br></div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="3878" y="60" width="160" height="110" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-72" value="<div><b>MOTOR_CALIB</b></div><div>(during calibration procedure)<br></div><div><b><br></b></div><div align="left">entry : <br></div><div align="left">exit : <br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="4058" y="90" width="160" height="110" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-81" value="OdriveSerial" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="ciBssF_R8I6i2YH_fjGX-79" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2400" y="794.8965517241379" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-79" value="<div>ErrorEvent</div><div>- int errorCode<br></div>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="2495" y="770" width="130" height="50" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-82" value="CalibrationEvent" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="3838" y="683" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-83" value="<div align="left">- struct axisStates</div><div align="left">- <br></div><div align="left"><br></div><div align="left"><br></div><div align="left">- led<br></div>" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="1970" y="23" width="120" height="77" as="geometry" />
</mxCell>
<mxCell id="ciBssF_R8I6i2YH_fjGX-84" value="<div align="left">- int axisState</div>" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="4255" y="50" width="120" height="120" as="geometry" />
</mxCell>
<mxCell id="aEUfXTGbczbKFSO1ukaV-2" value="<div>Upon GoalReachedEvent</div><div>if goalType == RECAL<br></div><div><br></div><div>Les 2 bumpers activés</div><div>+ un certain timer pour bien se caler<br></div><div>/reset coords sur l'axe concerné<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;strokeColor=#00CC00;" parent="1" source="aEUfXTGbczbKFSO1ukaV-3" target="ciBssF_R8I6i2YH_fjGX-55" edge="1">
<mxGeometry x="-0.097" y="22" relative="1" as="geometry">
<mxPoint x="12" y="20" as="offset" />
<mxPoint x="2890" y="355" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aEUfXTGbczbKFSO1ukaV-3" value="<div><b>RECAL_DETECT</b></div><div>(reculer droit en commande et détecter le contact aux bumpers)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="3120" y="360" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="aEUfXTGbczbKFSO1ukaV-4" value="<div>Upon OrderEvent</div><div>if goalType is RECAL<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#CC00CC;" parent="1" source="ciBssF_R8I6i2YH_fjGX-55" target="gb6GSMb26pJpbT5CDVdX-4" edge="1">
<mxGeometry y="10" relative="1" as="geometry">
<mxPoint x="2890" y="325" as="sourcePoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="gb6GSMb26pJpbT5CDVdX-1" value="<div>Le robot est arrêté <br></div><div>(vitesse de consigne nulle)<br></div><div>/placer le point objectif sur <br></div><div>la position du robot<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" source="gb6GSMb26pJpbT5CDVdX-2" target="ciBssF_R8I6i2YH_fjGX-55" edge="1">
<mxGeometry x="-0.4435" y="3" relative="1" as="geometry">
<mxPoint as="offset" />
<mxPoint x="2960" y="421" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gb6GSMb26pJpbT5CDVdX-2" value="<div>EMERGENCY_BRAKE</div><div>(freinage max)</div><div>-&gt; commande directe des moteurs ? Sinon l'asserv pourrait ne pas suivre<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="2980" y="490.5" width="160" height="85" as="geometry" />
</mxCell>
<mxCell id="gb6GSMb26pJpbT5CDVdX-3" value="<div>Upon BrEmergencyBrakeEvent<br></div><div>From any state</div><div>except IDLE</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#e01b24;" parent="1" target="gb6GSMb26pJpbT5CDVdX-2" edge="1">
<mxGeometry x="-1" y="11" relative="1" as="geometry">
<mxPoint x="3240" y="535" as="sourcePoint" />
<mxPoint x="10" y="-6" as="offset" />
<mxPoint x="3210" y="532.98" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hW8lF-K3xAFudG9F_H8q-1" value="<div>if one bumper clicked OR</div><div>the distance to the wall is small enough<br></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="gb6GSMb26pJpbT5CDVdX-4" target="aEUfXTGbczbKFSO1ukaV-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="gb6GSMb26pJpbT5CDVdX-4" value="<div><b>RECAL_ASSERV</b></div><div><b>~ FORWARD<br></b></div><div>(reculer droit en asserv)<br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="3120" y="190" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="hW8lF-K3xAFudG9F_H8q-2" value="<div><b>ASSERV</b></div><div><b><br></b></div><div>IDLE<b><br></b></div><div>ACTIVE</div><div>BYPASSED</div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
<mxGeometry x="3070" y="36.5" width="130" height="91.5" as="geometry" />
</mxCell>
<mxCell id="YLS4Elkw91ksrik68dw--1" value="<div>- Il faut un mode REVERSE qui ne transitionne pas directement sur FORWARD mais qui passe par InitRot et FinalRot (donc analogue à FINAL mais en forçant la marche arrière)</div><div><br></div><div>- EmergencyBrakeEvent doit donner une rampe pour que l'asserv puisse suivre</div><div><br></div><div>- Fusionner RECAL_ASSERV avec un enchaînement de INIT_ROT&nbsp; et de FORWARD (c'est en fait la même chose) et ensuite transitionner vers RECAL_DETECT quand on a détecté la distance de recalage (à régler le plus près possible du mur, en fonction de notre précision)</div><div><br></div><div>- Implémenter de manière plus clean le setToIdle de la BR ?</div><div><br></div><div>- Faire en sorte que la MAE soit tout le temps réinitialisable (en passage à IDLE)</div><div><br></div><div>Utiliser les fonctions exit() de la MAE ?<br></div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1640" y="140" width="460" height="240" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>