Uhrenvergleich
Geht es in Anwendungen um die Verarbeitung von Bildmaterial mehrerer Kameras, ist oft der Zeitpunkt bzw. die korrekte zeitliche Abfolge der Bildaufnahmen für die nachträgliche Verarbeitung entscheidend. Wird ein Zeitstempel übertragen, kann ein zeitlicher Bezug zu den anderen Bilddaten hergestellt werden. Wichtig ist dabei aber, dass die Zeitbasis der Kameras genau übereinstimmt. Durch das "Precision Time Protocol" (PTP) können IDS GigE Vision Kameras ab Firmware 2.2 einfach synchronisiert werden.
IDS GigE Vision Kameras mittels PTP synchronisieren
Precision Time Protocol (PTP) ist ein Zeitsynchronisationsstandard ( IEEE1588) mit dem per Netzwerk verbundene Geräte zeitlich aufeinander abgestimmt werden können. Kameras, die diesen Standard unterstützen tauschen dazu in definierten Zyklen Synchronisationsmeldungen mit einem Zeit-Master aus. Mit den Zeitstempelinformation zum jeweiligen Sende- und Empfangszeitpunkt können die internen Zähler der Kameras sehr genau kalibriert und in Abstimmung gehalten werden. Mit der Kamerafirmware Version 2.2 werden alle IDS GigE Vision Kameras PTP-fähig!
PTP ist nicht für USB-Verbindungen definiert, daher bezieht sich dieser Anwendungshinweis nur auf IDS GigE Vision Kameras.
Der IEEE1588-Zeitstempel ist ein Epochen-Zeitzähler, bei dem der 1. Januar 1970, 00:00 Uhr, als Nullzeit gesetzt ist, und bietet eine Auflösung von 1 ns (1 GHz). Wobei die Genauigkeit der Zeitsynchronisierung zwischen Netzwerkgeräten bedingt durch Ungenauigkeiten bei Latenzen und Signallaufzeiten eher im Mikrosekundenbereich angesiedelt ist!
PTP-Anwendungsfälle
PTP ist eine Basistechnologie, die Grundlage für verschiedene Anwendungsfälle mit zeitlichem Bezug der Bildinhalte darstellt. Dieser kann je nach Anforderung einer Anwendung und Komplexität der Netzwerkinfrastruktur unterschiedlich hergestellt werden:
1. Relative Zeitstempel-Synchronisierung
In diesem Fall befinden sich alle Kameras in einem Netzwerk. Eine Kamera ist der Master, die anderen sind Slaves. Die Zeitstempel aller Slave-Kameras werden mit der Master-Kamera synchronisiert. Die Kameras zeigen keine absoluten Zeitstempel (reale Zeit), auch können sie nicht ohne zusätzlichen Aufwand synchron ausgelöst werden.
Vorteile
- Relative Zeitstempel schaffen eine zeitliche Zuordnung der Bildaufnahmen aller Kameras der Anwendung. Welches Bild war das erste, und wie groß ist der Zeitunterschied zwischen den Bildern verschiedener Kameras.
- relative Zeitstempel können ohne zusätzlichen Aufwand und Kosten für spezielle Netzwerkinfrastruktur erzeugt werden.
2. Zeitstempel-Synchronisation mit absoluter Zeit
In diesem Fall werden die Netzwerkkameras mit einem externen Master synchronisiert. Dieser PTP-Master kann eine Netzwerkkarte sein, die das sogenannte "Hardware-Timestamping" unterstützt - ohne Hardware-Unterstützung leidet die Genauigkeit der Synchronisation erheblich. Neben der erforderlichen Hardware wird auch eine Software benötigt, die PTP unterstützt (nicht Teil von IDS peak!).
Vorteile
- Bildinhalte mit globalen (realen) Zeitstempeln können über die Grenzen der Anwendung hinaus mit jeder anderen Information mit realem Zeitbezug in Verbindung gebracht werden.
- Bildinhalte sind für andere Anwendungen oder Auswertungen mit globalem Zeitbezug wiederverwendbar.
PTP verwenden: "Relative Synchronisierung"
der folgende Abschnitt beschreibt beispielhaft das Vorgehen zur Herstellung einer "relativen Synchronisierung" von Zeitstempeln zwischen zwei PTP-fähigen Kameras in einem Netzwerk.
Hardware-Setup
Zwei unterschiedliche IDS GigE Vision Kameras (GV-526xFA-C, GV-504xCP-M) mit Firmware 2.2 ("PTP-fähig") werden am selben Netzwerk-Switch angeschlossen. Ein zusätzlicher Host-PC dient lediglich zur Steuerung und Konfiguration der Kameras. An der PTP-Synchronisierung der Kameras ist er nicht beteiligt.
Software-Setup
Alle Funktionen zur PTP-Konfiguration finden Sie in der Feature-Nodemap der Kameras unter der Kategorie "PtpControl". Diese Funktionen sind seit der Firmware-Version 2.2 verfügbar. Zur Einrichtung der PTP-Synchronisierung verwenden wir das Vision Cockpit der IDS peak Installation auf dem Host PC.
Konfigurieren Sie eine Kamera als PTP-Master
Die Kamera GV-526xFA-C soll als PTP-Master-Gerät konfiguriert werden. Dazu öffnen Sie die Kamera im Vision Cockpit und aktivieren PTP, indem Sie " PtpEnable " auf " True " setzen. Zusätzlich erhält die Kamera die Erlaubnis, die Master-Rolle zu übernehmen, indem " PtpSlaveOnly " auf " False " gesetzt wird.
# Configure master camera
PtpEnable = True
PtpSlaveOnly = False
Konfigurieren Sie die andere Kamera als PTP-Slave
Die GV-504xCP-M soll als PTP-Slave-Gerät konfiguriert werden. Auch hier wird PTP aktiviert, indem "PtpEnable" auf "True" gesetzt wird. Aber dieses Mal ist die Kamera nur auf die Arbeit als Slave-Gerät beschränkt. Zu diesem Zweck bleibt "PtpSlaveOnly" weiterhin auf "True" eingestellt.
# Configure slave camera
PtpEnable = True
PtpSlaveOnly = True
Entstehung der Master-Slave-Hierarchie
Sobald ein Master- und ein Slave-Gerät konfiguriert sind, wird die Master-Slave-Hierarchie automatisch aufgebaut. Für die Master-Kamera kann dies festgestellt werden, indem "PtpStatus" von "Listening" auf "Master" wechselt. Bei der Slave-Kamera erkennen Sie dies daran, dass "PtpStatus" von "Listening" zuerst auf "Uncalibrated" und nachdem die Synchronisierung mit der Master-Kamera abgeschlossen ist, auf "Slave" wechselt.
Nachdem die Master-Slave-Hierarchie der Kameras über ihre neuen PTP-Fähigkeiten aufgebaut wurde, ist die "relative Synchronisierung" abgeschlossen.
Zeitstempel aktivieren
Wenn Sie die Zeitstempel der nun synchronisierten Kameras mit den Bilddaten in Ihrer Anwendung nutzen möchten, müssen Sie die Übertragung der Zeitstempel als Metadaten (mit den Chunk-Daten) aktivieren.
Aktiveren Sie dafür zuerst die Übertragung von Chunk-Daten mit dem Bildspeicher, indem Sie "ChunkModeActive" auf "True" setzen. Anschließend wählen Sie über den "ChunkSelector" die Info "Timestamp" aus und aktivieren sie über den Schalter "ChunkEnable".
# activate chunk data creation
ChunkModeActive = True
# enable "ChunkTimestamp"
ChunkSelector = Timestamp
ChunkEnable = True
Die Kamera erzeugt ab jetzt mit jeder Bildaufnahme einen Zeitstempel und überträgt ihn mit dem Bildspeicher (in den Chunk-Daten) zum Host-PC. Die Chunk-Daten und damit die Zeitstempel können Sie mit jeder Vision Standard Software auslesen.
Bildaufnahme
Sollen in Anwendungen Bilddaten mit Zeitstempeln verarbeitet werden, kann der Zeitpunkt der Aufnahme und damit die Triggerung der Kameras entscheidend sein. Das kommt ganz darauf an, ob Bilder mehrerer Kameras zu exakt identischen Zeitpunkten (synchrone Bildaufnahme) benötigt werden und wie hoch die Abweichung der zeitlichen Übereinstimmung (Zeitstempel Jitter) sein darf. Je nach Anforderungen des Anwendungsfalls müssen Sie dafür eine geeignete Triggermethode für die Kameras wählen. Ausschlaggebend für die Auswahl sind dabei nicht nur die erreichbare Genauigkeit der verschiedenen Methoden von Software- und Hardwaresignalen, sondern auch der Aufwand und die Kosten für deren Bereitstellung und Einsatz. In unserem Techtipp "Triggern nach dem Lego-Prinzip" finden Sie eine Auswahl von Triggermöglichkeiten für Ihre Anwendung.
Zur Überprüfung der im Vorfeld konfigurierten "relativen Synchronisierung" verwenden wir das PPS (Puls per second) Signal zur Triggerung der Kameras und erreichen damit einen synchronen Freerun der Kameras.
Synchroner Freerun
Das bei aktiver PTP-Funktionalität erzeugte PPS Signal jeder Kamera (sowohl Slave als auch Master) wird, wie der Name schon sagt, jede Sekunde erzeugt, und stellt damit eine gute Möglichkeit dar den Gleichlauf der Kameras zu testen. Das Signal wird als Triggerquelle eingestellt und löst damit jede Sekunde eine Bildaufnahme aus. Die dabei erzeugten Zeitstempel der Bilder sollten durch die "relative Synchronisierung" bis auf wenige Mikrosekunden identisch sein. Der synchrone Freerun über das PPS Signal wird wie folgt in allen Kameras eingestellt.
# 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
Zeitstempel auslesen
Um die Zeitstempel in Ihrer Anwendung zusammen mit den Bildinhalten zu verarbeiten, müssen Sie die Chunk-Daten des jeweils aktuellen Bildspeichers auslesen. Da es sich bei den Chunk-Daten um einen herstellerspezifischen Payload-Speicher mit meist unbekanntem Speicher-Layout handelt, werden die einzelnen Metadaten über die Nodemap ausgelesen. Dazu werden alle vorhandenen Metadaten vom GenTL mit ihrem standardisierten Node-Namen in die Nodemap übertragen, so dass sie über die Standard API erreichbar sind.
Mit dem kommenden IDS peak 1.1 Update Anfang April können Sie Timestamps sowie alle anderen Chunk-Daten sehr komfortable über die IDS peak API abrufen und weiterverarbeiten. Der folgende Sourcecode Auszug zeigt beispielhaft, wie Sie Timestamps eines Bildspeichers extrahieren. Ein vollständiges Sourcecode-Beispiel, das den Umgang mit Chunk-Daten demonstriert, finden Sie ebenfalls im Installationspaket Ihres IDS peak SDK (ab 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();
}
Zusammenfassung
PTP ist eine wichtige Basisfunktionalität in Multikameraanwendungen, wenn es um eine zeitliche Zuordnung der Bildinhalte geht. Eine relative Synchronisierung zwischen den Kameras lässt sich damit sehr einfach ohne zusätzliche Hard- und Software-Anforderungen realisieren. In vielen Anwendungen ist der Abgleich der Kameras untereinander auch völlig ausreichend, um sicherzustellen, dass Bilder zum "selben" Zeitpunkt oder in korrekter Abfolge verwendet werden. Mit Firmware Version 2.2 sind IDS GigE Vision Kameras aber auch für eine globale Synchronisierung mit einem externen Zeitgeber gerüstet. Wenn Sie Fragen zur Zeitsynchronisierung über PTP haben oder mehr Informationen benötigen besuchen Sie die Knowledgebase unserer Webseite oder setzen Sie sich mit unserer Systemberatung in Verbindung.