Sincronizar relojes
En aplicaciones que consisten en procesar material gráfico de varias cámaras el momento o la secuencia temporal correcta de la captura de las imágenes resultan a menudo decisivos para el tratamiento posterior. Si se transmite una marca temporal, se puede crear una referencia temporal con el resto de datos de imagen. Sin embargo, es esencial que las cámaras tengan exactamente la misma base temporal. Con el "Precision Time Protocol" (PTP) las cámaras GigE Vision de IDS a partir del firmware 2.2. se pueden sincronizar fácilmente.
Sincronización de cámaras GigE Vision mediante PTP
Precision Time Protocol (PTP) es un estándar de sincronización (IEEE1588) con el que se pueden sincronizar temporalmente dispositivos conectados en red. Las cámaras que soportan este estándar intercambian mensajes de sincronización con un reloj máster en ciclos definidos. Con la información que ofrece la marca temporal sobre cada momento de envío y recepción los contadores internos de las cámaras pueden calibrarse de forma muy exacta y mantenerse sincronizadas.
Con la versión de firmware 2.2, todas las cámaras GigE Vision de IDS serán compatibles con PTP.
PTP no ha sido definido para conexiones USB, por lo que esta nota de aplicación se refiere solo a las cámaras GigE Vision de IDS.
La marca de tiempo definida en IEEE1588 establece como fecha de inicio (epoch) las 00:00 horas del 1 de enero de 1970 y ofrece una precisión de 1 ns (1 GHz). La exactitud de la sincronización temporal entre los dispositivos en red se encuentra en el rango de los microsegundos debido a las inexactitudes en las latencias y los tiempos de ejecución de las señales.
Ejemplos de aplicación del PTP
El PTP es una tecnología de base para diversas aplicaciones con referencia temporal de las imágenes. Se puede crear de formas distintas dependiendo de las necesidades de la aplicación y de la complejidad de la infraestructura de la red:
1. Sincronización con marca de tiempo relativa
En este caso todas las cámaras se encuentran conectadas en una red. Una cámara ejerce de master y el resto de slave. Las marcas temporales de todas las cámaras slave se sincronizan con la cámara master. Las cámaras no muestran una marca de tiempo absoluta (tiempo real) ni pueden dispararse sincrónicamente sin un esfuerzo adicional.
Ventajas:
- Las marcas de tiempo relativas crean una asignación temporal de las capturas de imagen de todas las cámaras de la aplicación. Definen qué imagen ha sido la primera y cuál es la diferencia temporal entre las imágenes de las distintas cámaras.
- Las marcas de tiempo relativas se pueden generar sin coste ni esfuerzo adicionales para infraestructuras de redes específicas.
2. Sincronización con marca de tiempo con tiempo real
En este caso las cámaras en red se sincronizan con un master externo. Este master PTP puede ser una tarjeta de red que soporta la denominada "hardware-timestamping". Sin el soporte del hardware la exactitud de la sincronización se ve gravemente afectada. Además del hardware, también se necesita un software que soporte el PTP (atención: no forma parte de IDS peak).
Ventajas:
- El contenido de las imágenes con marcas de tiempo globales (reales) puede asociarse con cualquier otra información con referencia en tiempo real más allá de los límites de la aplicación.
- Las imágenes pueden volver a utilizarse para otras aplicaciones o análisis con referencia en tiempo real o global.
Uso del PTP: "Sincronización relativa"
A continuación se describe un procedimiento tipo para crear una "sincronización relativa" de marcas de tiempo entre dos cámaras en red compatibles con PTP.
Configuración del hardware
Dos cámaras IDS GigE Vision distintas (GV-526xFA-C, GV-504xCP-M) con firmware 2.2 ("compatible con PTP") se conectan en red en el mismo switch. Se utiliza un PC host adicional exclusivamente para controlar y configurar las cámaras, no interviene en la sincronización PTP de las cámaras.
Configuración del software
Todas las funciones para la configuración PTP se encuentran en el "feature-nodemap" de las cámaras bajo la categoría "PtpControl". Estas funciones están disponibles a partir de la versión 2.2 del firmware. Para configurar la sincronización PTP utilizamos el Vision Cockpit del IDS peak instalado en el PC host.
Configure una cámara como PTP master
La cámara GV-526xFA-C se debe configurar como dispositivo PTP master. Para ello debe abrir la cámara en el Vision Cockpit y activar PTP poniendo " PtpEnable " en " True ". La cámara obtiene el permiso para asumir el rol de master poniendo " PtpSlaveOnly " en " False ".
# Configure master camera
PtpEnable = True
PtpSlaveOnly = False
Configure la otra cámara como PTP slave
La GV-504xCP-M debe configurarse como dispositivo PTP slave. También aquí se activa el PTP poniendo "PtpEnable" en "True". Pero esta vez la cámara solo se limita a trabajar como dispositivo slave. Para ese fin "PtpSlaveOnly" sigue ajustado en "True".
# Configure slave camera
PtpEnable = True
PtpSlaveOnly = True
Generación de la jerarquía master-slave
La jerarquía master-slave se crea automáticamente en cuanto se han configurado un master y un slave. Para la cámara master, esto se puede definir pasando "PtpStatus" de " Listening " a "Master". En la cámara slave lo reconocerá porque "PtpStatus" pasa primero de "Listening" a "Uncalibrated" y, una vez finalizada la sincronización con la cámara master, a "Slave".
Tras crear la jerarquía master-slave de las cámaras mediante sus nuevas habilidades PTP, la "sincronización relativa" habrá finalizado.
Activar marca de tiempo
Si desea utilizar las marcas de tiempo de las cámaras ahora sincronizadas con los datos de imagen en su aplicación, tiene que activar la transmisión de las marcas de tiempo como metadatos (con los datos de los chunks).
Para ello active primero la transmisión de los datos de los chunks con la memoria gráfica poniendo "ChunkModeActive" en "True". A continuación seleccione mediante el "ChunkSelector " la información "Timestamp" y actívela mediante el selector "ChunkEnable".
# activate chunk data creation
ChunkModeActive = True
# enable "ChunkTimestamp"
ChunkSelector = Timestamp
ChunkEnable = True
A partir de ahora la cámara genera una marca de tiempo con cada captura y la transmite con la memoria gráfica (en los datos de los chunks) al PC host. Puede consultar los datos de los chunks y con ello la marca de tiempo con cualquier software con estándar Vision.
Captura de imágenes
Si en la aplicación se deben procesar datos de imagen con marcas de tiempo, el momento de la captura y el disparo de las cámaras pueden resultar decisivos. Esto depende de si se necesitan imágenes de varias cámaras en momentos idénticos (captura sincrónica) y cuál es el margen de desviación de la correspondencia temporal (marca de tiempo jitter). Deberá seleccionar un método de disparo adecuado para las cámaras en función de los requisitos de la aplicación. Para la elección son determinantes no solo la exactitud alcanzable de los distintos métodos de señales de software y hardware, sino también la complejidad y el coste de su suministro y su utilización. Nuestro Consejo técnico " Las señales de disparo según el principio de LEGO " le informa sobre varias posibilidades de disparo para su aplicación.
Para comprobar la "sincronización relativa" preconfigurada utilizamos la señal PPS (puls per second) para el disparo de las cámaras, lo que nos permite conseguir un freerun sincrónico de las cámaras
Freerun sincrónico
La señal PPS generada con la funcionalidad PTP activa de cada cámara (tanto slave como master) se genera cada segundo, como su nombre indica, por lo que es una buena opción para comprobar la sincronización de las cámaras. La señal se configura como fuente de disparo, de modo que dispara una captura cada segundo. Las marcas de tiempo generadas de las imágenes deberían ser idénticas excepto por pocos microsegundos por medio de la "sincronización relativa". El freerun sincrónico a través de la señal PPS se ajusta en todas las cámaras como sigue.
# 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
Lectura de la marca de tiempo
Para procesar la marca de tiempo en su aplicación junto con el contenido de las imágenes debe leer los datos de los chunks de cada memoria gráfica. Como los datos de los chunks son una memoria payload específica del fabricante con un layout de la memoria mayormente desconocido, los distintos metadatos se leen a través del mapa de nodos. Para ello todos los metadatos existentes se transfieren de GenTL al mapa de nodos con sus nombres de nodo estandarizados, de modo que están accesibles mediante el estándar API.
Con la próxima actualización 1.1 de IDS peak que aparecerá a principios de abril podrá consultar y procesar marcas de tiempo y el resto de datos de los chunks de forma muy cómoda a través de IDS peak API. El siguiente extracto de código fuente le muestra cómo puede extraer marcas de tiempo de una memoria gráfica. Un ejemplo de código fuente completo que muestra el manejo con datos de los chunks también puede encontrarlo en el paquete de instalación de su IDS peak SDK (a partir de la versión 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();
}
Resumen
El PTP es una funcionalidad básica importante en aplicaciones multicámara cuando es necesaria una asignación temporal de las imágenes. Se puede llevar a cabo una sincronización relativa entre las cámaras de forma muy sencilla sin otros requisitos de hardware o software. En muchas aplicaciones es suficiente con sintonizar las cámaras para garantizar que las imágenes se utilicen en el "mismo" momento o en una secuencia correcta. Con la versión 2.2. del firmware, las cámaras GigE Vision de IDS también estarán preparadas para una sincronización global con un temporizador externo. Si tiene alguna pregunta sobre la sincronización a través del PTP o precisa más información, consulte la Knowledgebase de nuestra página web o póngase en contacto con nuestros consultores.