diff --git a/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md b/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md index 5284100..c3baf87 100644 --- a/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md +++ b/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md @@ -1,24 +1,46 @@ [order]: # (2) [title]: # (Présentation ArUCO) -[description]: # (Documentation sur les codes ArUCO) +[description]: # (Documentation sur la reconaissance d'ArUCO) -Présentation codes ArUCO +Présentation ArUCO +### Codes ArUCO Un code ArUCO est un marqueur visuel utilisé en vision par ordinateur pour la détection et la position d’objet. -C’est un code carré constitué d’un cadre noir avec à l’intérieur une matrice binaire (noir/blanc) qui permet de -déterminer l’identifiant et l’orientation du code en question. -Afin de pouvoir utiliser les codes ArUCO, on définit les dimensions, le type de codage et la taille utilisé par le choix d’un dictionnaire qui contient les informations permettant de reconnaître correctement les codes. + +C’est un code carré constitué d’un cadre noir avec à l’intérieur une matrice binaire (noir/blanc) qui permet de déterminer l’identifiant et l’orientation du code en question. + +![Image code exemple id 53](/static/images/aruco/codeexemple53.webp){:loading="lazy"} + +Pour utiliser les codes ArUCO, on définit les dimensions, le type de codage et la taille utilisé par le choix d’un dictionnaire qui contient les informations permettant de reconnaître correctement les codes. Dans notre cas, nous utilisons des codes de taille 100x100 mm avec un codage interne 4x4. -Ces codes sont placés sur le robot et sur le plateau. +Ces codes sont placés sur les robots et sur l'aire de jeu du plateau.   -Pour pouvoir analyser un flux d’images, reconnaître les codes et estimer des positions nous avons besoin d’utiliser une bibliothèque de traitement d’image et de données appelé OpenCV. +### OpenCV +Pour pouvoir analyser le flux image d'une caméra, y reconnaître les codes et estimer les positions de ces dernoers, nous avons besoin d’utiliser une bibliothèque de traitement d’image et de données : OpenCV. + +OpenCV (Open Source Computer Vision Library) est une bibliothèque logicielle de vision par ordinateur et d'apprentissage automatique à code source ouvert. +OpenCV a été conçu pour fournir une infrastructure commune pour les applications de vision par ordinateur et pour accélérer l'utilisation de la perception automatique dans les produits commerciaux. +La bibliothèque comprend plus de 2500 algorithmes optimisés, dont un ensemble complet d'algorithmes de vision artificielle et d'apprentissage automatique classiques et de pointe. +Ces algorithmes peuvent être utilisés pour détecter et reconnaître des visages, identifier des objets, suivre les mouvements de caméra, suivre des objets en mouvement, extraire des modèles 3D d'objets, produire des nuages de points 3D à partir de caméras stéréo, assembler des images pour produire une image haute résolution d'une scène entière, trouver des images similaires dans une base de données d'images, reconnaître des paysages et établir des marqueurs pour les superposer à la réalité augmentée, etc. +   -Pour détecter et lire les codes ArUCO : +On l'utilise pour détecter et lire les codes ArUCO : - l’image est analysée pour trouver des formes carrées qui seraient des marqueurs. +Dans cette étape, l'image est analysée afin de trouver des formes carrées susceptibles d'être des marqueurs. Elle commence par un seuillage adaptatif pour segmenter les marqueurs, puis les contours sont extraits de l'image seuillée et ceux qui ne sont pas convexes ou qui ne se rapprochent pas d'une forme carrée sont éliminés. Un filtrage supplémentaire est également appliqué (suppression des contours trop petits ou trop grands, suppression des contours trop proches les uns des autres, etc.) - la codification interne est ensuite lu (matrice de carrés) et les dimensions sont analysé sur l’image transformée pour déterminer s’il y a bien un code appartement au dictionnaire utilisé +Ici, on détermine s'il s'agit bien de marqueurs en analysant leur codification interne. Cette étape commence par l'extraction des bits de chaque marqueur. Pour ce faire, une transformation de perspective est d'abord appliquée pour obtenir le marqueur sous sa forme canonique. Ensuite, l'image canonique est seuillée à l'aide d'Otsu pour séparer les bits blancs et noirs. L'image est divisée en différentes cellules en fonction de la taille du marqueur et de la taille de la bordure. Le nombre de pixels noirs ou blancs dans chaque cellule est ensuite compté pour déterminer s'il s'agit d'un bit blanc ou noir. Enfin, les bits sont analysés pour déterminer si le marqueur appartient au dictionnaire spécifique. - on obtient et enregistre données de positions des coins et orientation du code +   Les codes ArUCO de références sont positionnés sur le plateau dont leurs coordonnées et leurs identifiants sont connus, ce qui permet de les utiliser par caméras afin de récupérer les autres codes par rapport à un de ces codes de référence. + +![Terrain de jeu plateau avec codes](/static/images/aruco/playground.webp){:loading="lazy"} + +Ici, il y a (encadrés orange-rouge) : +-le code 20 en haut à gauche (701 ; 1551) +-le code 21 en haut à droite (2201 ; 1551) +-le code 22 en bas à gauche (701 ; 551) +-le code 23 en bas à droite (2201 ; 551) diff --git a/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md b/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md index e2a5a60..83dc351 100644 --- a/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md +++ b/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md @@ -37,7 +37,7 @@ Lors de l’exécution, on affiche les ids et les coordonnées sur l’image en La fonction nous donne donc la position des 4 coins 1 dans l’image, où le repère (0;0) est placé en haut à gauche de l’image..   -#### "testPosition" +#### "cameraPosition" Cette fonction permet de tester la position du poteau-caméra. En fonction de la caméra et de l’équipe actuelle, cela permet de savoir si caméra est bien placé au bon endroit sur le plateau. diff --git a/pages/Odometrie/PresentationOdometrie.md b/pages/Odometrie/PresentationOdometrie.md index cff7e1b..42d1120 100644 --- a/pages/Odometrie/PresentationOdometrie.md +++ b/pages/Odometrie/PresentationOdometrie.md @@ -2,9 +2,8 @@ [title]: # (Présentation Odométrie) [description]: # (Documentation sur l'odométrie) -L'odométrie est une technique utilisée pour pouvoir estimer la position d'un objet en mouvement -dans l'espace. -L'objet bouge dans une zone et l'odométrie permet d'obtenir sa position le plus précisément possible selon la istuation et l'équpement. +L'odométrie est une technique utilisée pour pouvoir estimer la position d'un objet en mouvement dans l'espace. +L'objet bouge dans une zone et l'odométrie permet d'obtenir sa position le plus précisément possible selon la situation et l'équpement. Dans notre cas, nous voulons estimer la position du robot dans l'air de jeu avec l'odométrie. ![Robot sur le plateau de jeu](/static/images/aruco/robotplateau.webp){:loading="lazy"} @@ -14,10 +13,9 @@ Il existe deux types d'odométrie : l'odométrie relative et l'odométrie absolu ### L'odométrie relative : Elle consiste à obtenir la position actuelle de l'objet par rapport à la position précédente. -On obtient cette position par exemple au moyen de capteurs installés sur l'objet lui- -même. +On obtient cette position par exemple au moyen de capteurs installés sur l'objet lui-même. -Dans notre cas, nous utilisons actuellement un capteur optique avec des lumières pour mesurer le mouvement, et un gyroscope pour la mesure de l'orientation, étant sur le robot. +Dans notre cas, nous utilisons actuellement un capteur optique avec des lumières pour mesurer le mouvement, et un gyroscope pour la mesure de l'orientation, étant tout deux sur le robot. ### L'odométrie absolue : diff --git a/static/images/aruco/codeexemple53.webp b/static/images/aruco/codeexemple53.webp new file mode 100644 index 0000000..ec5fa1a Binary files /dev/null and b/static/images/aruco/codeexemple53.webp differ