Sincronizar vários dispositivos Azure Kinect DK

Cada dispositivo Azure Kinect DK inclui portas de sincronização de 3,5 mm (Sync in e Sync out) que pode utilizar para ligar vários dispositivos em conjunto. Depois de ligar os dispositivos, o seu software pode coordenar o tempo de disparo entre eles.

Este artigo como ligar e sincronizar os dispositivos.

Benefícios da utilização de vários dispositivos Azure Kinect DK

Existem muitas razões para usar vários dispositivos Azure Kinect DK, incluindo os seguintes:

  • Preencha as oclusões. Embora as transformações de dados Azure Kinect DK produzam uma única imagem, as duas câmaras (profundidade e RGB) estão na verdade a uma pequena distância. A compensação torna possíveis as oclusões. Uma oclusão ocorre quando um objeto de primeiro plano bloqueia a visão de parte de um objeto de fundo para uma das duas câmaras de um dispositivo. Na imagem de cor resultante, o objeto de primeiro plano parece lançar uma sombra no objeto de fundo.
    Por exemplo, no diagrama seguinte, a câmara do lado esquerdo vê o pixel cinzento "P2". No entanto, o objeto de primeiro plano branco bloqueia o feixe IR da câmara do lado direito. A câmara do lado direito não tem dados para "P2".
    Diagram shows two cameras directed at the same point with one of them blocked.
    Dispositivos sincronizados adicionais podem fornecer os dados obstruídos.
  • Digitalize objetos em três dimensões.
  • Aumente a taxa de fotogramas efetiva para um valor superior a 30 fotogramas por segundo (FPS).
  • Capture várias imagens de cores 4K da mesma cena, todas alinhadas dentro de 100 microsegundos (μs) do centro de exposição.
  • Aumente a cobertura da câmara dentro do espaço.

Planeie a sua configuração de vários dispositivos

Antes de começar, certifique-se de que revê as especificações de hardware da Azure Kinect DK e a câmara de profundidade Azure Kinect.

Nota

Retire a tampa de plástico exterior para expor as tomadas Sync In e Sync out.

Selecione uma configuração do dispositivo

Pode utilizar qualquer uma das seguintes abordagens para a configuração do seu dispositivo:

  • Configuração da cadeia da Margarida. Sincronizar um dispositivo principal e até oito dispositivos subordinados.
    Diagram that shows how to connect Azure Kinect DK devices in a daisy-chain configuration.
  • Configuração de estrelas. Sincronizar um dispositivo principal e até dois dispositivos subordinados.
    Diagram that shows how to set up multiple Azure DK devices in a star configuration.

Usando um gatilho de sincronização externa

Em ambas as configurações, o dispositivo principal fornece o sinal de disparo para os dispositivos subordinados. No entanto, pode utilizar uma fonte externa personalizada para o gatilho de sincronização. Por exemplo, pode utilizar esta opção para sincronizar capturas de imagem com outros equipamentos. Quer na configuração da corrente margarida, quer na configuração da estrela, a fonte de gatilho externa liga-se ao dispositivo principal.

A fonte de gatilho externa deve funcionar da mesma forma que o dispositivo principal. Deve fornecer um sinal de sincronização com as seguintes características:

  • Ativo alto
  • Largura do pulso: Superior a 8μs
  • 5V TTL/CMOS
  • Capacidade máxima de condução: Não inferior a 8 miliamps (mA)
  • Suporte de frequência: Exatamente 30 FPS, 15 FPS e 5 FPS (a frequência do sinal vsync mestre da câmara de cor)

A fonte do gatilho deve entregar o sinal ao dispositivo principal Sync na porta utilizando um cabo de áudio de 3,5 mm. Pode utilizar um cabo aparelhado ou mono. O Azure Kinect calções DK em conjunto com todas as mangas e anéis do conector do cabo de áudio e os coloca em causa. Tal como mostrado no diagrama seguinte, o dispositivo recebe o sinal de sincronização apenas a partir da ponta do conector.

Cable configurations for an external trigger signal

Para obter mais informações sobre como trabalhar com equipamentos externos, consulte o gravador De utilização Kinect com dispositivos sincronizados externos

Nota

Sync out é o VSync para a câmara RGB. Os tempos de fixação de todos os dispositivos estão definidos para zero e contam. A Microsoft não caracterizou a largura min e máxima do pulso de sincronização e recomendou a imitação do pulso gerado por Sync out de um Azure Kinect DK.

Planeie as definições da câmara e a configuração do software

Para obter informações sobre como configurar o seu software para controlar as câmaras e utilizar os dados de imagem, consulte o Azure Kinect Sensor SDK.

Esta secção discute vários fatores que afetam dispositivos sincronizados (mas não dispositivos únicos). O seu software deve considerar estes fatores.

Considerações de exposição

Se pretender controlar o tempo exato de cada dispositivo, recomendamos que utilize uma definição de exposição manual. Sob a definição de exposição automática, cada câmara de cor pode alterar dinamicamente a exposição real. Como a exposição afeta o tempo, tais mudanças rapidamente empurram as câmaras para fora de sincronização.

No ciclo de captura de imagens, evite definir repetidamente a mesma regulação de exposição. Ligue para a API apenas uma vez quando for necessário.

Evitar interferências entre câmaras de múltiplas profundidades

Quando várias câmaras de profundidade estão a imaginar campos de visão sobrepostos, cada câmara deve imagem do seu próprio laser associado. Para evitar que os lasers interfiram entre si, as capturas da câmara devem ser compensadas umas das outras por 160μs ou mais.

Para cada captura de câmara de profundidade, o laser liga-se nove vezes e está ativo por apenas 125μs de cada vez. O laser é então inativo para 1450μs ou 2390μs, dependendo do modo de funcionamento. Este comportamento significa que o ponto de partida para o cálculo da compensação é de 125μs.

Além disso, as diferenças entre o relógio da câmara e o relógio de firmware do dispositivo aumentam a compensação mínima para 160μs. Para calcular uma compensação mais precisa para a sua configuração, note o modo de profundidade que está a utilizar e consulte a tabela de cronometragem de sensor de profundidade. Utilizando os dados desta tabela, pode calcular o mínimo de compensação (o tempo de exposição de cada câmara) utilizando a seguinte equação:

Tempo de exposição = (pulsos ×largura do pulso) + (Períodos inativos × tempo de marcha lenta)

Quando utilizar uma compensação de 160μs, pode configurar até nove câmaras de profundidade adicionais para que cada laser se atrase enquanto os outros lasers estão inativos.

No seu software, utilize depth_delay_off_color_usec ou subordinate_delay_off_master_usec certifique-se de que cada laser IR dispara na sua própria janela de 160μs ou tem um campo de visão diferente.

Nota

A largura real do pulso é de 125μs, no entanto, afirmamos 160us para providenciar alguma margem de manobra. Tomando NFOV UNBINNED como exemplo, cada pulso de 125μs é seguido por 1450μs inativo. Totalizando estes - (9 x 125) + (8 x 1450) - rende o tempo de exposição de 12,8ms. O armário que pode intercalar a exposição de 2 dispositivos é ter o primeiro pulso da segunda câmara a cair no primeiro período inativo da primeira câmara. O atraso entre a primeira e a segunda câmaras pode ser de apenas 125μs (a largura de uma pulsação), no entanto recomendamos alguma margem de manobra, daí os 160μs. Tendo em conta os 160μs, pode intercalar os períodos de exposição de um máximo de 10 câmaras.

Prepare os seus dispositivos e outros equipamentos

Além de vários dispositivos Azure Kinect DK, poderá ter de obter computadores anfitriões adicionais e outros hardware para suportar a configuração que pretende construir. Utilize as informações nesta secção para se certificar de que todos os dispositivos e hardware estão prontos antes de começar a configurar.

Dispositivos Azure Kinect DK

Para cada dispositivo Azure Kinect DK que pretende sincronizar, faça o seguinte:

  • Certifique-se de que o firmware mais recente está instalado no dispositivo. Para obter mais informações sobre como atualizar os seus dispositivos, aceda ao Firmware Azure Kinect DK.
  • Retire a tampa do dispositivo para revelar as portas de sincronização.
  • Note o número de série de cada dispositivo. Utilizará este número mais tarde no processo de configuração.

Computadores anfitriões

Normalmente, cada Azure Kinect DK usa o seu próprio computador anfitrião. Pode utilizar um controlador de anfitrião dedicado, dependendo da forma como utiliza o dispositivo e da quantidade de dados que é transferido sobre a ligação USB.

Certifique-se de que o Azure Kinect Sensor SDK está instalado em cada computador anfitrião. Para obter mais informações sobre como instalar o Sensor SDK, vá ao Quickstart: Crie o seu Azure Kinect DK.

Computadores Linux: memória USB em Ubuntu

Por predefinição, os computadores anfitriões baseados em Linux atribuem o controlador USB apenas 16 MB de memória de kernel para lidar com transferências USB. Este montante é geralmente suficiente para suportar um único Azure Kinect DK. No entanto, para suportar vários dispositivos, o controlador USB tem de ter mais memória. Para aumentar a memória, siga estes passos:

  1. Editar /etc/predefinição/comida.
  2. Localize a seguinte linha:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Substitua-a utilizando esta linha:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
    

    Nota

    Estes comandos definem a memória USB em 32 MB. Este é um exemplo que define em duas vezes o valor predefinido. Pode definir um valor muito maior, conforme apropriado para a sua solução.

  3. Executar sudo actualizar-grub.
  4. Reinicie o computador.

Cabos

Para ligar os dispositivos entre si e aos computadores hospedeiros, tem de utilizar cabos masculinos para homens de 3,5 mm (também conhecidos como cabo de áudio de 3,5 mm). Os cabos devem ter menos de 10 metros de comprimento e podem ser estéreo ou mono.

O número de cabos que deve ter depende do número de dispositivos que utiliza e também da configuração específica do dispositivo. A caixa Azure Kinect DK não inclui cabos. Deve comprá-los separadamente.

Se ligar os dispositivos na configuração da estrela, também deve ter um separador de auscultadores.

Ligar os dispositivos

Para ligar dispositivos Azure Kinect DK numa configuração de corrente de margarida

  1. Ligação cada Azure Kinect DK ao poder.
  2. Ligação cada dispositivo para o seu PC anfitrião.
  3. Selecione um dispositivo para ser o dispositivo principal e ligue um cabo de áudio de 3,5 mm à sua porta Sync out .
  4. Ligue a outra extremidade do cabo ao Sync na porta do primeiro dispositivo subordinado.
  5. Para ligar outro dispositivo, ligue outro cabo à porta Sync out do primeiro dispositivo subordinado e ao Sync na porta do próximo dispositivo.
  6. Repita o passo anterior até que todos os dispositivos estejam ligados. O último dispositivo deve ter apenas uma ligação por cabo. A porta Sync out deve estar vazia.

Para ligar dispositivos Azure Kinect DK numa configuração estelar

  1. Ligação cada Azure Kinect DK ao poder.
  2. Ligação cada dispositivo para o seu PC anfitrião.
  3. Selecione um dispositivo para ser o dispositivo principal e ligue a extremidade única do separador dos auscultadores na sua porta Sync out .
  4. Ligação cabos de áudio de 3,5 mm nas extremidades "split" do separador dos auscultadores.
  5. Ligue a outra extremidade de cada cabo ao Sync na porta de um dos dispositivos subordinados.

Verifique se os dispositivos estão ligados e comunicam

Para verificar se os dispositivos estão corretamente ligados, utilize o Azure Kinect Observador. Repita este procedimento conforme necessário para testar cada dispositivo subordinado em combinação com o dispositivo principal

Importante

Para este procedimento, deve conhecer o número de série de cada Azure Kinect DK.

  1. Abra duas instâncias do Azure Kinect Viewer.
  2. Em Dispositivo Aberto, selecione o número de série do dispositivo subordinado que pretende testar.
    Open device

    Importante

    Para obter um alinhamento preciso de captura de imagem entre todos os dispositivos, tem de iniciar o dispositivo principal por último.

  3. Em Sincronização Externa, selecione Sub.
    Subordinate camera start
  4. Selecione Iniciar.

    Nota

    Por se trata de um dispositivo subordinado, o Azure Kinect Viewer não exibe uma imagem após o início do dispositivo. Nenhuma imagem é apresentada até que o dispositivo subordinado receba um sinal de sincronização do dispositivo principal.

  5. Depois de o dispositivo subordinado ter começado, utilize a outra instância do Azure Kinect Viewer para abrir o dispositivo principal.
  6. Em Sincronização Externa, selecione Master.
  7. Selecione Iniciar.

Quando o mestre Azure Kinect Dispositivo começar, ambas as instâncias do Azure Kinect Viewer devem exibir imagens.

Calibrar os dispositivos como um conjunto sincronizado

Depois de verificar se os dispositivos estão a comunicar corretamente, está pronto a calibrar os mesmos para produzir imagens num único domínio.

Num único dispositivo, a profundidade e as câmaras RGB são calibradas para trabalhar em conjunto. No entanto, quando vários dispositivos têm de trabalhar em conjunto, têm de ser calibrados para determinar como transformar uma imagem do domínio da câmara que a capturou para o domínio da câmara que pretende utilizar para processar imagens.

Existem múltiplas opções para dispositivos de cruzamento. A Microsoft fornece a amostra de código de ecrã verde GitHub, que utiliza o método OpenCV. O ficheiro Readme para esta amostra de código fornece mais detalhes e instruções para calibrar os dispositivos.

Para obter mais informações sobre a calibração, consulte as funções de calibração do Azure Kinect.

Passos seguintes

Depois de configurar dispositivos sincronizados, também pode aprender a usar o