Compartilhar via


Sincronizar vários dispositivos do Azure Kinect DK

Cada dispositivo do Azure Kinect DK inclui portas de sincronização de 3,5 mm (Sync in e Sync out) que você pode usar para vincular vários dispositivos juntos. Depois de conectar os dispositivos, o software pode coordenar o tempo de gatilho entre eles.

Este artigo mostra como conectar e sincronizar os dispositivos.

Benefícios do uso de vários dispositivos do Azure Kinect DK

Há vários motivos para usar vários dispositivos do Azure Kinect DK, incluindo os seguintes:

  • Preencher oclusões. Embora as transformações de dados do Azure Kinect DK produzam uma única imagem, as duas câmeras (profundidade e RGB) ficam, na verdade, um pouco separadas. Esse deslocamento possibilita as oclusões. Um oclusão ocorre quando um objeto de primeiro plano bloqueia a exibição de parte de um objeto de tela de fundo em uma das duas câmeras em um dispositivo. Na imagem de cor resultante, o objeto de primeiro plano parece lançar uma sombra no objeto de tela de fundo.
    Por exemplo, no diagrama a seguir, a câmera do lado esquerdo vê o pixel cinza "P2". No entanto, o objeto em primeiro plano branco bloqueia o raio de IR da câmera do lado direito. A câmera do lado direito não tem dados para o "P2".
    O diagrama mostra duas câmeras direcionadas no mesmo ponto com uma delas bloqueadas.
    Dispositivos sincronizados adicionais podem fornecer os dados obstruídos.
  • Digitalizar objetos em três dimensões.
  • Aumente a taxa de quadros efetiva para um valor maior que 30 FPS (quadros por segundo).
  • Capture várias imagens coloridas em 4K da mesma cena, todas alinhadas em 100 microssegundos (μs) do centro de exposição.
  • Aumentar a cobertura da câmera dentro do espaço.

Planejar a configuração de vários dispositivos

Antes de começar, revise as especificações de hardware do Azure Kinect DK e a câmera de profundidade do Azure Kinect DK.

Observação

Remova a tampa de plástico externa para expor os conectores Sync In e Sync Out.

Selecionar uma configuração do dispositivo

Você pode usar qualquer uma das seguintes abordagens para a configuração do dispositivo:

  • Configuração corrente margarida. Sincronize um dispositivo mestre e até oito dispositivos subordinados.
    Diagrama que mostra como conectar dispositivos do Azure Kinect DK em uma configuração corrente margarida.
  • Configuração estrela. Sincronizar um dispositivo mestre e até dois dispositivos subordinados.
    Diagrama que mostra como configurar vários dispositivos do Azure DK em uma configuração em estrela.

Usando um gatilho de sincronização externo

Em ambas as configurações, o dispositivo mestre fornece o sinal de disparo para os dispositivos subordinados. No entanto, você pode usar uma origem externa personalizada como gatilho de sincronização. Por exemplo, você pode usar essa opção para sincronizar capturas de imagem com outros equipamentos. Na configuração da corrente margarida ou na configuração de estrela, a origem do gatilho externo se conecta ao dispositivo mestre.

A origem do gatilho externo deve funcionar da mesma maneira que o dispositivo mestre. Ela deve fornecer um sinal de sincronização que tenha as seguintes características:

  • Alto ativo
  • Largura do pulso: maior que 8μs
  • 5V TTL/CMOS
  • Capacidade máxima de condução: não menos que 8 mA (miliamperes)
  • Suporte a frequência: exatamente 30 FPS, 15 FPS e 5 FPS (a frequência do sinal de mestre VSYNC da câmera de cores)

A origem do gatilho deve entregar o sinal à porta Sync in do dispositivo mestre usando um cabo de áudio de 3,5 mm. Você pode usar um cabo estéreo ou mono. O Azure Kinect DK fecha o circuito de todas as capas e anéis do conector de cabo de áudio e os aterra. Conforme mostrado no diagrama a seguir, o dispositivo recebe o sinal de sincronização somente da ponta do conector.

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

Para obter mais informações sobre como trabalhar com equipamentos externos, confira Usar o gravador do Azure Kinect com dispositivos sincronizados externos

Observação

O conector Sync Out é o VSync para a câmera RGB. Os carimbos de data/hora de todos os dispositivos são definidos como zero e aumentam a contagem. A Microsoft não caracteriza a largura mínima e máxima do pulso de sincronização e recomenda a imitação do pulso gerado pelo Sync Out de um Azure Kinect DK.

Planejar as configurações da câmera e a configuração do software

Para obter informações sobre como configurar seu software para controlar as câmeras e usar os dados da imagem, consulte o SDK do sensor do Azure Kinect.

Esta seção aborda vários fatores que afetam dispositivos sincronizados (mas não dispositivos únicos). Seu software deve considerar esses fatores.

Considerações sobre exposição

Se você quiser controlar o tempo preciso de cada dispositivo, recomendamos que use uma configuração de exposição manual. Na configuração de exposição automática, cada câmera de cor pode alterar dinamicamente a exposição real. Como a exposição afeta o tempo, essas alterações fazem com que as câmeras saiam rapidamente da sincronização.

No loop de captura de imagem, evite definir repetidamente a mesma configuração de exposição. Chame a API apenas uma vez quando for necessário.

Evitar a interferência entre várias câmeras de profundidade

Quando várias câmeras de profundidade são campos de exibição sobrepostos de imagens, cada câmera deve fazer a imagem de seu próprio laser associado. Para evitar que os lasers interfiram um com o outro, as capturas da câmera devem ser deslocadas de uma à outra em 160 μs ou mais.

Para cada captura de câmera de profundidade, o laser ativa nove vezes e fica ativa por apenas 125 μs a cada vez. A laser fica ocioso por 1.450 μs ou 2.390 μs, dependendo do modo de operação. Esse comportamento significa que o ponto de partida para o cálculo do deslocamento é de 125 μs.

Além disso, as diferenças entre o relógio da câmera e o relógio do firmware do dispositivo aumentam o deslocamento mínimo para 160 μs. Para calcular um deslocamento mais preciso para sua configuração, observe o modo de profundidade que você está usando e consulte a tabela de tempo bruto do sensor de profundidade. Ao usar os dados desta tabela, você poderá calcular o deslocamento mínimo (o tempo de exposição de cada câmera) usando a seguinte equação:

Tempo de exposição = (Pulsos de IR x Largura de pulso) + (Períodos ociosos x Tempo ocioso)

Ao usar um deslocamento de 160 μs, você pode configurar até nove câmeras de profundidade adicionais para que cada um dos lasers seja ativado enquanto os outros lasers estiverem ociosos.

Em seu software, use depth_delay_off_color_usec ou subordinate_delay_off_master_usec para certificar-se de que cada laser de IR seja disparado em sua própria janela de 160 μs ou tenha um campo de exibição diferente.

Observação

A largura real do pulso é 125 μs, mas podemos declarar 160 μs para fornecer alguma reserva. Tomando o NFOV UNBINNED como exemplo, cada pulso de 125 μs é seguido por 1.450 μs ocioso. Somando isso: (9 x 125) + (8 x 1450), resulta no tempo de exposição de 12,8 ms. O mais próximo que você pode intercalar a exposição de dois dispositivos é fazer com que o primeiro pulso da segunda câmera caia no primeiro período ocioso da primeira câmera. O atraso entre a primeira e a segunda câmera poderia ser tão pequeno quanto 125 μs (a largura de um pulso) no entanto, recomendamos uma margem e, portanto, os 160 μs. Considerando os 160 μs, você pode intercalar os tempos de exposição de no máximo 10 câmeras.

Preparar seus dispositivos e outros hardwares

Além dos diversos dispositivos do Azure Kinect DK, talvez seja necessário obter computadores host adicionais e outros hardwares para dar suporte à configuração que você deseja criar. Use as informações desta seção para verificar se todos os dispositivos e hardware estão prontos antes de começar a configurar.

Dispositivos do Azure Kinect DK

Para cada dispositivo do Azure Kinect DK que você deseja sincronizar, faça o seguinte:

  • Confirme se o firmware mais recente está instalado no dispositivo. Para obter mais informações de como atualizar seus dispositivos, acesse Atualizar o firmware do Azure Kinect DK.
  • Remova a tampa do dispositivo para mostrar as portas de sincronização.
  • Anote o número de série de cada dispositivo. Você usará esse número posteriormente no processo de configuração.

Computadores host

Normalmente, cada Azure Kinect DK usa o próprio computador host. Você pode usar um controlador de host dedicado, dependendo de como você usa o dispositivo e a quantidade de dados transferidos pela conexão USB.

Verifique se o SDK do sensor do Azure Kinect está instalado em cada computador host. Para obter mais informações de como instalar o SDK do sensor, acesse Início rápido: configurar o Azure Kinect DK.

Computadores Linux: memória USB no Ubuntu

Por padrão, os computadores host baseados em Linux alocam ao controlador USB somente 16 MB de memória do kernel para lidar com as transferências USB. Esse valor é geralmente suficiente para dar suporte a um único Azure Kinect DK. No entanto, para dar suporte a vários dispositivos, o controlador USB precisa ter mais memória. Para aumentar a memória, siga estas etapas:

  1. Edite /etc/default/grub.
  2. Localize a seguinte linha:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Substitua-o usando esta linha:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
    

    Observação

    Esses comandos definem a memória USB como 32 MB. Essa é um exemplo de configuração para dobrar o valor padrão. Você pode definir um valor muito maior, conforme apropriado para sua solução.

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

Cabos

Para conectar os dispositivos uns aos outros e aos computadores host, você precisa usar cabos macho-macho 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éreos ou monos.

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

Se você conectar os dispositivos na configuração de estrela, também deverá ter um divisor de fone de ouvido.

Conecte seus dispositivos

Para conectar dispositivos do Azure Kinect DK em uma configuração corrente margarida

  1. Conecte cada Azure Kinect DK à energia.
  2. Conecte cada dispositivo ao respectivo PC host.
  3. Selecione um dispositivo para ser o dispositivo mestre e conecte um cabo de áudio de 3,5 mm à porta Sync out.
  4. Conecte a outra extremidade do cabo à porta Sync in do primeiro dispositivo subordinado.
  5. Para conectar outro dispositivo, conecte outro cabo à porta de Sync out do primeiro dispositivo subordinado e à porta Sync in do próximo dispositivo.
  6. Repita a etapa anterior até que todos os dispositivos estejam conectados. O último dispositivo deve ter apenas uma conexão de cabo. A porta desse dispositivo Sync out deverá ficar vazia.

Para conectar dispositivos do Azure Kinect DK em uma configuração estrela

  1. Conecte cada Azure Kinect DK à energia.
  2. Conecte cada dispositivo ao respectivo PC host.
  3. Selecione um dispositivo para ser o dispositivo mestre e conecte a extremidade única do divisor de fone de ouvido na porta Sync out.
  4. Conecte os cabos de áudio de 3,5 mm às extremidades da "divisão" do divisor de fone de ouvido.
  5. Conecte a outra extremidade de cada cabo à porta Sync in de um dos dispositivos subordinados.

Verificar se os dispositivos estão conectados e se comunicando

Para verificar se os dispositivos estão conectados corretamente, use o Visualizador do Azure Kinect. Repita esse procedimento conforme necessário para testar cada dispositivo subordinado em combinação com o dispositivo mestre

Importante

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

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

    Importante

    Para obter o alinhamento preciso da captura de imagem entre todos os dispositivos, você precisa iniciar o dispositivo mestre por último.

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

    Observação

    Como esse é um dispositivo subordinado, o Visualizador do Azure Kinect não exibe uma imagem depois que o dispositivo é iniciado. Nenhuma imagem é exibida até que o dispositivo subordinado receba um sinal de sincronização do dispositivo mestre.

  5. Depois que o dispositivo subordinado for iniciado, use a outra instância do Visualizador do Azure Kinect para abrir o dispositivo mestre.
  6. Em Sincronização Externa, selecione Mestre.
  7. Selecione Iniciar.

Quando o dispositivo mestre do Azure Kinect é iniciado, as duas instâncias do Visualizador do Azure Kinect devem exibir imagens.

Calibrar os dispositivos como um conjunto sincronizado

Depois de verificar se os dispositivos estão se comunicando corretamente, você está pronto para calibrá-los para produzir imagens em um único domínio.

Em um único dispositivo, as câmeras de profundidade e RGB são calibradas de fábrica para trabalharem juntas. No entanto, quando vários dispositivos precisam trabalhar juntos, eles precisam ser calibrados para determinar como transformar uma imagem do domínio da câmera que a capturou no domínio da câmera que você deseja usar para processar imagens.

Há várias opções para calibrar os dispositivos. A Microsoft fornece o exemplo de código de tela verde do GitHub, que usa o método OpenCV. O arquivo leiame deste exemplo de código fornece mais detalhes e instruções para a calibração dos dispositivos.

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

Próximas etapas

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