Aller au contenu principal

OAK

Pour standardiser le fonctionnement des caméras OAK-D dans le code, nous avons écrit une classe abstraite OAK qui sert d'interface pour superviser les appels et la récupération des données. Il y a principalement 2 méthodes à implémenter pour personnaliser le fonctionnement de la caméra :

  • _create_pipeline : cette méthode est appelée pendant l'initialisation de l'objet, et son but est de lancer le pipeline sur la caméra. C'est donc ici que la caméra doit être initialisée, et l'instance doit être stockée dans la variable device de l'objet OAK
  • update : cette méthode peut être appelée pour demander à l'objet de récupérer les dernières données provenant de la caméra, et de les ajouter dans le MsgSynchronizer de l'objet

Pipeline

Comme expliqué ici, les caméras OAK-D fonctionnent avec un pipeline interne, qui va décrire comme sont récupérer, traitées, et transmises les données. Le plus simple pour bien en comprendre le fonctionnement est d'aller regarder des exemples de code ou de lire la documentation de l'API de DepthAI.
Voici un résumé du fonctionnement :

Le pipeline peut être considéré comme un graphe orienté, où chaque nœud représente une fonctionnalité de la caméra (par exemple, un capteur vidéo, un réseau de neurones, un tracker d'objets, etc.), et chaque arête représente une liaison entre deux fonctionnalités. Ainsi, lorsque un nœud va émettre une donnée (par exemple, le capteur central capture une nouvelle image), cette donnée est stockée sous la forme d'un paquet, qui est transmis aux autres nœuds en suivant les arêtes.
Pour transmettre des données vers ou depuis un ordinateur relié en USB ou en Ethernet (nécessite un adaptateur POE), on utilise des nœuds spéciaux (XLinkIn pour récupérer des informations depuis l'ordinateur, et XLinkOut pour en envoyer à l'ordinateur) qui servent d'entrée / sortie.

Une fois que le pipeline interne de la caméra est établi, on initialise la caméra avec un objet depthai.Device, qui va envoyer notre pipeline sur la caméra et l'initialiser. On utilise ensuite ce même objet pour créer côté ordinateur des files correspondantes aux sorties de la caméra pour pouvoir récupérer ce qu'elle va nous transmettre.

Le pipeline est créé à l'aide de l'API de depthai, qui s'occupe d'initialiser la caméra et de gérer la connexion avec.

Par la suite, tous les schémas des pipelines des différentes classes ont été réalisé avec l'outil pipeline_graph disponible sur Github à cette adresse.