Utilisation d’un coprocesseur pour le traitement de la vision

Le traitement de la vision à l’aide de bibliothèques comme OpenCV pour reconnaître des cibles de terrain ou des pièces de jeu peut souvent être un processus gourmand en ressources processeur. Souvent, la charge n’est pas trop importante et le traitement peut être facilement géré par le roboRIO. Dans les cas où il y a plus de flux de caméra ou où le traitement de l’image est complexe, il est souhaitable de décharger le roboRIO en plaçant le code et la connexion de la caméra sur un processeur différent. Il existe un certain nombre de choix de processeurs qui sont populaires dans FRC® comme le Raspberry PI, le Kangaroo basé sur Intel, le LimeLight pour le summum de la simplicité, ou pour le code de vision plus complexe un accélérateur graphique tel que l’un des modèles nVidia Jetson.

Stratégie

Généralement, l’idée est de configurer le coprocesseur avec le logiciel requis qui comprend généralement:

  • OpenCV - la librairie de vision par ordinateur

  • NetworkTables - pour commuter les résultats du traitement d’image vers le programme roboRIO

  • Bibliothèque de serveurs de caméras - pour gérer les connexions de caméras et publier des flux pouvant être affichés sur un tableau de bord

  • Les librairies associés au langage informatique utilisé pour le programme de vision

  • Le programme spécifique de vision qui fait la détection d’objet

Le coprocesseur est connecté au réseau roboRIO en le branchant sur le port Ethernet supplémentaire du routeur réseau ou, pour plus de connexions, en ajoutant un petit commutateur réseau (Switch) au robot. Les caméras sont connectées au coprocesseur, il acquiert les images, les traite et publie les résultats, généralement des informations de localisation de la cible, sur NetworkTables afin qu’elles puissent être utilisées par le programme du robot pour la direction et la visée.

Diagramme de réseau avec le coprocesseur et le roboRIO sur le même réseau.

Diffuser des données de la caméra vers le tableau de bord

Il est souvent souhaitable de simplement diffuser les données de la caméra sur le tableau de bord via le réseau du robot. Dans ce cas, une ou plusieurs connexions de caméra peuvent être envoyées au réseau et affichées sur un tableau de bord tel que Shuffleboard ou un navigateur Web. L’utilisation de Shuffleboard donne l’avantage d’avoir accès à des commandes faciles pour régler la résolution de la caméra et le débit binaire ainsi que d’intégrer les flux de caméra avec d’autres données envoyées par le robot.

Il est également possible de traiter des images et d’ajouter des annotations à l’image, telles que des lignes ou des boîtes cibles montrant ce que le code de traitement d’image a détecté, puis de l’envoyer vers le tableau de bord pour permettre aux opérateurs de voir plus clairement ce qui se trouve autour du robot.