Sincronización de tiempo de fusión multisensor (1)

1. ¿Por qué la fusión multisensor necesita sincronización de tiempo?

  1. Cada sensor tiene su propia fuente de reloj.
  2. Diferentes sensores tienen diferentes frecuencias de muestreo
  3. Además, la transmisión de datos, la exposición de la cámara, etc. provocarán retrasos incontrolables

Para fusionar efectivamente los datos de percepción de múltiples sensores, es necesaria la sincronización de tiempo.

2. Marca de tiempo de cada sensor

sensor marca de tiempo
Marca de tiempo GPS/GNSS La hora de GPS se refiere a la hora atómica de GPS, que se basa en la hora UTC a las 0:00:00 del 6 de enero de 1980 y se contará de acuerdo con los segundos TAI.
marca de tiempo de la cámara La cámara con obturador rodante que se usa en la conducción automática admite la exposición de activación externa, pero dado que el ciclo de fotogramas de la cámara incluye el tiempo de exposición y el tiempo de lectura (la lectura del punto de píxel del fotograma completo), es necesario prestar atención al tiempo de exposición. Para las cámaras con el mismo chip cmos, el tiempo de lectura se fija para invertir la marca de tiempo real de la imagen (generalmente, se utiliza el tiempo intermedio de exposición).
marca de tiempo LIDAR En la actualidad, el lidar utilizado en la conducción autónoma admite la sincronización desde el nivel del hardware, es decir, el disparador del hardware activa los datos de LiDAR y marca los datos de este marco.LiDAR generalmente tiene dos tipos de interfaces de sincronización de tiempo: mecanismo de sincronización de tiempo de Ethernet basado en IEEE 1588 y protocolo PPS + NMEA (mecanismo de sincronización de tiempo basado en GNSS)
Marca de tiempo de radar de onda milimétrica En la actualidad, el radar convencional de ondas milimétricas montado en vehículos adopta el método de modulación FMCW. Una vez que se enciende, comienza a enviar y recibir señales. Tiene un mecanismo de tiempo interno especial y no puede recibir tiempo externo. Además, el radar de ondas milimétricas envía periódicamente la señal de la lata, por lo que el tiempo de datos se puede obtener de la señal de la lata.
marca de tiempo de la IMU En general, la IMU y el GNSS se integran juntos, suponiendo que esté integrado en la FPGA, luego se recibe la salida de pulso de tiempo de alta precisión de la FPGA, para estampar la señal del sensor con una marca de tiempo de alta precisión.


3. Fuente de reloj unificada

Se proporciona el mismo tiempo de referencia a cada sensor a través de una fuente de reloj unificada, y cada sensor calibra su propio tiempo de reloj de acuerdo con el tiempo de referencia proporcionado para realizar la sincronización de tiempo desde el hardware. Debido a que las fuentes de reloj tienen desviaciones de reloj, y cada fuente de reloj tiene desviaciones de reloj diferentes, incluso si las marcas de tiempo de cada sensor están alineadas en el tiempo inicial, después de un período de operación, los resultados previamente alineados se desviarán. La solución a este problema es unificar la fuente del reloj en el hardware.

En la configuración del sensor de conducción autónoma, el receptor GNSS es uno de los dispositivos esenciales. El satélite de navegación en el GNSS tiene un reloj atómico de alta precisión incorporado. El receptor GNSS puede obtener una señal de reloj de ultra alta precisión al resolver la señal del satélite de navegación. Cuando la señal GNSS pueda cumplir con los requisitos de posicionamiento, su propio reloj también será corregido por el reloj atómico del satélite, lo que mejorará aún más la precisión.
En general, el tiempo GNSS se puede usar como una fuente de tiempo unificada, y el tiempo de referencia se proporciona a cada sensor a través de GNSS, y cada sensor calibra su propio tiempo de reloj de acuerdo con el tiempo de referencia proporcionado; además de los esquemas de tiempo GNSS, PTP y NTP también se pueden agregar según los requisitos, y la red se usa para la sincronización de tiempo.

Varios conceptos:

  1. El principio fundamental de la temporización GNSS es utilizar PPS+NMEA (como GPRMC) para proporcionar la hora. Los mensajes GPRMC proporcionan información sobre el año, el mes, el día, la hora, los minutos y los segundos (generalmente se envían y reciben a través de un puerto serie con una velocidad de transmisión de 9600 y el tiempo de procesamiento es de milisegundos). El PPS suele utilizar 1PPS, es decir, un segundo pulso con una frecuencia de 1 vez por segundo, y está conectado a la computadora industrial. El tiempo total se suma al segundo completo de la hora UTC en el mensaje GPRMC para obtener la hora del sistema. Para obtener más información, consulte el principio de temporización PPS+GPRMC.
  2. NTP (Network Time Protocol) es un protocolo de red utilizado para sincronizar relojes entre diferentes computadoras. Su objetivo de diseño es hacer que los relojes de todas las máquinas interconectadas difieran de la hora UTC en solo unos pocos milisegundos.
  3. PTP (Protocolo de tiempo de precisión, 1588 V2) es un protocolo de sincronización de reloj de alta precisión basado en Ethernet, que puede realizar una sincronización de reloj de submicrosegundos entre múltiples nodos esclavos (varios sensores) y nodos maestros (hosts) en Ethernet, siempre que todos los nodos estén interconectados a través de Ethernet, los conmutadores admitan el protocolo PTP y cada nodo admita el protocolo PTP. PTP calcula el retraso de transmisión de la red y la desviación del reloj entre los dispositivos maestro y esclavo intercambiando mensajes de sincronización entre los dispositivos maestro y esclavo y registrando el tiempo de envío de los mensajes. Para obtener más información, consulte PTP (IEEE1588), método de sincronización de tiempo TSN

PPS: pulso por segundo, pulso por segundo. 1PPS = 1Hz = 1 vez por segundo. Es una señal de pulso por segundo, que se utiliza para indicar el segundo tiempo completo, que suele estar marcado por el flanco ascendente del segundo pulso. La precisión del segundo pulso puede alcanzar el nivel ns y no hay error acumulativo.

En la actualidad, el esquema de sincronización de tiempo convencional utiliza el tiempo GNSS como tiempo de referencia y utiliza el protocolo de sincronización de reloj PTP/gPTP para completar la sincronización de tiempo entre sensores.La premisa de PTP es que el conmutador debe admitir el protocolo PTP para lograr una sincronización de alta precisión. PTP implementa sincronización de tiempo a nivel de hardware, mientras que NTP lo implementa a nivel de capa de aplicación Comparado con NTP, PTP es adecuado para la sincronización de tiempo entre dispositivos de adquisición de datos que requieren alta precisión.

¿Por qué necesita agregar sincronización PTP cuando tiene sincronización GNSS?

  1. PPS es una señal de pulso de una sola línea sin blindaje, que es extremadamente susceptible a la interferencia del entorno electromagnético severo en el automóvil.En ese momento, es imposible distinguir si es un pulso de interferencia o un pulso sincrónico.
  2. Las señales de los satélites se ven fácilmente afectadas por factores como los edificios y el clima. Cuando se pierde la fuente del reloj GNSS, todos los dispositivos que necesitan sincronización de tiempo no podrán obtener datos de tiempo.


Como se muestra en la figura a continuación, GNSS, PTP y NTP están integrados para unificar la fuente del reloj y la situación real se puede configurar de acuerdo con los requisitos. Diferentes sensores pueden elegir diferentes métodos de sincronización de tiempo según sus propias características

Sincronización de tiempo duro (sincronización de tiempo de hardware)


Una vez que se unifica la fuente del reloj, solo puede garantizar que la diferencia horaria no tenga una deriva acumulativa, pero debido a que los ciclos de adquisición de diferentes sensores son independientes entre sí, no puede garantizar que los datos se recopilarán al mismo tiempo. Por lo tanto, es necesario diseñar un activador para activar simultáneamente diferentes imágenes del sensor. Además de usarse como una fuente de reloj unificada, el sistema GNSS también puede usar su pulso PPS para activar el disparador y enviar una instrucción al sensor para recopilar datos, a fin de cambiar la frecuencia de recopilación de datos del sensor y recopilar datos en un punto de tiempo específico.

 Si el sensor es compatible con la activación por hardware, la marca de tiempo del GPS se puede utilizar como referencia para la activación del hardware. En este momento, la marca de tiempo contenida en los datos proporcionados por el sensor es la marca de tiempo global (marca de tiempo del GPS) en lugar de la marca de tiempo del sensor. El sensor GNSS viene con un segundo generador de pulsos, por lo que puede usarse directamente.

Tomando el lidar y la cámara como ejemplo, después de alcanzar el tiempo de GPS especificado, la señal de adquisición de datos se activa al mismo tiempo. El método consiste en utilizar la señal PPS como señal de activación para darse cuenta de que tanto el lidar como la cámara recopilan datos en el flanco ascendente de la señal PPS y marcan las marcas de tiempo de sus respectivos relojes. Dado que la frecuencia de PPS es de solo 1 Hz, generalmente se requiere un dispositivo para enviar la señal de PPS a una onda cuadrada de cualquier frecuencia pero en la misma fase que la señal de PPS, de modo que se pueda controlar la frecuencia de adquisición de la cámara.

El fabricante de lidar ideó una función de bloqueo de fase, que es ingresar PPS, cuando llega el borde ascendente de PPS, el rayo láser de lidar simplemente gira a un cierto ángulo. Por ejemplo, establezca el ángulo de bloqueo de fase del lidar en el centro del campo de visión de la cámara. Si el campo de visión de la cámara está orientado hacia la parte delantera del vehículo y el sistema de coordenadas del lidar también está orientado hacia la parte delantera del vehículo, el ángulo de bloqueo de fase debe ser de 0 grados. Luego, el problema se resuelve de esta manera. Cada vez que el rayo láser del lidar gira a la posición de 0 grados, que es el centro del campo de visión de la cámara (la dirección del eje X en la figura a continuación), el borde ascendente del PPS simplemente llega y la cámara se activa en consecuencia. De esta manera, se realiza la adquisición simultánea del lidar y la cámara.

Sin embargo, dado que el lidar y la cámara recopilan datos de diferentes maneras, solo podemos garantizar aproximadamente la recopilación sincrónica de lidar y la cámara. Como se muestra en la figura a continuación, el rayo láser del lidar gira continuamente en grados 360. Suponiendo que la velocidad de fotogramas sea de 10 Hz, la diferencia de tiempo entre el punto más temprano en el momento de la adquisición y el último punto en el momento de la adquisición en un marco de nube de puntos es de 100 ms. La cámara es diferente, la cámara se expone instantáneamente, por lo que el tiempo de adquisición de todos los píxeles de la imagen es el mismo. Como resultado, solo podemos garantizar aproximadamente la adquisición simultánea de lidar y cámara. ¿Por qué es aproximado? Para esas nubes de puntos en el centro del campo de visión de la cámara, su tiempo de adquisición es consistente con el tiempo de adquisición de la imagen, pero para esas nubes de puntos en el borde del campo de visión de la cámara, su tiempo de adquisición debe tener una cierta desviación del tiempo de adquisición de la imagen De acuerdo con el tamaño del campo de visión de la cámara y la velocidad de cuadro de la adquisición de la nube de puntos, la desviación de tiempo puede ser de aproximadamente 5ms~20ms.

                                                
Sincronizar efectos con disparadores

 

Sincronización suave de tiempo (sincronización de tiempo de software)

Solo la sincronización de hardware no puede compensar el problema de que la frecuencia de cada sensor no puede superponerse dentro de varios ciclos. Por ejemplo, la cámara expone una vez cada 50 ms y el lidar escanea una vez cada 100 ms. Solo necesita sincronizarse una vez cada 2 ciclos de cámara y cada 1 ciclo de lidar. Sin embargo, algunos períodos de sensor pueden ser de 30 ms, 27 ms, etc., y la frecuencia entre sensores no es un múltiplo entero, por lo que su período de coincidencia es un poco grande. En este momento, se necesita una sincronización suave.

El propósito de la sincronización suave es realizar cálculos de algoritmos sobre la base de la frecuencia de adquisición natural del sensor original para formar un marco virtual y obtener información al mismo tiempo. Generalmente, la frecuencia de adquisición de la cámara es de 20 Hz, es decir, el período de 50 ms, y el período de salida del radar es de 50-100 ms. Cuando realizamos el algoritmo de fusión del sensor, si queremos obtener el estado del vehículo en el momento de la adquisición de la cámara, debemos calcular un valor equivalente mediante interpolación y otros métodos basados ​​en la información del radar en el momento anterior y posterior a la cámara. Este es el significado de obtener información al mismo tiempo.

El método de interpolación calcula principalmente la información del nivel objetivo. El algoritmo de fusión correspondiente solo se puede realizar después de obtener los datos del sensor al mismo tiempo.

El método de interpolación más utilizado es la interpolación y la extrapolación. Es adecuado para situaciones en las que no existe una relación múltiple entre las frecuencias de los sensores, o cuando la frecuencia de los sensores es inestable. Utilice principalmente las etiquetas de tiempo en los dos fotogramas del sensor para calcular la diferencia de tiempo y luego calcule la posición de cada objetivo en el fotograma combinando el fotograma de destino que contiene información de movimiento con la diferencia de tiempo, calcule la posición de cada objetivo en el nuevo fotograma y cree un nuevo fotograma entre los dos fotogramas originales.

La ventaja del método de interpolación y extrapolación es que se puede aplicar a la sincronización de tiempo entre dos sensores, la desventaja es que necesita rastrear el objetivo, porque los datos del mismo objetivo en los marcos delantero y trasero deben ser ponderados. El método de interpolación se utiliza en una solución de posfusión de sensores múltiples, es decir, fusión de nivel de objetivo, y cada sensor tiene resultados de nivel de objetivo de salida independientes.

El método de interpolación se puede resumir como

  1. Seleccione un sensor principal, obtenga los datos del sensor principal en el tiempo t y la marca de tiempo correspondiente
  2. Indexe los datos del marco frontal y posterior de otros sensores en el tiempo t, y calcule el peso de los datos del marco frontal y posterior
  • Configure el tiempo de interpolación como sync_time, y los datos del marco delantero y trasero de otros sensores como front_data y back_data
  • 则 front_scale = (back_data.time - sync_time) / (back_data.time - front_data.time)
  • back_scale = (sync_time - front_data.time) / (back_data.time - front_data.time)

    3. Utilice la interpolación para obtener los datos de otros sensores en el tiempo t

  •         Resultado de la interpolación lineal: synced_data = front_data * front_scale + back_data * back_scale

Sincronización de tiempo en ROS

ROS proporciona filtros de mensajes para la sincronización de tiempo. Los filtros de mensajes son similares a un caché de mensajes, que se suscribe a los temas de diferentes sensores que deben fusionarse. Cuando el mensaje llega al filtro de mensajes, es posible que no se emita inmediatamente, sino que se emita en un momento posterior cuando se cumplen ciertas condiciones, y se genera un resultado de sincronización y se envía a la función de devolución de llamada. Los datos después del tiempo de sincronización se procesan en la función de devolución de llamada.

message_filters no modifica los datos pasados ​​de cada tema (es decir, los datos en el búfer), sino que crea una línea de tiempo para cada búfer y luego juzga si se requiere salida en función de cada punto de tiempo en la línea de tiempo.

import message_filters
from sensor_msgs.msg import Image, CameraInfo

def callback(image, camera_info):
    # Solve all of perception here...

    image_sub = message_filters.Subscriber('image', Image)
    info_sub = message_filters.Subscriber('camera_info', CameraInfo)

    ts = message_filters.TimeSynchronizer([image_sub, info_sub], 10)
    ts.registerCallback(callback)
    rospy.spin()
  • Reciba múltiples temas de manera uniforme a través de TimeSynchronizer y emita los resultados correspondientes solo cuando todos los temas tengan estrictamente la misma marca de tiempo
  • ApproximateTimeSynchronizer genera datos con tiempos similares en varios temas al mismo tiempo

Para esos datos no alineados, después del procesamiento síncrono, no se envían. Lo que finalmente se publica es solo un subconjunto de los datos originales. Por lo tanto, ros message_filters es equivalente a reducir la muestra de diferentes datos, pero solo genera datos sincrónicos o aproximadamente sincrónicos en el eje de tiempo, y no puede desincronizar activamente

Cómo elegir un método de sincronización de tiempo

principios básicos

  1. Una fuente de reloj unificada es el requisito básico
  2. Si desea lograr la fusión previa, elija lograr la sincronización en la capa de hardware para asegurarse de que los datos recopilados estén al mismo tiempo. Usar el pulso PPS para activar la exposición de la cámara es una mejor opción
  3. La sincronización suave basada en el método de interpolación se basa en el cálculo del nivel del objetivo. Debe ponderar los datos del mismo objetivo en los fotogramas anteriores y posteriores, lo que requiere que el sensor de interpolación pueda realizar un seguimiento independiente del objetivo. Esto generalmente solo se aplica a los escenarios posteriores a la fusión.

Cómo elegir un esquema de sincronización de tiempo para diferentes tipos de dispositivos

  1. Cronometrar la plataforma informática a través de la fuente de reloj GNSS
  2. Implemente el maestro PTP en la plataforma informática y conecte el servidor NTP a la plataforma informática a través de Ethernet (opcional)
  3. Si el dispositivo es compatible con el protocolo PTP, como Lidar, el dispositivo se utilizará como esclavo PTP, se conectará al conmutador a través de Ethernet y luego se conectará al maestro PTP en la plataforma informática.
  4. Si el dispositivo no es compatible con el protocolo PTP, como la cámara, puede usar Trigger Box para conectarse al sistema GNSS y activar sincrónicamente la exposición de la cámara de acuerdo con el período de muestreo del Lidar.
  5. Debido a su principio de imagen especial, FMCW Radar generalmente utiliza un protocolo de sincronización de tiempo basado en CAN

resumen

1) Alineación de tiempo: primero asegúrese de que la fuente del reloj sea consistente

Alinee las marcas de tiempo de cada sensor en el tiempo inicial y unifique la fuente del reloj en el hardware. Por lo general, el segundo generador de pulsos PPS que viene con GNSS se usa para capturar el flanco ascendente de la salida de señal de pulso pps por GNSS como el comienzo de un segundo absoluto. Utilice PTP, NTP como fuente de reloj externa cuando sea necesario.

2) Sincronización de tiempo: obtenga información al mismo tiempo

Una vez que se resuelve la sincronización del hardware, solo se puede garantizar que la diferencia de tiempo no tenga una deriva acumulativa, pero el tiempo de adquisición de cada sensor no es el mismo. Esto requiere sincronización de datos.

La sincronización es interpolación, específicamente interpolación y extrapolación. Los datos entre dos puntos de tiempo se interpolan y los datos fuera del punto de tiempo se especulan utilizando datos históricos.

Con respecto al tema del tiempo de inserción, debido a que usamos el radar como sensor central, cada vez que recibimos datos del radar, usamos el tiempo actual de recopilación de datos del radar como el punto de tiempo que se insertará, para obtener la información equivalente de otros sensores distintos del radar al mismo tiempo.

Supongo que te gusta

Origin blog.csdn.net/scott198510/article/details/131170408
Recomendado
Clasificación