Femto Bolt 故障排除

本文内容

● 已知问题    

● 收集日志

● 设备未列在设备管理器中

● 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 设备管理器中。

image.png 

● 检查是否有任何其他应用程序正在使用该设备(例如 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”