本文內(nèi)容
● 已知問題
● 收集日志
● 設(shè)備未列在設(shè)備管理器中
● k4aviewer無法打開相機(jī)
● 設(shè)備固件更新問題
● 圖像質(zhì)量問題
● 不一致或意外的時間戳
● 將人體跟蹤 SDK 與 Unreal 配合使用
● 在無外設(shè) Linux 系統(tǒng)上使用 Femto Bolt
本文包含在 Femto Bolt 中使用 Orbbec SDK K4A Wrapper 時可能會遇到的已知問題及其故障排除提示。
已知問題
● Linux平臺下,深度引擎庫需要使用OpenGL,如果應(yīng)用層也使用OpenGL、且跨線程調(diào)用OpenGL實(shí)例,可能會造成上下文沖突,導(dǎo)致深度引擎在初始化時出現(xiàn)問題,以及無法正常啟動深度數(shù)據(jù)流。
如果應(yīng)用層使用了OpenGL渲染,要在應(yīng)用層參考OpenGL下面鏈接切換Context:
(https://www.khronos.org/opengl/wiki/OpenGL_and_multithreading)
以下是我們使用glfw庫的解決方法:
a. 在開流之前,調(diào)用glfwMakeContextCurrent(NULL) 。
b. 然后再開流。
c. 開流結(jié)束后,調(diào)用glfwMakeContextCurrent(currentContext)。
// 參考github: file: tools/k4aviewer/k4adevicedockcontrol.cpp GLFWwindow *currentContext = glfwGetCurrentContext(); // store the current context glfwMakeContextCurrent(NULL); // make current context to NULL StartCameras(); // will initialize the DepthEngine glfwMakeContextCurrent(currentContext); // restore the current context
● 有關(guān)其他相關(guān)問題,請查看 GitHub Issues
收集日志
Orbbec SDK K4A Wrapper 的日志由底層 Orbbec SDK 輸出,默認(rèn)輸出到應(yīng)用程序工作目錄下的 目錄下。日志以循環(huán)覆蓋的方式輸出到固定 4 個文件中,默認(rèn)單個文件最大 100 MB。建議用戶反饋問題時可以將日志文件一并打包發(fā)送。
設(shè)備未列在設(shè)備管理器中
● 請查看后面指示燈,如果閃橙黃色,表示供電不足,請用電源適配器供電再試,如果此時閃白燈,表示USB連接異常,請找其他原因。
● 檢查是否已連接電源線并使用 USB3 端口來傳輸數(shù)據(jù)。
● 嘗試改用 USB3 端口來建立數(shù)據(jù)連接(建議使用靠近主板的 USB 端口,例如,電腦背面的 USB 端口)。
● 檢查線纜的狀態(tài),受損或劣質(zhì)的線纜會導(dǎo)致列出的信息不可靠(設(shè)備在設(shè)備管理器中不斷“閃爍”)。
● 如果已連接到筆記本電腦并且該電腦以電池運(yùn)行,則端口的電量可能會受到限制。
● 重新啟動主機(jī)電腦。
● 如果問題仍然存在,則可能是存在兼容性問題。
k4aviewer 無法打開相機(jī)
● 先檢查設(shè)備是否列在 Windows 設(shè)備管理器中。
● 檢查是否有任何其他應(yīng)用程序正在使用該設(shè)備(例如 Windows 相機(jī)應(yīng)用程序)。 每次只能有一個應(yīng)用程序訪問該設(shè)備。
● 檢查日志中的錯誤消息。
● 打開 Windows 相機(jī)應(yīng)用程序,檢查它是否可正常工作。
● 關(guān)閉再打開設(shè)備的電源,等待流 LED 熄滅,然后再使用設(shè)備。
● 重新啟動主機(jī)電腦。
● 確保在電腦上使用最新的圖形驅(qū)動程序。
● 如果你使用自己的 SDK 版本,請嘗試使用正式發(fā)布的版本(如果可以解決問題)。
設(shè)備固件更新問題
● 如果更新后未報告正確的版本號,則可能需要關(guān)閉再打開設(shè)備;
● 設(shè)備固件更新過程被打斷,可以重新給設(shè)備上電后再執(zhí)行更新。
圖像質(zhì)量問題
● 啟動 Femto Bolt 查看器,檢查設(shè)備的位置,以確定是否存在干擾、傳感器被遮擋,或者鏡頭臟污。
● 如果問題在特定的模式下發(fā)生,請嘗試不同的運(yùn)行模式,以縮小問題的檢查范圍。
● 若要與團(tuán)隊(duì)配合解決圖像質(zhì)量問題,可以:
1. 抓取Femto Bolt 查看器的暫停視圖并抓取屏幕截圖,或
2. 使用Femto Bolt 查看器錄制,例如 k4arecorder.exe -l 5 -r 5 output.mkv
不一致或意外的設(shè)備時間戳
調(diào)用 k4a_device_set_color_control 可能會暫時引發(fā)設(shè)備的計(jì)時更改,這些更改可能需要幾個捕獲才能穩(wěn)定。 避免在圖像捕獲循環(huán)中調(diào)用 API,以免重置每個新圖像的內(nèi)部計(jì)時計(jì)算。 可以改為在啟動相機(jī)之前或需要更改圖像捕獲循環(huán)內(nèi)的值時調(diào)用 API。 具體而言,請避免調(diào)用 k4a_device_set_color_control(K4A_COLOR_CONTROL_AUTO_EXPOSURE_PRIORITY)。
將人體跟蹤 SDK 與 Unreal 配合使用
若要將人體跟蹤 SDK 與 Unreal 配合使用,請確保已將 <SDK Installation Path>\tools 添加到環(huán)境變量 PATH,并已將 dnn_model_2_0.onnx 和 cudnn64_7.dll 復(fù)制到 Program Files/Epic Games/UE_4.23/Engine/Binaries/Win64。
在無外設(shè) Linux 系統(tǒng)上使用 Femto Bolt
Linux 上的 Femto Bolt 深度引擎使用 OpenGL。 OpenGL 需要一個窗口實(shí)例,該實(shí)例需要將監(jiān)視器連接到系統(tǒng)。 此問題的解決方法是:
1. 為計(jì)劃使用的用戶帳戶啟用自動登錄。 有關(guān)如何啟用自動登錄的說明,請參閱此文。
2. 關(guān)閉系統(tǒng)電源,斷開顯示器的連接,然后打開系統(tǒng)電源。 自動登錄會強(qiáng)制創(chuàng)建 x-server 會話。
3. 通過 ssh 進(jìn)行連接,并設(shè)置 DISPLAY 環(huán)境變量 export DISPLAY=:0
4. 啟動 Femto Bolt 應(yīng)用程序。
xtrlock 實(shí)用工具可用于在自動登錄后立即鎖定屏幕。 添加以下命令以啟動應(yīng)用程序或 systemd 服務(wù):
bash -c “xtrlock -b”