Synchroniser des caméras GigE Vision IDS à l'aide du protocole PTP

Lorsqu'il s'agit d'applications de traitement de matériel graphique de plusieurs caméras, le moment ou la séquence temporelle correcte des prises de vue pour le traitement ultérieur est souvent crucial. En cas de transfert d'un horodatage, une référence temporelle aux autres données d'image peut être établie. Mais il est alors important que la base temporelle des caméras concorde précisément. Grâce au protocole PTP (Precision Time Protocoll), les caméras GigE Vision IDS, à partir du firmware 2.2, peuvent être synchronisées simplement.

Synchroniser des caméras GigE Vision IDS à l'aide du protocole PTP

Le protocole PTP (Precision Time Protocol) est une norme de synchronisation temporelle (IEEE1588) avec laquelle des appareils reliés par réseau peuvent être synchronisés entre eux. Les caméras, qui prennent en charge cette norme, échangent avec un maître-temps des messages de synchronisation dans des cycles définis. Avec les informations de l'horodatage relatives au moment de l'émission et de la réception, les compteurs internes des caméras peuvent être étalonnés très précisément et leur synchronisation maintenue.

Avec le firmware version 2.2 des caméras, toutes les caméras GigE Vision IDS sont compatibles avec le protocole PTP.

PTP n'est pas défini pour les connexions USB, par conséquent, cette note d'application ne porte que sur les caméras GigE Vision IDS.

L'horodatage IEEE1588 est un compteur temporel de périodes, où le 1er janvier 1970, 00:00 heure est défini comme le moment zéro, qui offre une précision de 1 ns (1 GHz). La précision de la synchronisation temporelle entre les appareils réseau, conditionnée par les inexactitudes liées aux latences et aux temps de propagation des signaux, relève davantage de l'ordre de la microseconde !

Applications PTP

Le protocole PTP est une technologie de base, qui représente le fondement de différentes applications avec référence temporelle des contenus d'images. Selon le besoin d'une application et la complexité de l'infrastructure réseau, ce protocole peut être configuré de manière différente :

1. Synchronisation d'horodatages relatifs

Dans ce cas, toutes les caméras se trouvent dans un réseau. Une caméra joue le rôle de maître, les autres sont esclaves. Les horodatages de toutes les caméras esclaves sont synchronisés avec la caméra-maître. Les caméras n'affichent aucun horodatage absolu (temps réel) et ne peuvent pas être déclenchées de manière synchrone sans effort supplémentaire.

Avantages :

  • Les horodatages relatifs créent une affectation temporelle des prises de vue de toutes les caméras de l'application. Cela permet d'identifier la première image, l'importance du décalage temporel entre les images des différentes caméras.
  • Les horodatages relatifs peuvent être générés pour une infrastructure réseau spéciale sans efforts ni coûts supplémentaires.

2. Synchronisation d'horodatages avec temps absolu

Dans ce cas, les caméras réseau sont synchronisées avec un maître externe. Ce maître PTP peut correspondre à une carte réseau qui prend en charge le " Hardware-Timestamping " - sans prise en charge matérielle, l'exactitude de la synchronisation en pâtit considérablement. Outre le matériel requis, un logiciel prenant en charge le protocole PTP est également nécessaire (ne fait pas partie d'IDS peak).

Avantages :

  • Les contenus d'image avec horodatages (réels) globaux peuvent être reliés à toute autre information avec référence temporelle réelle au-delà des limites de l'application.
  • Les contenus d'image peuvent être réutilisés pour d'autres applications ou analyses avec une référence temporelle globale.

Utilisation du protocole PTP : « synchronisation relative »

Le paragraphe suivant décrit à titre d'exemple la méthode d'établissement d'une " synchronisation relative " d'horodatages entre deux caméras compatibles PTP d'un réseau.

Configuration matérielle

Deux caméras GigE Vision IDS différentes (GV-526xFA-C, GV-504xCP-M) avec firmware 2.2 (" compatibles PTP ") sont raccordées au même commutateur réseau. Un PC hôte supplémentaire sert uniquement à commander et configurer les caméras. Il ne participe pas à la synchronisation PTP des caméras.

Configuration logicielle

Toutes les fonctions relatives à la configuration PTP se trouvent dans la cartographie des nœuds des caméras sous la catégorie " PtpControl " (Contrôle PTP). Ces fonctions sont disponibles à partir de la version 2.2 du firmware. Pour l'établissement de la synchronisation PTP, nous utilisons Vision Cockpit de l'installation IDS peak sur le PC hôte.

Configurer une caméra en tant que maître PTP

La caméra GV-526xFA-C doit être configurée comme appareil maître PTP. Pour cela, ouvrir la caméra dans Vision Cockpit et activez PTP en définissant " PtpEnable " (Activer PTP) sur " True " (Vrai). La caméra reçoit également l'autorisation d'assumer le rôle de maître en réglant " PtpSlaveOnly " (PTP esclave uniquement) sur " False " (Faux).

# Configure master camera
PtpEnable = True
PtpSlaveOnly = False

Configurer l'autre caméra en tant qu'esclave PTP

La caméra GV-504xCP-M doit être configurée comme appareil esclave PTP. Activer aussi ici PTP en définissant " PtpEnable " sur " True " (Vrai). Mais cette fois, la caméra est limitée uniquement au travail de l'appareil esclave. À cette fin, l'option " PtpSlaveOnly " reste définie sur " True " (Vrai).

# Configure slave camera
PtpEnable = True
PtpSlaveOnly = True

Création de la hiérarchie maître-esclave

Dès qu'un appareil maître et esclave sont configurés, la hiérarchie maître-esclave se met automatiquement en place. Pour la caméra maître, cela consiste à basculer l'option " PtpStatus " (Etat PTP) de " Listening " (Écoute) sur " Master " (maître). Avec la caméra esclave, vous identifiez que l'option " PtpStatus " de " Listening " est d'abord sur " Uncalibrated ", puis après la synchronisation avec la caméra maître, passe sur " Slave " (Esclave).

Après l'établissement de la hiérarchie maître-esclave des caméras via leurs nouvelles fonctionnalités PTP, la " synchronisation relative " est achevée.

Activation des horodatages

Si vous souhaitez utiliser les horodatages des caméras désormais synchronisées avec les données d'image de votre application, vous devez activer le transfert des horodatages en tant que métadonnées (avec les données Chunk).
Pour cela, activez d'abord le transfert des données Chunk avec la mémoire d'images en réglant " ChunkModeActive " (Mode Chunk actif) sur " True ". Sélectionnez ensuite via le " ChunkSelector " (Sélecteur Chunk) l'information " Timestamp " (Horodatage) et activez à l'aide du commutateur " ChunkEnable " (Activation Chunk).

# activate chunk data creation
ChunkModeActive = True
 
# enable "ChunkTimestamp"
ChunkSelector = Timestamp
ChunkEnable = True

La caméra génère à partir de maintenant, avec chaque prise de vue, un horodatage et le transfère avec la mémoire d'images (dans les données Chunk) au PC hôte. Les données Chunk et les horodatages associés peuvent être lues avec tout logiciel de norme Vision.

# image acquisition configuration for both cameras
LineSelector = Line2
LineMode = Output
LineSource = PPS
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line2
 
# Limit bandwidth on both cameras
DeviceLinkThroughputLimit = 60000000
 
# Start acquisition on both cameras
Execute AcquisitionStart
Les signaux de déclenchement PPS synchronisés permettent aux caméras de capturer des images au même moment
Les signaux de déclenchement PPS synchronisés permettent aux caméras de capturer des images au même moment

Lecture des horodatages

Pour traiter dans votre application les horodatages avec les contenus d'image, vous devez lire les données Chunk de la mémoire d'images actuelle. Étant donné qu'avec les données Chunk, il s'agit d'une mémoire de charge spécifique au fabricant avec une mise en page mémoire généralement inconnue, les différentes métadonnées sont lues par le biais de la cartographie des nœuds. Pour cela, toutes les métadonnées existantes de GenTL sont transférées dans la cartographie des nœuds avec leurs noms de nœud normalisés pour qu'elles soient accessibles via l'API standard.

Avec la prochaine mise à jour IDS peak 1.1 de début avril, vous pourrez accéder et éditer les horodatages ainsi que toutes les autres données Chunk très facilement grâce à l'API IDS peak. L'extrait de code source suivant montre à titre d'exemple comment extraire les horodatages d'une mémoire d'images. Un exemple complet de code source illustrant le traitement des données Chunk est également disponible dans le package d'installation du kit de développement logiciel IDS peak SDK (à partir de la version 1.1).

// Get buffer from device's datastream
const auto buffer = m_dataStream->WaitForFinishedBuffer(5000);
 
// check buffer for chunks
if (buffer->HasChunks())
{
    // update nodemap with current chunk data
    m_nodemapRemoteDevice->UpdateChunkNodes(buffer);
 
    // Get the value of the timestamp chunk
    const auto chunktimestamp = m_nodemapRemoteDevice->FindNode<peak::core::nodes::FloatNode>("ChunkTimestamp")->Value();
}