Azure Kinect 已知問題和疑難排解
此頁面包含搭配使用感應器 SDK 與 Azure Kinect DK 時的已知問題和疑難排解秘訣。 針對產品硬體特定問題,另請參閱產品支援頁面。
已知問題
- ASMedia USB 主機控制器的相容性問題 (例如 ASM1142 晶片組)
- 某些使用 Microsoft USB 驅動程式的情況可以解除封鎖
- 許多電腦也都有替代的主機控制器,而且變更 USB3 連接埠可能有所幫助
針對更多感應器 SDK 相關問題,請查看 GitHub 問題
收集記錄
K4A.dll 的記錄是透過環境變數予以啟用。 預設會將記錄傳送至 stdout,而且只會產生錯誤和危急訊息。 您可以變更這些設定,讓記錄進入檔案。 您也可以視需要調整詳細程度。 以下是 Windows 中啟用記錄至檔案 (名為 k4a.log) 的範例,而且將會擷取警告和更高層級的訊息。
set K4A_ENABLE_LOG_TO_A_FILE=k4a.log
set K4A_LOG_LEVEL=w
- 從命令提示字元中執行案例 (例如,啟動檢視器)
- 導覽至 k4a.log 並共用檔案。
如需詳細資訊,請參閱標頭檔中的下列剪輯:
/**
* 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
*/
全身追蹤 SDK K4ABT.dll 的記錄類似,差別在於使用者應該修改一組不同的環境變數名稱:
/**
* 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
*/
裝置未列舉在裝置管理員中
- 檢查裝置後方的狀態 LED,如果閃琥珀色,則您發生 USB 連線問題,而且電源不足。 電源供應器纜線應該插入提供的電源配接器。 雖然電源纜線已連線 USB 類型 A,但裝置所需的電源比電腦 USB 連接埠所提供的電源還要多。 因此,請不要與其連線,而是連線至電腦連接埠或 USB 中樞。
- 檢查您是否已連線電源纜線,並使用 USB3 連接埠以取得資料。
- 請嘗試變更 USB3 連接埠以進行資料連線 (建議使用靠近主機板的 USB 連接埠,例如,電腦的背面)。
- 檢查纜線、損毀或品質較低的纜線可能會導致不可靠的列舉 (在裝置管理員中,裝置會保持「閃爍」)。
- 如果您已連線至膝上型電腦並使用電池執行,則可能會將電源節流至連接埠。
- 重新啟動主機電腦。
- 如果問題持續發生,則可能會發生相容性問題。
- 如果在韌體更新期間失敗,而且裝置本身未復原,則請執行原廠重設。
無法開啟 Azure Kinect 檢視器
請先檢查您的裝置列舉在 Windows 裝置管理員中。
檢查您是否有任何其他使用裝置的應用程式 (例如,Windows 相機應用程式)。 一次只能有一個應用程式可以存取裝置。
檢查 k4aviewer.err 記錄檔中是否有錯誤訊息。
開啟 Windows 相機應用程式,並檢查其是否正常運作。
重新啟動裝置,並先等候串流 LED 關閉電源,再使用裝置。
重新啟動主機電腦。
請確定您在電腦上使用最新的圖形驅動程式。
如果您使用自己的 SDK 組建,則請嘗試在修正此問題時使用正式發行的版本。
如果問題持續發生,則請收集記錄,並將意見反應歸檔。
找不到麥克風
請先檢查是否已在裝置管理員中列舉麥克風陣列。
如果裝置已列舉並在 Windows 中正常運作,則問題可能是,在韌體更新之後,Windows 已將不同的容器識別碼指派給深度相機。
您可以移至 [裝置管理員],並以滑鼠右鍵按一下 [Azure Kinect 麥克風陣列],然後選取 [解除安裝裝置],以嘗試將其重設。 完成之後,請中斷連結,並重新連結感應器。
之後,請重新啟動 Azure Kinect 檢視器,然後再試一次。
裝置韌體更新問題
- 如果更新之後未回報正確的版本號碼,則您可能需要重新啟動裝置。
- 如果韌體更新中斷,則可能會處於不良狀態,而且無法列舉。 中斷連結並重新連結裝置,然後等候 60 秒,以查看是否可以復原裝置。 如果答案是否,則請執行原廠重設
影像品質問題
- 啟動 Azure Kinect 檢視器,並檢查裝置的位置是否有所干擾、感應器是否遭到封鎖,或鏡頭是否髒掉。
- 嘗試不同的作業模式,以在特定模式發生問題時縮小範圍。
- 如需與小組分享影像品質問題,您可以:
- 在 Azure Kinect 檢視器上暫停檢視,並取得螢幕擷取畫面或
- 使用 Azure Kinect 錄製器進行錄製,例如,
k4arecorder.exe -l 5 -r 5 output.mkv
不一致或未預期的裝置時間戳記
呼叫 k4a_device_set_color_control
可能會暫時引發裝置的計時變更,而裝置可能需要一些擷取才能穩定。 避免在影像擷取迴圈中呼叫 API,以避免每個新的影像都重設內部計時計算。 相反地,請在啟動相機之前呼叫 API,或只在需要於影像擷取迴圈內變更值時才呼叫 API。 特別是,請避免呼叫 k4a_device_set_color_control(K4A_COLOR_CONTROL_AUTO_EXPOSURE_PRIORITY)
。
USB3 主機控制器相容性
如果未在裝置管理員下列舉裝置,則原因可能是其已插入不支援的 USB3 控制器。
針對 Windows 上的 Azure Kinect DK,Intel、Texas Instruments (TI) 和 Renesas 是「唯一支援的主機控制器」。 Windows 平台上的 Azure Kinect SDK 依賴整合容器識別碼,而且必須跨越 USB 2.0 和 3.0 裝置,SDK 才能找到實際位於相同裝置上的深度、色彩和音訊裝置。 在 Linux 上,可能支援更多的主機控制器,因為該平台較不依賴容器識別碼,而是更為依賴裝置序號。
電腦已安裝多個主機控制器時,USB 主機控制器的主題會變得更為複雜。 混合使用主機控制器時,使用者可能會遇到有些連接埠正常運作但其他連接埠根本未運作的問題。 根據將連接埠連線至案例的方式,您可能會看到所有前端連接埠發生 Azure Kinect 問題
Windows:若要瞭解您擁有的主機控制器,請開啟裝置管理員
- [檢視] -> [裝置 (依類型)]
- 使用 Azure Kinect 連線選取 [相機] -> [Azure Kinect 4K 相機]
- [檢視] -> [裝置 (依連線)]
若要進一步了解電腦上連線的 USB 連接埠,請在您將 Azure Kinect DK 連線至電腦上的不同 USB 連接埠時,針對每個 USB 連接埠重複這些步驟。
深度相機自動關閉電源
深度相機用來計算影像深度資料的雷射,其生命週期有限。 為了最大化雷射的生命週期,深度相機將會偵測何時未取用深度資料。 裝置串流數分鐘但主機電腦未讀取資料時,深度相機會關閉電源。 這也會影響以某種狀態啟動從屬裝置的多裝置同步,而此狀態會串流深度相機,而深度框架會主動協助等候主要裝置開始同步擷取。 若要避免在多裝置擷取案例中發生此問題,請確定主要裝置會在啟動第一個從屬項目的一分鐘內啟動。
搭配使用全身追蹤 SDK 與 Unreal
若要搭配使用全身追蹤 SDK 與 Unreal,請確定您已將 <SDK Installation Path>\tools
新增至環境變數 PATH
,並已將 dnn_model_2_0.onnx
和 cudnn64_7.dll
複製至 Program Files/Epic Games/UE_4.23/Engine/Binaries/Win64
。
在無周邊 Linux 系統上使用 Azure Kinect
Linux 上的 Azure Kinect 深度引擎會使用 OpenGL。 OpenGL 需要視窗執行個體,而此執行個體需要監視器才能連線至系統。 此問題的因應措施如下:
- 針對您打算使用的使用者帳戶,啟用自動登入。 如需啟用自動登入的指示,請參閱本文章。
- 關閉系統電源,並中斷監視器連線,然後開啟系統電源。 自動登入會強制建立 x 伺服器工作階段。
- 透過 ssh 連線,並設定 DISPLAY 環境變數
export DISPLAY=:0
- 啟動您的 Azure Kinect 應用程式。
xtrlock 公用程式可以用來在自動登入之後立即鎖定畫面。 將下列命令新增至啟動應用程式或 systemd 服務:
bash -c “xtrlock -b”
遺漏 C# 文件
感應器 SDK C# 文件位在這裡。
全身追蹤 SDK C# 文件位在這裡。
全身追蹤套件內容的變更
MSI 和 NuGet 套件不再包括 Microsoft Visual C++ 可轉散發套件檔案。 在這裡下載最新套件。
不過,NuGet 套件也不再包括 Microsoft DirectML 或 NVIDIA CUDA 和 TensorRT 檔案。