Problemas conhecidos e solução de problemas do Azure Kinect
Esta página contém problemas conhecidos e dicas de solução de problemas ao usar o SDK do Sensor com o Azure Kinect DK. Consulte também as páginas de suporte do produto para problemas específicos de hardware do produto.
Problemas conhecidos
- Problemas de compatibilidade com controladores host USB ASMedia (por exemplo, chipset ASM1142)
- Alguns casos usando o driver USB da Microsoft podem desbloquear
- Muitos PCs também têm controladores host alternativos e mudar a porta USB3 pode ajudar
Para obter mais problemas relacionados ao SDK do sensor, verifique Problemas do GitHub
Recolha de registos
O registro em log para K4A.dll é habilitado por meio de variáveis de ambiente. Por padrão, o log é enviado para stdout e apenas erros e mensagens críticas são gerados. Essas configurações podem ser alteradas para que o registro em log vá para um arquivo. A verbosidade também pode ser ajustada conforme necessário. Abaixo está um exemplo, para o Windows, de habilitar o registro em log em um arquivo, chamado k4a.log, e capturará mensagens de aviso e de nível superior.
set K4A_ENABLE_LOG_TO_A_FILE=k4a.log
set K4A_LOG_LEVEL=w
- Executar cenário a partir do prompt de comando (por exemplo, iniciar visualizador)
- Navegue até k4a.log e partilhe ficheiros.
Para obter mais informações, consulte abaixo o clipe do arquivo de cabeçalho:
/**
* environment variables
* K4A_ENABLE_LOG_TO_A_FILE =
* 0 - completely disable logging to a file
* log\custom.log - log all messages to the path and file specified - must end in '.log' to
* be considered a valid entry
* ** When enabled this takes precedence over the value of K4A_ENABLE_LOG_TO_STDOUT
*
* K4A_ENABLE_LOG_TO_STDOUT =
* 0 - disable logging to stdout
* all else - log all messages to stdout
*
* K4A_LOG_LEVEL =
* 'c' - log all messages of level 'critical' criticality
* 'e' - log all messages of level 'error' or higher criticality
* 'w' - log all messages of level 'warning' or higher criticality
* 'i' - log all messages of level 'info' or higher criticality
* 't' - log all messages of level 'trace' or higher criticality
* DEFAULT - log all message of level 'error' or higher criticality
*/
O registro em log para a K4ABT.dll do SDK de Rastreamento de Corpo é semelhante, exceto que os usuários devem modificar um conjunto diferente de nomes de variáveis de ambiente:
/**
* environment variables
* K4ABT_ENABLE_LOG_TO_A_FILE =
* 0 - completely disable logging to a file
* log\custom.log - log all messages to the path and file specified - must end in '.log' to
* be considered a valid entry
* ** When enabled this takes precedence over the value of K4A_ENABLE_LOG_TO_STDOUT
*
* K4ABT_ENABLE_LOG_TO_STDOUT =
* 0 - disable logging to stdout
* all else - log all messages to stdout
*
* K4ABT_LOG_LEVEL =
* 'c' - log all messages of level 'critical' criticality
* 'e' - log all messages of level 'error' or higher criticality
* 'w' - log all messages of level 'warning' or higher criticality
* 'i' - log all messages of level 'info' or higher criticality
* 't' - log all messages of level 'trace' or higher criticality
* DEFAULT - log all message of level 'error' or higher criticality
*/
O dispositivo não enumera no gerenciador de dispositivos
- Verifique o LED de status atrás do dispositivo, se ele estiver piscando âmbar você tem problema de conectividade USB e ele não recebe energia suficiente. O cabo da fonte de alimentação deve ser conectado ao adaptador de alimentação fornecido. Embora o cabo de alimentação tenha um USB tipo A conectado, o dispositivo requer mais energia do que uma porta USB do PC pode fornecer. Portanto, não se conecte a ele a uma porta de PC ou hub USB.
- Verifique se você tem o cabo de alimentação conectado e usando a porta USB3 para dados.
- Tente mudar a porta USB3 para a conexão de dados (recomendação para usar a porta USB perto da placa-mãe, por exemplo, na parte traseira do PC).
- Verifique o seu cabo, cabos danificados ou de qualidade inferior podem causar enumeração não confiável (dispositivo continua "piscando" no gerenciador de dispositivos).
- Se você se conectou ao laptop e está funcionando com bateria, ele pode estar limitando a energia para a porta.
- Reinicie o PC host.
- Se o problema persistir, pode haver um problema de compatibilidade.
- Se a falha aconteceu durante a atualização de firmware e o dispositivo não foi recuperado por si só, execute a redefinição de fábrica.
Falha ao abrir o Visualizador do Kinect do Azure
Verifique primeiro se o dispositivo enumera no Gestor de Dispositivos do Windows.
Verifique se você tem algum outro aplicativo usando o dispositivo (por exemplo, aplicativo de câmera do Windows). Apenas uma aplicação de cada vez pode aceder ao dispositivo.
Verifique se há mensagens de erro no log k4aviewer.err.
Abra o aplicativo da câmera do Windows e verifique se funciona.
Dispositivo de ciclo de alimentação, aguarde o LED de streaming para desligar antes de usar o dispositivo.
Reinicie o PC host.
Certifique-se de que está a utilizar os controladores gráficos mais recentes no seu PC.
Se você estiver usando sua própria compilação do SDK, tente usar a versão lançada oficialmente se isso corrigir o problema.
Se o problema persistir, colete logs e comentários sobre o arquivo.
Não é possível encontrar o microfone
Verifique primeiro se a matriz de microfone está enumerada no Gerenciador de dispositivos.
Se um dispositivo for enumerado e funcionar corretamente no Windows, o problema pode ser que, após a atualização de firmware, o Windows tenha atribuído um ID de contêiner diferente à Câmera de profundidade.
Você pode tentar redefini-lo indo para o Gerenciador de dispositivos, clicando com o botão direito do mouse em "Azure Kinect Microphone Array" e selecione "Desinstalar dispositivo". Quando isso estiver concluído, retire e reconecte o sensor.
Depois disso, reinicie o Azure Kinect Viewer e tente novamente.
Problemas de atualização do firmware do dispositivo
- Se o número da versão correta não for informado após a atualização, talvez seja necessário desligar o dispositivo.
- Se a atualização de firmware for interrompida, ele pode entrar em mau estado e não conseguir enumerar. Desligue e volte a colocar o dispositivo e aguarde 60 segundos para ver se consegue recuperar. Caso contrário, execute uma redefinição de fábrica
Problemas de qualidade de imagem
- Inicie o visualizador do Azure Kinect e verifique o posicionamento do dispositivo em busca de interferência ou se o sensor está bloqueado ou a lente está suja.
- Tente diferentes modos de operação para reduzir se o problema estiver acontecendo no modo específico.
- Para compartilhar problemas de qualidade de imagem com a equipe, você pode:
- Faça uma pausa no visualizador do Kinect do Azure e faça uma captura de tela ou
- Pegue a gravação usando o gravador Kinect do Azure, por exemplo,
k4arecorder.exe -l 5 -r 5 output.mkv
Carimbos de data/hora do dispositivo inconsistentes ou inesperados
A chamada k4a_device_set_color_control
pode induzir temporariamente mudanças de tempo no dispositivo que podem levar algumas capturas para estabilizar. Evite chamar a API no loop de captura de imagem para evitar redefinir o cálculo de tempo interno com cada nova imagem. Em vez disso, chame a API antes de iniciar a câmera ou apenas quando precisar alterar o valor dentro do loop de captura de imagem. Em particular, evite ligar para k4a_device_set_color_control(K4A_COLOR_CONTROL_AUTO_EXPOSURE_PRIORITY)
.
Compatibilidade do controlador host USB3
Se o dispositivo não estiver enumerando no gerenciador de dispositivos, pode ser porque ele está conectado a um controlador USB3 não suportado.
Para o Azure Kinect DK no Windows, Intel, Texas Instruments (TI) e Renesas são os únicos controladores de host com suporte. O SDK do Kinect do Azure em plataformas Windows depende de uma ID de contêiner unificada e deve abranger dispositivos USB 2.0 e 3.0 para que o SDK possa encontrar os dispositivos de profundidade, cor e áudio que estão fisicamente localizados no mesmo dispositivo. No Linux, mais controladores host podem ser suportados, pois essa plataforma depende menos do ID do contêiner e mais dos números de série do dispositivo.
O tópico de controladores host USB fica ainda mais complicado quando um PC tem mais de um controlador host instalado. Quando os controladores de host são mistos, um usuário pode ter problemas em que algumas portas funcionam bem e outras não funcionam de todo. Dependendo de como as portas estão conectadas ao gabinete, você pode ver todas as portas frontais com problemas com o Azure Kinect
Windows: Para descobrir qual controlador host você tem, abra o Gerenciador de Dispositivos
- Ver -> Dispositivos por Tipo
- Com o Azure Kinect ligado, selecione Câmaras-Azure> Kinect 4K Camera
- Ver -> Dispositivos por Ligação
Para compreender melhor qual a porta USB que está ligada no seu PC, repita estes passos para cada porta USB à medida que liga o Azure Kinect DK a diferentes portas USB no PC.
Câmera de profundidade desliga automaticamente
O laser usado pela câmera de profundidade para calcular dados de profundidade de imagem, tem uma vida útil limitada. Para maximizar a vida útil dos lasers, a câmera de profundidade detetará quando os dados de profundidade não estão sendo consumidos. A câmera de profundidade desliga quando o dispositivo está transmitindo por vários minutos, mas o PC host não está lendo os dados. Isso também afeta a sincronização de vários dispositivos, onde os dispositivos subordinados são iniciados em um estado em que a câmera de profundidade está transmitindo e os quadros de profundidade ajudam ativamente a esperar que o dispositivo mestre comece a sincronizar capturas. Para evitar esse problema em cenários de captura de vários dispositivos, verifique se o dispositivo mestre é iniciado dentro de um minuto após o primeiro subordinado ser iniciado.
Usando o SDK de rastreamento corporal com a Unreal
Para usar o Body Tracking SDK com Unreal, certifique-se de ter adicionado <SDK Installation Path>\tools
à variável PATH
de ambiente e copiado dnn_model_2_0.onnx
e cudnn64_7.dll
ao Program Files/Epic Games/UE_4.23/Engine/Binaries/Win64
.
Usando o Azure Kinect no sistema Linux sem cabeça
O mecanismo de profundidade do Azure Kinect no Linux usa OpenGL. OpenGL requer uma instância de janela que requer um monitor para ser conectado ao sistema. Uma solução alternativa para esse problema é:
- Habilite o login automático para a conta de usuário que você planeja usar. Consulte este artigo para obter instruções sobre como ativar o login automático.
- Desligue o sistema, desligue o monitor e ligue o sistema. O login automático força a criação de uma sessão x-server.
- Conecte-se via ssh e defina a variável DISPLAY env
export DISPLAY=:0
- Inicie seu aplicativo Kinect do Azure.
O utilitário xtrlock pode ser usado para bloquear imediatamente a tela após o login automático. Adicione o seguinte comando ao aplicativo de inicialização ou serviço systemd:
bash -c “xtrlock -b”
Documentação em C# ausente
A documentação do Sensor SDK C# está localizada aqui.
A documentação do Body Tracking SDK C# está localizada aqui.
Alterações ao conteúdo dos pacotes Body Tracking
Os pacotes MSI e NuGet não incluem mais os arquivos do Microsoft Visual C++ Redistributable Package. Faça o download do pacote mais recente aqui.
O pacote NuGet está de volta, no entanto, ele não inclui mais arquivos Microsoft DirectML ou NVIDIA CUDA e TensorRT.