diff --git a/pages/Odometrie/OdometrieAbsolue/Materiel.md b/pages/Odometrie/OdometrieAbsolue/Materiel.md index 873abd5..5611bbe 100644 --- a/pages/Odometrie/OdometrieAbsolue/Materiel.md +++ b/pages/Odometrie/OdometrieAbsolue/Materiel.md @@ -7,6 +7,7 @@ Matériel utilisé pour l'odométrie absolue ### Les Poteaux-Caméras Nous utilisons donc des caméras afin de pouvoir voir le plateau et faire la reconnaissance et l’estimation. + Nous avons à notre disposition 3 poteaux fabriqués sur lesquels nous avons travaillé avec le pôle mécanique et le pôle électronique. On retrouve dans ces poteaux une caméra qui se compose de différents éléments : diff --git a/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md b/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md index 2aebb34..3a9cf26 100644 --- a/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md +++ b/pages/Odometrie/OdometrieAbsolue/PresentationArUCO.md @@ -13,7 +13,9 @@ C’est un code carré constitué d’un cadre noir avec à l’intérieur une m *Exemple de code ArUCO (ici code 53 en taille 4x4)* 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 les robots et sur l'aire de jeu du plateau.   diff --git a/pages/Odometrie/OdometrieAbsolue/Programmes/Calibration.md b/pages/Odometrie/OdometrieAbsolue/Programmes/Calibration.md index ddfb154..1a89bf3 100644 --- a/pages/Odometrie/OdometrieAbsolue/Programmes/Calibration.md +++ b/pages/Odometrie/OdometrieAbsolue/Programmes/Calibration.md @@ -20,11 +20,16 @@ Cette grille est donc utilisée avec la fonction “calibrate” [> ./ArUCO calibrate] qui permet de prendre des captures de la grille sous différents angles, orientations et éloignements. + Elle fonctionne comme suit : -La grille de calibration est détecté + -On appuie sur « c » pour prendre des captures de l’image + -Une fois les nombreuses captures prises, la fonction compare des données issues de la reconnaissance de la grille physique à la même grille d’origine reconstruite numériquement (utilisation des informations de configuration) + -Cette comparaison permet de calculer des paramètres de la caméra + -Ces paramètres sont ensuite enregistrés dans le fichier "camera_params.yml" \ No newline at end of file diff --git a/pages/Odometrie/OdometrieAbsolue/Programmes/Configuration.md b/pages/Odometrie/OdometrieAbsolue/Programmes/Configuration.md index 29f81d6..88a98ff 100644 --- a/pages/Odometrie/OdometrieAbsolue/Programmes/Configuration.md +++ b/pages/Odometrie/OdometrieAbsolue/Programmes/Configuration.md @@ -5,7 +5,9 @@ Doc sur la configuration Nous avons tout d’abord en premier lieu la configuration, c’est-à-dire la définition de et données et paramètres qui seront utilisés par les programmes, qui se trouvent dans le fichier "config.yml". + Ce fichier contient les informations suivantes : + -des chemins pour accéder à des fichiers de paramètres ou pour enregistrer la grille ArUCO de calibration -le port et l’adresse Xbee utilisés pour la communication Xbee (l’adresse change en fonction de la caméra et du robot) @@ -16,5 +18,6 @@ Ce fichier contient les informations suivantes :   Ce fichier est utilisé pour récupérer les données utilisées dans le code, où certaines données sont choisies spécifiquement en fonction de la situation, notamment en ce qui concerne le code de référence utilisé par la caméra qui est défini selon la caméra et l’équipe. + Ces données sont récupérées et enregistrées dans des objets d’estimation et de tests (des structures organisant les données qui seront manipulées), en particulier les informations concernant l’ID du marqueur de référence, sa position sur l’aire de jeu, et les paramètres de la caméra. diff --git a/pages/Odometrie/OdometrieAbsolue/Programmes/Estimation.md b/pages/Odometrie/OdometrieAbsolue/Programmes/Estimation.md index f636a0b..84af3da 100644 --- a/pages/Odometrie/OdometrieAbsolue/Programmes/Estimation.md +++ b/pages/Odometrie/OdometrieAbsolue/Programmes/Estimation.md @@ -6,14 +6,20 @@ Doc sur le programme d'estimation Le programme principal de la caméra c’est l’estimation. + C’est le programme qui a pour but de reconnaître les codes (repères et robots) puis de récupérer les informations sur ces codes pour en estimer la position réelle sur le plateau. + Pour ce faire, le programme récupère une image sur laquelle va être fait la détection des codes par OpenCV, qui va ensuite obtenir des vecteurs de translation (tVecs) et des vecteurs de rotation (rVecs) par le biais de la fonction estimatePoseSingleMarker(), qui donnent des données positions de chaque code par rapport au repère de la caméra. + Ces vecteurs vont alors être transformés afin d’obtenir l’orientation et la position de chaque code sur le plateau. + En premier lieu, on récupère la position par rapport au code repère utilisé par la caméra, puis on obtient la position par rapport à la base origine du plateau par un changement de base (décalage de coordonnées en utilisant la position connue du code de référence utilisé)   La fonction affiche donc les valeurs obtenues par l’estimation d’OpenCV puis les données transformées par rapport au code de référence. + Une fois les coordonnées sur l’aire de jeu obtenu, la caméra va envoyer ces données au robot dans une trame où chaque valeur est mis en 16 bits (ce qui permet d’aller de 0 à 65 535). + Cette fonction peut être lancée sans envoie d’une trame Xbee avec "estimateTest".   diff --git a/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md b/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md index 83dc351..edf8a86 100644 --- a/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md +++ b/pages/Odometrie/OdometrieAbsolue/Programmes/Tests.md @@ -5,6 +5,7 @@ Doc sur les fonctions de tests Nous avons réalisé des fonctions de tests qui nous permettent de pouvoir vérifier le bon fonctionnement de la reconnaissance ArUCO et aussi pouvoir faire des mesures et tests. + Ces fonctions pourront aussi être utiles pour les prochaines personnes de l’équipe afin de pouvoir découvrir et prendre en main rapidement la détection. Il y a 4 fonctions différentes : @@ -13,7 +14,9 @@ Il y a 4 fonctions différentes : #### "testDetection" Cette fonction permet de tester la détection des codes ArUCO. + Lors de son exécution, il montre la sortie image de la caméra en affichant les ids, le coin 1 (haut-gauche) et les axes de chaque code ArUCO détecté par la caméra. + Cela permet de voir quels sont les codes qui sont détectés et voir leur orientation par rapport à la caméra. @@ -23,7 +26,9 @@ Nous avons souvent utilisé cette fonction pour vérifier que la caméra fonctio #### "testPosition" Cette fonction permet de tester la position image de codes détectés par leur coin 1. + Lors de l’exécution, on affiche les ids et les coordonnées sur l’image en pixels du coin 1 (haut-gauche). Il y a une attente de 2 secondes pour éviter trop de données d’un coup. + La fonction nous donne donc la position des codes par leurs coins 1 dans l’image, où le repère (0;0) est placé en haut à gauche de l’image. @@ -33,13 +38,17 @@ Cela a est utile pour comprendre et vérifier le positionnement image issue de l #### "testCoherence" Cette fonction permet de tester la cohérence des codes détectés, c’est-à-dire savoir si le code détecté est bien conforme aux dimensions, avec les 4 coins bien corrects par les coordonnées images (pixels). + Lors de l’exécution, on affiche les ids et les coordonnées sur l’image en pixels des 4 coins, ainsi que le résultat du calcul de cohérence. Il y a une attente de 2 secondes pour éviter trop de données d’un coup. + 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..   #### "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. + Elle affiche le résultat sur le terminal si c’est « Position correcte » ou « Position incorrecte »