Sincronización de varios dispositivos de Azure Kinect DK
Cada dispositivo de Azure Kinect DK incluye puertos de sincronización de 3,5 mm (Sync in y Sync out) que se pueden usar para vincular varios dispositivos. Después de conectar los dispositivos, el software puede coordinar la temporización del desencadenador entre ellos.
En este artículo se describe cómo conectar y sincronizar los dispositivos.
Ventajas de usar varios dispositivos de Azure Kinect DK
Hay muchos motivos para usar varios dispositivos de Azure Kinect DK, entre los que se incluyen los siguientes:
- Rellenar las oclusiones. Aunque las transformaciones de datos de Azure Kinect DK producen una sola imagen, las dos cámaras (profundidad y RGB) están separadas por una distancia pequeña. El desplazamiento hace posible las oclusiones. Una oclusión se produce cuando un objeto del primer plano bloquea la vista de parte de un objeto del segundo plano para una de las dos cámaras de un dispositivo. En la imagen de color resultante, el objeto de primer plano parece arrojar una sombra sobre el objeto en segundo plano.
Por ejemplo, en el diagrama siguiente, la cámara del lado izquierdo ve el píxel gris "P2". Sin embargo, el objeto de primer plano blanco bloquea el haz de infrarrojos de la cámara del lado derecho. La cámara del lado derecho no tiene datos para "P2".
Los dispositivos sincronizados adicionales pueden proporcionar los datos ocluidos. - Examinar objetos en tres dimensiones.
- Aumentar la velocidad de fotogramas efectiva a un valor superior a 30 fotogramas por segundo (FPS).
- Capturar varias imágenes en color 4K de la misma escena, todas alineadas en 100 microsegundos (μs) del centro de exposición.
- Aumentar la cobertura de la cámara en el espacio.
Planeación de la configuración de varios dispositivos
Antes de empezar, asegúrese de revisar Especificaciones de hardware de Azure Kinect DK y Cámara de profundidad de Azure Kinect DK.
Nota
Quite la tapa de plástico externa para quedar expuestos los conectores de entrada y salida de sincronización.
Selección de una configuración de dispositivo
Puede usar cualquiera de los enfoques siguientes para la configuración del dispositivo:
- Configuración en cadena de margarita. Sincronice un dispositivo maestro y hasta ocho dispositivos subordinados.
- Configuración en estrella. Sincronice un dispositivo maestro y hasta dos dispositivos subordinados.
Uso de un desencadenador de sincronización externo
En ambas configuraciones, el dispositivo maestro ofrece la señal desencadenante para los dispositivos subordinados. Sin embargo, puede usar un origen externo personalizado para el desencadenador de sincronización. Por ejemplo, puede usar esta opción para sincronizar capturas de imagen con otro equipo. Tanto en la configuración en la cadena de margarita como en la configuración en estrella, el origen del desencadenador externo se conecta al dispositivo maestro.
El origen del desencadenador externo debe funcionar de la misma manera que el dispositivo maestro. Debe proporcionar una señal de sincronización que tenga las siguientes características:
- Activo alto
- Ancho de pulso: más de 8 μs
- 5 V TTL/CMOS
- Capacidad máxima de conducción: No menos de 8 miliamperios (mA)
- Frecuencias admitidas: Exactamente 30 FPS, 15 FPS y 5 FPS (la frecuencia de la señal VSYNC maestra de la cámara de color)
El origen del desencadenador debe enviar la señal al puerto Sync in del dispositivo maestro mediante un cable de audio de 3,5 mm. Puede usar un cable estéreo o mono. Azure Kinect DK conecta todas las fundas y anillos del conector del cable de audio y los conecta a tierra. Como se muestra en el diagrama siguiente, el dispositivo recibe la señal de sincronización solo de la punta del conector.
Para obtener más información sobre cómo trabajar con equipos externos, consulte Uso de la grabadora de Azure Kinect con dispositivos sincronizados externos.
Nota
La salida de sincronización es la señal VSync de la cámara RGB. Las marcas de tiempo de todos los dispositivos se establecen en cero y en recuento. Microsoft no ha caracterizado el ancho mínimo y máximo del pulso de sincronización y recomienda imitar el pulso generado por la salida de sincronización de Azure Kinect DK.
Planeación de la configuración de la cámara y configuración del software
Para obtener información sobre cómo configurar el software para controlar las cámaras y usar los datos de imagen, consulte SDK del Sensor de Azure Kinect.
En esta sección se describen varios factores que afectan a los dispositivos sincronizados (pero no a los dispositivos individuales). El software debe tener en cuenta estos factores.
Consideraciones de exposición
Si desea controlar el tiempo preciso de cada dispositivo, se recomienda usar una configuración de exposición manual. En la configuración de exposición automática, cada cámara de color puede cambiar dinámicamente la exposición real. Dado que la exposición afecta al tiempo, tales cambios provocan que las cámaras pierdan la sincronización rápidamente.
En el bucle de captura de imágenes, evite establecer repetidamente la misma configuración de exposición. Llame a la API solo una vez cuando sea necesario.
Evitación de interferencias entre varias cámaras de profundidad
Cuando varias cámaras de profundidad muestran campos de visión en superposición, cada cámara debe mostrar su propio láser asociado. Para evitar que los láseres interfieran entre sí, las capturas de la cámara deben desplazarse entre ellas 160 μs o más.
Para cada captura de la cámara de profundidad, el láser se enciende nueve veces y está activo solo durante 125 μs cada vez. A continuación, el láser está inactivo durante 1450 μs o 2390 μs, en función del modo de funcionamiento. Este comportamiento significa que el punto inicial del cálculo de desplazamiento es de 125 μs.
Además, las diferencias entre el reloj de la cámara y el reloj de firmware del dispositivo aumentan el desplazamiento mínimo a 160 μs. Para calcular un desplazamiento más preciso para la configuración, tenga en cuenta el modo de profundidad que está usando y consulte la tabla del tiempo sin procesar del sensor de profundidad. Con los datos de esta tabla, puede calcular el desplazamiento mínimo (el tiempo de exposición de cada cámara) mediante la siguiente ecuación:
Tiempo de exposición = (Pulsos de infrarrojos × Ancho de pulso) + (Periodos de inactividad × Tiempo de inactividad)
Cuando se usa un desplazamiento de 160 μs, se pueden configurar hasta nueve cámaras de profundidad adicionales para que cada láser se encienda mientras los demás láser están inactivos.
En el software, use depth_delay_off_color_usec
o subordinate_delay_off_master_usec
para asegurarse de que cada láser de infrarrojos se activa en su propia ventana de 160 μs o que tenga un campo de visión diferente.
Nota
El ancho real del pulso es 125 μs; sin embargo, se fija en 160 μs para dar cierto margen. Tomando NFOV UNBINNED como ejemplo, cada pulso de 125 μs va seguido de un período de inactividad de 1450 μs. Al sumar estos (9 x 125) + (8 x 1450) da como resultado el tiempo de exposición de 12,8 ms. Para intercalar las exposiciones de los dos dispositivos, asegúrese de que el primer pulso de la segunda cámara entre dentro del primer período de inactividad de la primera cámara. El retraso entre la primera y la segunda cámara puede ser tan pequeño como 125 μs (el ancho de un pulso), pero recomendamos cierto margen; por lo tanto, 160 μs. Con 160 μs se pueden intercalar los períodos de exposición de 10 cámaras como máximo.
Preparación de los dispositivos y demás hardware
Además de varios dispositivos de Azure Kinect DK, es posible que tenga que obtener equipos host adicionales y otro hardware para admitir la configuración que desea crear. Utilice la información de esta sección para asegurarse de que todos los dispositivos y el hardware estén listos antes de comenzar la configuración.
Dispositivos de Azure Kinect DK
Para cada dispositivo de Azure Kinect DK que desee sincronizar, haga lo siguiente:
- Asegúrese de tener instalado el firmware más reciente en el dispositivo. Para obtener más información sobre cómo actualizar los dispositivos, vaya a Actualización del firmware de Azure Kinect DK.
- Quite la cubierta del dispositivo para ver los puertos de sincronización.
- Anote el número de serie de cada dispositivo. Usará este número más adelante en el proceso de configuración.
Equipos host
Normalmente, cada Azure Kinect DK usa su propio equipo host. Puede usar un controlador de host dedicado, en función de cómo use el dispositivo y la cantidad de datos que se transfieran a través de la conexión USB.
Asegúrese de que el SDK del Sensor de Azure Kinect esté instalado en cada equipo host. Para obtener más información sobre cómo instalar el SDK del Sensor, vaya a Inicio rápido: Configuración de Azure Kinect DK.
Equipos Linux: Memoria USB en Ubuntu
De manera predeterminada, los equipos host basados en Linux asignan al controlador USB solo 16 MB de memoria de kernel para controlar las transferencias USB. Esta cantidad suele ser suficiente para admitir un único dispositivo de Azure Kinect DK. Sin embargo, para admitir varios dispositivos, el controlador USB tiene que disponer de más memoria. Para aumentar la memoria, siga estos pasos:
- Edite /etc/default/grub.
- Busque la siguiente línea:
Reemplácelo mediante esta línea:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
Nota:
Estos comandos establecen la memoria USB en 32 MB. Este es un ejemplo de configuración con el doble del valor predeterminado. Puede establecer un valor mucho mayor, según sea necesario para su solución.
- Ejecute sudo update-grub.
- Reinicie el equipo.
Cables
Para conectar los dispositivos entre sí y con los equipos host, debe usar cables macho a macho de 3,5 mm (también conocido como cable de audio de 3,5 mm). Los cables deben tener una longitud inferior a 10 metros y pueden ser estéreo o mono.
El número de cables que debe tener dependerá del número de dispositivos que use y de la configuración específica del dispositivo. No se incluyen cables con el dispositivo de Azure Kinect DK. Deben comprarlos por separado.
Si conecta los dispositivos en configuración en estrella, también debe tener un divisor de auriculares.
Conectar dispositivos
Para conectar dispositivos de Azure Kinect DK en una configuración en cadena de margarita
- Conecte cada Azure Kinect DK a la alimentación.
- Conecte cada dispositivo a su equipo host.
- Seleccione un dispositivo como dispositivo maestro y conecte un cable de audio de 3,5 mm a su puerto Sync out.
- Conecte el otro extremo del cable en el puerto Sync in del primer dispositivo subordinado.
- Para conectar otro dispositivo, conecte otro cable en el puerto Sync out del primer dispositivo subordinado y en el puerto Sync in del siguiente dispositivo.
- Repita el paso anterior hasta haber conectado todos los dispositivos. El último dispositivo debe tener una sola conexión de cable. El puerto Sync out debe estar vacío.
Para conectar dispositivos de Azure Kinect DK en una configuración en estrella
- Conecte cada Azure Kinect DK a la alimentación.
- Conecte cada dispositivo a su equipo host.
- Seleccione un dispositivo para que sea el dispositivo maestro y conecte el extremo único del divisor de auriculares en el puerto Sync out.
- Conecte los cables de audio de 3,5 mm a los extremos "divididos" del divisor de auriculares.
- Conecte el otro extremo de cada cable en el puerto Sync in de uno de los dispositivos subordinados.
Verificación de que los dispositivos están conectados y en comunicación
Para verificar que los dispositivos están conectados correctamente, use Azure Kinect Viewer. Repita este procedimiento según sea necesario para probar cada dispositivo subordinado en combinación con el dispositivo maestro
Importante
Para este procedimiento, debe conocer el número de serie de cada Azure Kinect DK.
- Abra dos instancias de Azure Kinect Viewer.
- En Open Device (Abrir dispositivo), seleccione el número de serie del dispositivo subordinado que desea probar.
Importante
Para obtener una alineación precisa de captura de imágenes entre todos los dispositivos, debe iniciar el dispositivo maestro en último lugar.
- En Sincronización externa, seleccione Sub.
- Seleccione Inicio.
Nota
Dado que se trata de un dispositivo subordinado, Azure Kinect Viewer no muestra ninguna imagen una vez que se inicia el dispositivo. No se muestra ninguna imagen hasta que el dispositivo subordinado recibe una señal de sincronización del dispositivo maestro.
- Una vez que se ha iniciado el dispositivo subordinado, use la otra instancia de Azure Kinect Viewer para abrir el dispositivo maestro.
- En Sincronización externa, seleccione Maestro.
- Seleccione Inicio.
Cuando se inicia el dispositivo maestro de Azure Kinect, ambas instancias de Azure Kinect Viewer deberían mostrar imágenes.
Calibración de los dispositivos como conjunto sincronizado
Después de verificar que los dispositivos se comunican correctamente, está listo para calibrarlos para generar imágenes en un único dominio.
En un único dispositivo, las cámaras de profundidad y RGB están calibradas de fábrica para funcionar de manera conjunta. Sin embargo, cuando varios dispositivos tienen que funcionar juntos, tienen que calibrarse para determinar cómo transformar una imagen del dominio de la cámara que la capturó al dominio de la cámara que desea usar para procesar imágenes.
Hay varias opciones para la calibración cruzada de dispositivos. Microsoft proporciona la muestra de código de pantalla verde de GitHub, que usa el método OpenCV. El archivo Léame para este ejemplo de código proporciona más detalles e instrucciones para calibrar los dispositivos.
Para obtener más información sobre la calibración, consulte Uso de las funciones de calibración de Azure Kinect.
Pasos siguientes
Después de configurar los dispositivos sincronizados, también puede aprender a usar la