diff --git "a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/Icon\342\231\252" "b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/Icon\342\231\252" similarity index 100% rename from "Rapport_Source/vu-cs-standard-thesis/0_frontmatter/Icon\342\231\252" rename to "Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/Icon\342\231\252" diff --git a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/abstract.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/abstract.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/0_frontmatter/abstract.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/abstract.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/dedication.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/dedication.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/0_frontmatter/dedication.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/dedication.tex diff --git "a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/Icon\342\231\252" "b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/Icon\342\231\252" similarity index 100% rename from "Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/Icon\342\231\252" rename to "Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/Icon\342\231\252" diff --git a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf diff --git a/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/glossary.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/glossary.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/0_frontmatter/glossary.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/0_frontmatter/glossary.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop diff --git "a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/Icon\342\231\252" "b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/Icon\342\231\252" similarity index 100% rename from "Rapport_Source/vu-cs-standard-thesis/Latex/Classes/Icon\342\231\252" rename to "Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/Icon\342\231\252" diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/jmb.bst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/jmb.bst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/jmb.bst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/jmb.bst diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/urlbst b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/urlbst similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Classes/urlbst rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Classes/urlbst diff --git "a/Rapport_Source/vu-cs-standard-thesis/Latex/Icon\342\231\252" "b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Icon\342\231\252" similarity index 100% rename from "Rapport_Source/vu-cs-standard-thesis/Latex/Icon\342\231\252" rename to "Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Icon\342\231\252" diff --git "a/Rapport_Source/vu-cs-standard-thesis/Latex/Macros/Icon\342\231\252" "b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Macros/Icon\342\231\252" similarity index 100% rename from "Rapport_Source/vu-cs-standard-thesis/Latex/Macros/Icon\342\231\252" rename to "Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Macros/Icon\342\231\252" diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex diff --git "a/Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/Icon\342\231\252" "b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/Icon\342\231\252" similarity index 100% rename from "Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/Icon\342\231\252" rename to "Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/Icon\342\231\252" diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/Latex/latex_intro.pdf b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/latex_intro.pdf similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Latex/latex_intro.pdf rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Latex/latex_intro.pdf diff --git a/Rapport_Source/vu-cs-standard-thesis/Logo_CNRS.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_CNRS.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Logo_CNRS.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_CNRS.png diff --git a/Rapport_Source/vu-cs-standard-thesis/Logo_CYU_c.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_CYU_c.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Logo_CYU_c.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_CYU_c.png diff --git a/Rapport_Source/vu-cs-standard-thesis/Logo_ENSEA.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_ENSEA.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Logo_ENSEA.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_ENSEA.png diff --git a/Rapport_Source/vu-cs-standard-thesis/Logo_ETIS.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_ETIS.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/Logo_ETIS.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/Logo_ETIS.png diff --git a/Rapport_Source/vu-cs-standard-thesis/booktabs.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/booktabs.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/booktabs.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/booktabs.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/caption.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/caption.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/caption.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/caption.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/fancyhdr.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/fancyhdr.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/fancyhdr.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/fancyhdr.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/footmisc.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/footmisc.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/footmisc.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/footmisc.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/listings.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/listings.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/listings.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/listings.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/natbib.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/natbib.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/natbib.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/natbib.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/nomencl.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/nomencl.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/nomencl.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/nomencl.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/references.bib b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/references.bib similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/references.bib rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/references.bib diff --git a/Rapport_Source/vu-cs-standard-thesis/rotating.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/rotating.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/rotating.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/rotating.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/DJI.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/DJI.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/DJI.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/DJI.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/appendix.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/appendix.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/appendix.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/appendix.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/ardrone.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/ardrone.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/ardrone.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/ardrone.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/autopilotttt.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/autopilotttt.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/autopilotttt.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/autopilotttt.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/b1.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/b1.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/b1.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/b1.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/b2.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/b2.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/b2.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/b2.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/background.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/background.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/background.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/background.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/battery.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/battery.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/battery.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/battery.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/blc.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/blc.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/blc.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/blc.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/camera.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/camera.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/camera.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/camera.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/char.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/char.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/char.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/char.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/commandlong.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/commandlong.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/commandlong.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/commandlong.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/conclusion.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/conclusion.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/conclusion.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/conclusion.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/contri.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/contri.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/contri.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/contri.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/controller.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/controller.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/controller.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/controller.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/deepcon.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/deepcon.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/deepcon.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/deepcon.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/design.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/design.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/design.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/design.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/discussion.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/discussion.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/discussion.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/discussion.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/dist.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/dist.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/dist.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/dist.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/distr.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/distr.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/distr.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/distr.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/evaluation.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/evaluation.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/evaluation.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/evaluation.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/gps.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/gps.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/gps.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/gps.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/heartbeat.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/heartbeat.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/heartbeat.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/heartbeat.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/historic.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/historic.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/historic.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/historic.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/icm.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/icm.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/icm.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/icm.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image1000.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image1000.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image1000.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image1000.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image10000.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image10000.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image10000.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image10000.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image1000000.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image1000000.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image1000000.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image1000000.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image250.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image250.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image250.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image250.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image25000.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image25000.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image25000.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image25000.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image500.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image500.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image500.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image500.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image50000.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image50000.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image50000.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image50000.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image500000.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image500000.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image500000.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image500000.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/image85000.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image85000.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/image85000.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/image85000.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/implementation.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/implementation.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/implementation.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/implementation.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/intro.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/intro.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/intro.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/intro.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/joystick.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/joystick.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/joystick.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/joystick.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/mavlink.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mavlink.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/mavlink.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mavlink.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/mavlinkarc.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mavlinkarc.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/mavlinkarc.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mavlinkarc.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/mavlinkframe.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mavlinkframe.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/mavlinkframe.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mavlinkframe.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/motors.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/motors.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/motors.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/motors.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/mutex.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mutex.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/mutex.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/mutex.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/overview.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/overview.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/overview.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/overview.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/packh.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/packh.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/packh.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/packh.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/pix.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pix.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/pix.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pix.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/pixhawk4.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pixhawk4.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/pixhawk4.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pixhawk4.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/pixsoft.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pixsoft.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/pixsoft.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pixsoft.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/pubsub.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pubsub.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/pubsub.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/pubsub.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/reception1000.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception1000.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/reception1000.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception1000.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/reception10000.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception10000.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/reception10000.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception10000.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/reception250.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception250.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/reception250.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception250.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/reception500.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception500.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/reception500.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception500.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/reception5000.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception5000.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/reception5000.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/reception5000.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/related.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/related.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/related.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/related.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/send.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/send.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/send.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/send.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/shared.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/shared.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/shared.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/shared.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/sim1.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/sim1.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/sim1.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/sim1.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/sofft.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/sofft.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/sofft.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/sofft.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/soft.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/soft.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/soft.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/soft.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/softdiagram.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/softdiagram.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/softdiagram.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/softdiagram.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/struct.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/struct.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/struct.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/struct.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/structure.png b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/structure.png similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/structure.png rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/structure.png diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/telemetry.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/telemetry.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/telemetry.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/telemetry.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/type.jpg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/type.jpg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/type.jpg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/type.jpg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/xp1.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/xp1.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/xp1.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/xp1.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/xp2.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/xp2.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/xp2.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/xp2.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/sections/xp3.jpeg b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/xp3.jpeg similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/sections/xp3.jpeg rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/sections/xp3.jpeg diff --git a/Rapport_Source/vu-cs-standard-thesis/setspace.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/setspace.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/setspace.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/setspace.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/subfigure.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/subfigure.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/subfigure.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/subfigure.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/thesis.tex b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/thesis.tex similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/thesis.tex rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/thesis.tex diff --git a/Rapport_Source/vu-cs-standard-thesis/tocbibind.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/tocbibind.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/tocbibind.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/tocbibind.sty diff --git a/Rapport_Source/vu-cs-standard-thesis/vmargin.sty b/Doc/2021/Rapport_Source/vu-cs-standard-thesis/vmargin.sty similarity index 100% rename from Rapport_Source/vu-cs-standard-thesis/vmargin.sty rename to Doc/2021/Rapport_Source/vu-cs-standard-thesis/vmargin.sty diff --git a/Report/.gitkeep b/Doc/2021/Report/.gitkeep similarity index 100% rename from Report/.gitkeep rename to Doc/2021/Report/.gitkeep diff --git a/Report/Rapport.pdf b/Doc/2021/Report/Rapport.pdf similarity index 100% rename from Report/Rapport.pdf rename to Doc/2021/Report/Rapport.pdf diff --git a/Report/Source_Rapport.zip b/Doc/2021/Report/Source_Rapport.zip similarity index 100% rename from Report/Source_Rapport.zip rename to Doc/2021/Report/Source_Rapport.zip diff --git a/Doc/2023/Rapport_PFE_YANG_Stephane.pdf b/Doc/2023/Rapport_PFE_YANG_Stephane.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8211e4a80570be45f3fa373e01fe807c7018255 Binary files /dev/null and b/Doc/2023/Rapport_PFE_YANG_Stephane.pdf differ diff --git a/Doc/2023/Source_latex/Biblio.bib b/Doc/2023/Source_latex/Biblio.bib new file mode 100644 index 0000000000000000000000000000000000000000..de48eb68ef93919abce0cc047d09df9f4acb2a26 --- /dev/null +++ b/Doc/2023/Source_latex/Biblio.bib @@ -0,0 +1,135 @@ +@BOOK{neuron1943, + title = {A logical calculus of the ideas immanent in nervous activity}, + volume = {5}, + pages = {115-133}, + year = {1943}, + publisher = {The bulletin of mathematical biology}, + author = {McCulloch, W. S. and Pitts, W.}, +} + +@BOOK{LMS1960, + title = {Adaptive switching circuits}, + booktitle = {1960 ire wescon convention record}, + year = {1960}, + publisher = {Neurocomputing}, + author = {Widrow, B. and Hoff, M.}, +} + +@BOOK{hebb2005, + title = {The organization of behavior : A neuropsychological theory}, + year = {2005}, + publisher = {Psychology Press}, + author = {Hebb, D. O.}, +} + +@ARTICLE{wta1999, + title = {Attention activates winner-take-all competition among visual filters}, + journal = {Nature neuroscience}, + volume = {2}, + number = {4}, + pages = {375–381}, + year = {1999}, + author = {Lee, D. K. and Itti, L. and Koch, C. and Braun, J.}, +} + +@ARTICLE{gaussier1995, + title = {Perac : A neural architecture to control artificial animals}, + journal = {Robotics and Autonomous Systems}, + volume = {16}, + number = {2}, + pages = {291-320}, + year = {1995}, + author = {Gaussier, P. and Zrehen, S.}, +} + +@INPROCEEDINGS{maillard2005, + title = {Perception as a dynamical sensori-motor attraction basin}, + booktitle = {Advances in Artificial Life}, + pages = {37-46}, + year = {2005}, + author = {Maillard, M. and Gapenne, O. and Hafemeister, L. and Gaussier, P.}, + publisher = {Springer}, +} + +@INPROCEEDINGS{giovannangeli2008, + title = {Autonomous vision-based navigation : Goal-oriented action planning by transient states prediction, cognitive map building, and sensory-motor learning}, + booktitle = {Intelligent Robots and Systems, 2008. IROS 2008. IEEE/RSJ International Conference on}, + pages = {676-683}, + year = {2008}, + author = {Giovannangeli, C. and Gaussier, P.}, + publisher = {IEEE}, +} + +@INPROCEEDINGS{espada2018, + title = {Application of a bio-inspired localization model to autonomous vehicles}, + booktitle = {Proceedings of the Conference}, + pages = {7-14}, + year = {2018}, + author = {Espada, Y. and Cuperlier, N. and Bresson, G. and Romain, O.}, +} + +%BOOK{web001, +% title = {Mon livre}, +% publisher = {Editeur}, +% year = {2012}, +% author = {Prenom et Nom}, +% owner = {ines}, +% timestamp = {2013.04.06} +%} + +%BOOK{gen1972, +% AUTHOR = {Genette, Gérard}, +% TITLE = {Figure III}, +% PUBLISHER = {Seuil}, +% YEAR = {1972}, +% address = {Paris} +%} + + +%BOOK{schaeffer99, +% AUTHOR = {Schaeffer, Jean-Marie}, +% TITLE = {Pourquoi la fiction~?}, +% PUBLISHER = {Seuil}, +% YEAR = {1999}, +% address = {Paris} +%} + + +%book{caillois1, +% address = {Paris}, +% title = {Les jeux et les hommes}, +% publisher = {Gallimard}, +% author = {Caillois, Roger}, +% year = {1991} +%} + +%incollection{jenkins2004, +% address = {Cambridge}, +% publisher = {MIT Press}, +% editor = {Pat Harrigan and Noah Wardrip-Fruin}, +% title = {Game Design as Narrative Architecture}, +% url = {http://interactive.usc.edu/blog-old/wp-content/uploads/2011/01/Jenkins_Narrative_Architecture.pdf}, +% booktitle = {First Person~: new media as story, performance, and game}, +% author = {Jenkins, Henry}, +% year = {2004} +%} + +%book{hui, +% author = {Huizinga, Johan}, +% title = {Homo Ludens. Essai sur la fonction sociale du jeu}, +% address = {Paris}, +% publisher = {Gallimard}, +% year = {1951 [1938]} +%} + + + +%INPROCEEDINGS{Bird02nltk:the, +% author = {Steven Bird}, +% title = {Nltk: The natural language toolkit}, +% booktitle = {In Proceedings of the ACL Workshop on Effective Tools and Methodologies for Teaching Natural Language Processing and Computational Linguistics. Philadelphia: Association for Computational Linguistics}, +% year = {2002} +%} + + + diff --git a/Doc/2023/Source_latex/README.md b/Doc/2023/Source_latex/README.md new file mode 100644 index 0000000000000000000000000000000000000000..977f76fd857f5090a29d08f993422fd889ada04a --- /dev/null +++ b/Doc/2023/Source_latex/README.md @@ -0,0 +1,33 @@ +# TemplatesLatexESSAI +Un rapport Latex pour les PFE (en anglais et en Français) destiné à l'ESSAI, Université de Carthage, Tunisie. Ci-dessous le déroulement de l'encadrement du PFE : la Méthodologie de réalisation du PFE pour un Projet encadré par Ines Abdeljaoued Tej à l'ESSAI – Université de Carthage. + +Il y a deux lieux de réunion : à l'ESSAI au Bureau 3.2, et au Laboratoire BIMS à l'Institut Pasteur de Tunis. Les dates des réunions seront confirmées la veille. + + +1ère semaine : Discussion du sujet et prise en main de l'outil collaboratif de rédaction. +Créer un compte sur cocalc.com et sur overleaf (ou sharelatex) +Récupérer le template Latex qui sera utilisé. Il y a deux fichiers : +mi-parcours.tex et rapport.tex dans ESSAI_Latex_fr pour la version française +mi-report.tex et report.tex dans ESSAI_Latex_en pour la version anglaise +Sauvegarder systématiquement son travail dans une clé USB ou un DD externe et dans un cloud comme cocalc.com. + +2ème semaine : Rédiger le fichier introduction.tex, en prenant soin de préciser la problématique et les données à manipuler. Imaginer le fichier conclusion.tex qui donne un diagramme de Gantt du travail à faire. Durant ces deux premières semaines, il est indipensable de définir une ligne de la base de données et d'être capable de l'expliquer le plus clairement possible (taille, quanti, quali, observations, données temporelles et spatiales, variables à expliquer). + +4ème semaine : Ecrire les principaux algorithmes à utiliser. Remplir le fichier chapitre1.tex avec les algorithmes et les bonnes références. A ce stade, on est capable de dire quelles méthodes seront développées (ML, DL, classification supervisée ou pas, séries temporelles, données statiques, mémoire). + +6ème semaine : Donner un premier aperçu des outils à utiliser. Les librairies sur R ou sur Python doivent être bien citées dans Biblio.bib et dans le corps du document chapitre1.tex ou chapitre2.tex. Les chapitres soivent être équilibrés : le contexte général, la problématique, les définitions théoriques des mesures de comparaison ou de validation dans le premier chapitre. Les méthods, les algorithmes, les choix jusitifiés de telle approche en dépit d'une autre, l'optimisation des paramètres). + +7ème semaine : Avancement du travail. Chaque séance de travail doit être précédée par un envoi d'un email avec la dernière version du rapport de mi-parcours, dûment documenté. + +8ème semaine : Déposer le rapport de mi-parcours. Les références bibliographiques doivent être bien fournies. La méthodologie à suivre arrêtée. Exlpliquer les choix entrepris (par exemple Power BI versus SQlite, R versus Python, Dash versus Rshiny, GLM versus HMM). + +12ème semaine : Avancement dans la solution. Rédaction des fichiers chapitre2.tex et chapitre3.tex. Jury à fixer. Simulations, optimisation des paramètres, consolidation de la classification, validation de la prévision. Besoin à ce stade d'un mind map pour illustrer tous les choix. Ce mind map peut être réalisé par Freemind par exemple. Les diagrmmes peuvent être rendu avec draw.io. + +16ème semaine : Avancement dans la rédaction de tous les fichiers du rapport.tex (ou de report.tex) et finalisation de la solution (valider le modèle). + +18ème semaine : Prévoir une pré-soutenance et une rencontre avec l'encadrant entreprise. L'avis de ce dernier est indispensable pour l'autorisation de soutenance. + +20ème semaine : Dépôt du rapport final. Préparation de la soutenance. Introduire la base (une ligne de la base comprend...), expliquer le problème (classification, prévision, estimation de coût), proposer des méthodes (diagrammes, algos, justifier par la bibliographie le choix fait), présenter les résultats, revenir à la problématique métier (business is business), perspectives. Les slides ne doivent pas contenir de fautes de frappes ! + + + diff --git a/Doc/2023/Source_latex/abstract.tex b/Doc/2023/Source_latex/abstract.tex new file mode 100644 index 0000000000000000000000000000000000000000..4d0287fbcdb22ad64f13091933d6c18c02c85833 --- /dev/null +++ b/Doc/2023/Source_latex/abstract.tex @@ -0,0 +1,15 @@ +\begin{abstract} + +Ce travail s’inscrit dans le cadre du projet de fin d’études réalisé au sein de \studyDepartment en vue de l’obtention du diplôme national d’ingénieur à l’\ENSEA. L’objectif de ce projet consiste à mettre en place un algorithme de navigation (réseau de neurones, asservissement) contrôlant les mouvements du drone. Pour ce faire, un système de communication entre un drone et une station au sol (ordinateur) a été établi via la télémétrie. Le stage héritant de ce projet se consacre en premier lieu à la remise en place du système (étude de faisabilité, révision de plusieurs solutions déjà proposées, amélioration des algorithmes), et en deuxième lieu, à l'application de nouveaux algorithmes de navigation basés sur la vision (s'inspirant des travaux antérieurs menés au sein d'ETIS, notamment les réseaux de neurones bio-inspirés). Les réseaux de neurones sont mis en place grâce à un simulateur développé au sein du laboratoire : Promethe\footnote{Plusieurs orthographes existent (Prométhé, Prométhée, Prometheus). Tout le long de ce rapport, l'orthographe choisie sera : Promethe (pour être en accord avec la ligne de commande qui le lance)}.\\ + +\keywords{Quadricoptère, Télémétrie, Code C++, Simulateur de réseaux de neurones} + +\vspace{3cm} +\centerline{\bf Abstract} +\vspace{0.6cm} + +The present work is part of a graduation project carried out within the company \studyDepartment in order to obtain the national diploma of engineer at the \ENSEA. The objective of this project is to design and implement a navigation algorithm (neural network, control system) to control the movements of the drone. To achieve this, a communication system between a drone and a ground station (computer) has been established through telemetry. The internship inherited from this project is dedicated, first, to the reestablishment of the system (feasibility study, review of several previously proposed solutions, improvement of algorithms), and second, to the application of new vision-based navigation algorithms (inspired by previous work conducted at ETIS, particularly bio-inspired neural networks). The neural networks are implemented using a simulator developed within the laboratory: Promethe.\\ + +% les tests de performance +\keywordss{Quadcopter, Telemetry, C++ code, Neural network simulator} \\ +\end{abstract} diff --git a/Doc/2023/Source_latex/annexe1.tex b/Doc/2023/Source_latex/annexe1.tex new file mode 100644 index 0000000000000000000000000000000000000000..bfc4a16cad912afa1dacec4a7ae93ab16f70ffc0 --- /dev/null +++ b/Doc/2023/Source_latex/annexe1.tex @@ -0,0 +1,145 @@ +\section{Liens vers les travaux}\label{perso} + +- \href{https://drive.google.com/drive/folders/1MTbeTbgUf2R3DWKb0Chc3qIe7Ktpi9rV?usp=share_link}{Drive du stage} : \url{https://drive.google.com/drive/folders/1MTbeTbgUf2R3DWKb0Chc3qIe7Ktpi9rV?usp=share_link}\\ +- \href{https://git.cyu.fr/SteY}{Profil Gitlab} : \url{https://git.cyu.fr/SteY}\\ +- \href{https://git.u-cergy.fr/promethe2/}{Git de Promethe} : \url{https://git.u-cergy.fr/promethe2/}\\ +- \href{https://git.u-cergy.fr/gaussier/drone_flyMonitor2}{Git du projet fly\_monitor} : \url{https://git.u-cergy.fr/gaussier/drone_flyMonitor2}\\ + +\section{Carnet de bord}\label{carnet} + +\href{https://docs.google.com/document/d/1PIqHLmr64FR6evlNjffX48PBtibFR-ulgiVyqsiWQxc/edit?usp=share_link}{Carnet de bord} + +\begin{longtable}{|p{3cm}|p{7cm}|p{3cm}|p{3cm}|} +\hline +\textbf{Date} & \textbf{Description/résumé} & \textbf{Sources internes} & \textbf{Sources externes} \\ +\hline +11-14/05/2023 & Prise de connaissance sur le sujet & \href{https://drive.google.com/file/d/18k9mPwXEE1JNi3s2Aluh1J9ojP32tFh8/view?usp=share_link}{Ancien rapport} & \\ +\hline +15-17/05/2023 & Prise en main :\newline +- tutoriel Promethe + correction éventuelle sur le tuto pour la compréhension\newline +- documentation Pixhawk\newline +- compréhension du programme fly\_monitor +&\href{https://drive.google.com/file/d/1g2r-lvGenEoKtzI0qgBGYH3FHri3yTaN/view?usp=share_link}{Ancien rapport 2}, \href{https://drive.google.com/file/d/1gMfzwOsD_LT76CF7P9-Vi7CcJ-V1R6ys/view?usp=share_link}{Guide Promethe} & \href{$https://git.u-cergy.fr/promethe2/promethe2/-/blob/master/doc/tutoriaux/programmation/01_getting_started.md}{git de promethe}\newline +\href{https://docs.px4.io/main/en/$\newline\newline}{doc PX4}\newline +\href{https://github.com/pixhawk/Pixhawk-Standards}{pixhawk standard}\newline +\href{https://git.u-cergy.fr/gaussier/drone_flyMonitor2}{git du projet} +\\ +\hline +22-26/05/2023 & Correction de code pour lisibilité\newline +Test de chaque commande/message MAVLink +& & \href{https://mavlink.io/en/services/command.html}{protocole de commande mavlink}\newline +\href{https://mavlink.io/en/messages/common.html}{liste quasi-exhaustive des messages mavlink} +\\ +\hline +30/05/2023 - 02/06/2023 & Suite de la correction de code\newline +Prise en main de QGroundControl\newline +Prise de connaissance sur la partie hardware, soudure de la connexion Mavlink/convertisseur PWM/PPM +& & \href{https://docs.qgroundcontrol.com/master/en/index.html}{guide qgroundcontrol}\newline +\href{https://docs.px4.io/main/en/getting_started/}{guide PX4}\newline +\href{https://docs.px4.io/main/en/flight_controller/pixhawk4.html}{guide PX4 sur la pixhawk 4}\newline +\href{https://github.com/PX4/PX4-Autopilot}{github PX4}\newline +\href{https://docs.px4.io/main/en/flight_controller/pixhawk4.html}{hardware pixhawk 4}\newline +\href{http://docs.px4.io/main/en/development/development.html}{guide développeur PX4} +\\ +\hline +05-09/06/2023 & Suite compréhension du code commande MAVLink\newline +Calibration de la radio-commande sous QGroundControl\newline +Recupération des doc Promethe +& & \\ +\hline +12-16/06/2023 & Modification code fly\_monitor : \newline +- ajout significations heartbeat\newline +- affichage fréquences d’envoi des messages MAVLink\newline +Recalibrage et Réaffectation des inputs de la manette DX6 (seulement les deux joysticks : throttle, yaw, pitch, roll)\newline +Affichage du flux vidéo à travers Mi600s\newline +Achat adaptateur batterie + câbles adaptateur + hélices +& & \href{https://www.hexadrone.fr/fr/cordons-de-charge/240-platine-equilibrage-2s-6s-jst-xh.html}{adaptateur de prise d’équilibrage} +\\ +\hline +19-23/06/2023 & Lecture et Compréhension des algorithmes de reconnaissance visuel et d’intégration de chemin & \href{https://drive.google.com/drive/folders/1oJWNGsQEofOZTNlUoiH4gz9z4c4Yz_Tt?usp=drive_link}{Anciens rapports} \newline \href{https://drive.google.com/open?id=1bBFK7z_3NF5CxaAF-E2m_0Z5n91CIHZ_}{Papiers scientifiques}& \\ +\hline +26-30/06/2023 & Vérification du second drone Piwhaxk 4 mini :\newline +- communication mavlink avec fréquence d’envoi\newline +- établissement radio\newline +- calibration des capteurs\newline +- fonctionnements des moteurs\newline +- soudage de la carte puissance\newline\newline +Décollage des drones, test par radio commande en mode “manual†et “hold†+ & & \\ +\hline +03-07/07/2023 & recevoir signal video du deuxième drone (test de tous les récepteurs)\newline +réécriture et correction du code pour le calcul de la fréquence des threads et des messages MAVLink +& & \\ +\hline +10-21/07/2023 & résoudre le problème des modes de vol empêchant le fonctionnement des scénarios (décollage maintien, atterrissage sans radio commande)\newline +restructuration du code (déplacement des prints vers un endroit plus approprié, ajout de command\_int, configuration de command\_setMode selon le mode choisis)\newline +Finir les calculs de fréquences/délais des threads/messagesMAVLinks +& & \\ +\hline +24-28/07/2023 & Accumuler des dataset pour l’entraînement\newline\newline +! 20/07/2023 destruction partielle du drone (radio perdue, 2 bras cassés, 2 moteurs HS, plusieurs vis détachés, cou+support du module GPS perdus, toutes les hélices détruites, coque du module télémétrie détruite) et dataset non recueillies-> 27/07/2023 réparation du drone terminée (1 bras recollé, 1 bras remplacé, 2 moteurs remplacés, nouveau support avec un cou plus court pour le GPS, ajout de protection pour les hélices, nouvelles hélices, réarrangement des câbles, ajout de scratch pour les composants retirables, radio retrouvée, module télémétrie recouvert d’isolant) +& & \\ +\hline +31/07/2023 - 15/08/2023 & réimprimer les pieds du drone (précédentes sont cassées)\newline +Simuler le drone avec AirSim et appliquer le réseau de neurones +& & \href{https://github.com/Microsoft/AirSim}{AirSim}\\ +\hline +16-28/08/2023 & Abandon de AirSim\newline\newline +asservissement visuel avec flot optique (promethe + mémoire partagées) + & & \\ +\hline +29-31/08/2023 - 01/09/2023 & test vol du drone avec restriction des mouvements (offboard + manual\_control) & \href{https://drive.google.com/file/d/1I29nPfQj2fScquxxie4jEqhl5L4GDRPp/view?usp=drive_link}{Image} & \\ +\hline +4-8/09/2023 & manual\_control est la solution adoptée, elle sera implémentée dans le fly\_monitor\newline\newline +montage des pieds pour le drone n°2\newline +asservissement compas, asservissement hauteur (asservissement incrémental)\newline\newline +étude de l’asservissement avec tracé de courbes des valeurs intéressante\newline\newline +mettre à jour / ajouter des readmes\newline\newline +test vol du drone sans support (restriction avec un fil résistant de qq mètres)\newline\newline +corriger les usleep qui assurent la périodes des threads, retirer les les délais à la lecture du port série (VTIME et VMIN) + & & \href{http://unixwiz.net/techtips/termios-vmin-vtime.html}{Termios VMIN VTIME} \\ +\hline +11-15/09/2023 & corriger readmes\newline\newline +remise au propre des scripts promethe et du programme fly\_monitor\newline\newline +test asservissement visuel\newline\newline +investigation probleme px4flow du drone n°1 + & & \\ +\hline +18-22/09/2023 & découper le script drone\_flot pour avoir plus de scripts en parallèles et donc meilleurs pour la flexibilité\newline\newline +developper un nouveau script en parallèle du flot : application de PerAc avec cellules de vue et commandes joystick\newline\newline +test du drone en vol pour acquisition d’images ainsi que divers info de capteurs (gps, imu, etc…)\newline\newline +recommander PX4Flow (car i2c du précédent non fonctionnelle) + batterie\newline\newline +définir date soutenance +& & \\ +\hline +25-29/09/2023 & Début rapport + diagramme de gantt\newline\newline +capteur de distance ultrason non fonctionnel en herbes humide -> retest du drone en vol avec nouvelles données d’altitude (baromètre avec/sans accelero)\newline\newline +Nouveau script apprentissage cellules de vue + & & \\ +\hline +02-06/10/2023 & Suite rédaction brouillon rapport\newline\newline +Remplacement batterie morte. 3 batterie de Holybro 6000mAh 3S mortes (chacune a une cellule morte):\newline +- n°1 -> coupée, cellule 3 morte (bleu/rouge)\newline +- n°2 -> cellule 1 morte (masse/noir)\newline +- n°3 -> cellule 2 morte (jaune/bleu), baisse constante de sa tension +& & \\ +\hline +09-13/10/2023 & calcul angle d’ouverture de la caméra -> adaptation test en vol du drone avec reconnaissance d’objet -> bosquet trop loin trop petit, peu de variation -> test suivi d’un objet plus proche (exemple, humain)\newline\newline +Mise à jour des scripts :\newline +- view\_cells : ajout fft pour la différence de gaussiennes, ajout de la boussole (compass), ajout de l’apprentissage de sortie motrice\newline\newline +Réimprimer protection hélices\newline\newline +Recommander batteries\newline\newline +Convenir salle soutenance +& & \\ +\hline +16-20/10/2023 & Fin étude paramétrique (fine tuning) du réseaux de neurone des cellules de vue\newline\newline +Ajout initialisation pour les tests (angle de départ, altitude de départ) pour fluidifier tests\newline\newline +nouvelle batterie commandée (8000 mAh) -> problème d'encombrement\newline\newline +Fin du rapport +& & \\ +\hline +23-27/10/2023 & Soutenance et rendu du rapport \newline +Fin du stage : remise en ordre pour le/les successeur& & \\ +\hline + +\end{longtable} diff --git a/Doc/2023/Source_latex/annexe2.tex b/Doc/2023/Source_latex/annexe2.tex new file mode 100644 index 0000000000000000000000000000000000000000..b66ae95fab2bb743da5b6cf8491ac0c7a0253cee --- /dev/null +++ b/Doc/2023/Source_latex/annexe2.tex @@ -0,0 +1,5 @@ +Documentation des mesages MAVLink : \url{https://mavlink.io/en/messages/common.html} + +Guide QGroundControl : \url{https://docs.qgroundcontrol.com/master/en/index.html} + +Guide PX4 : \url{https://docs.px4.io/main/en/getting_started/} \ No newline at end of file diff --git a/Doc/2023/Source_latex/annexe3.tex b/Doc/2023/Source_latex/annexe3.tex new file mode 100644 index 0000000000000000000000000000000000000000..518d07d5cc72d068f7a4dcacb6e6c720cae7fa17 --- /dev/null +++ b/Doc/2023/Source_latex/annexe3.tex @@ -0,0 +1,15 @@ +Cet angle n’étant pas forcément connue, on propose le protocole suivant pour le retrouver simplement (cela ne constitue pas l’objet d’étude le plus précis/important, on s’autorise donc une marge d’erreur de quelque degrés) : + +\begin{itemize} + \item Placer 2 objets devant la caméra. Il doivent être sur les deux extrémités gauche/droite de sorte à ce qu’ils soient à la limite de visibilité sur la vidéo. + \item Placer en dessous une feuille, puis tracer à la règle 2 droites passant par les extrémités et le centre de la caméra. + \item A l’aide d’un équerre graduée, tracer un segment entre les 2 droites perpendiculaire à l’une des deux. + \item Mesurer les côtés du triangle rectangle produit. + \item Calculer l’angle d’ouverture sachant qu’il est complémentaire avec un des angles du triangle rectangle +\end{itemize} + +\begin{figure}[h] +\centering +\includegraphics[width=0.8\textwidth]{images/schema/draw_angle.png} +\caption[Exemple de calcul de l'angle d'ouverture]{Example d’application, un triangle rectangle de taille 10*11 est formé, son angle beta vaut donc tan(11/10). Cet angle beta est le complémentaire de l’angle d’ouverture, ainsi on trouve 180° - beta = 132°}\label{fig:draw_angle}% +\end{figure} diff --git a/Doc/2023/Source_latex/chapitre1.tex b/Doc/2023/Source_latex/chapitre1.tex new file mode 100644 index 0000000000000000000000000000000000000000..b180d20a83d95b033ee5d3d5a24a1036652d75e7 --- /dev/null +++ b/Doc/2023/Source_latex/chapitre1.tex @@ -0,0 +1,146 @@ +%% @Author: Ines Abdeljaoued Tej +% @Date: 2018-06 +%% @Class: PFE de l'ESSAI - Universite de Carthage, Tunisie. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SECTION % +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Présentation du laboratoire ETIS (Équipes Traitement de l'Information et Systèmes)} +\label{chap:sectionone} + +\acrshort{ETIS} est un laboratoire de recherche conjoint (\acrshort{UMR8051}) dont l'histoire remonte à sa création en 1980. Il est rattaché à trois institutions académiques de renom : l'Université de Cergy-Paris (CYU), l'École Nationale Supérieure de l'Électronique et de ses Applications (\acrshort{ENSEA}), et le Centre National de la Recherche Scientifique (CNRS-INS2I). Avec un effectif total de 158 membres, il se compose de 62 chercheurs permanents, 73 doctorants et post-doctorants, ainsi que 19 chercheurs associés. Actuellement, le laboratoire est sous la direction de Lola Canamero. + +\subsection{Campus} + +ETIS s'étend sur deux campus distincts, chacun ayant ses domaines d'expertise spécifiques : le campus ENSEA (groupes ICI, CELL et MIDI) et le campus Saint-Martin (groupes NEURO et MIDI). +%And your chapter one goes here \cite{web001,Nom2012}. \\ +% tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse \cite{Bird02nltk:the} + + +%\begin{table}\begin{center} +%\begin{tabular}{c|c} +%Entrée & Sortie \\ \hline +%A & B \\ +%C & D +%\end{tabular} +%\caption{Test Table}\end{center} +%\end{table} + + +\subsection{Axes de recherche} + + %This is a second subsection\cite{gen1972}, \cite{schaeffer99}. ~\\ +ETIS a défini plusieurs domaines stratégiques de recherche qui guident ses activités scindés en 4 équipes: + + \begin{description}\addtolength{\itemsep}{-0.35\baselineskip}% + \item[\textbullet~\bfseries CELL] \hfill \\% + L'équipe des Systèmes Intelligents Embarqués se consacre aux communications flexibles et éco-responsables, à l'Internet des Objets (IoT), aux réseaux RF sur puce, au traitement de données à faible consommation, ainsi qu'aux systèmes embarqués intelligents et fiables. Forte de cette expertise, elle travaille sur la modélisation et la conception de systèmes embarqués reconfigurables, communicants, fiables et intelligents.~\\% + %{\textbf{Focus topics:~}\emph{Topic one, topic two, topic three, ...}}% + % + \item[\textbullet~\bfseries MIDI] \hfill \\% + L’équipe Multimedia Indexing and Data Integration se spécialise dans la gestion et l'analyse de données massives, se penchant sur l'intégration, l'exploration, l'analyse et la recherche de grandes quantités de données variées. Cela inclut des données structurées, semi-structurées, des données spatio-temporelles, du texte, des images, des vidéos et des modèles 3D. Dans l’utilisation de modèles d'apprentissage automatique, ils mettent particulièrement l'accent sur l'explicabilité des algorithmes. Leurs applications couvrent divers domaines, tels que l'analyse de contenu des médias sociaux, l'intégration et l'analyse de données sémantiques sur le web, la détection de motifs dans les données multimodales et la protection de la vie privée des données, entre autres.~\\% + % + \item[\textbullet~\bfseries NEURO] \hfill \\% + L’équipe Neurocybernétique se concentre sur le développement de robots intelligents capables d'interagir de manière autonome avec leur environnement et les êtres humains. En collaboration avec des psychologues et des neuroscientifiques, leurs recherches sont organisées autour de cinq thèmes : la modélisation du cerveau, le contrôle autonome, la robotique cognitive, les soins de santé assistés par des robots, et la bio-inspiration pour la robotique et l'intelligence artificielle. Cette approche ouvre la voie à diverses applications, notamment des robots socialement interactifs et des systèmes de navigation intelligents.~\\ + % + \item[\textbullet~\bfseries ICI] \hfill \\% + L'équipe Information, Communication and Imaging se concentre sur la recherche en communications sans fil, en théorie de l'information, en traitement du signal et en imagerie. Ils se penchent principalement sur des domaines d'application tels que la 5G/6G, l'Internet des objets (IoT), l'apprentissage automatique pour les communications, la sécurité liée au codage et à la théorie de l'information, les réseaux et l'informatique en périphérie, ainsi que l'imagerie et la modélisation.~\\ + % + \end{description} + + %Also bullets such as:% + %\begin{itemize}\addtolength{\itemsep}{-0.35\baselineskip}% + %\item One% + %\item Two% + %\item Three% + %\item Four% + %\item \ldots% + %\end{itemize}% + +\subsection{Publications} + +Le laboratoire a contribué de manière significative à la littérature scientifique, avec un total de 154 publications à son actif. Ces publications comprennent 51 articles publiés dans des revues scientifiques, 61 articles présentés lors de conférences, et 42 livres. + +\subsection{Résumé} + +ETIS est un laboratoire de recherche interdisciplinaire qui couvre un large éventail de domaines, allant des communications sans fil à la robotique sociale, en passant par les sciences des données. Il joue un rôle clé dans le développement de technologies innovantes, contribuant à l'avancement de la recherche et de la technologie. Un exemple récent de cette contribution est la participation active de l’équipe Neurocybernétique à un événement majeur à l'Assemblée Nationale. Cet événement a permis de mettre en lumière les recherches en robotique et la bio-inspiration, en abordant les défis sociétaux et les Objectifs de Développement Durable (ODD).\ref{fig:ETIS_AN} + +\begin{figure}% +\center% +\includegraphics[width=0.7\textwidth]{images/ETIS_AN.jpg} +\caption[ETIS à l’Assemblée nationale]{Un des 4 ateliers présenté à l'Assemblée Nationale mettant en avant Ferdinand, un robot qui apprend la fonction des mots en interaction avec les +humains.}\label{fig:ETIS_AN}% +\end{figure} + +\section{Environnement de travail} + +Pendant mon stage au sein de l'équipe Neurocybernétique sur le campus Saint-Martin, je travaille sous la supervision de mon tuteur, Philippe Gaussier. Une partie essentielle de mon stage consiste à développer mon autonomie pour comprendre le système et les logiciels que nous utilisons. Bien que non directement impliqués dans mon projet, des collègues sont prêts à offrir leur aide pour expliquer des éléments tels que le simulateur de réseau de neurones, qui peut parfois être difficile à appréhender. + +\begin{figure}% +\center% +\includegraphics[width=0.7\textwidth]{images/hierarchie.png} +\caption[Schéma de la hiérarchie]{Schéma sur la structure hiérarchique de l'équipe}\label{fig:hierarchie}% +\end{figure} + +La majeure partie du travail s'effectue sur un ordinateur portable sous Linux Ubuntu 22.04, qui sert également de station au sol pour la gestion du réseau de neurones et des communications avec le drone, la caméra et le joystick. + +%image setup +\begin{figure}% +\center% +\includegraphics[width=0.7\textwidth]{images/setup.jpg} +\caption[Aperçu du système complet]{Aperçu du bureau avec le système au complet}\label{fig:setup}% +\end{figure} + +Au laboratoire, divers matériels et composants de rechange sont disponibles pour la maintenance et la mise à jour du drone.\ref{fig:matos} + +%image fer à souder + image boite batterie +\begin{figure} + \centering + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/atelier.jpg} + \end{minipage} + \hfill + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/box.jpg} + \end{minipage} + \caption[Aperçu du matériel à disposition]{Aperçu du matériel à disposition. A gauche, le fer à souder, à droite, les batteries et les composants de rechanges}\label{fig:matos} +\end{figure} + +La plupart des tests de vol sont réalisés sur une zone ouverte du campus. Pour prévenir tout dommage en cas de perte de contrôle, un fil résistant est attaché à l'une des pattes du drone. Des protections sont aussi installées sur les moteurs pour protéger les hélices en cas de chute.\ref{fig:protection} + +%image fil à la pate + images avec protection +\begin{figure} + \centering + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/drone/fil_a_la_patte.jpg} + \end{minipage} + \hfill + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/drone/protection_helice.jpg} + \end{minipage} + \caption[Zoom sur les protections]{Zoom sur les protections. A gauche, le fil à la patte, à droite, les protections pour les hélices}\label{fig:protection} +\end{figure} + +Des tests en intérieur ont également été effectués lorsque les conditions météorologiques nous sont défavorables (pluie, bourrasques de vent). Pour ajouter une couche de sécurité, une plateforme mobile a été conçue pour restreindre l'ascension du drone, autorisant uniquement des déplacements latéraux. + +\begin{figure}% +\center% +\includegraphics[width=0.65\textwidth]{images/plateforme.png} +\caption{Aperçu de la plateforme en bois}\label{fig:plateforme}% +\end{figure} + +\section{Cadre de travail} + +Pendant la durée du stage, j'utilise activement GitLab pour effectuer des mises à jour régulières. Il y a deux dépôts distincts : l'un est dédié au programme "fly\_monitor" et l'autre est destiné à Promethe, le simulateur de réseaux de neurones. En parallèle, je tiens un carnet de bord où je consigne chaque semaine les tâches réalisées. Cela me permet de garder une trace écrite de la progression et de mieux planifier la suite du travail (le carnet de bord se trouve en annexe pour plus de détails \ref{carnet}). De plus, j'utilise également Google Drive pour stocker des fichiers de données importants liés au stage, notamment des captures d'écran, des résultats et des prises de notes \ref{perso}. + +\begin{figure}% +\center% +\includegraphics[width=0.7\textwidth]{images/gantt.pdf} +\caption[Diagramme de Gantt]{Diagramme de Gantt établi début octobre 2023. Le début est consacré à la remise en fonctionnement du système (communications et contrôle du drone) côté programmation, puis côté matériel. Les algorithmes utilisant réellement les réseaux de neurones ont débuté sur les 2 derniers mois.}\label{fig:gantt}% +\end{figure} + +%\begin{equation} \label{eq:1} +%\sum_{i=0}^{\infty} a_i x^i +%\end{equation} + +%The equation \ref{eq:1} is a typical power series. \ No newline at end of file diff --git a/Doc/2023/Source_latex/chapitre2.tex b/Doc/2023/Source_latex/chapitre2.tex new file mode 100644 index 0000000000000000000000000000000000000000..6ae70b9ad1fc12725239b0de9278b9fe10b42837 --- /dev/null +++ b/Doc/2023/Source_latex/chapitre2.tex @@ -0,0 +1,176 @@ +%% @Author: Ines Abdeljaoued Tej +% @Date: 2018-06 +%% @Class: Graduation Project, ESSAI - Carthage University, Tunisia. + +\section{Hardware} + +Le système proposé est constitué de composants expressément compatibles avec des codes open source (MAVSDK, PX4, Pixhawk…). L’avantage est de pouvoir profiter de la connaissance des mécanismes d’un système déjà fonctionnel (comment contrôler le drone avec les bibliothèques proposées) afin de pouvoir reproduire à notre tour un système adapté à nos besoins. C'est pourquoi, le choix a été porté sur un autopilote Pixhawk couplé au firmware opensource PX4. Les composants sont les suivants : \\ + +\begin{itemize} +\item \textbf{\acrshort{Autopilote} Pixhawk 4} : Il s’agit du cœur du drone. Il est capable de générer des signaux de commandes aux ESC (voir plus bas) pour contrôler les moteurs. Il communique à travers le protocole MAVLink (détaillé plus tard dans le rapport). Doté de plusieurs capteurs, il assure la stabilité du vol jusqu'à une certaine mesure. Un autre drone employé est équipé d'une Pixhawk 4 mini mais le fonctionnement reste identique à notre échelle.\ref{fig:pixhawk4} Les capteurs intégrés sont les suivants : +\begin{figure}[ht] +\centering +\includegraphics[width=0.15\textwidth]{images/drone/pixhawk4.jpg} +\caption[Autopilote Pixhawk 4]{Autopilote Pixhawk 4}\label{fig:pixhawk4}% +\end{figure} + +\begin{itemize} +\item \textbf{\acrshort{IMU} (Inertial Measurement Unit)} : Il s’agit d’un circuit électronique contenant 3 gyroscopes et 3 accéléromètres. L’accéléromètre mesure les accélérations rectilignes et le gyroscope mesure les vitesses angulaires. La combinaison de ces mesures permet de connaître la position et l’angle du drone par intégration des mesures.\ref{fig:imu} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/imu.jpg} +\caption[Exemple d’IMU]{Exemple d’IMU (modèle ICM-20689)}\label{fig:imu}% +\end{figure} + +\item \textbf{Magnétomètre} : Il s’agit d’une boussole électronique indiquant la direction du champ magnétique terrestre. Fournissant une orientation absolue par rapport au gyroscopes (qui, eux, ne font que mesurer la variation), il est associé à l’IMU dans le maintien de la stabilité par l’autopilote.\ref{fig:magnetometer} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/magnetometer.jpg} +\caption[Exemple de magnétomètre]{Exemple de magnétomètre (modèle IST8310)}\label{fig:magnetometer}% +\end{figure} + +\item \textbf{Baromètre} : Il s’agit d’un capteur mesurant la pression atmosphérique à une altitude donnée. En utilisant les données de pression atmosphérique recueillies par le baromètre, on peut calculer l'altitude du drone par rapport à un point de référence fixe note bas de page : due aux variations atmosphérique dans le temps, le point de référence n’est pas réellement fixe.cependant pour nos expérience de durée inférieur à 15 min., on peut supposer que le point de référence est fixe (voir partie asservissement de l’altitude).\ref{fig:barometer} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/barometer.PNG} +\caption[Exemple de baromètre]{Exemple de baromètre (modèle MS5611)}\label{fig:barometer}% +\end{figure} + +\end{itemize} + +\item \textbf{Module GPS (Global Positioning System)} : Il s’agit d’un système de navigation par satellite qui permet de déterminer avec précision la position géographique du drone, il permet au drone de connaître sa position en termes de latitude, longitude et altitude.\ref{fig:gps} +\begin{figure}[ht] +\centering +\includegraphics[width=0.1\textwidth]{images/drone/gps.png} +\caption[Le module GPS]{Le module GPS pour Pixhawk 4}\label{fig:gps}% +\end{figure} + +\item \textbf{Module de télémétrie} : Il s’agit d’un système de communication sans fil. Ce système permet d'établir une liaison de données bidirectionnelle entre la carte de contrôle de vol (comme la Pixhawk 4) et une station terrestre (comme un ordinateur portable) à des fins de contrôle à distance, de surveillance et de transfert de données.\ref{fig:telemetry} +\begin{figure}[ht] +\centering +\includegraphics[width=0.4\textwidth]{images/drone/telemetry.png} +\caption[Les modules de télémétrie]{Les modules de télémétrie 433 MHz Holybro}\label{fig:telemetry}% +\end{figure} + +\item \textbf{Caméra} : Essentielle pour le réseau de neurones, la caméra est directement embarquée sur l’avant du drone. Il s’agit plus spécifiquement d’une caméra FPV (First Person View) conçue spécialement pour les vols de drone compétitifs, elle est donc adaptée pour les applications temps réel nécessitant une faible latence. Elle est capable de produire 30 images par seconde.\ref{fig:camera} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/camera.png} +\caption[La caméra Foxeer]{Caméra Foxeer pour drone}\label{fig:camera}% +\end{figure} + +\item \textbf{Émetteur vidéo} : Il transmet le flux de vidéo de la caméra via un autre canal que le module de télémétrie.\ref{fig:transmitter} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/transmitter.png} +\caption[L'émetteur vidéo]{Emetteur vidéo 5.8GHz Mi600s}\label{fig:transmitter}% +\end{figure} + +\item \textbf{Récepteur vidéo} : Il reçoit le flux vidéo émis par l’émetteur en choisissant le bon canal à lire. Ce flux peut ensuite être affiché et traité par l’ordinateur\ref{fig:receiver} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/receiver.png} +\caption[Le récepteur vidéo]{Récepteur vidéo 8.5GHz Furious FPV DOCK-KING}\label{fig:receiver}% +\end{figure} + +\item \textbf{\acrshort{ESC} (Electronic Speed Controller)} : Il s’agit d’un composant électronique qui permet le contrôle de la vitesse et de la direction des moteurs électriques à partir de signaux de commande PWM (modulation de largeur d’impulsion). Il intègre des mécanismes de protection, tels que la surveillance de la tension de la batterie, afin de prévenir les dommages au moteur et à la batterie.\ref{fig:esc} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/esc.png} +\caption[ESC Air Gear]{ESC Air Gear}\label{fig:esc}% +\end{figure} + +\item \textbf{Moteur brushless} : Offrant plus d'avantages en termes d'efficacité, de durabilité et de performances par rapport aux moteurs classiques à balais, le moteur brushless est adapté aux applications nécessitant un contrôle précis de la vitesse, comme les drones. En raison de sa complexité, il nécessite un contrôleur électronique (ESC) pour fonctionner correctement.\ref{fig:motor} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/motor.png} +\caption[Le moteur brushless]{Moteur brushless Air Gear équipé d’une hélice}\label{fig:motor}% +\end{figure} + +\item \textbf{Batteries LiPo (Lithium-Polymère)} : Il s’agit de la principale source d’alimentation de notre système. Elle fournit une tension de sortie relativement stable pendant une grande partie de sa décharge, ce qui permet de maintenir une performance constante pendant le vol ou la conduite. En contrepartie, elle nécessite une manipulation et un stockage appropriés pour éviter les risques de surcharge, de décharge excessive (il faut absolument utiliser un chargeur approprié).\ref{fig:battery} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/battery.png} +\caption[Une batterie LiPo]{Batterie LiPo 11.1V 5000mAh}\label{fig:battery}% +\end{figure} + +\item \textbf{Power module (module d'alimentation)} : Il s’agit d’un composant utilisé dans les systèmes de contrôle de vol, en particulier dans le contexte des drones. Son rôle principal est de surveiller et de fournir des informations essentielles concernant l'alimentation électrique du système. Il sert essentiellement de régulateur de tension pour l'autopilote et autres composant ne pouvant pas supporter une connexion directe avec la batterie.\ref{fig:power} +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/drone/power.jpg} +\caption[Le module d’alimentation]{Module d’alimentation PM06D}\label{fig:power}% +\end{figure} + +\item \textbf{Joystick} : Il nous permet de disposer d'une interface intuitive pour le contrôle du drone. Il sert également à transmettre l'intention de l'utilisateur au réseau de neurones, qui l'interprète comme des données en entrée.\ref{fig:joystick} +\begin{figure}[ht] +\centering +\includegraphics[width=0.15\textwidth]{images/drone/joystick.png} +\caption[Le joystick]{Joystick Extreme 3D}\label{fig:joystick}% +\end{figure} + +\end{itemize} + +\subsection{Composant supplémentaire} + +Un composant supplémentaire était également employé durant le stage pour la mesure de l'altitude. Il s'agit du couple caméra flot optique / capteur de distance ultrason. Le capteur ultrason était utilisé dans nos algorithmes afin de mesurer l'altitude qui était plus précise que le baromètre jusqu'à une limite de 3 mètres, tandis que la caméra servait à l'autopilote comme un paramètre supplémentaire aidant à la stabilisation du drone (en plus de l'IMU). Cependant il a été abandonné au profit du baromètre car sa capacité à jauger l'altitude est perturbée en cas de sol humide (notamment au dessus de l'herbes humides qui absorbent les ultrasons). Dans le future (malheureusement, au delà de ce stage), il pourrait être réemployé de manière à fonctionner en tandem avec les autres mesures d'altitude de manière intelligente.\ref{fig:px4flow} +\begin{figure}[ht] +\centering +\includegraphics[width=0.10\textwidth]{images/drone/px4flow.jpg} +\caption[Le couple caméra flot optique / capteur de distance ultrason]{couple caméra flot optique / capteur de distance ultrason PX4Flow}\label{fig:px4flow}% +\end{figure} + +\subsection{Résumé} + +Voici un schéma synoptique du système où se base l'essentiel du stage : \ref{fig:synoptic} +\begin{figure}[ht] +\centering +\includegraphics[width=1.0\textwidth]{images/schema/synoptic.png} +\caption[Schéma simplifié du système]{Schéma simplifié du système. Le drone embarquant une caméra envoie le flux de vidéo à travers un émetteur, le PC reçoit grâce à un récepteur l’image capturée et la traite en entrée du réseau de neurone. Le drone est également équipé d’un autopilote qui envoie toute les informations de capteurs au réseau de neurone via télémétrie, le chemin inverse est aussi réalisé pour l’envoi de la commande motrice (sortie du réseau de neurones) à l'autopilote. Le PC reçoit des informations du joystick pour un contrôle direct du drone.}\label{fig:synoptic}% +\end{figure} + +\section{Software} + +L'utilisation de cartes de contrôle de vol et de firmwares avancés joue un rôle essentiel dans le domaine des drones et des véhicules aériens sans pilote (\acrshort{UAV}). Comme mentionné précédemment, nos deux composants clés qui permettent un contrôle de vol autonome, précis et fiable sont la carte Pixhawk et le firmware PX4. + +\subsection{Carte Pixhawk} + +La carte Pixhawk est une carte de contrôle de vol largement utilisée dans l'industrie des drones. Elle est conçue pour offrir une plateforme de contrôle de vol flexible et puissante. +La carte Pixhawk est fabriquée par Holybro en collaboration avec l'équipe PX4. Elle est devenue une norme dans l'industrie grâce à sa robustesse, sa fiabilité et ses fonctionnalités avancées. +La carte est dotée d'un ensemble complet de capteurs, notamment un GPS, une boussole, un baromètre, un accéléromètre, un gyroscope, etc. Elle est également capable de générer des commandes PWM pour les ESC. + +\begin{figure}[ht] +\centering +\includegraphics[width=1.0\textwidth]{images/schema/roll_pitch_yaw.png} +\caption[Orientations des véhicules]{Il est important de bien placer l'autopilote dans le bon sens de sorte à ne pas confondre les axes lors de la commande du drone. La flèche indique l'avant.}\label{fig:roll_pitch_yaw}% +\end{figure} + +\subsection{Firmware PX4} + +Le \acrshort{firmware} \acrshort{PX4} est un logiciel open source développé pour contrôler la carte Pixhawk et d'autres plates-formes de contrôle de vol. Il offre un système de contrôle de vol robuste et évolutif pour une variété d'aéronefs, y compris les drones multirotors, les avions, les hélicoptères, etc. + +PX4 est reconnu pour sa stabilité et sa flexibilité. Il est constamment mis à jour par une communauté de développeurs dévoués, ce qui lui permet de rester à la pointe de la technologie. + +Le firmware PX4 prend en charge une gamme étendue de fonctionnalités, notamment la planification de mission, la navigation autonome, la gestion des capteurs, le retour à la maison automatique, le vol en formation et bien d'autres. + +Il offre une modularité exceptionnelle, permettant aux utilisateurs de personnaliser le comportement de leur drone en fonction des besoins spécifiques de l'application. Cette caractéristique est particulièrement utile pour la recherche et le développement. + +\subsection{QGroundControl} + +QGroundControl est une interface intuitive pour le contrôle de vol. Elle joue un rôle essentiel dans la gestion, la configuration et la surveillance des drones équipés de la carte Pixhawk et du firmware PX4. Cette interface utilisateur intuitive permet aux opérateurs de drones de communiquer avec leur système UAV de manière transparente. Les fonctionnalités clés de QGroundControl comprennent la planification de mission, la surveillance en temps réel de l'état de l'aéronef, la télémétrie, la configuration du comportement du drone et bien plus encore. + +Dans notre cas, \acrshort{QGC} est essentiellement utilisé pour la calibration des capteurs (accéléromètres, gyroscopes) de l'autopilote, ainsi que pour mettre à jour le firmware. Cela permet également d'observer ce qu'est le fonctionnement habituel (en tant de consommateur) du drone afin d'établir une référence par rapport à notre code (voir \ref{chap:communication}). + +\subsection{MAVSDK} + +\acrshort{MAVSDK} (MAVLink Software Development Kit) est un ensemble de bibliothèques logicielles open source conçu pour faciliter le développement d'applications avancées de contrôle de drones basées sur le protocole MAVLink, qui est utilisé par Pixhawk et le firmware PX4. MAVSDK permet aux développeurs de créer des applications autonomes et des outils de contrôle de drones personnalisés en utilisant une variété de langages de programmation, dont C++, Python et d'autres. Les fonctionnalités de MAVSDK incluent un accès simple aux données de télémétrie en temps réel, la planification de mission, la configuration des paramètres du drone, le contrôle de vol manuel, la gestion des waypoints et bien d'autres. + +Cela constitue notre principale référence pour la programmation de notre drone. Avec les structures du code déjà bien établis, ainsi que la bonne procédure à suivre pour la commande du drone, notre programme bas niveau "fly\_monito" s'inspire de MAVSDK et personnalise le comportement du drone pour notre application. + +\subsection{MAVLink} + +Protocole très populaire dans la communication avec drone, \acrshort{MAVLink} occupe le cœur du programme fly\_monitor. + +La documentation de \href{https://mavlink.io/en/messages/common.html}{MAVLink} nous donne tout le jeu de messages MAVLink les plus communs, elle contient trois majeures parties : les enum qui nous permet de rendre le code plus explicite et servent de documentation, les commandes (précédé d'un préfixe : MAV\_CMD\_ dans le code C++) qui concernent principalement les messages envoyés par la station au sol vers l’autopilote afin de contrôler le drone, les messages (précédé d’un préfixe : MAVLINK\_MSG\_ID\_ dans le code C++) qui concernent toutes les informations partagées par l’autopilote. +Note : les commandes ainsi que les messages sont associés à un identifiant mais sont séparés dans la numérotation, ils peuvent donc avoir les mêmes identifiants (pour aider à différencier, la documentation ajoute un croisillon pour les MSG\_ID). + +Une bibliothèque en C++ est fournie et permet essentiellement le décodage et l’encodage d’un message diff --git a/Doc/2023/Source_latex/chapitre3.tex b/Doc/2023/Source_latex/chapitre3.tex new file mode 100644 index 0000000000000000000000000000000000000000..ca31b7fd289a7eabecc222b2e556da0da2444ae1 --- /dev/null +++ b/Doc/2023/Source_latex/chapitre3.tex @@ -0,0 +1,194 @@ +%% @Author: Ines Abdeljaoued Tej +% @Date: 2018-06 +%% @Class: Graduation Project, ESSAI - Carthage University, Tunisia. + +\section{Cahier des charges} + +Bien que le projet \acrshort{Fly Monitor} soit bâti sur système fonctionnel hérité des travaux de mes prédécesseurs, un cahier des charges doit être établi. Il s'agit d'un projet en constante évolution et les composant qui semblaient convenables au départ peuvent nécessiter d'un remplacement. Les exigences sont les suivantes : + +\begin{itemize} + \item Drone quadri-coptère : 4 moteurs brushless contrôlés par un autopilote. + \item Gestion parallèle : Station au sol (ordinateur portable) capable de gérer les communications (programme bas niveau fly\_monitor) et la simulation du réseau de neurones (script haut niveau sur Promethe). + \item Fréquence de traitement (comprenant toute la chaîne, de la réception des informations à l'envoi des commandes motrices) minimale : 7 Hz. Le meilleur temps de réaction d'un humain tourne autour des 150 ms, une fréquence de 7Hz laisse donc assez de temps pour obtenir une performance proche d'un humain. + \item Latence maximale (comprenant la télémétrie à la réception à la station au sol) : 50 ms. Sous un noyau Linux temps réel, les performances ne sont jamais meilleurs que l'ordre de 1 ms. Dans notre cas sur Ubuntu, on peut espérer un latence inférieure à 50 ms mais dans le cas contraire, un passage vers un Linux temps réel pourrait être envisagé. + \item Rayon minimal d'opération : 100 m. Cela peut évoluer dans le future mais dans le cadre de ce stage, les expériences ne sont pas effectuées sur de longues distances (bien que les modules de télémétrie permettent d'aller jusqu'à 300 m). + \item Autonomie : 15 min. Les drones devant maintenir un vol stable, consomment beaucoup d'énergies. Il s'agit alors de trouver un compromis entre la capacité et le poids de la batterie. +\end{itemize} + +Ce projet étant plutôt basé sur la faisabilité de l'implémentation d'un réseau de neurones sur un drone, il y a pas de contrainte de vitesse (il n'en reste pas moins qu'il est assez rapide). + +\section{Mémoires partagées} + +Pour le fonctionnement du drone, plusieurs programmes en parallèle sont lancés. Ces programmes ont parfois le besoin de s'échanger des informations, c'est là qu'intervient l'idée des mémoires partagées. Une bibliothèque en C/C++ a été développé au sein de ETIS par Arnaud Blanchard, elle permet d'envoyer le contenu d'une variable ou d'un vecteur vers zone mémoire du PC. A partir de cette zone, il est également possible de lire les valeurs stockés et de les réutiliser dans une autre programme. + +\begin{figure}[ht] +\centering +\includegraphics[width=1.0\textwidth]{images/schema/memoire.png} +\caption[Schéma du système de communication]{Schéma du système de communication entre les commandes MAVLink et la memoire partagee pour le contrôle du drone}\label{fig:memoire}% +\end{figure} + +\section{Programme fly\_monitor} + +\subsection{Description} + +Le programme \acrshort{fly\string_monitor} est le programme principal permettant la communication avec le drone. Il se sert des mémoires partagées afin de pouvoir partager ce qu'il reçoit du drone. Il s'inspire également de MAVSDK afin de produire les comportements désirés sur le drone. A son lancement, il se comporte de la manière suivante : il écoute sur le port où est branché le module de télémétrie et détermine s'il y a des signes de vie d'un drone. Si un drone est effectivement présent, il informe l'utilisateur et lui donne la possibilité de taper des commandes comme pour faire voler le drone ou lui demander des informations de capteurs. + +Le programme fonctionne en temps réel avec plusieurs \acrshort{threads} lancés en parallèle : +\begin{itemize} + \item Le thread principal : celui qui lance les autres threads et sert d'interface entre lui et les commandes de l'utilisateur. + \item Le thread d'écriture : celui qui envoie en à un certaine fréquence définie les messages de commande encodés à l'autopilote. + \item Le thread de lecture : celui qui écoute tout ce que l'autopilote envoie à la station au sol et décode les messages MAVLink reçue. +\end{itemize} + +\begin{figure}[ht] +\centering +\includegraphics[width=1.0\textwidth]{images/schema/fly_monitor.png} +\caption[Diagramme d'inclusion du programme fly\_monitor]{Diagramme d'inclusion du programme fly\_monitor}\label{fig:fly_monitor}% +\end{figure} + +\subsection{Etude des fréquences}\label{chap:communication} + +Un point primordial pour le bon fonctionnement des threads est le respect des contraintes de temps réel. En particulier, le thread de lecture et d’écriture : la réception d’informations doit se faire avec le moins de perte possible et l’écriture doit se faire avec une fréquence la plus stable possible. Pour ce faire, à chaque point fixe dans un thread, une lecture du temps est réalisée. Le délai entre chaque lecture est calculé au point pour ensuite réaliser une attente jusqu’à atteindre le délai de la consigne (fonction nanosleep note : le sleep est uniquement bloquant dans le thread associé). + +\begin{algorithm}[ht] +\DontPrintSemicolon +\SetAlgoLined +\SetKwInOut{Input}{Input}\SetKwInOut{Output}{Output} +\Input{delai\_thread <- initialiser une valeur de consigne} +\Input{front\_thread = end\_thread = delai\_thread = 0} +\BlankLine + +\While{true}{ + traitement... + ... + end\_thread <- stocker le temps actuel\; + delai\_thread = end\_thread - front\_thread\; + \If{delai\_thread < delai\_thread}{ + sleep(delai\_consigne - delai\_thread)\; + } + front\_thread <- stocker le temps actuel +} +\caption{Algorithme pour maintenir la fréquence d'un thread constante}\label{algo1} +\end{algorithm} + +Bien-sûr, si le délai entre chaque prise dépasse le délai de consigne, il n’y a pas d’attente (voir plus bas pour ce cas de figure). Il faut un délai de consigne le plus court possible (plus haute fréquence) tout en évitant ce cas. + +\begin{figure} + \centering + \begin{minipage}{0.49\textwidth} + \includegraphics[width=\textwidth]{images/courbes/figureRead.png} + \end{minipage} + \hfill + \begin{minipage}{0.49\textwidth} + \includegraphics[width=\textwidth]{images/courbes/figureWrite.png} + \end{minipage} + \caption[Tracés de l’évolution des périodes des threads]{Tracés de l’évolution des périodes des threads de lecture et d’écriture. L’écriture a une période de consigne de 50 ms et la lecture a une période de consigne de 1 ms.}\label{fig:thread_freq} +\end{figure} + +La fréquence d’écriture est “lente†car nous n’avons pas d’intérêt à envoyer beaucoup de commandes alors que le temps de réaction d’un humain ne dépasse pas les 100 ms. Tandis que la lecture doit se faire le plus rapidement possible pour pouvoir traiter tous les messages MAVLink reçues à temps. + +Dans les deux threads, l’écart-type est de moins de 100 µs. +L'imprécision d’un noyau linux temps-réel est de l'ordre de la milliseconde. Dans ce cas, les délais sont encore mieux que cette limite, les contraintes sont donc largement respectées. + +\subsection{Qualité de réception des messages MAVLink} + +Étant notre exemple de fonctionnement correct dans la communication avec l’autopilote, QGC fournit la fréquence de chacun des messages reçus : +\begin{figure}[ht] +\centering +\includegraphics[width=0.2\textwidth]{images/capture/qgc.png} +\caption[Messages reçus sur QGC]{Liste non exhaustive de messages reçus sur QGC}\label{fig:qgc}% +\end{figure} + +Puisque QGC ne sera pas implémenté dans le code final, il est important de s’assurer que les fréquences des messages côté fly\_monitor correspondent aux fréquences côté QGC. +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/capture/freq_calc.png} +\caption[Fréquences des messages calculées sur fly\_monitor]{Fréquences calculées par une moyenne mobile}\label{fig:freq_calc}% +\end{figure} + +Les valeurs sont bien similaires, voire plus précises dans la mesure où l’on à accès à plus de chiffres après la virgule. + +On peut également tracer l'évolution des fréquences pour vérifier leur stabilité : +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/courbes/freq_plot.png} +\caption[Tracé de l’évolution des fréquences brutes]{Tracé de l’évolution des fréquences brutes (non moyennées) des messages MAVLink dans le temps pour 9 messages}\label{fig:freq_plot}% +\end{figure} + +Les messages sont inégaux dans la variance de leur fréquence car certains contiennent plus d’information à partager (comme l’IMU). Ce qui importe c’est le maintien de la fréquence désirée sans perte. En effet, bien que le message IMU ait une certaine variance, il n’a pas de perte majeure qui mettrait sa fréquence à 0. +Le système de communication est donc bien implémentable sur le plan de la qualité de réception. + +\subsection{Scénarios prévoyant la deadline} + +Le fly\_monitor prévoit le cas où un des threads de lecture ou d’écriture dépasse une certaine deadline (en µs). Dans ce cas, le code continue de tourner mais des messages de warning sont envoyés afin d’informer de la durée dépassée. Cela permet d'investiguer quel message pose problème, à quel point. +Voici les différents scénarios qui peuvent arriver lors de la lecture d’un message par exemple : +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/schema/deadline.png} +\caption[Schéma des scénarios pour la lecture]{Schéma des scénarios pour la lecture d'un message. Dans le premier cas, tout se passe dans les temps, il y a un sleep jusqu'à atteindre le délai souhaité. Dans le deuxième cas, le traitement dépasse légèrement le délai souhaité mais reste en dessous de la valeur de deadline, on s'accorde une certaine marge lorsque certaines lectures subissent de légers ralentissements. Dans le troisième cas, la deadline est dépassée et un message de warning est envoyé, l'exécution du programme n'est toutefois pas interrompue.}\label{fig:deadline}% +\end{figure} + +%Exemple d'un algorithme : \\ + +%\begin{algorithm}[H] +%\DontPrintSemicolon +%\SetAlgoLined +%\KwResult{Write here the result} +%\SetKwInOut{Input}{Input}\SetKwInOut{Output}{Output} +%\Input{Write here the input} +%\Output{Write here the output} +%\BlankLine + +%\While{While condition}{ +% instructions\; +% \eIf{condition}{ +% instructions1\; +% instructions2\; +% }{ +% instructions3\; +% } +%} +%\caption{While loop with If/Else condition}\label{algo1} +%\end{algorithm} + + + +%\begin{algorithm}[H] +%\DontPrintSemicolon +%\SetAlgoLined +%\KwResult{Write here the result} +%\SetKwInOut{Input}{Entrée}\SetKwInOut{Output}{Sortie} +%\Input{Write here the input} +%\Output{Write here the output} +%\BlankLine + +%$x\leftarrow 0$ \; +%$y\leftarrow 0$ \; +%\BlankLine +%\ForEach{ForEach condition}{ + +% \BlankLine + +% \tcc{comments on code} +% \ForEach{ForEach condition}{ +% \If{If condition}{ +% instruction(s) like below: \\ +% increase $x$ by $1$\; +% decrease $y$ by $2$\; +% } + +% \BlankLine + +% \uIf{If condition}{ +% instruction +% } +% \uElseIf{ElseIf condition}{ +% instruction +% } +% \uElse{ +% instruction +% } +% } +%} +%\caption{Nested ForEach loop with If/ElseIf/Else condition} +%\end{algorithm} \ No newline at end of file diff --git a/Doc/2023/Source_latex/chapitre4.tex b/Doc/2023/Source_latex/chapitre4.tex new file mode 100644 index 0000000000000000000000000000000000000000..be3cab2176415020393c7c6787853c18d4144cad --- /dev/null +++ b/Doc/2023/Source_latex/chapitre4.tex @@ -0,0 +1,140 @@ +\section{Modèle neuronal} + +Le modèle utilisé dans ce stage est celui du neurone formel qui est une simplification du neurone biologique (\cite{neuron1943}). + +Ce neurone formel est constitué de : +\begin{itemize} + \item Un vecteur de connexion W qui code les poids synaptiques entre le neurone émetteur et le neurone récepteur. + \item Un potentiel d’action (P.A) égal au produit scalaire du vecteur d’entrée par les poids : +$Pot = W^T X$ où X est le vecteur d’entrée. L’équation peut aussi s’écrire sous la forme : \ref{eq:1} + +\begin{equation} \label{eq:1} +Pot = \sum_{i}^{} w_i x_i +\end{equation} + + \item Un seuil d’activation $\theta$ au delà du quel la réponse du neurone est générée. + \item Une fonction d’activation non linéaire f qui permet de calculer l’activité en sortie du neurone suivant la relation : $s = f(Pot - \theta)$ où s représente la sortie. +\end{itemize} + +Les poids W peuvent varier dans le temps. La fonction f limite la plage de valeurs que les neurones peuvent avoir, ce qui aide à rendre l'apprentissage plus stable en réduisant les changements brusques dans les poids des neurone. Lorsque plusieurs neurones sont interconnectés on parle de réseaux de neurones. + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/schema/neuron.PNG} +\caption[Schéma d’un neurone formel]{Schéma d’un neurone formel. Neurone formel de Mc. Culloch et Pitts}\label{fig:neuron}% +\end{figure} + +\section{Conditionnement et association} + +\subsection{Règle des moindres carrées} + +Comme mentionné précédemment, les poids W peuvent varier de sorte à obtenir un résultat proche du résultat désiré. On définit alors une erreur à optimiser entre le résultat produit par le P.A et le résultat désiré (Il s'agit de la règle \cite{LMS1960}, autrement appelé LMS (Least Mean Square)) : + +\begin{equation} \label{eq:2} +\xi = E[\frac{1}{2} (Y^d - W^T X)^2] +\end{equation} + +Lorsque nous apprenons quelque chose dans un réseau de neurones, nous essayons de trouver la meilleure combinaison de poids et de seuil pour chaque neurone. Pour y parvenir, nous utilisons une méthode appelée "descente de gradient", qui consiste à ajuster progressivement les poids pour atteindre le résultat souhaité : + +\begin{equation} \label{eq:3} +\Delta W_{ij} = \epsilon.X_i.(Y^d_i - Y_j) +\end{equation} + +Dans cette équation, le réseau de neurones calcule une chose appelée "gradient" qui nous aide à réduire l'erreur entre ce que nous voulons que le réseau produise et ce qu'il produit réellement. Lorsque cette erreur devient nulle, cela signifie que nous avons trouvé la bonne configuration de poids, et à ce moment-là , nous n'avons plus besoin de changer ces poids. + +Maintenant, la rapidité avec laquelle nous atteignons cette configuration idéale dépend d'une valeur appelée $\epsilon$. Si $\epsilon$ est petit, l'apprentissage se fait lentement et peut rester bloqué avec une petite erreur. Si $\epsilon$ est trop grand, l'apprentissage peut osciller beaucoup, ce qui signifie qu'il change rapidement entre de bonnes et de mauvaises configurations, et cela peut finir par ne pas converger correctement. Donc, il faut choisir $\epsilon$ avec soin pour que l'apprentissage se déroule de manière efficace. + +Le calcul des nouveaux poids se fait comme suit : + +\begin{equation} \label{eq:4} +W_{ij}(t+1) = W_{ij}(t) + \Delta W_{ij}(t) +\end{equation} + +Et la sortie est calculée en multipliant les poids par les entrées : + +\begin{equation} \label{eq:5} +S(t) = W_{ij}(t).X_i +\end{equation} + +\subsection{Règle de Hebb} \label{sub:hebb} + +La règle d'apprentissage de Hebb (\cite{hebb2005}), inspirée de la biologie, dit que lorsque deux neurones sont activés ensemble à plusieurs reprises, les connexions entre eux deviennent plus fortes. En d'autres termes, cela rend le transfert d'information plus efficace : + +\begin{equation} \label{eq:6} +\delta w_{ij} = \epsilon x_i y_i - \lambda w_{ij} - \lambda' w_{ij}x_i +\end{equation} + +Cette équation concerne la modification des connexions entre deux neurones, où un neurone est appelé "pré-synaptique" (i) et l'autre "post-synaptique" (j). Lorsque ces neurones s'activent ensemble, les connexions entre eux deviennent plus fortes, c'est comme si le cerveau apprenait que ces neurones sont liés d'une certaine manière. + +L'idée derrière cette règle ressemble à l'apprentissage d'un "ET" logique. Les termes $\lambda w_{ij}$ et $\lambda' w_{ij}x_i$ sont là pour éviter que ces connexions deviennent trop fortes et qu'elles ne finissent par augmenter indéfiniment. Ils agissent comme un mécanisme de régulation pour stabiliser l'apprentissage. + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/schema/hebb.PNG} +\caption[Principe de renforcement des poids pour la règle de Hebb.]{Le principe de renforcement des poids selon la règle de Hebb est illustré dans plusieurs cas : a) Lorsqu'il n'y a pas de co-activation pré-synaptique et post-synaptique avant l'apprentissage, cela signifie qu'il n'y a pas d'activation post-synaptique lorsque le signal pré-synaptique est présent. b) Lorsqu'il y a une activation pré-synaptique mais aucune activation post-synaptique avant l'apprentissage, et après l'apprentissage, il n'y a toujours pas d'activation post-synaptique lorsque le signal pré-synaptique est présent. c) Lorsqu'il y a une activation post-synaptique mais aucune activation pré-synaptique avant l'apprentissage, et après l'apprentissage, il n'y a toujours pas d'activation post-synaptique lorsque le signal pré-synaptique est présent. d) Lorsqu'il y a une co-activation pré-synaptique et post-synaptique avant l'apprentissage, il y aura, après l'apprentissage, une activation post-synaptique lorsque le signal pré-synaptique est présent. Dans tous ces cas, l'épaisseur des flèches représente le renforcement des connexions synaptiques, où une flèche fine correspond à une diminution du poids de la connexion et une flèche épaisse correspond à une augmentation du poids de la connexion. Cela montre comment la règle de Hebb renforce ou diminue les connexions synaptiques en fonction des corrélations d'activation entre les neurones pré-synaptiques et post-synaptiques.}\label{fig:hebb}% +\end{figure} + +\section{Compétition : le Winner Takes All} + +Les mécanismes de compétition sont comme un concours entre les neurones d'un groupe. Dans ce concours, les neurones les plus actifs l'emportent. Ce processus est simulé par le Winner Takes All (WTA), qui utilise des connexions entre les neurones pour décider quel neurone est le plus actif (\cite{wta1999}). + +La variation du potentiel d’action d’un neurone xi du groupe est définie par : +\begin{equation} \label{eq:7} +\frac{dx_i}{dt} = \alpha x_i - \beta \sum_{k\neq i}^{K}x_k I_i +\end{equation} + +Avec K le nombre de neurone du groupe, $I_i$ l’activité du neurone i, $\alpha \in [0, 1]$ le poids du lien récurrent autoexcitateur du neurone i et $\beta \in [0, 1]$ le poids des liens inhibiteurs provenant des +autres neurones du groupe. Si un neurone est très actif, il encourage l'activité de ses voisins, mais il les inhibe aussi un peu. Au bout du compte, le neurone le plus actif devient de plus en plus actif, tandis que les autres deviennent moins actifs. + +Ce processus simple permet au réseau de prendre des décisions en utilisant un ensemble minimal de règles de base, sans avoir besoin d'instructions compliquées. C'est comme si les neurones se battaient pour devenir le plus actif, et celui qui gagne prend la décision. + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/schema/wta.PNG} +\caption[Exemple de mécanisme de compétition de type WTA.]{Exemple de mécanisme de compétition de type WTA à une seule couche. Chaque neurone s’auto-excite et inhibe ses voisins.}\label{fig:wta}% +\end{figure} + +\section{Architecture PerAc} + +L'architecture PerAc (Perception/Action) est un type d'architecture développée par Gaussier et Zrehen (\cite{gaussier1995}). + +\begin{figure} +\centering +\includegraphics[width=0.8\textwidth]{images/schema/perac.PNG} +\caption[Schéma de l'architecture PerAc (Perception/Action).]{Schéma de l'architecture PerAc (Perception/Action). Les liens modifiables correspondent aux connexions synaptiques qui suivent une règle d'apprentissage (Hebb ou LMS)}\label{fig:perac}% +\end{figure} + +Elle permet aux robots d'apprendre comment réagir aux différentes choses qu'ils perçoivent. Elle a deux parties : une première partie qui gère les réactions immédiates aux choses, comme les réflexes, et une autre partie qui apprend à comprendre les conséquences de ces réactions. + +Lorsque le robot interagit avec son environnement, il modifie ce qu'il perçoit, et cette interaction crée un système où l'information circule en boucle, de sorte que les actions du robot sont influencées par ce qu'il perçoit et vice versa. Contrairement à d'autres approches en intelligence artificielle, PerAc ne repose pas sur des symboles ou des concepts abstraits, ce qui évite un problème courant en IA. Cela rend PerAc flexible pour accomplir différentes tâches et comportements comme la perception d’objet \cite{maillard2005} ou le retour au nid ("Homing") \cite{giovannangeli2008}. + +\section{Logiciels} + +Au sein d'ETIS, des outils permettant la simulation de réseaux de neurones ont été développés. Le couple (Leto ou Coeos)/Promethe est un outil permettant à la fois de +créer et de simuler un réseau de neurones artificiel. + +\subsection{Coeos} + +Coeos est un programme qui permet de créer visuellement un schéma pour un réseau de neurones que l'on souhaite utiliser avec Promethe, un autre logiciel. En utilisant Coeos, on peut dessiner des boîtes reliées les unes aux autres à l'aide de la souris. Ces boîtes représentent des groupes de neurones, et les liens entre elles représentent les connexions synaptiques. De plus, les groupes peuvent accepter des paramètres à partir des liens d'entrée et fournir des sorties. + +Voici un exemple de groupes créés dans Leto et reliés par des liens : + +\begin{figure} +\centering +\includegraphics[width=0.8\textwidth]{images/capture/coeos.PNG} +\caption[Capture d'écran du logiciel Coeos.]{Ce script charge une image en mémoire et l'affiche sur l'écran}\label{fig:coeos}% +\end{figure} + +La particularité de Coeos est que ces groupes peuvent représenter soit un réseau de neurones réel comme Hebb ou Kohonen, soit une fonction algorithmique, ce qui signifie qu'ils ne sont pas liés à des neurones réels. Par exemple, un groupe peut être utilisé pour afficher une image à l'écran. + +De la même manière, les liens peuvent représenter des connexions synaptiques réelles entre les neurones, ou bien des connexions algorithmiques qui contrôlent la séquence des opérations. + +\subsection{Promethe} + +Promethe est un programme qui permet d'exécuter le réseau de neurones créé avec Coeos. Plus précisément, il permet d'envoyer des données au réseau de neurones et de contrôler les entrées et sorties des différents groupes de neurones dans ce réseau. Cela signifie qu'il est possible de simuler le réseau de neurones et voir comment il réagit aux données qu'on lui donne. + +\begin{figure} +\centering +\includegraphics[width=0.8\textwidth]{images/capture/promethe.png} +\caption[Capture d'écran du logiciel Promethe.]{Fenêtre principale de Promethe, elle affiche par défaut tous les boîtes neuronales utilisées ainsi que leur évolution en cours de simulation. Cela peut être très utile pour observer le comportement du réseau.}\label{fig:promethe}% +\end{figure} diff --git a/Doc/2023/Source_latex/chapitre5.tex b/Doc/2023/Source_latex/chapitre5.tex new file mode 100644 index 0000000000000000000000000000000000000000..166aa2f1b06b6aa52a43303ef3251b941328a6a9 --- /dev/null +++ b/Doc/2023/Source_latex/chapitre5.tex @@ -0,0 +1,81 @@ +Avant de se pencher sur les algorithmes d'IA, il est important de s'assurer de la stabilité lors du contrôle du drone en plein vol. En effet, le choix a été opté pour un contrôle simple du drone en relatif mais on perd en précision. Il faut alors ajouter au contrôle du drone des asservissements. + +\section{Asservissement de la hauteur} + +L'asservissement de la hauteur se fait sur le contrôle de la puissance de commande en z (axe vertical) du drone. La valeur 0 est le minimum, 0.5 est la puissance suffisante pour le maintien stationnaire du drone en vol, >0.5 est la puissance faisant monter le drone. Pour l'algorithme, l'altitude désirée est comparée à l'altitude mesurée par le baromètre. Les valeurs sont normalisées selon le paramètre MAX\_ALT où l'altitude maximum vaudra toujours 1. + +\begin{algorithm}[ht] +\DontPrintSemicolon +\SetAlgoLined +\SetKwInOut{Input}{Input}\SetKwInOut{Output}{Output} +\Input{daltitude <- initialiser une valeur de consigne} +\Input{MAX\_ALT <- initialiser l'altitude max} +\Input{GAS\_HIGH, GAS\_MID, GAS\_LOW <- initialiser les valeurs de puissance pour monter, maintenir et descendre} +\Input{erreur, maltitude = 0} +\Output{gaz\_moteur = 0} +\BlankLine + +\While{true}{ + maltitude <- mesure de l'altitude\; + erreur = (daltitude - maltitude)/MAX\_ALT\; + \If{erreur > 0}{ + gaz\_moteur = GAS\_HIGH\; + } + \eIf{erreur < 0.1}{ + gaz\_moteur = GAS\_MID\; + }{ + gaz\_moteur = GAS\_LOW\; + } +} +\caption{Algorithme d'asservissement de la hauteur}\label{algo2} +\end{algorithm} + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/capture/coeos_alt.png} +\caption[Script d'asservissement de l'altitude sur Coeos.]{Script d'asservissement de l'altitude sur Coeos. Un erreur est calculée entre la mesure et la consigne, puis trois liens partent vers trois boîtes distinctes. Ces trois boîtes fonctionnent comme des drapeaux qui s'activent lorsque la valeur en entrée dépasse un certain seuil. Dans le premier cas "positive\_error", la boîte s'active lorsque l'entrée est positive (supérieur au seuil 0) et permet donc le passage de la commande de montée "gas\_high". Dans le deuxième cas, l'entrée est renversée (multiplication par -1), la boîte est strictement identique à celle d'au dessus. Mais puisque l'entrée est renversée, la boîte s'active lorsque l'entrée est négative (seuil toujours de 0) et une commande de maintien "gas\_mid" est envoyée. Dans le troisième cas, le fonctionnement est additionnel au deuxième cas. La boîte prend également une entrée inversée mais s'active seulement à un seuil défini (0.1 par exemple). Ainsi, si l'altitude mésurée est trop au dessus de l'altitude désirée, une valeur soustractive "gas\_low" s'ajoute à "gas\_mid", ce qui a pour effet de faire doucement descendre le drone.}\label{fig:coeos_alt}% +\end{figure} + +\section{Asservissement de l'orientation} + +L'asservissement de l'orientation se fait sur le contrôle de la rotation autour de l'axe z (vertical) du drone. La valeur 0 ne fait aucune rotation, le signe de la valeur détermine le sens de rotation , et l'intensité de la valeur détermine la vitesse de rotation (des inversions sont possibles, des vérifications sont donc toujours à faire). + +\begin{algorithm}[ht] +\DontPrintSemicolon +\SetAlgoLined +\SetKwInOut{Input}{Input}\SetKwInOut{Output}{Output} +\Input{dcompass <- initialiser une valeur de consigne} +\Input{gain <- initialiser de sorte à exploiter toute la plage de rotation\_moteur} +\Input{MAX\_DEG = 360} +\Input{erreur, mcompass, rotation\_moteur = 0} +\Output{rotation\_moteur = 0} +\BlankLine + +\While{true}{ + mcompass <- mesure de l'orientation de la boussole\; + erreur = f(dcompass,mcompass)/MAX\_DEG\; + (f : fonction donnant la plus courte distance entre deux angles)\; + rotation\_moteur = gain*erreur\; +} +\caption{Algorithme d'asservissement de l'orientation}\label{algo:boussole} +\end{algorithm} + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/capture/coeos_comp.png} +\caption[Script d'asservissement de l'orientation sur Coeos.]{Script d'asservissement de l'orientation sur Coeos. L'erreur calculée entre l'orientation de la boussole mesurée et l'orientation voulue est la distance minimal entre les deux angles. Il s'agit d'effectuer une opération modulo afin de trouver la plus courte distance. Par exemple si on mesure 359° alors que la consigne est 0°, la différence serait de -359°. Or ce n'est pas efficace, puisque la distance la plus courte est de 1°, d'où l'intervention de l'opérateur modulo. Ensuite, un gain est appliqué de sorte à ce que la dynamique de l'erreur soit ajustée à la dynamique des rotations des moteurs.}\label{fig:coeos_comp}% +\end{figure} + +\section{Résultats et conclusion} + +Pour tester les algorithmes, le scénario suivant est établi : préparer le drone à la même orientation que l'orientation désirée, envoyer une commande d'altitude supérieure à l'altitude actuelle, jouer un peu sur la commande de l'orientation désirée, baisser l'altitude voulue à fond. + +On obtient alors les résultats suivants : \ref{fig:plot_alt_comp} + +\begin{figure}[ht] +\centering +\includegraphics[width=1.0\textwidth]{images/courbes/plot_alt_comp.png} +\caption[Tracés des courbes d'altitudes et de boussoles durant l'asservissement.]{Tracés des courbes d'altitudes et de boussoles durant l'asservissement. Les valeurs sont toutes normalisées entre 0 et 1, la hauteur max étant 2 m et l'angle max étant 360°. En haut, en premier lieu, une altitude haute est demandée. Une commande de montée est alors envoyée (0.75), ce qui fait monter doucement le drone. Une fois que l'altitude de commande est dépassée, une commande de stationnement est envoyée (0.5). On observe alors bien que le drone tente de maintenir sa hauteur. Enfin, une altitude base est demandée, une commande de descente est envoyée (0.3), le drone se met alors à descendre doucement. En bas, on observe les commandes envoyées pour stabiliser l'orientation. En effet, en observant la boussole mesurée, le drone a tendance à essayer de suivre la commande. On observe toutefois quelques oscillations autour de l'orientation désirée lorsque cette dernière effectue un changement brusque.}\label{fig:plot_alt_comp}% +\end{figure} + +En conclusion, le comportement observé pour ces algorithmes d'asservissement sont conformes à ce qui est attendu. Bien que dans notre cas cela puisse être suffisant pour les tests, il peut être intéressant de se pencher sur des asservissements plus poussés pour un gain en performance. Notamment l'asservissement de la boussole où les oscillations peuvent être évitées grâce à une correction intégrale. \ No newline at end of file diff --git a/Doc/2023/Source_latex/chapitre6.tex b/Doc/2023/Source_latex/chapitre6.tex new file mode 100644 index 0000000000000000000000000000000000000000..6622234b61b43248c9290af7aecd8fd80c618c23 --- /dev/null +++ b/Doc/2023/Source_latex/chapitre6.tex @@ -0,0 +1,9 @@ +Une fois que les contrôles de stabilité ont été validés, nous pouvons nous concentrer sur l'intégration d'un réseau de neurones dans le système. Néanmoins, dans cette phase de preuve de concept, nous allons créer un script simple de vision. Ce script permettra de faire déplacer le drone horizontalement de droite à gauche en fonction du flux de mouvement détecté par la caméra. Pour ce faire, nous allons calculer le flux optique à partir de l'image d'entrée, en nous concentrant sur l'axe horizontal (axe x). Le drone se dirigera ensuite vers la direction où le mouvement est le plus intense. + +\begin{figure}[h] + \centering + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/schema/flow.png} + \end{minipage} + \caption[Suivi du flot optique]{Suivi du flot optique. Les informations du flot optique sont aplaties (moyenne sur chaque colonne) de sorte à obtenir un vecteur de flot horizontal. Ensuite, la valeur la plus intense du vecteur sera la direction vers laquelle le drone se dirigera. En l'occurrence c'est la valeur du milieu qui gagne, le drone restera alors sur place.}\label{fig:flow} +\end{figure} diff --git a/Doc/2023/Source_latex/chapitre7.tex b/Doc/2023/Source_latex/chapitre7.tex new file mode 100644 index 0000000000000000000000000000000000000000..fa919d0acc8dc5bd0c1e4e515e4621ab74e0f436 --- /dev/null +++ b/Doc/2023/Source_latex/chapitre7.tex @@ -0,0 +1,318 @@ +Pour la navigation spatiale, l'équipe Neurocybernétique a proposé un modèle du cerveau comprenant l'hippocampe et des boucles corticales pour contrôler un robot mobile lors de tâches de navigation visuelle. Ce modèle est basé sur : + +\begin{itemize} + \item L'acquisition d'informations visuelles et d'orientation à partir de l'entrée visuelle, ainsi que des données d'une boussole ou du flux optique. + \item La création de repères et d'une table d'azimuts à partir de ces données, qui imitent les processus "quoi" et "où" du cerveau. + \item La fusion de ces repères et azimuts avec l'unité SigmaPi (construction de la matrice PrPh) et la création de cellules de lieu visuelles simulées à partir de PrPh. +\end{itemize} + +\begin{figure}[ht] +\centering +\includegraphics[width=1.0\textwidth]{images/schema/hippocampus.png} +\caption[Modèle de l'hippocampe]{Modèle de l'hippocampe pour la navigation. Le bloc de vigilance permet lancer ou non l'apprentissage des cellules de lieu. Ce modèle présente de bon résultats pour la navigation 2D \cite{espada2018}}\label{fig:hippocampus}% +\end{figure} + +En résumé, ce modèle vise à permettre au robot de naviguer en se basant sur ce qu'il voit et de s'orienter en utilisant des informations visuelles et des données de boussole. + +\section{Cellules de vue} + +Les cellules de lieux sont des neurones dont l’activité est liée à la reconnaissance d’un lieu. Dans notre cas, la reconnaissance d’un lieu se base essentiellement sur la vision. Dans le cadre du stage, la vision provient d’une caméra fixe, le drone ne possède donc pas une vision 360°, on parle plutôt de cellules de vue. + +\subsection{Modèle implémenté} + +Pour la modélisation, le modèle \ref{fig:hippocampus} est repris. Une chaîne de traitement d’images fait ressortir des informations (points d’intérêt, azimuth…) qui nourrissent un réseau de neurones constituant les cellules de vue. En sortie, chaque cellule correspond à un neurone, à une seule image (avec les informations associées) et donc à une seule vue. + +Dans cette sous-partie, un exemple avec 10 cellules est présenté. + +\begin{figure}[ht] +\centering +\includegraphics[width=1.0\textwidth]{images/capture/view_coeos.png} +\caption[Aperçu du modèle des cellules de vue sous Coeos.]{Aperçu du modèle des cellules de vue sous Coeos. La boîte 90 correspond à l’image en entrée de la chaîne de traitement (la boîte pan\_tilt n’est pas à prendre en compte puisqu'il n'y a pas d’orientation de caméra dans notre cas), les boîtes 28 et 85 sont les entrées (points d’intérêt, azimut) du réseau. En sortie, on retrouve les 10 neurones (boîte 25) correspondant aux 10 cellules de lieux. Les poids qui apprennent sont représentés par des liens en bleu foncé.}\label{fig:view_coeos}% +\end{figure} + +\subsection{Apprentissage} + +L’apprentissage se fait en une seule boucle, on parle de one-shot learning. Ici, à chaque itération (chaque image), une nouvelle cellule de vue est forcée à être activée. A la présentation d’une image, les poids se mettent à jour en suivant la règle de Hebb \ref{sub:hebb}, c’est-à -dire que les neurones qui s’excitent ensemble (l’apparition des points d’intérêt sur une image par exemple ET une des cellules activée) renforcent les poids entre eux. Ainsi, une cellule de vue est bien corrélée à une image de part leur lien qui est renforcé. + +Par exemple, voici comment les cellules sont forcées à chaque itération à 1 (pour 5 points d’intérêt à chaque image):\ref{fig:view_plot_l} + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/capture/view_plot_l.png} +\caption[Graphique suivant l’évolution de 10 cellules pour un apprentissage de 6 images (6 itérations).]{Graphique suivant l’évolution de 10 cellules pour un apprentissage de 6 images (6 itérations). Chaque cellule apprend au maximum 5 points d’intérêt. Chaque image est à peu près espacée de 10 mètres. A chaque itération, une seule cellule est activée à la fois, les autres étant en très faible activité.}\label{fig:view_plot_l}% +\end{figure} + +\subsection{Test} + +Pour le test du réseau, la mise à jour des poids est gelée et toutes les images filmées sont présentées (dont celles qui ont été apprises) au réseau de neurones. Cette fois-ci, plus de points d’intérêt (15) sont fournis aux cellules afin d’avoir plus de chance de retrouver les mêmes points que les ceux appris précédemment. + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/capture/view_plot_t.png} +\caption[Graphique suivant l’évolution de 10 cellules sur 325 images après apprentissage.]{Graphique suivant l’évolution de 10 cellules sur 325 images après un apprentissage sur 6 images. Chaque cellule est nourrie de 15 points d’intérêt au maximum. Dessous, la représentation en couleur de la cellule avec la plus grosse activité à chaque itérations.}\label{fig:view_plot_t}% +\end{figure} + +Dans le graphique \ref{fig:view_plot_t}, une différence est notée tout le long des tracés entre les 6 premières cellules et les 4 restantes. Cela veut dire que pour une image donnée, des caractéristiques communes (ciel, herbes au sol) à toutes les images ont été prises en compte dans l'apprentissage des poids 6 cellules. + +Des pics sont remarqués exactement à l’emplacement des images apprises, ceci correspond bien aux attentes puisque c’est à ces points précis que les liens avec les cellules sont les plus forts. + +Le point critique est la discrimination entre les activités autour des pics, elle est très mauvaise au début, puis meilleure vers la seconde moitié du temps. Cela s’explique par l’environnement et sa richesse sur cette prise de photos. En effet, il y a peu d'objets à distinguer sur les images, l’algorithme a donc tendance à se focaliser sur les bâtiments en arrière-plan. Au début de la prise, les bâtiments sont très éloignés, l’écart à l’image des points caractéristiques est donc faible pour 10 m. Mais au fur et mesure que l’on s’approche, l'écart entre les mêmes points est plus grand pour la même distance, il est donc plus facile de distinguer la différence entre deux images (adjacentes en temps) près des bâtiments que loin. On comprend alors pourquoi les cellules 4 à 6 se distinguent sur plus de 3 m tandis que les cellules 1 à 3 ont du mal à ressortir des concurrents (sauf à leur emplacement exact). + +\begin{figure}[ht] +\centering +\includegraphics[width=0.4\textwidth]{images/capture/view_test0.png} +\caption[Exemple d'une image apprise.]{Exemple d'une image apprise. Les points d’intérêts sont généralement sur les bâtiments du fond. Ces points génèrent des vignettes qui nourrissent le réseau de neurones. Les vignettes contiennent des informations condensées d’une partie de l’image délimitée par les cercles en bleu.}\label{fig:view_test0}% +\end{figure} + +\subsection{Optimisation des paramètres} + +Étant donné la difficulté dans la reconnaissance de vue dans les zones éloignées des bâtiments, il est intéressant de se pencher sur la possibilité d’amélioration du script. Pour cela plusieurs paramètres entrent en compte. Par souci de temps, nous allons chercher à optimiser un à un les paramètres dans cet ordre : \footnote{Cette partie présente le pire cas. Dans les prochaines applications, le mouvement latéral est privilégié, ce qui forcément présente de meilleures performances.} + +\begin{itemize} + \item Résolution du gradient + \item Résolution des points d’intérêt (différence de gaussiennes) + \item Taille d’une vignette pour chaque point d’intérêt et sa résolution + \item Nombre de points d’intérêt +\end{itemize} + +Il est également possible de jouer sur un meilleur jeu d’images, cependant, le but est de mesurer les performances pour le scénario suivant : reconnaître des vues dans un mouvement rectiligne (avant/arrière) avec pour seuls points de repère à plus de 100 m. + +\subsubsection{Métrique pour la performance} + +Pour chacune des optimisations, une précision est calculée par rapport à ce qui est attendu. Simplement : nb prédiction correcte / nb total de prédiction. On en revient à un problème de classification où l’on cherche à avoir la bonne cellule de lieu/vue qui s’active au voisinage d’une vue apprise. + +\begin{figure}[ht] +\centering +\includegraphics[width=0.8\textwidth]{images/capture/view_temoin.png} +\caption[Ajout des cellules “témoins†afin de pouvoir calculer la précision.]{Ajout des cellules “témoins†afin de pouvoir calculer la précision.}\label{fig:view_temoin}% +\end{figure} + +Afin de minimiser les biais dans les résultats dans l’évaluation des performances du modèle, 6 \acrshort{datasets} seront évalués. Il s’agit de 6 trajectoires allant vers l’avant de manière rectiligne et de même longueur. + +\subsubsection{Résolution du gradient} + +La première étape avant d'extraire des points d'intérêt consiste à calculer le gradient de l'image. Le gradient représente la variation locale de l'intensité des pixels, mettant ainsi en évidence les contours, les transitions d'intensité et les zones d'intérêt de l'image. + +Dans notre cas, un coefficient alpha est associé au calcul du gradient de l'image en niveaux de gris. Ce coefficient influence le lissage lors du calcul du gradient, c'est-à -dire dans quelle mesure les pixels voisins sont pris en compte pour le calcul. Une valeur faible d'alpha aura tendance à lisser l'image en supprimant certains détails fins, tandis qu'une valeur plus élevée d'alpha préservera davantage de détails, mais pourrait également introduire du bruit indésirable.\ref{fig:alpha} + +Voici, le résultat sur plusieurs choix de lissage du gradient pour les 6 jeux d’images : + +\begin{table} +\centering +\begin{tabular}{|c|*{6}{c|}c|} +\hline +\multicolumn{1}{|c|}{\textbf{$\alpha$}} & \multicolumn{6}{c|}{\textbf{Précision (\%)}} & \multicolumn{1}{c|}{\textbf{Précision moyenne \%}} \\ +\hline +0.1 & 61.96 & 55.08 & 55.45 & 33.43 & 38.89 & 23.95 & 44.79 \\ +\hline +0.4 & 43.56 & 59.67 & 58.88 & 35.54 & 41.80 & 34.30 & 45.62 \\ +\hline +0.8 & 43.25 & 67.87 & 59.50 & 39.76 & 34.39 & 31.71 & 46.08 \\ +\hline +1.5 & 60.12 & 57.38 & 60.43 & 35.24 & 43.65 & 38.51 & 49.22 \\ +\hline +3 & 53.07 & 51.47 & 54.52 & 35.84 & 38.62 & 36.57 & 45.01 \\ +\hline +10 & 47.85 & 50.82 & 61.05 & 35.24 & 38.36 & 35.27 & 44.76 \\ +\hline +\end{tabular} +\caption{Tableau des performances du modèle selon plusieurs lissage du gradient. Autres paramètres : $\theta1$=8.5, $\theta2$=10, r=3, R=30, nombre de points=5. $\alpha$=1.5 sera la valeur retenue pour la suite.} +\end{table} + +On observe en général que le modèle performe mieux avec un fort lissage du gradient (faible valeur de $\alpha$). Car en ce faisant, des structures plus robustes sont repérées plutôt de des détails qui ne restent pas longtemps dans l'images ou qui sont difficiles à redétecté dû à leur finesse. Pour détecter plus de détails de manière consistante, une caméra avec une meilleur qualité aurait été mieux adaptée, ce qui n'est pas notre cas car on cherche plus de performances latence et de rafraîchissement d'images. + +\begin{figure} + \centering + \begin{minipage}{0.5\textwidth} + \includegraphics[width=\textwidth]{images/capture/alpha.png} + \end{minipage} + \vfill + \begin{minipage}{0.3\textwidth} + \includegraphics[width=\textwidth]{images/capture/alpha_0_1.png} + \end{minipage} + \hfill + \begin{minipage}{0.3\textwidth} + \includegraphics[width=\textwidth]{images/capture/alpha_0_4.png} + \end{minipage} + \hfill + \begin{minipage}{0.3\textwidth} + \includegraphics[width=\textwidth]{images/capture/alpha_3_0.png} + \end{minipage} + \caption[Influence du paramètre $\alpha$ sur le gradient.]{Influence du paramètre $\alpha$ sur le gradient. En haut, l'image original en niveaux de gris. En bas, les gradients différentes valeur de $\alpha$ : 0.1, 0.4, 3.0 dans cet ordre. Pour 0.1, le filtrage est trop fort, il est à peine possible de distinguer quelque chose. A l'inverse, pour 3.0, il n'y a quasiment plus aucun filtrage, ce qui pourrait laisser passer trop de détails. Pour 0.4, les traits semblent assez flous pour gommer les détails tout en laissant visible la forme générale de l'image.}\label{fig:alpha} +\end{figure} + +\subsubsection{Résolution des points d’intérêt (différence de gaussiennes)} + +La différence de gaussiennes est une technique de filtrage qui permet de mettre en évidence les structures d'intérêt dans une image, comme les bords, les coins, etc. Pour ce faire, on convolue l'image avec deux filtres gaussiens différents, l'un ayant un écart-type (sigma) de theta1 et l'autre de theta2, où theta1 est plus petit que theta2. + +\begin{figure} + \centering + \begin{minipage}{0.5\textwidth} + \includegraphics[width=\textwidth]{images/schema/dog.png} + \end{minipage} + \vfill + \vspace{1 cm} + \begin{minipage}{0.5\textwidth} + \includegraphics[width=\textwidth]{images/schema/dog2.png} + \end{minipage} + \caption[Différence de gaussiennes]{Différence de gaussiennes. En appliquant une convolution par une \acrshort{DOG} sur l'image de gradient, on fait ressortir des caractéristiques propres à certaines formes. Notamment les coins d'un objet où l'intensité sera particulièrement forte. En repérant ces coins, on peut alors faire apprendre au réseau de neurones des objets. Sur la figure du dessous, le trait plein représente le gradient et trait en pointillé représente la convolution par la DOG. Les points rouges représentent les pics d'intensité après convolution, on remarque bien comment les coins sont repérés selon les angles (l'objet de gauche a les coins tournés vers l'extérieur tandis que l'objet de droite a les coins tournés vers l'intérieur).}\label{fig:dog} +\end{figure} + +Grâce la figure \ref{fig:dog} on comprend bien les rôles que jouent $\theta$1 et $\theta$2. Il est important de maintenir les deux valeurs proches entre elles, afin de garder des contours saillants. Leur taille influence donc la résolution des contours autour d'une forme, plus les $\theta$ sont grands plus les contours seront gros et inversement \footnote{Les paramètres $\theta$ sont alors directement dépendant du gradient en entrée qui influence l'épaisseur d'un trait. Une étude sur le couple $\alpha$/$\theta$ serait alors plus judicieuse, mais ne sera pas traitée dans ce stage par manque de temps.}. + +\begin{table} +\centering +\begin{tabular}{|c|*{6}{c|}c|} +\hline +\multicolumn{1}{|c|}{\textbf{$\theta1$, $\theta2$}} & \multicolumn{6}{c|}{\textbf{Précision (\%)}} & \multicolumn{1}{c|}{\textbf{Précision moyenne \%}} \\ +\hline +6,7 & 39.76 & 50.82 & 57.94 & 36.75 & 24.87 & 40.45 & 41.76 \\ +\hline +8,9.5 & 54.82 & 54.43 & 62.62 & 36.75 & 31.22 & 35.28 & 45.85 \\ +\hline +10,11.5 & 59.94 & 57.70 & 61.37 & 31.02 & 53.70 & 41.42 & 50.86 \\ +\hline +12,14 & 54.82 & 61.64 & 62.93 & 31.02 & 54.76 & 47.25 & 52.07 \\ +\hline +14,16 & 44.88 & 57.05 & 63.55 & 35.54 & 53.70 & 39.81 & 43.16 \\ +\hline +\end{tabular} +\caption{Tableau des performances du modèle selon plusieurs tailles de gaussiennes. Autres paramètres : $\alpha$=1.5, r=3, R=30, nombre de points=5. $\theta1$=12, $\theta2$=14 seront les valeurs retenues pour la suite.} +\end{table} + +\subsubsection{Taille d’une vignette pour chaque point d’intérêt et sa résolution} + +Une fois les points d'intérêt extraits après la convolution par la DOG, on s'intéresse à la taille des vignettes à apprendre par le réseau de neurones. Ces vignettes sont transformées par une transformation log-polaire. Cela consiste à convertir les coordonnées cartésiennes des pixels d'une image en coordonnées log-polaires. En découlent alors des propriétés intéressantes : + +\begin{itemize} + \item Invariance en échelle : Cela signifie que les objets de différentes tailles apparaîtront sous une forme similaire après la transformation, ce qui est particulièrement utile lorsque l'on s'intéresse à la reconnaissance d'objets ou de motifs à différentes échelles. + \item Réduction des données : La transformation log-polaire peut réduire la quantité de données nécessaires pour représenter une image, ce qui peut être utile pour l'efficacité de l'apprentissage des cellules de vue. +\end{itemize} + +Une vignette est caractérisée par deux cercle de rayons r et R. R est le rayon du cercle contenant la vignette, r est le rayon d'exclusion. En raison de la transformée log-polaire, plus on se situe proche du centre de la vignette, plus la résolution est élevée. De ce fait, il n'est pas pertinent de garder des informations du centre de la vignette qui ne seront que sous le pixel, d'où l'introduction d'un rayon d'exclusion r.\ref{fig:grand_R} + +\begin{figure} + \centering + \begin{minipage}{0.3\textwidth} + \includegraphics[width=\textwidth]{images/capture/grand_R_10.png} + \end{minipage} + \hfill + \begin{minipage}{0.3\textwidth} + \includegraphics[width=\textwidth]{images/capture/grand_R_30.png} + \end{minipage} + \hfill + \begin{minipage}{0.3\textwidth} + \includegraphics[width=\textwidth]{images/capture/grand_R_100.png} + \end{minipage} + \caption[Influence du paramètre R sur les vignettes autour des points d'intérêt.]{Influence du paramètre R sur les vignettes autour des points d'intérêt. On observe différentes valeur de R : 10, 30, 100 dans cet ordre. Pour se faire une idée, la bonne question à se poser serait : "Est-ce que je saurais reconnaître quelque chose en voyant que cette zone ?". A partir de ça, on peut remarquer que pour 10, on peut difficilement distinguer quelque chose. Pour 30, on peut commencer à observer des bouts d'objets. Pour 100, on est capable de visualiser une scène contenant plusieurs objets, cela peut être adapté pour apprendre un lieu mais peut être trop vaste pour traquer un objet}\label{fig:grand_R} +\end{figure} + +Tout le long de cette étude, une résolution pour la transformée log-polaire est calculée pour chaque couple r, R de sorte à couvrir au moins la moitié de la résolution en pixel. Par exemple, si la résolution en pixels est de 50 pixels, alors la résolution pour la transformée sera de 5*5. + +\begin{table} +\centering +\begin{tabular}{|c|*{6}{c|}c|} +\hline +\multicolumn{1}{|c|}{\textbf{r, R}} & \multicolumn{6}{c|}{\textbf{Précision (\%)}} & \multicolumn{1}{c|}{\textbf{Précision moyenne \%}} \\ +\hline +1,10 & 39.22 & 44.92 & 49.84 & 18.97 & 48.31 & 30.74 & 38.67 \\ +\hline +2,20 & 58.82 & 56.06 & 57.94 & 25.90 & 52.31 & 45.95 & 49.50 \\ +\hline +3,30 & 62.09 & 60 & 63.55 & 30.72 & 64.31 & 46.28 & 54.49 \\ +\hline +5,50 & 57.19 & 65.25 & 64.80 & 33.73 & 61.85 & 50.48 & 55.54 \\ +\hline +7,70 & 58.03 & 66.23 & 73.44 & 33.44 & 56.72 & 56.07 & 57.32 \\ +\hline +10,100 & 64.38 & 46.88 & 67.29 & 31.93 & 40 & 31.07 & 46.92 \\ +\hline +\end{tabular} +\caption{Tableau des performances du modèle selon plusieurs tailles de vignette. Autres paramètres : $\alpha$=1.5, $\theta1$=12, $\theta2$=14, nombre de points=5. r=7, R=70 seront les valeurs retenues pour la suite.} +\end{table} + +\subsubsection{Nombre de points d’intérêt} + +Il peut être intéressant de jouer sur le nombre de points d'intérêt à apprendre pour chaque image. Cependant, il faut noter que plus de points ne veut pas forcément dire meilleure reconnaissance. En effet, les points supplémentaires peuvent être portés sur des détails plutôt qu'une forme générale intéressante. Ce qui aurait alors pour conséquence une difficulté à reconnaître une vue même en étant légèrement décalé. + +Une solution serait d'augmenter également le nombre de points en test afin d'avoir plus de chance de retrouver les points appris. Cependant, cela a un coup en temps de calcul. Dans notre cas, le maximum de points est de 20 afin de maintenir une fréquence de 8 Hz (proche de la limite du cahier des charges). + +\begin{table} +\centering +\newcolumntype{C}{>{\centering\arraybackslash}X} % Colonne centrée +\newcolumntype{R}{>{\raggedleft\arraybackslash}X} % Colonne alignée à droite +\setlength{\tabcolsep}{4pt} % Espace entre les colonnes +\begin{tabularx}{\textwidth}{|C|C|*{6}{C|}C|} +\hline +\multicolumn{1}{|C|}{\textbf{nb points apprentissage}} & \multicolumn{1}{C|}{\textbf{nb points test}} & \multicolumn{6}{C|}{\textbf{Précision (\%)}} & \multicolumn{1}{C|}{\textbf{Précision moyenne \%}} \\ +\hline +3 & 10 & 49.18 & 65.90 & 68.85 & 38.69 & 70.82 & 43.28 & 56.12 \\ +\hline +5 & 15 & 58.03 & 66.23 & 73.44 & 33.44 & 56.72 & 56.07 & 57.32 \\ +\hline +7 & 15 & 50.49 & 62.62 & 79.01 & 30.49 & 58.69 & 56.39 & 56.28 \\ +\hline +10 & 20 & 48.20 & 59.02 & 75.08 & 26.88 & 56.06 & 54.43 & 53.28 \\ +\hline +12 & 20 & 47.21 & 59.34 & 76.06 & 28.20 & 59.67 & 50.49 & 53.49 \\ +\hline +15 & 20 & 44.59 & 59.34 & 75.41 & 27.87 & 56.06 & 45.90 & 51.53 \\ +\hline +\end{tabularx} +\caption{Tableau des performances du modèle selon plusieurs lissages du gradient. Autres paramètres : $\alpha=1.5$, $\theta_1=12$, $\theta_2=14$, $r=7$, $R=70$. Pour la suite, on va rester sur 5 points.} +\end{table} + +\section{Script n°2 : Détection et suivi d'objet} + +Le script de détection d'objet reprend le modèle des cellules de vue optimisé, et ajoute la possibilité d'associer des points d'intérêts à un objet. Une fois un objet appris, les points lui appartenant forment alors un nuage dont le barycentre est la coordonnée en (x,y) de la position de l'objet. Dans ce script, on suit l'objet latéralement : si l'objet est au centre, le drone reste immobile. Si l'objet traqué est à droite, le drone va tenter de bouger à droite pour se recentrer. + +\begin{figure} + \centering + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/capture/tracking.PNG} + \end{minipage} + \hfill + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/capture/tracking2.PNG} + \end{minipage} + \caption[Détection et suivi d'un feutre.]{Détection et suivi d'un feutre. A gauche, un rectangle rouge sélectionne les points d'intérêt autour du feutre, cela va déclencher l'apprentissage des cellules et leur association à un objet (ici, le feutre). A droite, l'apprentissage est effectué, le feutre est déplacé à droite et le marqueur "Objet\_1" suit bien la position. Juste en dessous, une commande en y de 0.93 est envoyée demandant donc au drone de déplacer à droite.}\label{fig:tracking} +\end{figure} + +\section{Script n°3 : Association sensori-motrice} + +Dans cette partie il s'agit d'une application concrète de l'architecture PerAc. L'idée est d'associer le contrôle de la boussole aux cellules de vue afin de reproduire un comportement similaire à l'asservissement de l'orientation. \ref{fig:perac_joy} + +\begin{figure} + \centering + \begin{minipage}{0.8\textwidth} + \includegraphics[width=\textwidth]{images/schema/perac_joy.png} + \end{minipage} + \caption[Association sensori-motrice]{Association sensori-motrice. En entrée, la boussole est décomposée en un vecteur de neurone. Le vecteur est ensuite lié directement au vecteur d'association. Ce dernier reçoit en plus les cellules de lieu/vue apprises en entrée. Le lien conditionnel signifie que les poids peuvent être modifiés, d'ailleurs le vecteur d'association réalise un apprentissage LMS. Ainsi les poids associés aux cellules apprennent la valeur actuelle de la boussole. Joystick nous sert à enclencher l'apprentissage des cellules mais aussi de l'association boussole / cellules. Enfin, lorsque l'association est terminée, la partie boussole peut être retirée, on peut alors observer le comportement en sortie du bloc LMS et voir si cellules ont effectivement appris les bonnes valeurs de boussole. On peut alors utiliser cette valeur de boussole comme orientation désirée dans l'asservissement de la rotation.\ref{algo:boussole}}\label{fig:perac_joy} +\end{figure} + +\section{Discussion de l'angle d'ouverture de la caméra} + +Comme observé dans les précédentes expériences, la vision de la caméra est très vaste avec un angle d'ouverture de plus de 130° (calcul en annexe \ref{chap:angle}). Dû à cet angle, il est difficile pour un objet éloigné en mouvement de remarquer les variations de pixels. Cela a donc un impact sur flot optique qui est réduit, mais aussi sur la capacité à différencier des vues proches. A l'inverse, l'angle est trop faible pour pouvoir apprendre des cellules de lieu qui nécessitent au moins une vision sur 270°. + +\begin{figure} + \centering + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/courbes/ang_hum1.png} + \end{minipage} + \hfill + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/courbes/ang_hum2.png} + \end{minipage} + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/courbes/ang_bat1.png} + \end{minipage} + \hfill + \begin{minipage}{0.45\textwidth} + \includegraphics[width=\textwidth]{images/courbes/ang_bat2.png} + \end{minipage} + \caption[Études de la variation de la distance à la caméra.]{Études de la variation de la distance à la caméra. Les deux études portent sur des variations de 10 m. Pour le haut, très rapidement la taille d'un humain de 2 m quasiment plus à la caméra après 30 m. Au delà , trop peu de pixels restent pour traiter un objet de taille humaine dans le cas de détection d'objet. Pour le bas, la variation est de l'ordre du pixel après 200 m. Il devient alors difficile de distinguer la différence entre deux prise de vue espacée de 10 M dans le cas de l'apprentissage de cellules de vue.}\label{fig:angle_plot} +\end{figure} + +\ref{fig:angle_plot} + +Le choix d'un telle lentille a donc eu définitivement un impact sur les expériences. Il pourrait être intéressant de réfléchir à un remplacement de lentille/caméra pour un angle plus aigu, ou bien octroyer la capacité à la caméra de tourner sur plusieurs axes (monture sur un servomoteur par exemple) afin de capturer tout un panorama. \ No newline at end of file diff --git a/Doc/2023/Source_latex/chapitre8.tex b/Doc/2023/Source_latex/chapitre8.tex new file mode 100644 index 0000000000000000000000000000000000000000..1a3ebbe506ee584a9f54242cb2276d6fe649903e --- /dev/null +++ b/Doc/2023/Source_latex/chapitre8.tex @@ -0,0 +1,31 @@ +\section{Synthèse} + +Pour résumer, le projet s’est déroulé en trois phases, chacune étant essentielle à la réalisation du projet. La première phase implique la remise en fonctionnement du drone tant au niveau hardware que la communication. La deuxième phase se concentre sur l'étude des performances du drone et du respect du cahier des charges, notamment sur l'aspect temps-réel. Enfin, la troisième partie a permis la mise en place de scripts algorithmiques de navigation du flot optique aux cellules de vue. + +En somme, ces phases ont permis de montrer la faisabilité d'un tel système. + +\section{Difficultés rencontrées et améliorations possibles} + +Au cours de la période du stage, le projet n'aura pas été exempt de défauts. La première critique serait sur la caméra. Comme mentionnée précédemment, elle possède un angle trop grand pour des applications de suivi mais trop faible pour des applications de reconnaissance de lieux. Une solution serait de soit changer la lentille ou bien d'ajouter à la caméra la capacité de s'articuler afin d'obtenir une vue panoramique.\\ + +Le drone étant un véhicule assez dangereux, il est arrivé plusieurs fois que le drone fasse des chutes auto-destructrices. Souvent, il fallait alors changer les composants défectueux ou en racheter. Il faut donc retenir à l'avenir que ce type de système nécessite toujours de pièces de rechanges.\\ + +Un autre critique est à faire sur le choix des batteries. En effet bien que les batteries LiPo à 3 cellules (11.1V) suffisent pour le fonctionnement du drone, elle sont en réalité légèrement sous dimensionnées. Pour un test de 10 min., une batterie 11.1V 6000mAh n'est plus en mesure de fournir assez de tension, tandis qu'elle est encore à 50 \% de sa capacité. A l'avenir, il serait potentiellement plus judicieux d'opter pour une batterie LiPo à 4 cellules (14.8V).\\ + +Le temps aura également un facteur critique durant le stage. Certains études de performance se sont vue écourtée au profit d'autre. Notamment le script n°3 qui n'est encore qu'en phase de test, et qui donc n'a pas pu fournir de résultats.\\ + +Un point non mentionné dans ce rapport (mais visible dans le Gantt\ref{fig:gantt}) est l'abandon de l'utilisation du simulateur de vol AirSim. Dû à l'abandon par les développeur eux-même, et l'incompatibilité de versions entre les OS, il est devenu très difficile de faire fonctionner ce simulateur. Il est encore une fois question d'une contrainte de temps qui empêchait l'exploitation de cette piste qui aurait pu s'avérer très utile pour diminuer les crash de drones.\\ + +Autre point sur les scripts déployés, ils sont dans le cadre de ce stage relativement peu complexe (mouvement latéral uniquement, ou bien rotation uniquement). Un piste intéressant serait d'ajouter une information supplémentaire dans la modélisation de l'hippocampe qui est l'élévation. Avec cet élévation, une navigation 3D serait envisageable en ajoutant un axe vertical.\\ + +Enfin, un dernier point méritant qu'on s'y penche dessus, est le fonctionnement du couple caméra flot optique / capteur ultrason. Ces capteurs très performants s'avèrent possiblement être une amélioration du drone. Les inclure pour faire fonctionner en tandem avec les capteurs déjà présents serait une tâche à considérer, il serait dommage de s'en priver.\\ + +\section{Bilan des compétences acquises} + +La réalisation de ce projet m’a permis d’acquérir des compétences techniques et transversales.\\ + +Tout d'abord, j'ai eu l'occasion de consolider mes connaissances en matière de réseau de neurones, notamment leur connexion avec les modèles biologiques. Le développement de solutions pour le programme fly\_monitor en C++, sous l’environnement Linux, s’est avérée être une compétence très bénéfique pour mon future parcours.\\ + +J'ai pu également renforcé mes connaissances en électronique grâce aux contacts quotidiens avec les composants déployés pour le système, sans oublier mes compétences manuelles pour souder et monter le drone.\\ + +Enfin, j'ai pu développer ma rigueur et mon autonomie lors de la prise de connaissance des travaux réalisés au sein d'ETIS et la préparation des test de vol pour assurer la sécurité, en particuliers lors de la manipulation d'un véhicule potentiellement dangereux.\\ diff --git a/Doc/2023/Source_latex/ensea.jpg b/Doc/2023/Source_latex/ensea.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01b9f886c0f147c0e49ca1dc2af3fd510f58a299 Binary files /dev/null and b/Doc/2023/Source_latex/ensea.jpg differ diff --git a/Doc/2023/Source_latex/etis.jpg b/Doc/2023/Source_latex/etis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3d774e3ac1fff663c48b1043391726af60797ce Binary files /dev/null and b/Doc/2023/Source_latex/etis.jpg differ diff --git a/Doc/2023/Source_latex/images/ETIS_AN.jpg b/Doc/2023/Source_latex/images/ETIS_AN.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df610f2d9455b529ac715db5e43a7b129a3e93e5 Binary files /dev/null and b/Doc/2023/Source_latex/images/ETIS_AN.jpg differ diff --git a/Doc/2023/Source_latex/images/atelier.jpg b/Doc/2023/Source_latex/images/atelier.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b1a1e1cdfbda823d4e6fd7911bb4671dd1220de1 Binary files /dev/null and b/Doc/2023/Source_latex/images/atelier.jpg differ diff --git a/Doc/2023/Source_latex/images/box.jpg b/Doc/2023/Source_latex/images/box.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b5f36c62ac2ec5a0aec1ddb3e710640e13a2d56 Binary files /dev/null and b/Doc/2023/Source_latex/images/box.jpg differ diff --git a/Doc/2023/Source_latex/images/capture/alpha.png b/Doc/2023/Source_latex/images/capture/alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..70e4d16181c69413869f8247a55bf8c17522a848 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/alpha.png differ diff --git a/Doc/2023/Source_latex/images/capture/alpha_0_1.png b/Doc/2023/Source_latex/images/capture/alpha_0_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce80ea1a46fbfcb697778f65437e06a5aec2624 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/alpha_0_1.png differ diff --git a/Doc/2023/Source_latex/images/capture/alpha_0_4.png b/Doc/2023/Source_latex/images/capture/alpha_0_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca4b76a8f48525e1513a6fd2e4444a473d6e738 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/alpha_0_4.png differ diff --git a/Doc/2023/Source_latex/images/capture/alpha_3_0.png b/Doc/2023/Source_latex/images/capture/alpha_3_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e867e53849f8d91ed70c8fa1cd19628347948e75 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/alpha_3_0.png differ diff --git a/Doc/2023/Source_latex/images/capture/coeos.PNG b/Doc/2023/Source_latex/images/capture/coeos.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6bc25db5abf166574dd4951ea310c7c699beaa2d Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/coeos.PNG differ diff --git a/Doc/2023/Source_latex/images/capture/coeos_alt.png b/Doc/2023/Source_latex/images/capture/coeos_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..cba5c1cd871decbc62c6311b00103454cdd67ced Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/coeos_alt.png differ diff --git a/Doc/2023/Source_latex/images/capture/coeos_comp.png b/Doc/2023/Source_latex/images/capture/coeos_comp.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbbee9d6d4815f38cfff89347e960d37e944d40 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/coeos_comp.png differ diff --git a/Doc/2023/Source_latex/images/capture/flot.png b/Doc/2023/Source_latex/images/capture/flot.png new file mode 100644 index 0000000000000000000000000000000000000000..8e64be80e04d9b366ebc7e1b9e332f353c56d635 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/flot.png differ diff --git a/Doc/2023/Source_latex/images/capture/freq_calc.png b/Doc/2023/Source_latex/images/capture/freq_calc.png new file mode 100644 index 0000000000000000000000000000000000000000..972606103efdaef252e5f5ac636c0ef877853997 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/freq_calc.png differ diff --git a/Doc/2023/Source_latex/images/capture/grand_R_10.png b/Doc/2023/Source_latex/images/capture/grand_R_10.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5a504ab9ab913b88a85a70590d920a68ff373c Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/grand_R_10.png differ diff --git a/Doc/2023/Source_latex/images/capture/grand_R_100.png b/Doc/2023/Source_latex/images/capture/grand_R_100.png new file mode 100644 index 0000000000000000000000000000000000000000..181f306c25f569888133f57e1015c6f418935afa Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/grand_R_100.png differ diff --git a/Doc/2023/Source_latex/images/capture/grand_R_30.png b/Doc/2023/Source_latex/images/capture/grand_R_30.png new file mode 100644 index 0000000000000000000000000000000000000000..fa210d89edea3810a446509a842afe7d252dd104 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/grand_R_30.png differ diff --git a/Doc/2023/Source_latex/images/capture/promethe.png b/Doc/2023/Source_latex/images/capture/promethe.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2a95e0f7625f16174f78a6f2272ca7a6550d90 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/promethe.png differ diff --git a/Doc/2023/Source_latex/images/capture/qgc.png b/Doc/2023/Source_latex/images/capture/qgc.png new file mode 100644 index 0000000000000000000000000000000000000000..02a7022fe14987ff17adf82693a2a7608a24e270 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/qgc.png differ diff --git a/Doc/2023/Source_latex/images/capture/tracking.PNG b/Doc/2023/Source_latex/images/capture/tracking.PNG new file mode 100644 index 0000000000000000000000000000000000000000..0e316696f804f08d1d0e182d2325d222fbc0d4cc Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/tracking.PNG differ diff --git a/Doc/2023/Source_latex/images/capture/tracking2.PNG b/Doc/2023/Source_latex/images/capture/tracking2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b729c527244f93d548b83857abaca5d15ddc7a80 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/tracking2.PNG differ diff --git a/Doc/2023/Source_latex/images/capture/view_coeos.png b/Doc/2023/Source_latex/images/capture/view_coeos.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f9188c62efeb3584f9c301cdf8b36515cb3878 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/view_coeos.png differ diff --git a/Doc/2023/Source_latex/images/capture/view_plot_l.png b/Doc/2023/Source_latex/images/capture/view_plot_l.png new file mode 100644 index 0000000000000000000000000000000000000000..de76657a7ed6cef50307670b86253475c444d64f Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/view_plot_l.png differ diff --git a/Doc/2023/Source_latex/images/capture/view_plot_t.png b/Doc/2023/Source_latex/images/capture/view_plot_t.png new file mode 100644 index 0000000000000000000000000000000000000000..970124432ee6aea9a937871e39df98ef8bd91a0f Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/view_plot_t.png differ diff --git a/Doc/2023/Source_latex/images/capture/view_temoin.png b/Doc/2023/Source_latex/images/capture/view_temoin.png new file mode 100644 index 0000000000000000000000000000000000000000..d2049301ea5e439f11d75f99a2cf160829b9f2c6 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/view_temoin.png differ diff --git a/Doc/2023/Source_latex/images/capture/view_test0.png b/Doc/2023/Source_latex/images/capture/view_test0.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcb62154d149aa1f0bafedf9b241a5e6ac09471 Binary files /dev/null and b/Doc/2023/Source_latex/images/capture/view_test0.png differ diff --git a/Doc/2023/Source_latex/images/courbes/ang_bat1.png b/Doc/2023/Source_latex/images/courbes/ang_bat1.png new file mode 100644 index 0000000000000000000000000000000000000000..bddb02ec0512fa8eae4d0d64fcce1c791df78841 Binary files /dev/null and b/Doc/2023/Source_latex/images/courbes/ang_bat1.png differ diff --git a/Doc/2023/Source_latex/images/courbes/ang_bat2.png b/Doc/2023/Source_latex/images/courbes/ang_bat2.png new file mode 100644 index 0000000000000000000000000000000000000000..29ae647249488fda14dde1fecd4952316f02ad13 Binary files /dev/null and b/Doc/2023/Source_latex/images/courbes/ang_bat2.png differ diff --git a/Doc/2023/Source_latex/images/courbes/ang_hum1.png b/Doc/2023/Source_latex/images/courbes/ang_hum1.png new file mode 100644 index 0000000000000000000000000000000000000000..36355c9d4fa838e789bb28c94c0245570c0f27fb Binary files /dev/null and b/Doc/2023/Source_latex/images/courbes/ang_hum1.png differ diff --git a/Doc/2023/Source_latex/images/courbes/ang_hum2.png b/Doc/2023/Source_latex/images/courbes/ang_hum2.png new file mode 100644 index 0000000000000000000000000000000000000000..e88b7e6fedb47cf2018fc8fb13a98a2d321386ed Binary files /dev/null and b/Doc/2023/Source_latex/images/courbes/ang_hum2.png differ diff --git a/Doc/2023/Source_latex/images/courbes/freq_plot.png b/Doc/2023/Source_latex/images/courbes/freq_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..a2623ef8789f6700c5ea6bf7cc613a72a55aa7d0 Binary files /dev/null and b/Doc/2023/Source_latex/images/courbes/freq_plot.png differ diff --git a/Doc/2023/Source_latex/images/courbes/plot_alt_comp.png b/Doc/2023/Source_latex/images/courbes/plot_alt_comp.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4da4f61157bddb0a4e117be20d391f70907166 Binary files /dev/null and b/Doc/2023/Source_latex/images/courbes/plot_alt_comp.png differ diff --git a/Doc/2023/Source_latex/images/drone/barometer.PNG b/Doc/2023/Source_latex/images/drone/barometer.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c7c35a187bad797068bd2a01fdb492af7096a27e Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/barometer.PNG differ diff --git a/Doc/2023/Source_latex/images/drone/battery.png b/Doc/2023/Source_latex/images/drone/battery.png new file mode 100644 index 0000000000000000000000000000000000000000..e05fe14787d4e8513202f79326cf883bd32a06bb Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/battery.png differ diff --git a/Doc/2023/Source_latex/images/drone/camera.png b/Doc/2023/Source_latex/images/drone/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..37f70c1fc019239d76661af4e6894f4661d13a6e Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/camera.png differ diff --git a/Doc/2023/Source_latex/images/drone/esc.png b/Doc/2023/Source_latex/images/drone/esc.png new file mode 100644 index 0000000000000000000000000000000000000000..d2fdc0db0a5736350ad7f61083ea6466e2d6a116 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/esc.png differ diff --git a/Doc/2023/Source_latex/images/drone/fil_a_la_patte.jpg b/Doc/2023/Source_latex/images/drone/fil_a_la_patte.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61115ce9c7041ec302631c583e07a27119c0bef1 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/fil_a_la_patte.jpg differ diff --git a/Doc/2023/Source_latex/images/drone/gps.png b/Doc/2023/Source_latex/images/drone/gps.png new file mode 100644 index 0000000000000000000000000000000000000000..9f126dad29e8c0ead58087c06269c7d7eb446626 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/gps.png differ diff --git a/Doc/2023/Source_latex/images/drone/imu.jpg b/Doc/2023/Source_latex/images/drone/imu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b43ef9ee4e677c02284c17a88f9e637293cfb70 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/imu.jpg differ diff --git a/Doc/2023/Source_latex/images/drone/joystick.png b/Doc/2023/Source_latex/images/drone/joystick.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca8ca797fcaaceb0d38b51428fe8f7eeb1d2fae Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/joystick.png differ diff --git a/Doc/2023/Source_latex/images/drone/magnetometer.jpg b/Doc/2023/Source_latex/images/drone/magnetometer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1cb47ef5642abd5daaf14aeed7ccaf73791dbbcf Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/magnetometer.jpg differ diff --git a/Doc/2023/Source_latex/images/drone/motor.png b/Doc/2023/Source_latex/images/drone/motor.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e45b1d8b06230a9745ec4ccd6923dde85eab9a Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/motor.png differ diff --git a/Doc/2023/Source_latex/images/drone/pixhawk4.jpg b/Doc/2023/Source_latex/images/drone/pixhawk4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f28b0534fa40b74cde4c3bda9380398ff5da6c0e Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/pixhawk4.jpg differ diff --git a/Doc/2023/Source_latex/images/drone/power.jpg b/Doc/2023/Source_latex/images/drone/power.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78f7d8982e74a6ea7a7fa1c6d66ff021527a3f24 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/power.jpg differ diff --git a/Doc/2023/Source_latex/images/drone/protection_helice.jpg b/Doc/2023/Source_latex/images/drone/protection_helice.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b38fda337764d170a9af4d3120c708b4b68ffa08 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/protection_helice.jpg differ diff --git a/Doc/2023/Source_latex/images/drone/px4flow.jpg b/Doc/2023/Source_latex/images/drone/px4flow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3939d4b18ee18ade149d4a298b43bf70d541dd76 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/px4flow.jpg differ diff --git a/Doc/2023/Source_latex/images/drone/receiver.png b/Doc/2023/Source_latex/images/drone/receiver.png new file mode 100644 index 0000000000000000000000000000000000000000..a99d9e2c4469dfc949d23c1d5fd696680b4cb3c4 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/receiver.png differ diff --git a/Doc/2023/Source_latex/images/drone/telemetry.png b/Doc/2023/Source_latex/images/drone/telemetry.png new file mode 100644 index 0000000000000000000000000000000000000000..2812ed886c03ba2a19751ad6435384a17845fbf1 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/telemetry.png differ diff --git a/Doc/2023/Source_latex/images/drone/transmitter.png b/Doc/2023/Source_latex/images/drone/transmitter.png new file mode 100644 index 0000000000000000000000000000000000000000..5935d245841c0a652bf2bee10830e474e2e5cd72 Binary files /dev/null and b/Doc/2023/Source_latex/images/drone/transmitter.png differ diff --git a/Doc/2023/Source_latex/images/gantt.pdf b/Doc/2023/Source_latex/images/gantt.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fb7292209747228042c30a639e5c395285434f66 Binary files /dev/null and b/Doc/2023/Source_latex/images/gantt.pdf differ diff --git a/Doc/2023/Source_latex/images/hierarchie.png b/Doc/2023/Source_latex/images/hierarchie.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea136c5ca53fb52d0e35c8de080988aa9d7a951 Binary files /dev/null and b/Doc/2023/Source_latex/images/hierarchie.png differ diff --git a/Doc/2023/Source_latex/images/plateforme.png b/Doc/2023/Source_latex/images/plateforme.png new file mode 100644 index 0000000000000000000000000000000000000000..4eaa0ab3b2ec4d81ca15f62e090e5ee23bbdf8ff Binary files /dev/null and b/Doc/2023/Source_latex/images/plateforme.png differ diff --git a/Doc/2023/Source_latex/images/schema/deadline.png b/Doc/2023/Source_latex/images/schema/deadline.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f0787c92e5c238799d48a5a025ddfcdb7d110c Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/deadline.png differ diff --git a/Doc/2023/Source_latex/images/schema/dog.png b/Doc/2023/Source_latex/images/schema/dog.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c854955e3790d111f81ba148b5be0e296b9433 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/dog.png differ diff --git a/Doc/2023/Source_latex/images/schema/dog2.png b/Doc/2023/Source_latex/images/schema/dog2.png new file mode 100644 index 0000000000000000000000000000000000000000..afb8ce590e4895526a8a75e0c47687b1a6364c5f Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/dog2.png differ diff --git a/Doc/2023/Source_latex/images/schema/draw_angle.png b/Doc/2023/Source_latex/images/schema/draw_angle.png new file mode 100644 index 0000000000000000000000000000000000000000..4454cf99c5b5c64c3c7485b7e8a93eb5879d2a06 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/draw_angle.png differ diff --git a/Doc/2023/Source_latex/images/schema/flow.png b/Doc/2023/Source_latex/images/schema/flow.png new file mode 100644 index 0000000000000000000000000000000000000000..4c58560c485002c7704fad536ab3afcec575d8cb Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/flow.png differ diff --git a/Doc/2023/Source_latex/images/schema/fly_monitor.png b/Doc/2023/Source_latex/images/schema/fly_monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e360394cdf784375299a7e6a3873a1992dd5cb Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/fly_monitor.png differ diff --git a/Doc/2023/Source_latex/images/schema/hebb.PNG b/Doc/2023/Source_latex/images/schema/hebb.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a6dbd0895458cfcb6e904c08d2bfe8c9e8b6d434 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/hebb.PNG differ diff --git a/Doc/2023/Source_latex/images/schema/hippocampus.png b/Doc/2023/Source_latex/images/schema/hippocampus.png new file mode 100644 index 0000000000000000000000000000000000000000..74cef6ff646a16c1daaebe214f581db9af004920 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/hippocampus.png differ diff --git a/Doc/2023/Source_latex/images/schema/memoire.png b/Doc/2023/Source_latex/images/schema/memoire.png new file mode 100644 index 0000000000000000000000000000000000000000..005dd2a6ee05db24d00f4897556d5b2704e47125 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/memoire.png differ diff --git a/Doc/2023/Source_latex/images/schema/neuron.PNG b/Doc/2023/Source_latex/images/schema/neuron.PNG new file mode 100644 index 0000000000000000000000000000000000000000..3c809fc541a0e8e385f38b5ad7dd843416e916be Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/neuron.PNG differ diff --git a/Doc/2023/Source_latex/images/schema/perac.PNG b/Doc/2023/Source_latex/images/schema/perac.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5717516af422d631affdc596831bd4cf7815c666 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/perac.PNG differ diff --git a/Doc/2023/Source_latex/images/schema/perac_joy.png b/Doc/2023/Source_latex/images/schema/perac_joy.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7ec390f8747e8e5ba0c018a512791a1585cb22 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/perac_joy.png differ diff --git a/Doc/2023/Source_latex/images/schema/roll_pitch_yaw.png b/Doc/2023/Source_latex/images/schema/roll_pitch_yaw.png new file mode 100644 index 0000000000000000000000000000000000000000..876dc871bd8e4bf6a90e52519d87d9a6cf6833b8 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/roll_pitch_yaw.png differ diff --git a/Doc/2023/Source_latex/images/schema/synoptic.png b/Doc/2023/Source_latex/images/schema/synoptic.png new file mode 100644 index 0000000000000000000000000000000000000000..86d6c2df62089d6ddb39d772e60bbd08dc85d952 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/synoptic.png differ diff --git a/Doc/2023/Source_latex/images/schema/wta.PNG b/Doc/2023/Source_latex/images/schema/wta.PNG new file mode 100644 index 0000000000000000000000000000000000000000..25b6a2e168dffc80b641194a61ff943f6153c799 Binary files /dev/null and b/Doc/2023/Source_latex/images/schema/wta.PNG differ diff --git a/Doc/2023/Source_latex/images/setup.jpg b/Doc/2023/Source_latex/images/setup.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38b27dd687444b7bfc3d6f87800e5c196dbc840f Binary files /dev/null and b/Doc/2023/Source_latex/images/setup.jpg differ diff --git a/Doc/2023/Source_latex/introduction.tex b/Doc/2023/Source_latex/introduction.tex new file mode 100644 index 0000000000000000000000000000000000000000..8652725d29c1c4f800975810fc8be7a027a93b3d --- /dev/null +++ b/Doc/2023/Source_latex/introduction.tex @@ -0,0 +1,12 @@ +\markboth{\MakeUppercase{Introduction}}{}% +\addcontentsline{toc}{chapter}{Introduction}% + +%Voici une référence à l'image de la Figure \ref{fig:test} page \pageref{fig:test} et une autre vers la partie \ref{chap:2} page \pageref{chap:2}. +%On peut citer un livre\, \cite{caillois1} et on précise les détails à la fin du rapport dans la partie références. +%Voici une note\footnote{Texte de bas de page} de bas de page\footnote{J'ai bien dit bas de page}. Nous pouvons également citer l'Algorithme \ref{algo1}, la Définition \ref{def1}, le Théorème \ref{theo1} ou l'Exemple \ref{exo1}...\\ + +Ce stage de projet de fin d'études au sein du groupe Neurocybernétique du laboratoire ETIS est une exploration des domaines de l'ingénierie électronique et de l'intelligence artificielle. L'objectif de mon projet est l'intégration d'un réseau neuronal bio-inspiré sur un drone contrôlé par télémétrie à l'aide d'une station au sol, fonctionnant sur un ordinateur portable. L’initiative de la mise en place d’un réseau neuronal bio-inspiré est soutenue par le laboratoire ETIS, qui croit en l'efficacité de cette approche novatrice. + +Dans le domaine de la robotique, les approches classiques ont traditionnellement reposé sur l'implémentation d'algorithmes décrivant de manière explicite les étapes pour accomplir une tâche. Cependant, notre projet évolue vers une approche neuronale avec un modèle plus proche du cerveau et plus généralisable. Notamment, notre réseau neuronal bio-inspiré est principalement conçu pour analyser en temps réel une vidéo en direct, ce qui pose des défis en termes de latence et de temps de traitement des images reçues. Il faut également prendre en compte la structure physique du drone, ainsi que la compatibilité entre les composants électroniques. Ce projet offre l'opportunité de concevoir un système électronique complet, exigeant une rigueur tant dans la préparation de l'environnement (chargement des batteries, vérification du fonctionnement des scripts, prise en compte des cas extrêmes pour garantir la sécurité) avant les tests en vol, que dans l'entretien du drone, incluant le remplacement des composants défaillants et la soudure. Ce rapport de stage examinera la faisabilité du système ainsi que ses performances. + +%Le plan est détaillé comme suit : le chapitre \ref{chap:chapterone} introduit le cadre général de ce travail. Il s'agit de présenter le laboratoire et l'environnement de travail. Le chapitre \ref{chap:2} introduit les données ainsi que les modèles choisies. Le chapitre \ref{chap:3} donne les principaux résultats et la comparaison entre divers modèles (courbe de ROC, indice de Gini). Nous clôturons ce travail par une brève conclusion résumant le travail accompli ainsi que des perspectives qui pourraient enrichir ce travail. \ No newline at end of file diff --git a/Doc/2023/Source_latex/rapport.pdf b/Doc/2023/Source_latex/rapport.pdf new file mode 100644 index 0000000000000000000000000000000000000000..378f47693efb37ad15cfb17fb6acbfb5677644f0 Binary files /dev/null and b/Doc/2023/Source_latex/rapport.pdf differ diff --git a/Doc/2023/Source_latex/rapport.tex b/Doc/2023/Source_latex/rapport.tex new file mode 100644 index 0000000000000000000000000000000000000000..d44629d7f06dd07b5b4bb0cb427251bafd5607a0 --- /dev/null +++ b/Doc/2023/Source_latex/rapport.tex @@ -0,0 +1,404 @@ +%% @Author: Ines Abdeljaoued Tej +% @Date: 2022-06 +%% @Class: PFE de l'ESSAI - Universite de Carthage, Tunisie. + +\documentclass[a4paper, oneside, 12pt, final]{extreport} +\usepackage{graphicx} + +\parindent 0cm +\usepackage{makeidx} +\makeindex + +\usepackage[lined,boxed,commentsnumbered, french, ruled,vlined,linesnumbered]{algorithm2e} +\usepackage{amsthm} +\newtheorem{theorem}{Theorem}[chapter] +\newtheorem{definition}{Definition}[chapter] +\newtheorem{exemple}{Example}[chapter] +\usepackage{hyperref} +\usepackage{wrapfig} +\usepackage{tabularx} + +%\usepackage[nottoc]{tocbibind} +%\addcontentsline{toc}{section}{References} + +\providecommand{\keywords}[1]{\textbf{\textit{Mots clés---}} #1} +\providecommand{\keywordss}[1]{\textbf{\textit{Keywords---}} #1} + +\usepackage{etoolbox} +%\makeatletter +%\patchcmd{\thebibliography}{% +% \chapter*{\bibname}\@mkboth{\MakeUppercase\bibname}%{\MakeUppercase\bibname}}{% +% \section{References}}{}{} +%\makeatother + + + +\usepackage[nottoc]{tocbibind} + +\textwidth 18cm +\textheight 24cm +\topmargin -0.5cm +\oddsidemargin -1cm + +% set font encoding for PDFLaTeX or XeLaTeX +\usepackage{ifxetex} +\ifxetex + \usepackage{fontspec} +\else + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{lmodern} +\fi + + +% Enable SageTeX to run SageMath code right inside this LaTeX file. +% documentation: http://mirrors.ctan.org/macros/latex/contrib/sagetex/sagetexpackage.pdf +%\usepackage{sagetex} + +% subfigure +\usepackage{subcaption} + +\newcommand{\reportTitle} {% + %\textsc{Graduation Project Report} + \textsc{Projet de Fin d'\'etudes} +} + +\newcommand{\reportAuthor} {% + St\'ephane \textsc{Yang}% +} + +\newcommand{\reportSubject} {% + Application de réseaux de neurones \\ pour la navigation - Simulation sur drone +} + +\newcommand{\dateSoutenance} {% + 26/10/2023% +} + +\newcommand{\studyDepartment} {% + Laboratoire ETIS - campus CY Saint-Martin %Statistique +} + +\newcommand{\ENSEA} {% + %Higher School of Statistics and Information Analysis + École Nationale Sup\'erieure de l'\'Electronique et de ses Applications +} + +%\newcommand{\codePFE} {% Reference +% Code PFE% +%} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Add your own commands here +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\MyCommand} {% + Does nothing really% +} + + +% used in maketitle +\title{\reportSubject} +\author{\reportAuthor} + +% Enable SageTeX to run SageMath code right inside this LaTeX file. +% documentation: http://mirrors.ctan.org/macros/latex/contrib/sagetex/sagetexpackage.pdf +%\usepackage{sagetex} + +%\hypersetup{ +% pdftitle={\reportTitle~-~\reportSubject},% +% pdfauthor={\reportAuthor},% +% pdfsubject={\reportSubject},% +% pdfkeywords={report} {internship} {pfe} {enis} +%} + +\usepackage{graphics} +\usepackage{graphicx} + + +\usepackage[acronym,toc,section=chapter]{glossaries} +\makeglossaries +\renewcommand{\acronymname}{Lexique} + +\newacronym{ENSEA}{ENSEA}{École nationale supérieure de l'électronique et de ses applications} +\newacronym{ETIS}{ETIS}{Équipes Traitement de l'Information et Systèmes} +\newacronym{UMR8051}{UMR8051}{Unité Mixte de Recherche de l’Université de Cergy-Paris Université de l’ENSEA et du CNRS} +\newacronym{Autopilote}{Autopilote}{Coeur (commande des moteurs) et cerveau (asservissements, gestion de MAVLink) du drone} +\newacronym{Fly Monitor}{Fly Monitor}{Nom du projet} +\newacronym{fly\string_monitor}{fly\string_monitor}{Nom du code C++ gérant tous les threads et la communication entre eux} +\newacronym{threads}{threads}{Fils d’exécution (par exemple, les fils de réception et de lecture du port série)} +\newacronym{MAVLink}{MAVLink}{Protocole de communication pour les messages envoyés par télémétrie} +\newacronym{MAVSDK}{MAVSDK}{Implémentation du protocole MAVLink pour divers types de véhicules en code C++} +\newacronym{firmware}{firmware}{Logiciel embarqué} +\newacronym{PX4}{PX4}{Firmware implanté dans l’autopilote Pixhawk 4} +\newacronym{QGC}{QGC}{QGroundControl} +\newacronym{ESC}{ESC}{Electronic speed control, circuit électronique contrôlant et régulant la vitesse d’un moteur électrique.} +\newacronym{IMU}{IMU}{Inertial Measurement Unit, circuit électronique contenant 3 gyroscopes et 3 accéléromètres.} +\newacronym{datasets}{datasets}{Jeu de données, dans le cadre de ce rapport, les images prises par la caméra du drone pour un certain parcours.} +\newacronym{UAV}{UAV}{Unmanned Aerial Vehicle, véhicule aérien sans pilote qui peut voler de façon autonome ou être contrôlé à distance depuis le sol.} +\newacronym{DOG}{DOG}{Difference Of Gaussian, différence de gaussiennes} + +\pagenumbering{roman} + +\usepackage[utf8]{inputenc} +\usepackage[french]{babel} + +\begin{document} +\thispagestyle{empty} +\begin{titlepage} +\begin{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% THE HEADER +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure} +\begin{subfigure}{.5\textwidth} +\centering +\includegraphics[width=0.6\textwidth]{etis.jpg} +\par\vspace{1cm} +\end{subfigure}% +\begin{subfigure}{.5\textwidth} +\centering +\includegraphics[width=0.3\textwidth]{ensea.jpg} +\par\vspace{1cm} %Insertion du logo Ecole +\end{subfigure} +\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% THE PAGE CONTENT +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +{% +\renewcommand*{\familydefault}{\defaultFont} +\fontsize{46pt}{46pt}\selectfont% +% MEMOIRE\\% +%\reportTitle{}%\\\textsc{Report}\\% +} + +%\vspace{5pt} + +\vspace{1cm} +{\textit{Rapport de Projet de Fin d'Etudes soumis afin d'obtenir le}}\\ + +\vspace{0.3cm} +{\textbf{\large Diplôme National d'Ingénieur en \'Electronique \\ \small Mention Signal et Intelligence Artificielle}}\\ + +%\includegraphics[scale=0.4]{logo-essai.jpg}\\ + +\vspace{0.1cm} +\textbf{\textit{Réalisé par}}\\ +\vspace{0.2cm} {% +\fontsize{14pt}{14pt}\selectfont% +{\bfseries\Large\sc \reportAuthor}\\ +}% + +\vspace{5pt} {% +\renewcommand*{\familydefault}{\defaultFont} +\fontsize{27pt}{27pt}\selectfont% +\rule{0.5\textwidth}{.4pt}\\ +\vspace{10pt} +\reportSubject{}\\% +\vspace{10pt} +\rule{0.5\textwidth}{.4pt} +} + +% Dates +\vspace{0.5cm} +{\large 09 mai 2023 - 27 octobre 2023 \par} +\vspace{6cm} + +% Représentants de l'étudiant +\begin{minipage}{0.5\textwidth} + \begin{flushleft} + \emph{\textbf{Encadreuse école :}}\\ + \textsc{Roseline Descout-Rénier} \\ + roseline.descout-renier@ensea.fr \\ + \end{flushleft} +\end{minipage} +~ +\begin{minipage}{0.4\textwidth} + \begin{flushright} + \emph{\textbf{Tuteur laboratoire :}} \\ + \textsc{Philippe Gaussier} \\ + gaussier@ensea.fr + \end{flushright} +\end{minipage} + +\vfill + +\textbf{\textit{Projet de Fin d'Etudes fait au}}\\ +\studyDepartment\\ +%\includegraphics[scale=0.4]{logo-studyDepartment.jpg} +\end{center} +\end{titlepage} + +% ############################### +% # HELP COMMANDS # +% ############################### +% +% -1 \part{part} +% 0 \chapter{chapter} +% 1 \section{section} +% 2 \subsection{subsection} +% 3 \subsubsection{subsubsection} +% 4 \paragraph{paragraph} +% 5 \subparagraph{subparagraph} + +%\setlength{\headheight}{-100pt} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Dédicace et Remerciements +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\chapter*{D\'edicace} +%\thispagestyle{empty} +%\begin{center} +%{\it + +%A ... pour son(leur) sacrifice et son(leur) soutien, \\ +%en témoignage de mon infinie reconnaissance et mon profond attachement \\ +%\vspace{1cm} +%A tous ceux qui me sont chers... + +%} +%\end{center} +% +%\nopagebreak{% +% And maybe a quote here +% \raggedright\hspace{5.75cm} To all of you,~\\ +%\raggedright\hspace{7.75cm} I dedicate this work. +% \raggedleft\normalfont\large\itshape{} \reportAuthor\par% +%} +% +%\cleardoublepage% + +\chapter*{Remerciements} +%\addcontentsline{toc}{chapter}{Thanks} +\thispagestyle{empty} +% +Au terme de ce travail, je tiens à remercier Philippe Gaussier, pour la confiance qu'il m'a accordée en acceptant d'encadrer ce travail, pour ses multiples conseils et pour sa disponibilité.\\ + +Je tiens également à remercier à tous mes prédécesseurs pour les travaux légués, sans qui, le projet commencerait de zéro : Paul Chevalier, Aminata Barry, Sylvain Colomer.\\ + +Mes remerciements vont aussi à ma tutrice, Roseline Descout-Rénier, pour m’avoir encadré et fourni des conseils utiles pour le stage.\\ + +Pour finir, je remercie le secrétariat Virginie Laizet et Aude Marquet pour leur spontanéité lors des commandes de composants, ainsi que tous les collègues stagiaires. + +\input{abstract.tex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Divers chapitres +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\tableofcontents +%\addcontentsline{toc}{chapter}{\contentsname} + +\listoffigures +%\addcontentsline{toc}{chapter}{Liste des Figures} +\listoftables +%\addcontentsline{toc}{chapter}{Liste des Tableaux} +\listofalgorithms +\addcontentsline{toc}{chapter}{Liste des algorithmes} +\cleardoublepage + +\newpage +\pagenumbering{arabic} +\chapter*{Introduction} +\label{chap:general_introduction} +\input{introduction.tex} + + +\chapter{Contexte et cadre}% +\label{chap:chapterone} +\input{chapitre1.tex} + +\chapter{Hardware et logiciels} +\label{chap:2} +\input{chapitre2.tex} + +\chapter{Projet Fly Monitor} +\label{chap:3} +\input{chapitre3.tex} + +\chapter{Réseaux de neurones} +\label{chap:4} +\input{chapitre4.tex} + +\chapter{Script n°0 : Asservissement} +\label{chap:5} +\input{chapitre5.tex} + +\chapter{Script n°1 : Asservissement visuel} +\label{chap:6} +\input{chapitre6.tex} + +\chapter{Script n°2 \& n°3 : Les modèles neuronaux} +\label{chap:7} +\input{chapitre7.tex} + +\chapter{Bilan et perspectives} +\label{chap:8} +\input{chapitre8.tex} + +\chapter*{Conclusion} +\label{chap:conclusion} +\markboth{\MakeUppercase{Conclusion}}{}% +\addcontentsline{toc}{chapter}{Conclusion} +Mon stage au laboratoire d'application de réseaux de neurones pour la navigation de drone a été une expérience inestimable. J'ai eu l'opportunité d'explorer une utilisation innovante de réseaux de neurones telle que les modèles bio-inspirés.\\ + +Au cours de ce stage, j'ai développé des compétences techniques essentielles, notamment la programmation, le traitement d'image et la conception de réseaux de neurones. J'ai également beaucoup renforcé ma rigueur que ce soit pour la préparation de l'environnement de test pour le drone ou le report de tâches effectuée dans un carnet de bord.\\ + +Je suis reconnaissant envers l'équipe du laboratoire pour leur mentorat précieux. Cette expérience a renforcé ma passion pour la recherche dans le domaine de l'IA. J'ai hâte de poursuivre mon parcours dans ce domaine en tant que professionnel engagé, convaincu de l'importance de ces technologies pour notre avenir. + +\newpage +\appendix +\addcontentsline{toc}{chapter}{Annexes} +%\markboth{\MakeUppercase{Annexe}}{} + +\chapter{Ressources personnelles} +\label{chap:appendix} +\input{annexe1.tex} + +\chapter{Sitographie} +\label{chap:sitographie} +\input{annexe2.tex} + +\chapter{Retrouver l’angle d’ouverture d'une caméra} +\label{chap:angle} +\input{annexe3.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Don't touch this, it is auto generated +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\nocite{*} + +%\phantomsection{} +%\addcontentsline{toc}{chapter}{Webography} +%\printbibliography[title={Webography},type=online] + +%\phantomsection{} +%\addcontentsline{toc}{chapter}{Bibliography} +%\printbibliography[title={Bibliography},nottype=online] + +%\printbibheading %exemple de bibliographie divisée en sections. Pour ajouter des oeuvres non citées,utiliser \nocite + +%\printbibliography[keyword=pratique,heading=subbibliography,title={Théories littéraires dans les jeux vidéo}] +%\printbibliography[keyword=litteraire,heading=subbibliography,title={Narratologie et structuralisme}] + +%\printbibliography[keyword=jeu,heading=subbibliography,title={\emph{Games studies}}] + +\bibliographystyle{apalike} +%\bibliographystyle{plain} + +\bibliography{Biblio.bib} + +\cleardoublepage% + +\addtocontents{toc}{\protect\setcounter{tocdepth}{3}} + +\printglossaries +\printindex + +%\input{abstract} + +\end{document} diff --git a/Doc/2023/Support_PFE_YANG_Stephane.pptx b/Doc/2023/Support_PFE_YANG_Stephane.pptx new file mode 100644 index 0000000000000000000000000000000000000000..c7b3fb395f53208163f6b4b719460439c52fea5f Binary files /dev/null and b/Doc/2023/Support_PFE_YANG_Stephane.pptx differ diff --git a/Promethe_scripts/examples/view_cell/learn/view_cell_learn.res b/Promethe_scripts/examples/view_cell/learn/view_cell_learn.res index 9dee28da0a45419833a1da96f5d55c5d4608a5c5..c36da1c96685606b5e40e63132c4f3f7ddde4051 100644 Binary files a/Promethe_scripts/examples/view_cell/learn/view_cell_learn.res and b/Promethe_scripts/examples/view_cell/learn/view_cell_learn.res differ diff --git a/Promethe_scripts/examples/view_cell/test/view_cell_test.res b/Promethe_scripts/examples/view_cell/test/view_cell_test.res index 9dee28da0a45419833a1da96f5d55c5d4608a5c5..c36da1c96685606b5e40e63132c4f3f7ddde4051 100644 Binary files a/Promethe_scripts/examples/view_cell/test/view_cell_test.res and b/Promethe_scripts/examples/view_cell/test/view_cell_test.res differ