本文内容
● 已知问题
● 收集日志
● 设备未列在设备管理器中
● k4aviewer无法打开相机
● 设备固件更新问题
● 图像质量问题
● 不一致或意外的时间戳
● 将人体跟踪 SDK 与 Unreal 配合使用
● 在无外设 Linux 系统上使用 Femto Bolt
本文包含在 Femto Bolt 中使用 Orbbec SDK K4A Wrapper 时可能会遇到的已知问题及其故障排除提示。
已知问题
● Linux平台下,深度引擎库需要使用OpenGL,如果应用层也使用OpenGL、且跨线程调用OpenGL实例,可能会造成上下文冲突,导致深度引擎在初始化时出现问题,以及无法正常启动深度数据流。
如果应用层使用了OpenGL渲染,要在应用层参考OpenGL下面链接切换Context:
(https://www.khronos.org/opengl/wiki/OpenGL_and_multithreading)
以下是我们使用glfw库的解决方法:
a. 在开流之前,调用glfwMakeContextCurrent(NULL) 。
b. 然后再开流。
c. 开流结束后,调用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
● 有关其他相关问题,请查看 GitHub Issues
收集日志
Orbbec SDK K4A Wrapper 的日志由底层 Orbbec SDK 输出,默认输出到应用程序工作目录下的 目录下。日志以循环覆盖的方式输出到固定 4 个文件中,默认单个文件最大 100 MB。建议用户反馈问题时可以将日志文件一并打包发送。
设备未列在设备管理器中
● 请查看后面指示灯,如果闪橙黄色,表示供电不足,请用电源适配器供电再试,如果此时闪白灯,表示USB连接异常,请找其他原因。
● 检查是否已连接电源线并使用 USB3 端口来传输数据。
● 尝试改用 USB3 端口来建立数据连接(建议使用靠近主板的 USB 端口,例如,电脑背面的 USB 端口)。
● 检查线缆的状态,受损或劣质的线缆会导致列出的信息不可靠(设备在设备管理器中不断“闪烁”)。
● 如果已连接到笔记本电脑并且该电脑以电池运行,则端口的电量可能会受到限制。
● 重新启动主机电脑。
● 如果问题仍然存在,则可能是存在兼容性问题。
k4aviewer 无法打开相机
● 先检查设备是否列在 Windows 设备管理器中。
● 检查是否有任何其他应用程序正在使用该设备(例如 Windows 相机应用程序)。 每次只能有一个应用程序访问该设备。
● 检查日志中的错误消息。
● 打开 Windows 相机应用程序,检查它是否可正常工作。
● 关闭再打开设备的电源,等待流 LED 熄灭,然后再使用设备。
● 重新启动主机电脑。
● 确保在电脑上使用最新的图形驱动程序。
● 如果你使用自己的 SDK 版本,请尝试使用正式发布的版本(如果可以解决问题)。
设备固件更新问题
● 如果更新后未报告正确的版本号,则可能需要关闭再打开设备;
● 设备固件更新过程被打断,可以重新给设备上电后再执行更新。
图像质量问题
● 启动 Femto Bolt 查看器,检查设备的位置,以确定是否存在干扰、传感器被遮挡,或者镜头脏污。
● 如果问题在特定的模式下发生,请尝试不同的运行模式,以缩小问题的检查范围。
● 若要与团队配合解决图像质量问题,可以:
1. 抓取Femto Bolt 查看器的暂停视图并抓取屏幕截图,或
2. 使用Femto Bolt 查看器录制,例如 k4arecorder.exe -l 5 -r 5 output.mkv
不一致或意外的设备时间戳
调用 k4a_device_set_color_control 可能会暂时引发设备的计时更改,这些更改可能需要几个捕获才能稳定。 避免在图像捕获循环中调用 API,以免重置每个新图像的内部计时计算。 可以改为在启动相机之前或需要更改图像捕获循环内的值时调用 API。 具体而言,请避免调用 k4a_device_set_color_control(K4A_COLOR_CONTROL_AUTO_EXPOSURE_PRIORITY)。
将人体跟踪 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 系统上使用 Femto Bolt
Linux 上的 Femto Bolt 深度引擎使用 OpenGL。 OpenGL 需要一个窗口实例,该实例需要将监视器连接到系统。 此问题的解决方法是:
1. 为计划使用的用户帐户启用自动登录。 有关如何启用自动登录的说明,请参阅此文。
2. 关闭系统电源,断开显示器的连接,然后打开系统电源。 自动登录会强制创建 x-server 会话。
3. 通过 ssh 进行连接,并设置 DISPLAY 环境变量 export DISPLAY=:0
4. 启动 Femto Bolt 应用程序。
xtrlock 实用工具可用于在自动登录后立即锁定屏幕。 添加以下命令以启动应用程序或 systemd 服务:
bash -c “xtrlock -b”