Partager via


Synchroniser plusieurs appareils Azure Kinect DK

Chaque appareil Azure Kinect DK comprend des ports de synchronisation 3,5 mm (Sync in et Sync out) que vous pouvez utiliser pour lier plusieurs appareils. Une fois les appareils connectés, votre logiciel peut coordonner la synchronisation de leurs déclencheurs.

Cet article explique comment connecter et synchroniser les appareils.

Avantages de l’utilisation de plusieurs appareils Azure Kinect DK

Il existe de nombreuses raisons d’utiliser plusieurs appareils Azure Kinect DK, notamment les suivantes :

  • Remplir les occlusions. Bien que les transformations de données d’Azure Kinect DK produisent une image unique, les deux caméras (profondeur et RVB) sont en fait légèrement écartées l’une de l’autre. Cet écart peut entraîner des occlusions. Une occlusion se produit quand un objet au premier plan bloque la vue d’une partie d’un objet à l’arrière-plan pour l’une des deux caméras d’un appareil. Dans l’image en couleurs obtenue, l’objet au premier plan semble projeter une ombre sur l’objet à l’arrière-plan.
    Par exemple, dans le diagramme suivant, la caméra côté gauche voit le pixel gris « P2 ». Toutefois, l’objet de premier plan blanc bloque le faisceau IR de la caméra de droite. La caméra de droite ne reçoit pas de données pour « P2 ».
    Diagramme montrant deux caméras focalisées sur vers le même point, l’une d’elles étant bloquée.
    Des appareils synchronisés supplémentaires peuvent fournir les données occluses.
  • Analyser des objets en trois dimensions.
  • Augmenter la fréquence d’images effective en la réglant sur une valeur supérieure à 30 images par seconde (FPS).
  • Capturer plusieurs images en couleur 4K de la même scène, toutes alignées dans les 100 microsecondes (μs) par rapport au centre d’exposition.
  • Augmenter la couverture de la caméra dans l’espace.

Planifier votre configuration de plusieurs appareils

Avant de commencer, veillez à consulter Spécifications matérielles Azure Kinect DK et Caméra de profondeur DK Azure Kinect.

Notes

Retirez le cache en plastique extérieur pour exposer les prises de synchronisation en entrée (« Sync In ») et de synchronisation en sortie (« Sync Out »).

Sélectionner une configuration d’appareil

Pour la configuration de votre appareil, vous pouvez adopter l’une des approches suivantes :

  • Configuration en guirlande. Permet de synchroniser un appareil maître avec jusqu’à huit appareils subordonnés.
    Diagramme montrant comment connecter des appareils Azure Kinect DK dans une configuration en chaîne en série.
  • Configuration en étoile. Permet de synchroniser un appareil maître avec jusqu’à deux appareils subordonnés.
    Diagramme montrant comment connecter plusieurs appareils Azure DK dans une configuration en étoile.

Utilisation d’un déclencheur de synchronisation externe

Dans les deux configurations, l’appareil maître fournit le signal de déclenchement pour les appareils subordonnés. Toutefois, vous pouvez utiliser une source externe personnalisée pour le déclencheur de synchronisation. Par exemple, vous pouvez utiliser cette option pour synchroniser des captures d’images avec d’autres équipements. Dans les configurations de connexion tant en guirlande qu’en étoile, la source du déclencheur externe se connecte à l’appareil maître.

Votre source de déclencheur externe doit fonctionner de la même façon que l’appareil maître. Elle doit fournir un signal de synchronisation présentant les caractéristiques suivantes :

  • Actif élevé
  • Largeur d’impulsion : supérieure à 8 μs
  • TTL/CMOS 5V
  • Capacité motrice maximale : pas inférieure à 8 milliampères (mA)
  • Prise en charge de fréquence : Exactement 30 FPS, 15 FPS et 5 FPS (fréquence du signal VSYNC de la caméra couleur maître)

La source du déclencheur doit envoyer le signal au port Sync in de l’appareil maître en utilisant un câble audio 3,5 mm. Vous pouvez utiliser un câble stéréo ou mono. L’appareil Azure Kinect DK met à la terre l’ensemble des gaines et anneaux du connecteur du câble audio. Comme illustré dans le diagramme suivant, l’appareil reçoit le signal de synchronisation uniquement de l’embout du connecteur.

Configurations de câble pour un signal de déclenchement externe

Pour plus d’informations sur l’utilisation de l’équipement externe, consultez Utiliser un enregistreur Azure Kinect avec des appareils synchronisés externes

Notes

Sync Out correspond à VSync pour la caméra RVB. Les timestamps de tous les appareils sont définis sur zéro et effectuent un comptage progressif. Microsoft n’a pas caractérisé la largeur minimale et maximale de l’impulsion de synchronisation et recommande d’imiter l’impulsion générée par la synchronisation en sortie d’un Azure Kinect DK.

Planifier les paramètres et la configuration logicielle de vos caméras

Pour plus d’informations sur la configuration de votre logiciel pour contrôler les caméras et utiliser les données d’image, consultez SDK du capteur Kinect Azure.

Cette section aborde plusieurs facteurs qui affectent les appareils synchronisés (pas les appareils isolés). Votre logiciel doit tenir compte de ces facteurs.

Considérations relatives à l’exposition

Si vous souhaitez contrôler la synchronisation précise de chaque appareil, nous vous recommandons d’utiliser un paramétrage d’exposition manuelle. Avec le paramétrage d’exposition automatique, chaque caméra couleur peut modifier de façon dynamique l’exposition réelle. Étant donné que l’exposition affecte la synchronisation, ces modifications ont pour effet de désynchroniser rapidement les caméras.

Dans la boucle de capture d’images, évitez de définir plusieurs fois le même paramètre d’exposition. N’appelez l’API qu’une seule fois si nécessaire.

Éviter les interférences entre les plusieurs caméras de profondeur

Quand plusieurs caméras de profondeur acquièrent des images dont les champs de vision se chevauchent, chacune d’elles doit acquérir l’image associée à son propre laser. Pour éviter que les lasers interfèrent entre eux, les captures des caméras doivent être décalées entre elles d’au minimum 160 μs.

Pour chaque capture de caméra de profondeur, le laser s’active neuf fois et est actif pendant seulement 125 μs à chaque fois. Le laser reste ensuite inactif pendant 1 450 μs ou 2 390 μs, selon le mode de fonctionnement. Ce comportement signifie que le point de départ pour le calcul du décalage est de 125 μs.

De plus, les différences entre l’horloge de la caméra et celle du microprogramme de l’appareil augmentent le décalage minimal jusqu’à 160 μs. Pour calculer un décalage plus précis pour votre configuration, notez le mode de profondeur que vous utilisez et consultez le tableau de synchronisation brute du capteur de profondeur. Les données de ce tableau vous permettent de calculer le décalage minimal (temps d’exposition de chaque caméra) à l’aide de l’équation suivante :

Temps d’exposition = (Impulsions d’IR × Largeur d’impulsion) + (Périodes d’inactivité × Temps d’inactivité)

En utilisant un décalage de 160 μs, vous pouvez configurer jusqu’à neuf caméras de profondeur supplémentaires de façon à ce que chaque laser s’allume alors que les autres sont inactifs.

Dans votre logiciel, utilisez depth_delay_off_color_usec ou subordinate_delay_off_master_usec pour vous assurer que chaque laser IR s’exécute dans sa fenêtre de 160 μs ou a un champ de vision différent.

Notes

La largeur d’impulsion réelle est de 125 µs, mais nous indiquons 160 µs pour fournir une certaine marge de manœuvre. En utilisant NFOV UNBINNED comme exemple, chaque impulsion de 125 µs est suivie d’une inactivité de 1 450 µs. Le cumul de ces valeurs, (9 x 125) + (8 x 1450), fournit le temps d’exposition de 12,8 ms. La façon la plus proche d’entrelacer l’exposition de 2 appareils consiste à placer la première impulsion de la deuxième caméra dans la première période d’inactivité de la première caméra. Le retard entre la première caméra et la deuxième peut être réduit jusqu’à 125 µs (la largeur d’une impulsion), mais nous vous recommandons de ménager une certaine marge de manœuvre en utilisant 160 µs. Avec 160 µs, vous pouvez entrelacer les périodes d’exposition d’un maximum de 10 caméras.

Préparer vos appareils et autres composants matériels

En plus de plusieurs appareils Azure Kinect DK, il se peut que vous deviez obtenir des ordinateurs hôtes et d’autres composants matériels supplémentaires afin de prendre en charge la configuration que vous souhaitez créer. Utilisez les informations de cette section pour vous assurer que tous les appareils et composants matériels sont prêts avant de commencer la configuration.

Appareils Azure Kinect DK

Pour chaque appareil Azure Kinect DK à synchroniser, procédez comme suit :

  • Assurez-vous que le microprogramme le plus récent est installé sur l’appareil. Pour plus d’informations sur la mise à jour de vos appareils, accédez à Mettre à jour le microprogramme Azure Kinect DK.
  • Retirez le cache de l’appareil pour voir les ports de synchronisation.
  • Notez le numéro de série de chaque appareil. Vous l’utiliserez plus tard dans le processus d’installation.

Ordinateurs hôtes

En règle générale, chaque appareil Azure Kinect DK utilise son propre ordinateur hôte. Vous pouvez utiliser un contrôleur d’hôte dédié, en fonction de la façon dont vous utilisez l’appareil et de la quantité de données transférées via la connexion USB.

Assurez-vous que le Kit de développement logiciel (SDK) du capteur Azure Kinect est installé sur chaque ordinateur hôte. Pour plus d’informations sur l’installation du Kit de développement logiciel (SDK) du capteur, consultez le Guide de démarrage rapide : Configurer Azure Kinect DK.

Ordinateurs Linux : mémoire USB sur Ubuntu

Par défaut, les ordinateurs hôtes basés sur Linux n’allouent au contrôleur USB que 16 Mo de mémoire du noyau pour gérer les transferts USB. Cette quantité est généralement suffisante pour prendre en charge un appareil Azure Kinect DK. En revanche, pour prendre en charge plusieurs appareils, le contrôleur USB doit avoir plus de mémoire. Pour augmenter la mémoire, procédez comme suit :

  1. Modifiez /etc/default/grub.
  2. Recherchez la ligne suivante :
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Remplacez-le à l’aide de cette ligne :
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
    

    Remarque

    Ces commandes définissent la mémoire USB sur 32 Mo. Voici un exemple de paramétrage sur deux fois la valeur par défaut. Vous pouvez définir une valeur sensiblement plus élevée en fonction de votre solution.

  3. Exécutez sudo update-grub.
  4. Redémarrez l'ordinateur.

Câbles

Pour connecter les appareils entre eux et aux ordinateurs hôtes, vous devez utiliser des câbles 3,5 mm mâle-mâle (également appelés câbles audio 3,5 mm). Les câbles doivent avoir une longueur inférieure à 10 mètres, et peuvent être stéréo ou mono.

Le nombre de câbles que vous devez avoir dépend du nombre d’appareils que vous utilisez, ainsi que de la configuration d’appareil spécifique. Le boîtier Azure Kinect DK n’inclut pas de câbles. Vous devez les acheter séparément.

Si vous connectez les appareils dans une configuration en étoile, vous devez également disposer d’un répartiteur de casque.

Connecter vos appareils

Pour connecter des appareils Azure Kinect DK dans une configuration de connexion en guirlande

  1. Connectez chaque Azure Kinect DK à l’alimentation.
  2. Connectez chaque appareil à son PC hôte.
  3. Sélectionnez un appareil maître et branchez un câble audio 3,5 mm à son port Sync out.
  4. Branchez l’autre extrémité du câble au port Sync in du premier appareil subordonné.
  5. Pour connecter un autre appareil, branchez un autre câble au port Sync out du premier appareil subordonné, puis au port Sync out de l’appareil suivant.
  6. Répétez l’étape précédente jusqu’à ce que tous les appareils soient connectés. Le dernier appareil ne doit avoir qu’une seule connexion câblée. Son port Sync out doit être libre.

Pour connecter des appareils Azure Kinect DK dans une configuration en étoile

  1. Connectez chaque Azure Kinect DK à l’alimentation.
  2. Connectez chaque appareil à son PC hôte.
  3. Sélectionnez un appareil comme maître et branchez l’extrémité du répartiteur de casque à son port Sync out.
  4. Connectez les câbles audio 3,5 mm aux extrémités « Split » du répartiteur de casque.
  5. Branchez l’autre extrémité de chaque câble au port Synch in de l’un des appareils subordonnés.

Vérifier que les appareils sont connectés et communiquent

Pour vérifier que les appareils sont connectés correctement, utilisez la Visionneuse Kinect Azure. Répétez cette procédure si nécessaire pour tester chaque appareil subordonné combiné avec l’appareil maître.

Important

Pour cette procédure, vous devez connaître le numéro de série de chaque Azure Kinect DK.

  1. Ouvrez deux instances de la visionneuse Kinect Azure.
  2. Sous Ouvrir l’appareil, sélectionnez le numéro de série de l’appareil subordonné à tester.
    Ouvrir l’appareil

    Important

    Pour obtenir un alignement précis de la capture d’images entre tous les appareils, vous devez démarrer l’appareil maître en dernier.

  3. Sous Synchronisation externe, sélectionnez Sous.
    Démarrage de caméra subordonnée
  4. Sélectionnez Démarrer.

    Notes

    Étant donné qu’il s’agit d’un appareil subordonné, Azure Kinect Viewer n’affiche pas d’image après le démarrage de l’appareil. Aucune image n’est affichée tant que l’appareil subordonné n’a pas reçu de signal de synchronisation de l’appareil maître.

  5. Une fois l’appareil subordonné démarré, utilisez l’autre instance de la Visionneuse Azure Kinect pour ouvrir l’appareil maître.
  6. Sous Synchronisation externe, sélectionnez Maître.
  7. Sélectionnez Démarrer.

Lors du démarrage de l’appareil Azure Kinect maître, les deux instances de la Visionneuse Azure Kinect doivent afficher des images.

Étalonner les appareils en tant qu’ensemble synchronisé

Une fois que vous avez vérifié que les appareils communiquent correctement, vous êtes prêt à les étalonner pour produire des images dans un domaine unique.

Dans un appareil, les caméras de profondeur et RVB sont calibrées en usine pour fonctionner ensemble. Cependant, lorsque plusieurs appareils doivent fonctionner ensemble, ils doivent être étalonnés pour déterminer comment transformer une image du domaine de la caméra qui l’a capturée dans le domaine de la caméra que vous souhaitez utiliser pour traiter les images.

Il existe plusieurs options pour l’étalonnage croisé d’appareils. Microsoft fournit l’exemple de code GitHub green screen qui utilise la méthode OpenCV. Le fichier LisezMoi de cet exemple de code fournit des détails et instructions supplémentaires pour l’étalonnage des appareils.

Pour plus d’informations sur l’étalonnage, consultez Utiliser les fonctions d’étalonnage d’Azure Kinect.

Étapes suivantes

Après avoir configuré les appareils synchronisés, vous pouvez également apprendre à utiliser une