Sincronizar vários dispositivos do Azure Kinect DK

Cada dispositivo Azure Kinect DK inclui portas de sincronização de 3,5 mm (Sincronizar e Sincronizar) que pode utilizar para ligar vários dispositivos. Depois de ligar os dispositivos, o software pode coordenar a temporização do acionador entre os mesmos.

Este artigo sobre como ligar e sincronizar os dispositivos.

Vantagens da utilização de vários dispositivos Azure Kinect DK

Existem vários motivos para utilizar vários dispositivos DK do Azure Kinect, incluindo o seguinte:

  • Preencha as oclusões. Embora as transformações de dados do Azure Kinect DK produzam uma única imagem, as duas câmaras (profundidade e RGB) estão, na verdade, a uma pequena distância. O desvio torna possíveis oclusões. Ocorre uma oclusão quando um objeto de primeiro plano bloqueia a vista 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 píxel 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".
    O diagrama mostra duas câmaras direcionadas para o mesmo ponto com uma delas bloqueada.
    Os dispositivos sincronizados adicionais podem fornecer os dados ocultos.
  • Analisar objetos em três dimensões.
  • Aumente a taxa de fotogramas efetiva para um valor superior a 30 fotogramas por segundo (FPS).
  • Capture múltiplas imagens de cores 4K da mesma cena, todas alinhadas dentro de 100 microssegundos (μs) do centro de exposição.
  • Aumente a cobertura da câmara no espaço.

Planear a configuração de vários dispositivos

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

Nota

Remova a capa de plástico exterior para expor as fichas Sincronizar e Sincronizar.

Selecionar uma configuração de dispositivo

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

  • Configuração da cadeia Daisy. Sincronize um dispositivo principal e até oito dispositivos subordinados.
    Diagrama que mostra como ligar dispositivos Azure Kinect DK numa configuração em cadeia.
  • Configuração de estrela. Sincronize um dispositivo principal e até dois dispositivos subordinados.
    Diagrama que mostra como configurar vários dispositivos DK do Azure numa configuração de estrela.

Utilizar um acionador de sincronização externa

Em ambas as configurações, o dispositivo principal fornece o sinal de acionamento para os dispositivos subordinados. No entanto, pode utilizar uma origem externa personalizada para o acionador de sincronização. Por exemplo, pode utilizar esta opção para sincronizar capturas de imagens com outros equipamentos. Na configuração da cadeia daisy ou na configuração de estrela, a origem do acionador externo liga-se ao dispositivo principal.

A origem do acionador externo tem de funcionar da mesma forma que o dispositivo principal. Tem de fornecer um sinal de sincronização que tenha as seguintes características:

  • Ativo alto
  • Largura do pulso: superior a 8μs
  • TTL/CMOS 5V
  • 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 principal da câmara de cores)

A origem do acionador tem de fornecer o sinal ao dispositivo principal Sincronizar na porta com um cabo de áudio de 3,5 mm. Pode utilizar um cabo estéreo ou mono. O Azure Kinect DK abre todas as mangas e anéis do conector do cabo de áudio e coloca-os em campo. Conforme mostrado no diagrama seguinte, o dispositivo recebe apenas o sinal de sincronização da ponta do conector.

Configurações de cabo para um sinal de acionador externo

Para obter mais informações sobre como trabalhar com equipamento externo, veja Utilizar o gravador do Azure Kinect com dispositivos sincronizados externos

Nota

Sync Out é o VSync da câmara RGB. Os carimbos de data/hora para todos os dispositivos estão definidos como zero e contam para cima. A Microsoft não caracterizou a largura mínima e máxima do pulso de sincronização e recomendamos que imite o pulso gerado por Sync Out de um DK do Azure Kinect.

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

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

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

Considerações sobre a exposição

Se quiser controlar a temporização exata de cada dispositivo, recomendamos que utilize uma definição de exposição manual. Na definição de exposição automática, cada câmara de cores pode alterar dinamicamente a exposição real. Uma vez que a exposição afeta a temporização, tais alterações rapidamente empurram as câmaras para fora de sincronização.

No ciclo de captura de imagens, evite definir repetidamente a mesma definição de exposição. Chame a API apenas uma vez quando for necessária.

Evitar interferências entre várias câmaras de profundidade

Quando várias câmaras de profundidade estão a imaginar campos de vista sobrepostos, cada câmara tem de imagem do seu próprio laser associado. Para impedir que os lasers interfirem uns com os outros, as capturas de câmara devem ser compensadas entre si por 160μs ou mais.

Para cada captura de câmara de profundidade, o laser ativa-se nove vezes e está ativo durante apenas 125μs de cada vez. Em seguida, o laser fica inativo para 1450μs ou 2390μs, dependendo do modo de operação. Este comportamento significa que o ponto de partida para o cálculo do desvio é 125μs.

Além disso, as diferenças entre o relógio da câmara e o relógio de firmware do dispositivo aumentam o desvio mínimo para 160μs. Para calcular um desvio mais preciso para a configuração, tenha em atenção o modo de profundidade que está a utilizar e veja a tabela de temporização não processada do sensor de profundidade. Ao utilizar os dados desta tabela, pode calcular o desvio mínimo (o tempo de exposição de cada câmara) com a seguinte equação:

Tempo de Exposição = (Impulsos de IR × Largura do Pulso) + (Períodos de Inatividade × Tempo De Inatividade)

Quando utiliza um desvio de 160μs, pode configurar até nove câmaras de profundidade adicionais para que cada laser se ative enquanto os outros lasers estão inativos.

No software, utilize depth_delay_off_color_usec ou subordinate_delay_off_master_usec certifique-se de que cada laser de IR é acionado na sua própria janela de 160μs ou tem um campo de vista diferente.

Nota

A largura real do pulso é de 125μs, no entanto, indicamos 160us para fornecer alguma margem de manobra. Tomando NFOV UNBINNED como exemplo, cada pulso de 125μs é seguido de 1450μs inativos. Totalizar estes valores - (9 x 125) + (8 x 1450) - gera o tempo de exposição de 12,8 ms. 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 um pulso), no entanto, recomendamos alguma margem de manobra, daí os 160μs. Com 160μs, pode intercalar os períodos de exposição de um máximo de 10 câmaras.

Preparar os seus dispositivos e outro hardware

Além de vários dispositivos DK do Azure Kinect, poderá ter de obter computadores anfitriões adicionais e outro hardware para suportar a configuração que pretende criar. 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 a Atualizar firmware do Azure Kinect DK.
  • Remova a capa do dispositivo para revelar as portas de sincronização.
  • Anote o número de série de cada dispositivo. Irá utilizar este número mais tarde no processo de configuração.

Computadores anfitriões

Normalmente, cada DK do Azure Kinect utiliza o seu próprio computador anfitrião. Pode utilizar um controlador anfitrião dedicado, consoante a forma como utiliza o dispositivo e a quantidade de dados transferidos através da ligação USB.

Certifique-se de que o SDK do Sensor do Azure Kinect está instalado em cada computador anfitrião. Para obter mais informações sobre como instalar o SDK do Sensor, aceda a Início Rápido: Configurar o DK do Azure Kinect.

Computadores Linux: memória USB no Ubuntu

Por predefinição, os computadores anfitriões baseados em Linux atribuem ao controlador USB apenas 16 MB de memória kernel para processar transferências USB. Normalmente, este montante é suficiente para suportar um único DK do Azure Kinect. 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/default/grub.
  2. Localize a seguinte linha:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Substitua-a com esta linha:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
    

    Nota

    Estes comandos definem a memória USB para 32 MB. Esta é uma definição de exemplo em duas vezes o valor predefinido. Pode definir um valor muito maior, conforme adequado para a sua solução.

  3. Execute sudo update-grub.
  4. Reinicie o computador.

Cabos

Para ligar os dispositivos uns aos outros e aos computadores anfitriões, tem de utilizar cabos masculinos a masculinos 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 tem de ter depende do número de dispositivos que utiliza e também da configuração específica do dispositivo. A caixa DK do Azure Kinect não inclui cabos. Tem de as comprar separadamente.

Se ligar os dispositivos na configuração de estrela, também tem de ter um divisor de auscultadores.

Ligar os dispositivos

Para ligar dispositivos Azure Kinect DK numa configuração em cadeia

  1. Ligue cada DK do Azure Kinect à energia.
  2. Ligue cada dispositivo ao respetivo PC anfitrião.
  3. Selecione um dispositivo para ser o dispositivo principal e ligue um cabo de áudio de 3,5 mm à porta Sincronizar.
  4. Ligue a outra extremidade do cabo à porta Sincronizar na porta do primeiro dispositivo subordinado.
  5. Para ligar outro dispositivo, ligue outro cabo à porta Sincronizar do primeiro dispositivo subordinado e à porta Sincronizar na porta do dispositivo seguinte.
  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 Desinscronizá-lo deverá estar vazia.

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

  1. Ligue cada DK do Azure Kinect à energia.
  2. Ligue cada dispositivo ao respetivo PC anfitrião.
  3. Selecione um dispositivo para ser o dispositivo principal e ligue a extremidade única do separador de auscultadores à porta Sincronizar.
  4. Ligue cabos de áudio de 3,5 mm às extremidades "divididas" do divisor de auscultadores.
  5. Ligue a outra extremidade de cada cabo à porta Sincronizar na porta de um dos dispositivos subordinados.

Verifique se os dispositivos estão ligados e a comunicar

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

Importante

Para este procedimento, tem de saber o número de série de cada DK do Azure Kinect.

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

    Importante

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

  3. Em Sincronização Externa, selecione Sub.
    Início da câmara subordinada
  4. Selecione Iniciar.

    Nota

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

  5. Após o início do dispositivo subordinado, utilize a outra instância do Visualizador do Azure Kinect para abrir o dispositivo principal.
  6. Em Sincronização Externa, selecione Mestre.
  7. Selecione Iniciar.

Quando o dispositivo principal do Azure Kinect é iniciado, ambas as instâncias do Visualizador do Azure Kinect devem apresentar imagens.

Calibrar os dispositivos como um conjunto sincronizado

Depois de verificar se os dispositivos estão a comunicar corretamente, está pronto para os calibrar 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 no domínio da câmara que pretende utilizar para processar imagens.

Existem várias opções para dispositivos de calibragem cruzada. A Microsoft fornece o exemplo de código de ecrã verde do GitHub, que utiliza o método OpenCV. O ficheiro Readme para este exemplo de código fornece mais detalhes e instruções para calibrar os dispositivos.

Para obter mais informações sobre calibragem, veja Utilizar funções de calibragem do Azure Kinect.

Passos seguintes

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