Resolução de problemas e problemas conhecidos do Azure Kinect
Esta página contém problemas conhecidos e sugestões de resolução de problemas ao utilizar o SDK do Sensor com o Azure Kinect DK. Veja também páginas de suporte de produtos para problemas específicos de hardware do produto.
Problemas conhecidos
- Problemas de compatibilidade com controladores anfitriões USB ASMedia (por exemplo, chipset ASM1142)
- Alguns casos que utilizam o controlador USB da Microsoft podem desbloquear
- Muitos PCs também têm controladores anfitriões alternativos e alterar a porta USB3 pode ajudar
Para obter mais problemas relacionados com o SDK do Sensor, veja Problemas do GitHub
Recolher registos
O registo de K4A.dll é ativado através de variáveis de ambiente. Por predefinição, o registo é enviado para stdout e apenas são gerados erros e mensagens críticas. Estas definições podem ser alteradas para que o registo vá para um ficheiro. A verbosidade também pode ser ajustada conforme necessário. Segue-se um exemplo, para o Windows, de ativar o registo num ficheiro, com o nome k4a.log, e irá capturar mensagens de aviso e de nível superior.
set K4A_ENABLE_LOG_TO_A_FILE=k4a.log
set K4A_LOG_LEVEL=w
- Cenário de execução a partir da linha de comandos (por exemplo, iniciar visualizador)
- Navegue para k4a.log e partilhe o ficheiro.
Para obter mais informações, veja o clip abaixo do ficheiro 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 registo do SDK de Controlo de Corpo K4ABT.dll é semelhante, exceto que os utilizadores 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 gestor de dispositivos
- Verifique o ESTADO LED por trás do dispositivo. Se estiver a piscar, significa que tem um problema de conectividade USB e não tem energia suficiente. O cabo de alimentação deve estar ligado ao adaptador de alimentação fornecido. Embora o cabo de alimentação tenha um usb do tipo A ligado, o dispositivo necessita de mais energia do que uma porta USB do PC pode fornecer. Por isso, não se ligue a uma porta do PC ou a um concentrador USB.
- Verifique se tem o cabo de alimentação ligado e a porta USB3 para obter dados.
- Tente alterar a porta USB3 para a ligação de dados (recomendação para utilizar a porta USB perto da placa principal, por exemplo, na parte de trás do PC).
- Verifique o cabo, os cabos danificados ou de qualidade inferior podem causar uma enumeração pouco fiável (o dispositivo continua a "piscar" no gestor de dispositivos).
- Se tiver ligado ao portátil e a funcionar com a bateria, poderá estar a limitar a alimentação à porta.
- Reinicie o PC anfitrião.
- Se o problema persistir, poderá existir um problema de compatibilidade.
- Se tiver ocorrido uma falha durante a atualização de firmware e o dispositivo não tiver sido recuperado por si só, efetue a reposição de fábrica.
Falha ao abrir o Visualizador do Azure Kinect
Verifique primeiro se o seu dispositivo enumera no Windows Gestor de Dispositivos.
Verifique se tem outra aplicação a utilizar o dispositivo (por exemplo, a aplicação de câmara do Windows). Apenas uma aplicação de cada vez pode aceder ao dispositivo.
Verifique se existem mensagens de erro no registo k4aviewer.err.
Abra a aplicação de câmara do Windows e verifique se funciona.
Dispositivo de ciclo de energia, aguarde que o LED de transmissão em fluxo seja desligado antes de utilizar o dispositivo.
Reinicie o PC anfitrião.
Certifique-se de que está a utilizar os controladores gráficos mais recentes no PC.
Se estiver a utilizar a sua própria compilação do SDK, experimente utilizar a versão lançada oficialmente se isso corrigir o problema.
Se o problema persistir, recolha os registos e os comentários dos ficheiros.
Não é possível localizar o microfone
Verifique primeiro se a matriz do microfone é enumerada no Gestor de Dispositivos.
Se um dispositivo for enumerado e funcionar corretamente no Windows, o problema poderá ser que, após a atualização de firmware, o Windows tenha atribuído um ID de contentor diferente à Câmara de Profundidade.
Pode tentar repô-lo ao aceder a Gestor de Dispositivos, clicar com o botão direito do rato em "Matriz de Microfone do Azure Kinect" e selecionar "Desinstalar dispositivo". Uma vez concluído, desencaixe e volte a ligar o sensor.
Depois disso, reinicie o Visualizador do Azure Kinect e tente novamente.
Problemas de atualização do Firmware do Dispositivo
- Se o número de versão correto não for comunicado após a atualização, poderá ter de ligar/desligar o dispositivo.
- Se a atualização de firmware for interrompida, poderá entrar em mau estado e não conseguir enumerar. Desencaixe e volte a encaixar o dispositivo e aguarde 60 segundos para ver se consegue recuperar. Caso contrário, execute uma reposição de fábrica
Problemas de qualidade da imagem
- Inicie o visualizador do Azure Kinect e verifique o posicionamento do dispositivo quanto a interferências ou se o sensor está bloqueado ou se a lente está suja.
- Experimente diferentes modos de operação para restringir se o problema estiver a ocorrer no modo específico.
- Para partilhar problemas de qualidade de imagem com a equipa, pode:
- Colocar a vista em pausa no visualizador do Azure Kinect e efetuar uma captura de ecrã ou
- Gravar com o gravador do Azure Kinect, por exemplo,
k4arecorder.exe -l 5 -r 5 output.mkv
Carimbos de data/hora inconsistentes ou inesperados do dispositivo
As chamadas k4a_device_set_color_control
podem induzir temporariamente alterações de temporização no dispositivo que podem demorar algumas capturas a estabilizar. Evite chamar a API no ciclo de captura de imagens para evitar repor o cálculo de temporização interna com cada nova imagem. Em vez disso, chame a API antes de iniciar a câmara ou apenas quando precisar de alterar o valor no ciclo de captura de imagens. Em particular, evite chamar k4a_device_set_color_control(K4A_COLOR_CONTROL_AUTO_EXPOSURE_PRIORITY)
.
Compatibilidade do controlador anfitrião USB3
Se o dispositivo não estiver a enumerar no gestor de dispositivos, poderá dever-se ao facto de estar ligado 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 anfitriões suportados. O SDK do Azure Kinect nas plataformas windows depende de um ID de contentor unificado e tem de abranger dispositivos USB 2.0 e 3.0 para que o SDK possa encontrar a profundidade, a cor e os dispositivos de áudio que estão fisicamente localizados no mesmo dispositivo. No Linux, podem ser suportados mais controladores anfitriões, uma vez que essa plataforma depende menos do ID de contentor e muito mais em números de série de dispositivos.
O tópico dos controladores anfitriões USB torna-se ainda mais complicado quando um PC tem mais do que um controlador anfitrião instalado. Quando os controladores anfitriões são mistos, um utilizador pode deparar-se com problemas em que algumas portas funcionam bem e outras não funcionam. Consoante a forma como as portas estão ligadas ao caso, poderá ver todas as portas frontais com problemas com o Azure Kinect
Windows: Para saber que controlador anfitrião tem aberto Gestor de Dispositivos
- Ver -> Dispositivos por Tipo
- Com o Azure Kinect ligado, selecione Câmaras-> Câmara 4K do Azure Kinect
- Ver -> Dispositivos por Ligação
Para compreender melhor que porta USB está ligada no PC, repita estes passos para cada porta USB à medida que liga o Azure Kinect DK a portas USB diferentes no PC.
A câmara de profundidade é ativada automaticamente para baixo
O laser utilizado pela câmara de profundidade para calcular os dados de profundidade da imagem tem um ciclo de vida limitado. Para maximizar a vida útil dos lasers, a câmara de profundidade irá detetar quando os dados de profundidade não estão a ser consumidos. A câmara de profundidade diminui quando o dispositivo está em fluxo durante vários minutos, mas o PC anfitrião não está a ler os dados. Também afeta a Sincronização de Vários Dispositivos, em que os dispositivos subordinados são iniciados num estado em que a câmara de profundidade está a ser transmitida em fluxo e os fotogramas de profundidade ajudam ativamente a aguardar que o dispositivo principal comece a sincronizar capturas. Para evitar este problema em cenários de captura de Vários Dispositivos, certifique-se de que o dispositivo principal é iniciado num minuto após o primeiro subordinado ser iniciado.
Utilizar o SDK de Controlo de Corpo com Unreal
Para utilizar o SDK de Controlo de Corpo com Unreal, confirme que adicionou <SDK Installation Path>\tools
à variável PATH
de ambiente e copiou dnn_model_2_0.onnx
e cudnn64_7.dll
para Program Files/Epic Games/UE_4.23/Engine/Binaries/Win64
.
Utilizar o Azure Kinect num sistema Linux sem cabeça
O motor de profundidade do Azure Kinect no Linux utiliza o OpenGL. O OpenGL requer uma instância de janela que requer a ligação de um monitor ao sistema. Uma solução para este problema é:
- Ative o início de sessão automático para a conta de utilizador que planeia utilizar. Veja este artigo para obter instruções sobre como ativar o início de sessão automático.
- Desligue o sistema, desligue o monitor e desligue o sistema. O início de sessão automático força a criação de uma sessão de servidor x.
- Ligar através de ssh e definir a variável DISPLAY env
export DISPLAY=:0
- Inicie a sua aplicação do Azure Kinect.
O utilitário xtrlock pode ser utilizado para bloquear imediatamente o ecrã após o início de sessão automático. Adicione o seguinte comando à aplicação de arranque ou ao serviço systemd:
bash -c “xtrlock -b”
Documentação de C# em falta
A documentação do Sensor SDK C# está localizada aqui.
A documentação C# do SDK de Controlo de Corpo está localizada aqui.
Alterações ao conteúdo dos pacotes de Controlo de Corpo
Os pacotes MSI e NuGet já não incluem os ficheiros microsoft Visual C++ Redistributable Package. Transfira o pacote mais recente aqui.
O pacote NuGet está de volta, no entanto, já não inclui ficheiros Microsoft DirectML ou NVIDIA CUDA e TensorRT.