Compare commits

..

No commits in common. "evoxx-dumber-v3" and "2.0-RC3" have entirely different histories.

561 changed files with 64541 additions and 1104421 deletions

8
.gitignore vendored
View file

@ -64,10 +64,4 @@ GUI
/software/raspberry/superviseur-robot/superviseur/dist/
/software/raspberry/testeur/testeur/build/
/software/raspberry/testeur/testeur/dist/
/software/dumber3/Release/
/software/dumber3/Debug/
/software/dumber3/Tests/
/software/dumber3/workspace/
/doc/Doc\ robot/doxygen/
/software/raspberry/testeur/testeur/dist/

View file

@ -1,18 +0,0 @@
{
"configurations": [
{
"name": "linux-gcc-x64",
"includePath": [
"${workspaceFolder}/**"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "linux-gcc-x64",
"compilerArgs": [
""
]
}
],
"version": 4
}

16
.vscode/launch.json vendored
View file

@ -1,16 +0,0 @@
{
// Utilisez IntelliSense pour en savoir plus sur les attributs possibles.
// Pointez pour afficher la description des attributs existants.
// Pour plus d'informations, visitez : https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python : fichier actif",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
}
]
}

59
.vscode/settings.json vendored
View file

@ -1,59 +0,0 @@
{
"C_Cpp_Runner.cCompilerPath": "gcc",
"C_Cpp_Runner.cppCompilerPath": "g++",
"C_Cpp_Runner.debuggerPath": "gdb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow",
"-Wformat=2",
"-Wcast-align",
"-Wconversion",
"-Wsign-conversion",
"-Wnull-dereference"
],
"C_Cpp_Runner.msvcWarnings": [
"/W4",
"/permissive-",
"/w14242",
"/w14287",
"/w14296",
"/w14311",
"/w14826",
"/w44062",
"/w44242",
"/w14905",
"/w14906",
"/w14263",
"/w44265",
"/w14928"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"C_Cpp_Runner.useAddressSanitizer": false,
"C_Cpp_Runner.useUndefinedSanitizer": false,
"C_Cpp_Runner.useLeakSanitizer": false,
"C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false
}

View file

@ -8,6 +8,3 @@ Depot du projet de temps reel 4eme année au departement GEI de l'INSA Toulouse.
- doc: contient les sujets de TD et TP
- aruco_markers: Script de generation des tags (aruco) utilisés sur les robots
/home/xenomai/.netbeans/remote/10.105.0.144/insa-10577-Linux-x86_64/home/marin-muller/Documents/4A/Robot/dumber/software/raspberry/superviseur-robot/dist/Debug__RPI_/GNU-Linux

View file

@ -1,53 +0,0 @@
<mxfile host="app.diagrams.net" modified="2023-11-21T12:48:07.142Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0" etag="H5Q9Ykphl-WS1KJXH4T_" version="22.1.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1244" dy="911" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="val = 2 si batterie chargée&lt;br&gt;val = 1 si batterie faible&lt;br&gt;val = 0 si batterie vide" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HzyZGsg6_ylir2WwqlqJ-1" vertex="1" connectable="0">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="val" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="GET_BATTERY" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,52 +0,0 @@
<mxfile host="app.diagrams.net" modified="2023-11-21T12:44:54.545Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0" etag="J3T64XuEu5BhQiDO6xH4" version="22.1.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1244" dy="911" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="&lt;div&gt;Si état == MOTOR_ON, retourne 1&lt;/div&gt;&lt;div&gt;sinon 0&lt;br&gt;&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HzyZGsg6_ylir2WwqlqJ-1" vertex="1" connectable="0">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="29" y="6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="status" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="GET_STATUS" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,52 +0,0 @@
<mxfile host="app.diagrams.net" modified="2023-11-21T12:45:38.079Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0" etag="SAXS6E1cj-U9-1OtTARd" version="22.1.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1244" dy="911" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="Récupération de la version" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HzyZGsg6_ylir2WwqlqJ-1" vertex="1" connectable="0">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="version" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="GET_VERSION" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,52 +0,0 @@
<mxfile host="Electron" modified="2023-10-19T14:42:15.159Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="BJ6CX-0tTJ_Yu_ODM2h3" version="22.0.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1122" dy="852" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="RUN -&amp;gt; MOTORS ON&lt;br&gt;Deplacement de xxxx cm" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="HzyZGsg6_ylir2WwqlqJ-1">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="MOVE=xxxx" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,36 +0,0 @@
<mxfile host="Electron" modified="2023-10-19T14:02:39.901Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="w496wtbRllVrjJP-o5cl" version="22.0.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1122" dy="852" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="430" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="PING" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,52 +0,0 @@
<mxfile host="app.diagrams.net" modified="2023-11-21T12:49:54.137Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0" etag="hZ7n7WkkaXjE-WsCi2cN" version="22.1.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1244" dy="911" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="Lance la procedure d&#39;extinction " style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HzyZGsg6_ylir2WwqlqJ-1" vertex="1" connectable="0">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="POWEROFF" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,58 +0,0 @@
<mxfile host="Electron" modified="2023-10-19T14:08:29.206Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="4zu-3zHQbISUwasoLV-3" version="22.0.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1122" dy="852" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="IDLE-&amp;gt; RUN" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="HzyZGsg6_ylir2WwqlqJ-1">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-3" value="START_WITHOUT_WATCHDOG" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" edge="1" parent="7baba1c4bc27f4b0-8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="120" as="sourcePoint" />
<mxPoint x="235" y="120" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="START_WITH_WATCHDOG" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,65 +0,0 @@
<mxfile host="app.diagrams.net" modified="2023-11-21T11:58:33.981Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0" etag="eJqPFFLypjJ9nA5gPQRz" version="22.1.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1244" dy="911" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;size=40;" parent="1" vertex="1">
<mxGeometry x="540" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="140" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="Reinitialisation watchdog" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HzyZGsg6_ylir2WwqlqJ-1" vertex="1" connectable="0">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK (si entre 0.9s et 1.1s)" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.1;exitY=0.786;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry y="-10" relative="1" as="geometry">
<mxPoint x="55" y="210" as="targetPoint" />
<Array as="points">
<mxPoint x="146" y="210" />
</Array>
<mxPoint x="230" y="210" as="sourcePoint" />
<mxPoint x="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="RESET_WATCHDOG" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="3dzF_IovML2ldSXeqPZC-5" value="" style="endArrow=open;html=1;rounded=1;dashed=1;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.9;entryY=0.705;entryDx=0;entryDy=0;entryPerimeter=0;endSize=8;" edge="1" parent="1" source="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-9">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="520" y="500" as="sourcePoint" />
<mxPoint x="350" y="500" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="3dzF_IovML2ldSXeqPZC-7" value="&lt;font face=&quot;Verdana&quot; style=&quot;font-size: 12px;&quot;&gt;ERR (si trop tôt ou trop tard)&lt;br&gt;&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="3dzF_IovML2ldSXeqPZC-5">
<mxGeometry x="0.6158" y="-2" relative="1" as="geometry">
<mxPoint x="79" y="-9" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,58 +0,0 @@
<mxfile host="Electron" modified="2023-10-19T14:08:50.889Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="5e21WgYeRU5zKfirCkVZ" version="22.0.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1122" dy="852" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="IDLE-&amp;gt; RUN" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="HzyZGsg6_ylir2WwqlqJ-1">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-3" value="START_WITHOUT_WATCHDOG" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" edge="1" parent="7baba1c4bc27f4b0-8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="120" as="sourcePoint" />
<mxPoint x="235" y="120" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="START_WITH_WATCHDOG" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,52 +0,0 @@
<mxfile host="Electron" modified="2023-10-19T15:06:14.960Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="TFiLTTUfpOkRn3xQ6uxh" version="22.0.3" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1122" dy="852" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="480" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-1" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=1.279;entryY=0.784;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-2" target="7baba1c4bc27f4b0-10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="55" y="130" as="sourcePoint" />
<mxPoint x="100" y="200" as="targetPoint" />
<Array as="points">
<mxPoint x="105" y="130" />
<mxPoint x="130" y="140" />
<mxPoint x="130" y="200" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HzyZGsg6_ylir2WwqlqJ-2" value="RUN -&amp;gt; MOTORS ON&lt;br&gt;Rotation de xxxx degrés" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="HzyZGsg6_ylir2WwqlqJ-1">
<mxGeometry x="-0.1338" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="TURN=xxxx" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,36 +0,0 @@
<mxfile host="Electron" modified="2023-10-18T14:02:34.606Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.2 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="7CYwIgy7QJl9Bf2-hre1" version="22.0.2" type="device">
<diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">
<mxGraphModel dx="1116" dy="849" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7baba1c4bc27f4b0-2" value="Robot" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="430" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1">
<mxGeometry x="45" y="100" width="10" height="120" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-8" value="Ordinateur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1">
<mxGeometry x="290" y="260" width="100" height="360" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1">
<mxGeometry x="45" y="100" width="10" height="200" as="geometry" />
</mxCell>
<mxCell id="7baba1c4bc27f4b0-30" value="OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;exitX=0.119;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" parent="7baba1c4bc27f4b0-8" source="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="220" as="targetPoint" />
<Array as="points">
<mxPoint x="495.5" y="220" />
</Array>
<mxPoint x="795.5" y="220" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="7baba1c4bc27f4b0-11" value="PING" style="html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;labelBackgroundColor=none;fontFamily=Verdana;fontSize=12;edgeStyle=elbowEdgeStyle;elbow=vertical;" parent="1" source="7baba1c4bc27f4b0-9" target="7baba1c4bc27f4b0-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="370" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1,99 +0,0 @@
<mxfile host="Electron" modified="2023-10-18T12:56:23.491Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.2 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="u2Q0An3SG5VA8hU9XdA-" version="22.0.2" type="device">
<diagram name="Page-1" id="s1iIJNLQm_feeAUxPTrX">
<mxGraphModel dx="1118" dy="979" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="gdbxGBDsbOmqj8yGOonJ-1" value="" style="ellipse;fillColor=strokeColor;html=1;" vertex="1" parent="1">
<mxGeometry x="399" y="90" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-2" value="IDLE" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="354" y="180" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-3" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="gdbxGBDsbOmqj8yGOonJ-1" target="gdbxGBDsbOmqj8yGOonJ-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="530" as="sourcePoint" />
<mxPoint x="440" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-5" value="Demarrage" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="gdbxGBDsbOmqj8yGOonJ-3">
<mxGeometry x="-0.279" y="5" relative="1" as="geometry">
<mxPoint x="-5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-4" value="RUN" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="354" y="320" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-25" value="Commande&lt;br&gt;de sureté &lt;br&gt;de fonctionnement" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.patternFillRect;fillStyle=diagGrid;step=5;fillStrokeWidth=0.2;fillStrokeColor=#dddddd;rotation=0;dashed=1;" vertex="1" parent="1">
<mxGeometry x="500" y="285" width="150" height="115" as="geometry" />
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-6" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="gdbxGBDsbOmqj8yGOonJ-2" target="gdbxGBDsbOmqj8yGOonJ-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="530" as="sourcePoint" />
<mxPoint x="440" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-7" value="Start with watchdog&lt;br&gt;ou&lt;br&gt;Start without watchdog" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rotation=0;" vertex="1" connectable="0" parent="gdbxGBDsbOmqj8yGOonJ-6">
<mxGeometry x="-0.1336" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-11" value="" style="curved=1;endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="gdbxGBDsbOmqj8yGOonJ-4" target="gdbxGBDsbOmqj8yGOonJ-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="480" y="340" as="sourcePoint" />
<mxPoint x="540" y="370" as="targetPoint" />
<Array as="points">
<mxPoint x="540" y="320" />
<mxPoint x="560" y="330" />
<mxPoint x="570" y="350" />
<mxPoint x="550" y="380" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-12" value="Reset watchdog&amp;nbsp;&lt;br&gt;(si le watchdog est actif)" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="gdbxGBDsbOmqj8yGOonJ-11">
<mxGeometry x="-0.0635" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-20" value="Commandes&lt;br&gt;de mouvement" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.patternFillRect;fillStyle=diagGrid;step=5;fillStrokeWidth=0.2;fillStrokeColor=#dddddd;rotation=0;dashed=1;" vertex="1" parent="1">
<mxGeometry x="200" y="285" width="130" height="115" as="geometry" />
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-13" value="" style="curved=1;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="gdbxGBDsbOmqj8yGOonJ-4" target="gdbxGBDsbOmqj8yGOonJ-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="260" y="330" as="sourcePoint" />
<mxPoint x="310" y="280" as="targetPoint" />
<Array as="points">
<mxPoint x="320" y="320" />
<mxPoint x="310" y="320" />
<mxPoint x="250" y="320" />
<mxPoint x="260" y="380" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-14" value="Move&amp;nbsp;&lt;br&gt;ou&lt;br&gt;Turn" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="gdbxGBDsbOmqj8yGOonJ-13">
<mxGeometry x="-0.0409" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-27" value="Commandes&lt;br&gt;de surveillance" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.patternFillRect;fillStyle=diagGrid;step=5;fillStrokeWidth=0.2;fillStrokeColor=#dddddd;rotation=0;dashed=1;" vertex="1" parent="1">
<mxGeometry x="349" y="400" width="130" height="115" as="geometry" />
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-26" value="" style="curved=1;endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="gdbxGBDsbOmqj8yGOonJ-4" target="gdbxGBDsbOmqj8yGOonJ-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="399" y="470" as="sourcePoint" />
<mxPoint x="449" y="420" as="targetPoint" />
<Array as="points">
<mxPoint x="380" y="460" />
<mxPoint x="450" y="460" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gdbxGBDsbOmqj8yGOonJ-28" value="Get battery&lt;br&gt;Get status" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="gdbxGBDsbOmqj8yGOonJ-26">
<mxGeometry x="-0.0101" y="-2" relative="1" as="geometry">
<mxPoint y="8" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -1 +0,0 @@
<mxfile host="app.diagrams.net" modified="2022-10-11T12:40:49.574Z" agent="5.0 (X11)" etag="YNnbMm92YCTksZ5bMFh4" version="20.4.0" type="device"><diagram name="Page-1" id="c7558073-3199-34d8-9f00-42111426c3f3">7V1hc6I4GP41fnQHCKB8rNrd25n2zmlnbm8/7VCJyhwSD7Da/fWXSBBIsKKSBGw7s10IIcCb93ny5H0D7YHxavctctfLR+TBoGdo3q4HJj3D0DXLwf+Rkre0ZODYacEi8j1aKS949n/D7ExauvE9GJcqJggFib8uF85QGMJZUipzowhty9XmKChfde0uIFfwPHMDvvSH7yXLtHRo2Hn5H9BfLLMr6zZ94Bd39u8iQpuQXi9EIUyPrNysGfqM8dL10LZQBO57YBwhlKRbq90YBsSsmcXS874eOXq45QiGSZ0TprE/fRkZ3//2np7A/Z/OaDw1+1k/vbrBhtriOXGjZLOmN528ZTbaPyUkjek9MNou/QQ+r90ZObrFXoHLlskqoIdpqzBK4O7o/eoHK2DHgmgFk+gNV6EnAJMajvqUbtH9bd5DembcZaF3bFrmUqdYHJrOrYM3qIHOMdaAM1bPsAN82ZHnv+LNBdmcoi2McK2/wuwgvljheMUpWdFLxJa041TGE7CpMDDhaS9w43WK1rm/I54zmvtBMEYBivYNAW3/05C7OGV3Aby3VDmLIcxZhpyzfPewBamJ47Ublqxq/7chTJCatB+nNr0jJohg2jW0QqGzsAmdcrelzR7pN9UIBhV9IhnBDtcpT5uwdYayDNWG0jWNd1/isOOlGy2gcosN2zY26JpeZ3D44SazpYcWuOLEj92XANusHunKtrDN+KRhqjexwZn4AW1HblKyZrs80x6qNxs4S7bM5+0SHx2XPE1AkZE2w4rhQaq20TV+HOVNFnp3ZGqG92aBG8f+rGypHJhEAcKdn/xDtr9YdO8nrUe2J7tCtclbthPihymcRHZ/Fo/lp+33svPSW4UeNydkOgQ/DtpEM1hjSpCQUTE5OdHiuziCgZv4r+U7qeoweuoU+WFSUA4G4xpMl6cPQE8qTg6ZdswT7aTPx7Wz957D01zhUDovNyrgm4qPEyzFuiHu5gf3BQbE5WDs/ybDBHWEIm4DfxESV8UugK8ARgSx/swN7uiBle8R+Z5dgUYiaGO9A9ZOAP09OF3hHNehWa+SLs2guYDlHNndRzOVx43D2bCagTPbjl4Tz7iL3bdCtTWpEB+/X50RiWYpBIU30gYb5gpeBr7PFUcDMR2kCv2IVLjS8UzGP9B8HkNBVF8lRz+kdrDraoehGO3gOPjZS3M8/UK+4ZsCbFPCFYTJudUE24fYCcTdhDpQqwoscTg1LgKqoQypw7pIvVbI1YaX0xhSTbaphrQBGDDaYChFHPAJrQpxsM9x4Vo/yL/JN/x7FZOYHLm7urGEQhtfy82oERsRSrCPIVLWdzRBlGQJ8e8+G6kQKT/4JN4jSlAUU6WoOHzIpgJaED/U+UzWhx0InJoDAXWz5kcCmyHVSxWbeaoh4XqtKoTIkWwKzV/jlfcByFWMzO+zPSuQXI2qMF4jVKH3LookKWOKQwJV2exONVOcrRe16piVWL1oVMU+P0zgubAQrVHKsc1SV/aBRAqqig4KoCDjfQ5qXHS0lyAGDHAtYMmVEgYfUSyss4C7tR9VLAzoBD4NIV3P9Hyf6S+R6BQXVLpEIOgldZBHgmXog2yds6rMsWp90JxP8SGfJ7h34HTG0EXcXxtnuW7Gb1QtdJY/hh7L0egSYarXTwmLycwpx+m5Op6VA7ZjMR4pRMfzQapb0QBiIkl9xh0GQJ4IELh6bFAMKGp16WWgil9qBxRvNUrQmFOBqtATN5HPhMHjbYcSDTFTRomRRCBuTVrXOKK+Bml7pEA9SVQFh44lHfahvgsSw/chFhoa2p/8ukpumWeAGM0rMR0MWpfcbP1yNPoejniaYRclXkwzbEOCVr8CKctfQa3E6QN2V0Pbvxt1M9kKIEYDs92Yr3iQwD+mpLX3A3npCjkzFUu7kB041A4kpyvMWiLkFgFsCgqRyZMLprjF62fkL5pEq5wpQ2NotSzJUwaTX1degGYXQXjtsnL1IPxMIp6fnZCj2S/GOavZuYaE45zPInYc52pziKawHOJlr3mpA2n22YoaIBVEzapBeu3EeghkTKxNPhSUvUFmdvMNMlNQ6vAw2B8WEEkc/GUlD2sSSxeWEH0SS7Y2AagglgwdpW9puTNseD956yaxqP1ghSUsaHbOawYNQrntMTPLrsZN0/hkr5M9gGB81grIFSF7Vj5w/2WtXyjPJt5MPM8SE8/rM18v6eu2vBXKlrAIn/5F04YlfrEBeF9k4J0pjHz8UKRvP1rsj2UDy2LyMqJjAhYf+/skhlrE0LDepA6QQVEGDQiLMWIa0AdtogFZ7yo3xgMDNj8rnAdqfVTikweOoKjTPCAujFniADA8nwNa8H5E7S/jiPpinvK1idfGNg0przlbfGyz/IE80eRSWI0oaC2iJWYUyyaH2VvpDcxE8G7+Zz/S6vmfVQH3/wM=</diagram></mxfile>

Binary file not shown.

View file

@ -212,7 +212,7 @@ La dernière fonctionnalité qui sera traitée dans cette conception introduit d
%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Identification des threads}
Après avoir identifié les fonctions de l'application, le concepteur doit préciser quand l'exécution des fonctions se produit. La première étape consiste à considérer chaque fonction comme un thread. Deux questions se posent alors :
Après avoir identifier les fonctions de l'application, le concepteur doit préciser quand l'exécution des fonctions se produit. La première étape consiste à considérer chaque fonction comme un thread. Deux questions se posent alors :
\begin{itemize}
\item Quel est le type du thread ? Un thread apériodique (noté par un A dans un rond) est un thread dont l'exécution est contrôlé par des événements alors qu'un thread périodique (noté par la valeur de la période dans un rond) aura une exécution qui revient périodiquement.
\item Quel est la priorité du thread ? Une règle simple pour les threads périodiques est d'attribuer les priorités par ordre décroissant des périodes, c'est-à-dire qu'un thread sera d'autant plus prioritaire que sa période sera petite. Pour les threads apériodiques, le niveau de priorité va dépendre de la criticité des fonctions.\\
@ -229,7 +229,7 @@ Après avoir identifié les fonctions de l'application, le concepteur doit préc
Une seconde étape consiste à avoir un regard critique sur sa conception, par exemple en se demandant s'il est possible de réunir des threads ensembles. Ici, le thread {\tt Etablissement de la communication avec le moniteur} ne peut être appelé qu'après {\tt démarrer serveur}, il est donc possible de les réunir en un seul thread.
C'est aussi le moment de se demander si toutes les fonctionnalités sont couvertes. Pour cela on reprend chaque fonctionnalité et on vérifie qu'elles sont bien traitées. Ici tout semble correct, bien qu'un doute subsiste pour la gestion des déplacements du robot...
C'est aussi le moment de se demande si toutes les fonctionnalités sont couvertes. Pour cela on reprend chaque fonctionnalité et on vérifie qu'elles sont bien traitées. Ici tout semble correct, bien qu'un doute subsiste pour la gestion des déplacements du robot...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Formalisation}
@ -328,7 +328,7 @@ Elle ne se veut pas exhaustive, mais simplement présenter les éléments néces
Le diagramme d'activité est un diagramme comportemental d'UML, permettant de représenter le déclenchement d'événements en fonction des états du système et de modéliser des comportements parallélisables (multi-threads ou multi-processus).
Les diagrammes d'activité permettent de spécifier des traitements à priori séquentiels et offrent une vision très proche de celle des langages de programmation impératifs comme C++ ou Java. Il serait utilisé ici dans ce but.
Les diagrammes d'activités permettent de spécifier des traitements a priori séquentiels et offrent une vision très proche de celle des langages de programmation impératifs comme C++ ou Java. Il serait utilisé ici dans ce but.
\subsection{N{\oe}uds d'activité}
@ -442,7 +442,7 @@ Chaque composant appartient à une {\bf catégorie}. Ces catégories sont préd
Chaque composant comprend deux parties. La première, \textbf{le type}, correspond à son interface fonctionnelle, c'est-à-dire ce qui est visible pour les autres composants. La seconde, \textbf{l'implémentation}, décrit son contenu : sous-composants, propriétés, connexions, etc.
Chaque implémentation est associée à un type. À chaque type est associé aucune, une ou plusieurs implémentations. La figure~\ref{fig:type_implementation} donne un exemple de deux types de composants dont le premier est associé à deux implémentations de composants (component implementations). Textuellement, le type est introduit par le mot décrivant le type du composant, alors que l'implémentation est décrite par le type suivi du mot {\em implementation}.
Chaque implémentation est associée à un type. ¿ chaque type est associé aucune, une ou plusieurs implémentations. La figure~\ref{fig:type_implementation} donne un exemple de deux types de composants dont le premier est associé à deux implémentations de composants (component implementations). Textuellement, le type est introduit par le mot décrivant le type du composant, alors que l'implémentation est décrite par le type suivi du mot {\em implementation}.
\begin{figure}[htbp]

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View file

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -115,20 +115,6 @@ Guide des outils de développement \\
\maketitle
%%%%%%%%%%%%%%%%%%%%
\section{Configurer Netbeans pour C/C++}
\label{sec:git}
%%%%%%%%%%%%%%%%%%%%
Depuis la version 11 de Netbeans, il est nécessaire que chaque utilisateur configure son environnement avec le plugin C/CC++. Pour cela, il faut :
\begin{itemize}
\item ouvrir le menu \og Tools > Plugins \fg
\item aller dans l'onglet \og Settings \fg,
\item cocher \og Netbeans 8.2 plugins Portal \fg,
\item aller dans l'onglet \og Available \fg et rafraichir,
\item puis choisir C/C++ et suivre le guide...
\end{itemize}
%%%%%%%%%%%%%%%%%%%%
\section{Code initial du projet}
\label{sec:git}
@ -146,7 +132,7 @@ Le répertoire {\tt superviseur-robot} est constitué des fichiers suivants :
\begin{itemize}
\item {\tt /destijl\_init/main.cpp} qui contient le main de l'application et lance la création des objets et leur exécution,
\item {\tt /destijl\_init/src/tasks.h} qui contient l'entête des différentes fonctions,
\item {\tt /destijl\_init/src/tasks.cpp} qui contient l'implémentation des fonctions de création des objets (tâches, sémaphores, mutex, etc.) ainsi que les fonctions de traitement.
\item {\tt /destijl\_init/src/tasks.cpp} qui contient l'implémentation des fonctions de création des objets (tâches, sémaphores, mutex, etc.) ainsi que les fonction de traitement.
\end{itemize}
@ -156,9 +142,9 @@ Le répertoire {\tt superviseur-robot} est constitué des fichiers suivants :
\section{Compilation d'une application distante}
%%%%%%%%%%%%%%%%%%%%
L'application étant sur une \raspi, il vous faut compiler le programme pour cette architecture. Nous vous proposons d'utiliser Netbeans pour écrire votre code et faire la compilation distante. Cela signifie que votre code est stocké sur votre compte INSA, que vous éditez le code sur la machine de TP, que ce code est ensuite automatiquement chargé sur la \raspi puis compilé (Netbeans permet de faire tout cela).
L'application étant sur une \raspi, il vous faut compiler le programme pour cette architecture. Nous vous proposons d'utiliser Netbeans pour écrire votre code et faire la compilation distante. Cela signifie que votre code est stocké sur votre compte INSA, que vous éditer le code sur la machine de TP, que ce code est ensuite automatiquement chargé sur la \raspi puis compilé (Netbeans permet de faire tout cela).
Pour commencer, lancez Netbeans et ouvrez le projet {\tt superviseur-robot}.
Pour commencer lancer Netbeans et ouvrez le projet {\tt superviseur-robot}.
Avant de compiler, il vous faut configurer la cible sur laquelle la compilation va se faire:
\begin{enumerate}
@ -179,7 +165,7 @@ Avant de compiler, il vous faut configurer la cible sur laquelle la compilation
\item Cliquez {\tt OK}.
\end{enumerate}
Pour compiler, il suffit ensuite de cliquer sur l'icône en forme de marteau. Vous pourrez voir dans le terminal les étapes de compilation qui commencent par le transfert des fichiers suivi de la compilation proprement dite.
Pour compiler, il suffit ensuite de cliquer sur l'icône en forme de marteau. Vous pourrez voir dans le terminal les étapes de compilation qui commence par le transfert des fichiers suivi de la compilation proprement dite.
{\bf Remarque} : la première compilation est un peu longue, mais devrait ensuite se fluidifier avec la compilation incrémentale.
@ -189,7 +175,7 @@ Pour compiler, il suffit ensuite de cliquer sur l'icône en forme de marteau. Vo
\label{sec:utilisation}
%%%%%%%%%%%%%%%%%%%%
Pour exécuter l'application sur le superviseur, il faut avoir mis en place un terminal distant (voir ci-dessous) puis démarrer l'exécution avec la commande {\tt sudo ./path/app}{\tt path} est le chemin du répertoire où se trouve l'application et {\tt app} est le nom de votre application. Attention les droits {\tt sudo} sont nécessaires pour des questions d'accès à certains services Xenomai de gestion de la mémoire.
Pour exécuter l'application sur le superviseur, il faut après avoir mis en place un terminal distant (voir ci-dessous) puis démarrer l'exécution avec la commande {\tt sudo ./path/app}{\tt path} est le chemin du répertoire où se trouve l'application et {\tt app} est le nom de votre application. Attention les droits {\tt sudo} sont nécessaires pour des questions d'accès à certains services Xenomai de gestion de la mémoire.
Si vous utilisez Netbeans, le répertoire dans lequel est compilée l'application se trouve dans l'arboressence commençant par {\tt .netbeans} (attention au "." au début). Il faut descendre dans cette arboressence jusqu'à une bifurcation, puis choisir le répertoire {\tt dist} et aller jusqu'au bout. L'application se trouve au bout de cette branche.
@ -223,7 +209,7 @@ Pour exécuter le moniteur, il suffit depuis votre PC de travail de se placer da
Les seuls fichiers que vous allez avoir à modifier sont les fichiers {\tt tasks.h} et {\tt tasks.cpp}. La classe {\tt Tasks} a pour attributs privés l'ensemble des structures constituant l'application (tâches, mutex, sémarphores, ressources, etc.). Les fonctions de traitement associées aux tâches sont déclarées comme des méthodes privées de {\tt Tasks}.
La classe {\tt Tasks} propose quatre méthodes publiques :
La classe {\tt Tasks} propose quatre méthodes publics :
\begin{itemize}
\item {\tt Init()} qui crée les structures de l'application,
\item {\tt Run()} qui lance les tâches,
@ -231,7 +217,7 @@ Pour exécuter le moniteur, il suffit depuis votre PC de travail de se placer da
\item {\tt Join()} qui suspend l'exécution du {\tt main}.\\
\end{itemize}
Pour ajouter des structures à l'application, il suffit de les déclarer dans le fichier {\tt tasks.h} puis de s'assurer qu'elles sont bien instanciées dans les méthodes adéquates de {\tt tasks.cpp}. Pour une tâche, il faut en plus déclarer une nouvelle méthode privée dans {tasks.h} et fournir son implémentation dans {tasks.cpp}. Cette nouvelle méthode sera le point d'entrée de la tâche.
Pour ajoutez des structures à l'application, il suffit de les déclarer dans le fichier {\tt tasks.h} puis de s'assurer qu'elles sont bien instanciées dans les méthodes adéquates de {\tt tasks.cpp}. Pour une tâche, il faut en plus déclarer une nouvelle méthode privée dans {tasks.h} et fournir son implémentation dans {tasks.cpp}. Cette nouvelle méthode sera le point d'entrée de la tâche.
Toute la documentation de Xenomai se trouve en ligne (attention c'est Xenomai 3) et nous utilisons l'\href{https://xenomai.org/documentation/xenomai-3/html/xeno3prm/group__alchemy.html}{API alchemy}.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because it is too large Load diff

View file

@ -1,512 +0,0 @@
% Description du contenu du rapport à rendre pour l'UF temps réel en 4AE et 4IR
% Auteur : P.-E. Hladik
% Institut : INSA de Toulouse
\documentclass[11pt, a4paper]{paper}
\usepackage{a4wide,color}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage{amstext}
\usepackage{amsmath}
\usepackage[dvipsnames]{xcolor}
\usepackage{placeins}
\newcounter{cptreq}
\usepackage{framed}
\title{{\Huge Rapport de projet De Stijl 2.0}\\
{\large version \today}\\
---\\
}
\author{\color{blue}{Mettez ici vos noms et les parties sur lesquelles vous avez travaillées :}\\
\color{blue}{conception, robot, vidéo, mission, intégration, rédaction du compte-rendu}\\
\color{blue}{Exemple : P.-E. Hladik (conception, robot, rédaction du compte-rendu)}
}
\begin{document}
%%%%%%%%%%%%%%
% PAGE DE GARDE
\maketitle
{\color{red}
\begin{framed}
\begin{center}{\bf\Large --- Ce qu'il faut faire --- } \end{center}
{\bf Remplacez tous les textes en bleu et supprimer les textes en rouge}\\
{\bf Le rapport est à rendre en pdf et à déposer sur moodle avant le 31 mars 2019 23h59:
\url{https://moodle.insa-toulouse.fr/mod/assign/view.php?id=33071}}\\
{\bf Vous devez \underline{aussi} rendre les fichiers {\tt tasks.h} et {\tt tasks.cpp}.}\\
Vous pouvez utiliser word ou un autre logiciel d'édition pour rédiger ce rapport, par contre vous devez {\bf impérativement respecter la structure ci-après et le rendre au format pdf}.\\
Critères d'évaluation :
\begin{itemize}
\item Qualité rédactionnelle,
\item Exhaustivité et justesse des règles de codage,
\item Qualité de la conception (clarté, respect de la syntaxe, exhaustivité, justesse),
\item Qualité des explications,
\item Respect des règles dans la production du code.\\
\end{itemize}
Compétences évaluées :
\begin{itemize}
\item rédaction et communication sur un dossier de conception,
\item concevoir une application concurrente temps réel,
\item analyser une conception,
\item passer d'un modèle de conception à une implémentation,
\item écriture de code et utilisation de primitives au niveau système.
\end{itemize}
\end{framed}
}
%%%%%%%%%%%%%%
% DEBUT DU RAPPORT
\newpage
%%%%%%%%%%%%%%
% CONCEPTION
\section{Conception}
{\color{red} Mettez dans cette partie tous les éléments de votre conception en particulier vos diagrammes AADL (vue globale du système) et les diagrammes d'activité (détails des threads). Cette partie doit être auto-suffisante pour comprendre votre application.
Pour faciliter la lecture des schémas, vous allez présenter votre conception en trois parties, l'une focalisée sur la communication entre le moniteur et le superviseur, la seconde consacrée au traitement vidéo et la troisième au contrôle du robot.
Si vous le souhaitez, au lieu de dessiner vos diagrammes sous un éditeur, vous pouvez joindre un scan de vos schémas — ils doivent être lisibles et propres.}
% VUE GENERAL DU SYSTEME
\subsection{Diagramme fonctionnel général}
{\color{red} Mettez ici un diagramme fonctionnel qui présente les principaux blocs de votre conception. Pour cela, inspirez vous du diagramme ci-dessous (fig.~\ref{fig:diag_fonc_gen}) en indiquant pour chaque groupe de threads les données et ports partagés. La figure~\ref{fig:diag_fonc_gen} a été réalisée à partir du document de conception. {\bf Vous devez absolument conserver le découpage en trois groupes de threads ({\tt th\_group\_gestion\_moniteur}, {\tt th\_group\_vision}, {\tt th\_group\_gestion\_robot}).}}
\begin{figure}[htbp]
\begin{center}
{\includegraphics[scale=.5]{./figures-pdf/diag_fonc_gen}}
{\caption{Diagramme fonctionnel du système}}
\end{center}
\label{fig:diag_fonc_gen}
\end{figure}
\FloatBarrier
% DIAGRAMME FONCTIONNEL GT MONITEUR
\subsection{Groupe de threads gestion du moniteur}
{\color{red}Placez ici :
\begin{itemize}
\item le diagramme fonctionnel en AADL décrivant le groupe de threads de gestion du moniteur (voir exemple de la figure~\ref{fig:diag_fonc_moniteur} réalisée à partir du dossier de conception),
\item remplir le tableau~\ref{tab:gt_moniteur} pour expliquer le rôle de chacun des threads,
\item les diagrammes d'activité de chaque thread de ce groupe.
\end{itemize}
Décrivez tous les éléments (paramètres, variables, etc.) qui vous semblent pertinents pour comprendre les diagrammes.}
% DIAGRAMME FONCTIONNEL GT MONITEUR
\subsubsection{Diagramme fonctionnel du groupe gestion du moniteur}
{\color{red} Exemple de diagramme fonctionnel pour le groupe de thread de gestion du moniteur. Mettez à jour ce diagramme avec votre conception.}
\begin{figure}[htbp]
\label{fig:diag_fonc_moniteur}
\begin{center}
{\includegraphics[scale=.5]{./figures-pdf/diag_fonc_moniteur}}
{\caption{Diagramme fonctionnel du groupe de threads gestion du moniteur}}
\end{center}
\end{figure}
\FloatBarrier
% DESCRIPTION THREADS GT MONITEUR
\subsubsection{Description des threads du groupe gestion du moniteur}
{\color{red} Remplissez le tableau ci-dessous pour expliquer le rôle de chaque thread et donner son niveau de priorité.}
\begin{table}[htp]
\caption{Description des threads du groupe {\tt th\_group\_gestion\_moniteur}}
\begin{center}
\begin{tabular}{|p{3cm}|p{8.5cm}|p{2cm}|}
\hline
\bf Nom du thread & \bf Rôle & \bf Priorité \\
\hline
\hline
\color{blue}tCommuniquer & \color{blue}Prend en charge les messages entrants depuis le moniteur & \color{blue}25\\
\hline
\color{blue}tEnvoyer & \color{blue}Envoi l'ensemble des messages du superviseur au moniteur & \color{blue}30\\
\hline
\color{blue}... & \color{blue}... & \color{blue}...\\
\hline
\end{tabular}
\end{center}
\label{tab:gt_moniteur}
\end{table}%
% DIAGRAMMES D'ACTIVITE GT MONITEUR
\subsubsection{Diagrammes d'activité du groupe gestion du moniteur}
{\color{red}Décrivez le comportement de chacun de vos threads avec des diagrammes d'activité. Apportez les explications qui vous semblent nécessaires pour comprendre votre conception. A titre d'exemple les diagrammes fonctionnels tirés du document de conception sont remis.}
\begin{figure}[htbp]
\label{fig:act_communiquer}
\begin{center}
{\includegraphics[scale=.3]{./figures-pdf/th_receiveFromMon.png}}
{\caption{Diagramme d'activité du thread {\tt th\_receiveFromMon}}}
\end{center}
\end{figure}
\begin{figure}[htbp]
\label{fig:act_envoyer}
\begin{center}
{\includegraphics[scale=.3]{./figures-pdf/th_sendToMon}}
{\caption{Diagramme d'activité du thread {\tt th\_sendToMon}}}
\end{center}
\end{figure}
\begin{figure}[htbp]
\label{fig:act_envoyer}
\begin{center}
{\includegraphics[scale=.3]{./figures-pdf/th_server}}
{\caption{Diagramme d'activité du thread {\tt th\_server}}}
\end{center}
\end{figure}
\FloatBarrier
% DIAGRAMME FONCTIONNEL GT VISION
\subsection{Groupe de threads vision}
% DIAGRAMME FONCTIONNEL GT VISION
\subsubsection{Diagramme fonctionnel du groupe vision}
{\color{blue} Ajoutez le diagramme fonctionnel du groupe de threads de vision.}
% DESCRIPTION THREADS GT VISION
\subsubsection{Description des threads du groupe vision}
{\color{red} Remplissez le tableau ci-dessous pour expliquer le rôle de chaque thread et donner son niveau de priorité.}
\begin{table}[htp]
\caption{Description des threads du groupe {\tt th\_group\_vision}}
\begin{center}
\begin{tabular}{|p{3cm}|p{8.5cm}|p{2cm}|}
\hline
\bf Nom du thread & \bf Rôle & \bf Priorité \\
\hline
\hline
\color{blue}... & \color{blue}... & \color{blue}...\\
\hline
\end{tabular}
\end{center}
\label{tab:gt_moniteur}
\end{table}%
\FloatBarrier
% DIAGRAMMES D'ACTIVITE GT VISION
\subsubsection{Diagrammes d'activité du groupe vision}
{\color{blue}Décrivez le comportement de chacun de vos threads avec des diagrammes d'activité. Apportez les explications qui vous semblent nécessaires pour comprendre votre conception.}
% DIAGRAMME FONCTIONNEL GT ROBOT
\subsection{Groupe de threads gestion du robot}
% DIAGRAMME FONCTIONNEL GT ROBOT
\subsubsection{Diagramme fonctionnel du groupe gestion robot}
{\color{blue} Ajoutez le diagramme fonctionnel du groupe de threads de gestion du robot.}
% DESCRIPTION THREADS GT ROBOT
\subsubsection{Description des threads du groupe gestion robot}
{\color{red} Remplissez le tableau ci-dessous pour expliquer le rôle de chaque thread et donner son niveau de priorité.}
\begin{table}[htp]
\caption{Description des threads du groupe {\tt th\_group\_gestion\_robot}}
\begin{center}
\begin{tabular}{|p{3cm}|p{8.5cm}|p{2cm}|}
\hline
\bf Nom du thread & \bf Rôle & \bf Priorité \\
\hline
\hline
\color{blue}... & \color{blue}... & \color{blue}...\\
\hline
\end{tabular}
\end{center}
\label{tab:gt_moniteur}
\end{table}%
\FloatBarrier
% DIAGRAMMES D'ACTIVITE GT ROBOT
\subsubsection{Diagrammes d'activité du groupe robot}
{\color{blue}Décrivez le comportement de chacun de vos threads avec des diagrammes d'activité. Apportez les explications qui vous semblent nécessaires pour comprendre votre conception.}
%%%%%%%%%%%%%%%
% ANALYSE ET VALIDATION
\section{Analyse et validation de la conception}
{\color{red}Pour chacune des fonctionnalités attendues, indiquez si elle a été réalisée. Ajoutez d'éventuelles remarques de conception si le fonctionnement n'est pas exactement celui attendu et justifiez le respect des propriétés temporelles. Vous n'êtes pas obligé de répondre à ces éléments pour les fonctionnalités réalisées dans la conception préliminaire (ces fonctionnalités sont indiquées dans la suite par un astérisque). Si vous ne souhaitez pas apporter de détails supplémentaires pour ces fonctionnalités, supprimez les de la liste ci-dessous.}
{\color{gray}
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq *}
\paragraph{Description :} Le lancement du serveur doit être réalisé au démarrage du superviseur. En cas d'échec du démarrage du serveur, un message textuel doit être affiché sur la console de lancement de l'application. Ce message doit signaler le problème et le superviseur doit s'arrêter.
\paragraph{\color{black}Réalisation :} {\color{blue} Fait en partie. La fonctionnalité est impléméntée sauf pour l'arrêt suite à l'échec de démarrage du serveur. L'implémentation actuelle stoppe la tâche en charge du démarrage du serveur, mais pas l'ensemble de l'application. Après discussion avec le client, la version actuelle est suffisante.}
}
%%%
{\color{gray}
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq *}
\paragraph{Description :} La connexion entre le moniteur et le superviseur (via le socket) doit être établie suite à la demande de connexion de l'utilisateur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
}
%%%
{\color{gray}
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq *}
\paragraph{Description :} Tous les messages envoyés depuis le moniteur doivent être réceptionnés par le superviseur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq *}
\paragraph{Description :} L'application superviseur doit être capable d'envoyer les messages au moniteur (via le serveur) avec un délai d'au plus 10~ms.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Le superviseur doit détecter la perte de communication avec le moniteur. En cas de perte de la communication un message doit être affiché sur la console de lancement du superviseur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} En cas de perte de communication entre le superviseur et moniteur, il faut stopper le robot, la communication avec le robot, fermer le serveur et déconnecter la caméra afin de revenir dans le même état qu'au démarrage du superviseur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
{\color{gray}
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq *}
\paragraph{Description :} Dès que la communication avec le moniteur est en place, la communication entre le superviseur et le robot doit être ouverte. Si la communication est active, il faut envoyer un message d'acquittement au moniteur. En cas d'échec, un message le signalant est renvoyé au moniteur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} La communication entre le robot et le superviseur doit être surveillée par un mécanisme de compteur afin de détecter une perte du médium de communication.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Lorsque la communication entre le robot et le superviseur est perdue, un message spécifique doit être envoyé au moniteur. Le système doit fermer la communication entre le robot et le superviseur et se remettre dans un état initial permettant de relancer la communication.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
{\color{gray}
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq *}
\paragraph{Description :} Lorsque l'utilisateur demande, via le moniteur, le démarrage sans watchdog, le robot doit démarrer dans ce mode. En cas de succès, un message d'acquittement est retourné au moniteur. En cas d'échec, un message indiquant l'échec est transmis au moniteur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Lorsque l'utilisateur demande, via le moniteur, le démarrage avec watchdog, le robot doit démarrer dans ce mode. Un message d'acquittement est retourné au moniteur. En cas d'échec, un message indiquant l'échec est transmis au moniteur.
Une fois le démarrage effectué, le robot doit rester vivant en envoyant régulièrement le message de rechargement du watchdog.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
{\color{gray}
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq *}
\paragraph{Description :} Lorsque qu'un ordre de mouvement est reçu par le superviseur, le robot doit réaliser ce déplacement en moins de 100~ms.
\paragraph{\color{black}Réalisation :} {\color{blue} Cette fonctionnalité a été implémentée à l'aide d'une tâche qui envoie toutes les 100~ms un ordre de mouvement au robot une fois que celui-ci est démarré (tâche th\_move). Cette implémentation ne garantit pas que le temps soit inférieur à 100~ms entre la réception du message et sa prise en compte par le robot. En effet, le temps de traitement de la réception par la tâche th\_receiveFromMon, le temps de traitement de la tâche th\_move et celui de l'envoi de l'ordre via le Xbee ne sont pas considérés. Afin de réduire ces délais, les priorités de th\_receiveFromMon et de th\_move sont élevés mais ne permettent pas de garantir l'exigence de temps. Augmenter la fréquence de la tâche th\_move permettrait de tenir cette contrainte, mais risque de surcharger la communication avec le robot (une version avec l'envoi de l'ordre que s'il a changé serait souhaitable). Finalement, une version asynchrone (attente d'un événement-donnée entre th\_receiveFromMon et de th\_move) aurait été préférable. Cependant, après discussion avec le client, la version périodique à 100~ms est cependant validée.}
}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Le niveau de la batterie du robot doit être mis à jour toutes les 500~ms sur le moniteur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} La caméra doit être démarrée suite à une demande provenant du moniteur. Si l'ouverture de la caméra a échoué, il faut envoyer un message au moniteur.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Dès que la caméra est ouverte, une image doit être envoyée au moniteur toutes les 100 ms.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} La caméra doit être fermée suite à une demande provenant du moniteur. Un message doit être envoyé au moniteur pour signifier l'acquittement de la demande. L'envoi périodique des images doit alors être stoppé.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Suite à une demande de recherche de l'arène, le superviseur doit stopper l'envoi périodique des images, faire la recherche de l'arène et renvoyer une image sur laquelle est dessinée cette arène. Si aucune arène n'est trouvée un message d'échec est envoyé.\\
L'utilisateur doit ensuite valider visuellement via le moniteur si l'arène a bien été trouvée. L'utilisateur peut :
\begin{itemize}
\item valider l'arène : dans ce cas, le superviseur doit sauvegarder l'arène trouvée (pour l'utiliser ultérieurement) puis retourner dans son mode d'envoi périodique des images en ajoutant à l'image l'arène dessinée.
\item annuler la recherche : dans ce cas, le superviseur doit simplement retourner dans son mode d'envoi périodique des images et invalider la recherche.
\end{itemize}
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Suite à une demande de l'utilisateur de calculer la position du robot, le superviseur doit calculer cette position, dessiner sur l'image le résultat et envoyer un message au moniteur avec la position toutes les 100~ms. Si le robot n'a pas été trouvé, un message de position est envoyé avec une position (-1,-1).
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
\stepcounter{cptreq}
\subsection{Fonctionnalité \thecptreq}
\paragraph{Description :} Suite à une demande de l'utilisateur de stopper le calcul de la position du robot, le superviseur doit rebasculer dans un mode d'envoi de l'image sans le calcul de la position.
\paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
%%%%%%%%%%%%%%%%%%%
% TRANSFORMATION AADL2XENO
\section{Transformation AADL vers Xenomai}
{\color{red} Cette section est consacrée à la méthode pour passer d'un modèle AADL à un code sous Xenomai. Pour chacun des éléments AADL, vous expliquerez {\bf comment vous l'avez traduit en code} et quels {\bf services de Xenomai} vous avez utilisés {\bf en expliquant ce qu'ils font}. Chaque élément devra être illustré avec des {\bf extraits de code de votre projet}.}
% THREAD
\subsection{Thread}
% INSTANCIATION THREAD
\subsubsection{Instanciation et démarrage}
{\color{blue} Expliquer comment vous implémentez sous Xenomai l'instanciation et le démarrage d'un thread AADL.}
{\color{blue} {\bf Exemple de réponse} : Chaque thread a été implémenté par un {\tt RT\_TASK} déclarés dans le fichier {\tt tasks.h}. La création de la tâche se fait à l'aide du service {\tt rt\_task\_create} et son démarrage à l'aide de {\tt rt\_task\_start}. Toutes les tâches sont crées dans la méthode {\tt init} de {\tt tasks.cpp} et démarrées dans la méthode {\tt run}.
Par exemple, pour la tâche {\tt th\_server}, sa déclaration est faite ligne 73 dans le fichier {\tt tasks.h}
\begin{verbatim}
RT_TASK th_server;
\end{verbatim}
sa création ligne 102 de {\tt tasks.cpp} lors de l'appel de
\begin{verbatim}
rt_task_create(&th_server, "th_server", 0, PRIORITY_TSERVER, 0)
\end{verbatim}
et son démarrage ligne 146 avec
\begin{verbatim}
rt_task_start(&th_server, (void(*)(void*)) & Tasks::ServerTask, this)
\end{verbatim}
}
% CODE THREAD
\subsubsection{Code à exécuter}
{\color{blue} Comment se fait le lien sous Xenomai entre le thread et le traitement à exécuter.}
% PRIORITE THREAD
\subsubsection{Niveau de priorités}
{\color{blue} Expliquer comment vous fixez sous Xenomai le niveau de priorité d'un thread AADL.}
% PERIODICITE THREAD
\subsubsection{Activation périodique}
{\color{blue} Expliquer comment vous rendez périodique l'activation d'un thread AADL sous Xenomai.}
% THREAD EVENEMENTIEL
\subsubsection{Activation événementielle}
{\color{blue} Expliquer les moyens mis en {\oe}uvre dans l'implémentation sous Xenomai pour gérer les activations événementielles d'un thread AADL.}
% PORT D'EVENEMENT
\subsection{Port dévénement}
% INSTANCIATION PORT D'EVENEMENT
\subsubsection{Instanciation}
{\color{blue} Comment avez-vous instancié un port d'événement ?}\\
% ENVOI PORT D'EVENEMENT
\subsubsection{Envoi dun événement}
{\color{blue} Quels services ont été employés pour signaler un événement ?}
% RECEPTION PORT D'EVENEMENT
\subsubsection{Réception dun événement}
{\color{blue} Comment se fait l'attente d'un événement ?}
% DONNEE PARTAGEE
\subsection{Donnée partagée}
% INSTANCIATION DONNEE PARTAGEE
\subsubsection{Instanciation}
{\color{blue} Quelle structure instancie une donnée partagée ?}
% LECTURE/ECRITURE DONNEE PARTAGEE
\subsubsection{Accès en lecture et écriture}
{\color{blue} Comment garantissez-vous sous Xenomai l'accès à une donnée partagée ?}
% PORT D'EVENEMENT-DONNEES
\subsection{Ports dévénement-données}
% INSTANCIATION PORT D'EVENEMENT-DONNEES
\subsubsection{Instanciation}
{\color{blue} Donnez la solution retenue pour implémenter un port d'événement-données avec Xenomai.}
% ENVOI PORT D'EVENEMENT-DONNEES
\subsubsection{Envoi dune donnée}
{\color{blue} Quels services avez-vous employés pour envoyer des données ?}
% RECEPTION PORT D'EVENEMENT-DONNEES
\subsubsection{Réception dune donnée}
{\color{blue} Quels services avez-vous employés pour recevoir des données ?}
\end{document}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -84,7 +84,7 @@ Les figures~\ref{fig:diag1_2} et~\ref{fig:diag3_6} illustrent le mode de foncti
%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{Etablissement du socket.} La connexion entre le moniteur et le superviseur est réalisée suite à la demande de l'utilisateur via l'interface graphique. Lorsque la demande est faite, un socket est créé, il faut donc que le serveur soit en attente d'une demande de connexion, c'est-à-dire que la méthode {\tt AcceptClient} de la classe {\tt ComMonitor} soit en cours d'exécution. Cette méthode est bloquante.\\
\paragraph{Etablissement du socket.} La connexion entre le moniteur et le superviseur est réalisée site à la demande de l'utilisateur via l'interface graphique. Lorsque la demande est faite, un socket est créé, il faut donc que le serveur soit en attente d'une demande de connexion, c'est-à-dire que la méthode {\tt AcceptClient} de la classe {\tt ComMonitor} soit en cours d'exécution. Cette méthode est bloquante.\\
\req{La connexion entre le moniteur et le superviseur (via le socket) doit être établie suite à la demande de connexion de l'utilisateur.}
@ -245,7 +245,7 @@ Le principe est simple : au démarrage du robot (c.-à-d. quand le robot traite
\req{Lorsque l'utilisateur demande, via le moniteur, le démarrage avec watchdog, le robot doit démarrer dans ce mode. Un message d'acquittement est retourné au moniteur. En cas d'échec, un message indiquant l'échec est transmis au moniteur.
Une fois le démarrage effectué, le robot doit rester vivant. Pour cela, il faut que le moniteur envoie régulièrement le message de rechargement du watchdog.}
Une fois le démarrage effectué, le robot doit rester vivant en envoyant régulièrement le message de rechargement du watchdog.}
%alt
%note right of Monitor
@ -339,7 +339,7 @@ Les fonctions permettant la manipulation des images sont fournies dans les libra
\req{La caméra doit être démarrée suite à une demande provenant du moniteur. Si l'ouverture de la caméra a échoué, il faut envoyer un message au moniteur.}
%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{Capture d'une image (mode nominal).} La méthode {\tt Grab} de {\tt Camera} permet de capturer une image. L'envoi de l'image au moniteur s'effectue normalement par l'envoi d'un message\footnote{L'image est compressée lors de l'envoi du message.}. La fréquence de capture d'une image est fixée par un paramètre lors de l'instanciation d'un objet {\tt Camera}.\\
\paragraph{Capture d'une image (mode nominal).} La méthode {\tt Grab} de {\tt Camera} permet de capturer une image. La compression de l'image se fait à l'aide de la fonction {\tt ToJpg} de {\tt Img}. L'envoi de l'image au moniteur s'effectue normalement par l'envoi d'un message. La fréquence de capture d'une image est fixée par un paramètre lors de l'instanciation d'un objet {\tt Camera}.\\
\req{Dès que la caméra est ouverte, une image doit être envoyée au moniteur toutes les 100 ms.}

View file

@ -1,2 +0,0 @@
Dumber_2022_Freecad/

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more