Que sont les AprilTags?

Une démonstration des cibles fiduciaires AprilTags attachées à des robots génériques.

Les AprilTags sont un système d’étiquettes visuelles développé par des chercheurs de l’Université du Michigan visant à fournir une localisation d’emplacement à basse consommation de ressources et haute précision adaptée à plusieurs applications.

Des informations additionnelles à propos du système d’étiquettes et ses créateurs se trouvent sur leur site Ce document essaie de résumer le contenu pour les besoins de la Compétition de robotique FIRST.

Application en FRC

Dans le contexte de la FRC, les AprilTags sont utiles pour aider votre robot à savoir où il se trouve sur le terrain, afin qu’Il puisse s’aligner avec les positions de buts.

Les AprilTags sont développées depuis 2011 et se sont raffinées avec les années, afin d’augmenter leur robustesse et la vitesse de détection.

Débutant en 2023, FIRST fournit plusieurs étiquettes <https://www.firstinspires.org/robotics/frc/blog/2022-2023-approved-devices-rules-preview-and-vision-target-update>`__ dispersées sur le terrain, connues sous le nom de pose.

Toutes les étiquettes sont de la famille 16h5.

Note

Plusieurs images dans cette documentation sont de la famille 36h11, qui sont similaires (mais pas identiques) aux 16h5 utilisées pour la FRC. Tous les concepts fondamentaux sont les mêmes.

What is the 16h5 family?

L’implémentation de la bibliothèque AprilTag définit les standards sur la manières que les ensembles d’étiquettes devraient être conçues. Certaines des familles possibles sont décrites ici.

FIRST a choisit la famille 16h5 pour 2023. Cette famille d’étiquettes est faite d’une grille de 4x4 pixels, chacun représentant un bit d’information. Une bordure additionnelle noire et blanche doit être présente sur le périmètre des bits.

Bien qu’il y ait \(2^{16} = 65536\) étiquettes possibles, seulement 30 sont utilisées. Elles ont été choisies pour:

  1. Être robustes contre le basculement de bit (ex: problèmes où le bit a sa couleur identifiée incorrectement).

  2. Ne pas contenir de motifs géométriques « simples » qui pourraient se trouver sur des choses qui ne sont pas des cibles (ex: carrés, lignes, etc…).

  3. S’assurer que le motif géométrique est assez asymétrique que vous pouvez toujours savoir quel côté pointe vers le haut.


Toutes les étiquettes seront imprimées afin que leur bordure extérieure mesure 6 pouces de longueur.

Diagramme montrant les dimensions d'un cible fiduciaire AprilTag FRC.

Pour utilisation à la maison, les fichiers d’étiquette peuvent êtres imprimés et placés autour de votre aire de pratique. Fixez les sur un support rigide afin que les étiquettes restent plate, puisque l’algorithme de vision assume que l’étiquette est plate.

Support Logiciel

La bibliothèque principale pour le code source qui détecte et décode les AprilTags est située ici.

WPIlib a ramifié la bibliothèque afin d’ajouter des nouvelles fonctionnalités pour la FRC. Entre autres:

  1. Compiler le code source pour des cibles FRC courantes, incluant le roboRIO et Raspberry Pi.

  2. Ajouter un support Java Native Interface (JNI) pour permettre l’invocation de ses fonctionnalités depuis Java

  3. Support de publication Gradle et Maven

Technique de calcul

Bien que la plupart des équipes FRC ne devraient pas avoir à implémenter leur propre code pour identifier les AprilTags dans une image de caméra, il est utile de connaître les bases du fonctionnement des bibliothèques sous-jacentes.

Original, image non calculée

Une image d’une caméra est simplement une liste de valeurs correspondant à la couleur et la luminosité de chaque pixel.

Utilisation

Alignement 2D

Une stratégie simple pour utiliser les cibles est de bouger le robot jusqu’à ce que la cible soit centrée dans l’image. Supposant que le terrain et le robot sont construits d’une manière que les pièces de jeu, la position du but, la cible de vision et la caméra sont alignés, cette méthode devrait être une méthode simple pour aligner le robot à la position de pointage.

En utilisant une caméra, identifiez le « centroïde » des AprilTags en vue. Si l’identifiant d’étiquette est correct, appliquez des commandes de conduite pour tourner le robot vers la gauche ou la droite jusqu’à ce que l’étiquette soit centrée dans l’image.

Cette méthode ne requiert pas de calibration ou de performer l’étape d’homographie.

Alignement 3D

../../../../_images/homography.png

Une utilisation plus avancée des AprilTags est d’utiliser leur position de coins pour aider au positionement sur le terrain.

Des AprilTags sont recherchés dans chaque image en utilisant l’algorithme décrit sur cette page. En utilisant des inférences sur la manière que la lentille de la caméra déforme le monde 3d en un tableau de pixels 2d dans la caméra, une estimation de la position de la caméra en relation avec l’étiquette est calculée. Une bonne calibration de la caméra est requise pour que les estimations sur le comportement de sa lentille soient précises.

L’identifiant de l’étiquette est aussi décodé depuis l’image. Compte tenu de chaque identifiant d’étiquette, la position de l’étiquette sur le terrain peut être recherchée.

Sachant la position de l’étiquette sur le terrain ainsi que la position de la caméra en relation avec l’étiquette, les classes de géométrie 3D peuvent être utilisées pour estimer la position de la caméra sur le terrain.

Si la positon de la caméra sur le robot est connue, la position du robot sur le terrain peut aussi être estimée.

Ces estimations peuvent être incorporées dans les classes d’estimation de pose de la WPILib.

Ambiguïté 2D vers 3D

Le processus de traduire les quatre coins connus de la cible dans l’image (en deux dimension) en une position réelle relative à la caméra (en trois dimensions) est intrinsèquement ambiguë. Cela est pour dire qu’il y a plusieurs positions réelles qui résultent en les coins cibles étant aux mêmes endroits dans l’image de la caméra.

Les humains peuvent souvent utiliser l’éclairage ou les indices en arrière-plan pour comprendre comment les objets sont orientés dans l’espace. Cependant, les ordinateurs n’ont pas ce bienfait. Ils peuvent être confus par des cibles similaires:

Premier exemple d'illusion d'optique d'ambiguïté planaire Premier exemple d'illusion d'optique d'ambiguïté planaire Deuxième exemple d'illusion d'optique d'ambiguïté planaire Troisième exemple d'illusion d'optique d'ambiguïté planaire

Résoudre quelle position est « correcte » peut être fait de quelques manières différentes:

  1. Utiliser votre historique d’odométrie de tous les capteurs pour choisir la pose la plus proche d’où vous vous attendez que le robot soit.

  2. Reject poses which are very unlikely (ex: outside the field perimeter, or up in the air)

  3. Ignorer les estimations de poses qui sont très proche l’une de l’autre (et difficile à différencier)

  4. Utiliser plusieurs caméras pour regarder la même cible afin qu’au moins une caméra puisse générer une assez bonne estimation

  5. Regarder plusieurs cibles à la fois, en utilisant chacune pour générer plusieurs estimations de pose. Rejeter les estimations externes, en utilisant celles qui sont regroupées fermement ensemble.

Paramètres ajustables

Decimation Factor modifie à quel point l’image est dé-échantillonnée avant le traitement. L’augmenter accroîtra la vitesse de détection, au coût de ne pas voir les étiquettes qui sont éloignées.

Blur applique un lissage à l’image en entrée afin de réduire le bruit, ce qui accroît la vitesse de correspondance entre les pixels et les quadrilatères, au coût de la précision. Pour la plupart des caméras, ceci peut être laissé à zéro.

Threads changent le nombre de processus parallèles que l’algorithme utilise afin de traiter l’image. Certaines étapes peuvent êtres accélérées en permettant le multitraitement. En général, vous voudrez ce paramètre à peu près égal au nombre de cœurs physiques dans votre processeur, moins le nombre de cœurs qui seront utilisés dans d’autres tâches de traitement.

De l’information détaillée à propos des paramètres modifiables se retrouve ici.

Pour en savoir plus

Les trois versions majeures d’AprilTags sont décrites dans trois papiers académiques. Il est recommandé de les lire en ordre, puisque chacun ajoute au précédent: