2. 故障排除

2.1. 如何禁用 RPi 计算模块版本上的启动演示?

删除自动启动文件:

rm /home/pi/.config/autostart/runai.desktop

2.2. 如果pip安装depthai时出现”is not a supported wheel on this platform”错误:

可以尝试更新pip版本:

python -m pip install --upgrade pip

2.4. ImportError: 没有名为 ‘depthai’ 的模块

这表明您的 Python 解释器未找到 depthai 模块。失败的原因右很多:

  1. 是否安装了 Python API安装详解 ? 验证键入时是否显示:

    python3 -m pip list | grep depthai
    
  2. 您是否在使用受 支持的平台 ? 如果没有, 您可以从 从源安装:

    cat /etc/os-release
    

2.5. 为什么相机校准运行缓慢?

在相机校准期间,不良的照片条件 会极大地影响图像处理时间 。 在正常情况下,要在RPi上每个图像找到棋盘角需要1秒或更短的时间,但在恶劣条件下每个图像要超过20秒。设置合适的照片条件的提示:

  • 确保棋盘格没有翘曲,并且确实是平坦的表面。高质量的选择: 将棋盘打印在泡沫板上。.

  • 减少棋盘上的眩光(例如,确保没有任何光源像台灯那样靠近棋盘)。

  • 通过尝试尽可能保持棋盘格不动来减少运动模糊量。

2.6. 权限拒绝错误

如果 python3 -m pip install 因为 Permission denied 错误而不成功, 你当前的用户可能没有权限在系统范围的路径上安装软件包。

[Errno 13] Permission denied: '/usr/local/lib/python3.7/dist-packages/...'

你可以尝试加上 --user 选项。 例如:

python3 -m pip install depthai --user

有关 Stack Overflow 的更多信息.

2.7. DepthAI 不会像网络摄像机那样显示在 /dev/video* 下。 为什么?

可以用 lsusb | grep 03e7 检查 USB 设备的枚举。 它应该打印出:

  • 03e7:2485 after reset (bootloader running)

  • 03e7:f63b after the application was loaded

没有创建 /dev/video* 的节点。

DepthAI 实现了 VSC(Vendor Specific Class)协议,并采用 libusb 进行通信。

2.8. 用2米长的USB3.0数据线时信号断断续续

  • 我们发现有些主机在使用 USB3 接口和 2 米长线时会出现问题,这可能跟主机的 USB 控制器有关。

  • 其他主机运行了好几天(在一些设备上测试了 3 天以上)都没出现任何问题,即使是用长的 USB 线(测试总长度超过 2.4 米)也没出问题。就比方说我们测试过的所有苹果电脑都没有出现过这个问题。

  • Ubuntu 16.04 有一个独立的 USB3 问题,但好像只出现在新机器上。 我们认为这可能时因为在这些新机器上市前后 Ubuntu 16.04 停止支持有关。 例如, (这台电脑) h在Ubuntu 16.04下有严重的USB3断开问题(使用1米长的线),但在Ubuntu 18.04下却没有(使用1米长的线)。

很不巧,我们是在 DepthAI 发货了之后才发现的这个问题。

所以,如果你的主机出现了这个问题,可能有 3 个选择:

  1. 切换到较短的 USB3 电缆(例如 1 米)很可能会使问题消失。 这些 1米(3.3英尺)长的电缆非常长,现在是我们随DepthAI USB3变体一起提供的电缆。

  2. 强制带 --force_usb2 选项的 USB2 模式(以下示例)。这将允许仍然使用长电缆,并且许多 DepthAI用例不需要USB3通信带宽-USB2足够。

  3. 从 Ubuntu 16.04 升级到 Ubuntu 1804。

2.8.1. 强制 USB2 通信

如果您在与 DepthAI/OAK 通信时遇到问题,强制 USB2 有时可以解决问题。

python3 depthai_demo.py --usbSpeed usb2

或者,简写:

python3 depthai_demo.py -usbs usb2

对于 gen2,在创建设备时将 usb2Mode 设置为 True

dai.Device(pipeline, usb2Mode=True)

我们还看到了在 Linux Mint 上运行 Ubuntu 编译的库的未确认问题。 如果不是在 Ubuntu 18.04/16.04 或 Raspbian 上运行, 请 从源码编译DepthAI.

2.9. DepthAI 的输出一直冻结

如果设备的输出每隔几秒钟一直冻结,则 USB3 连接可能存在问题,强制设备进入 USB2 模式可以解决此问题 - 说明在上面的章节中。

当连接速度为 USB2 时(由于某些主机 - 特别是 Windows - 或 USB 控制器/端口/电缆为 USB2) - 启用 USB3 的固件或在几帧后进行流媒体的初始化可能会失败。这里的解决方法是强制设备使用 USB2-only 固件(在上面的章节中提到)。

2.10. 无法启动设备:1.3-ma2480,错误代码 3

如果未在Linux上设置udev规则,则经常会发生此错误。这与DepthAI一致:初始化xlink时出错。

要解决此问题,请使用以下命令设置udev规则,拔出DepthAI,然后再将其重新插入USB。

echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666"' | sudo tee /etc/udev/rules.d/80-movidius.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

在某些情况下,这些设置已经设置好了,但是一直都插着DepthAI,因此Linux无法重置规则。

因此,请确保在运行完这些后拔出插头,然后重新插入DepthAI。

2.12. CTRL-C没有停止程序!

如果您试图用 CTLR-C 杀死一个程序,但它不起作用,请尝试 CTRL-\ 。通常这会起作用。

2.13. 您的Raspberry Pi是锁定还是DepthAI在Raspberry Pi上崩溃?

Raspberry Pi 在其所有 USB 端口上的最大限制为 1.2A,而 DepthAI/megaAI/OAK 最多可以占用 1A(在最大功率下,通常接近 500mA)。

因此,如果您看到锁定,则可能是由于从 Pi 汲取的 USB 设备的总功率超过了此 1.2A 限制。使用有源集线器可以防止这种情况,或者通过 USB 为 Pi 提供更少的其他电源。

这也可能表现为 DepthAI 在 Pi 上随机崩溃。如果 DepthAI 被配置为一次做很多事情,这会变得特别频繁。随着我们使 DepthAI 能够同时做越来越多的事情,这变得越来越有可能——从而增加 DepthAI 可以拉动的最大功率。似乎来自 DepthAI 的峰值功率(电流)尖峰可以超过 Pi 的处理能力,导致 DepthAI 掉电并返回错误。

因此,如果您在 Raspberry 上遇到 DepthAI 稳定性问题,请尝试通过电源和/或有源 USB 集线器为 DepthAI 供电,以查看错误是否消失。

2.14. Windows上的“导入cv2时DLL加载失败”

如果在为Windows安装depthai之后看到以下错误:

(venv) C:\Users\Context\depthai>python depthai_demo.py
 Traceback (most recent call last):
   File "C:\Users\Context\depthai\depthai_demo.py", line 7, in <module>
     import cv2
   File "C:\Users\Context\depthai\venv\lib\site-packages\cv2\__init__.py", line 5, in <module>
     from .cv2 import *
 ImportError: DLL load failed while importing cv2: The specified module could not be found.

然后通常要解决Windows Media Feature Pack( 此处 )的问题,因为必须为Windows 10 N版本安装Media Feature Pack。

(还有来自OpenCV的更多背景 信息 )

2.15. python3 depthai_demo.py 返回非法指令

到目前为止,这始终意味着主机上的 OpenCV 安装存在问题(实际上与 depthai 库无关)。要检查这一点,请运行:

python3 -c "import cv2; import numpy as np; blank_image = np.zeros((500,500,3), np.uint8); cv2.imshow('s', blank_image); cv2.waitKey(0)"

如果没有显示一个窗口,或者如果你得到 Illegal instruction 指令结果,这意味着 OpenCV 安装有问题。 这里 的安装脚本通常会修复 OpenCV 问题。但如果他们不这样做,运行 python3 -m pip install opencv-python --force-reinstall 也可以解决OpenCV的问题。

2.16. 用不兼容的 openvino 版本编译的神经网络 blob

[NeuralNetwork(2)] [error] Neural network blob compiled with uncompatible openvino version. Selected openvino version 2020.3. If you want to select an explicit openvino version use: setOpenVINOVersion while creating pipeline

出现此错误的原因是depthai无法从blob解析OpenVINO版本。解决方案很简单,用户必须指定编译blob的OpenVINO版本(如错误消息中所述):

pipeline = depthai.Pipeline()
# Set the correct version:
pipeline.setOpenVINOVersion(depthai.OpenVINO.Version.VERSION_2020_1)

2.17. Raspberry Pi出现 “realloc(): invalid pointern Aborted”

在树莓派上,运行 sudo upgrade 后,在导入cv2的时候可能会出现 realloc(): invalid pointern Aborted 错误。我们也遇到了同样的问题,并且找到了 解决方案 :

  • 通过运行 sudo apt install -y --allow-downgrades libc6=2.28-10+rpi1 命令使libc6降级。

  • 通过运行以下 sudo curl -fL http://docs.luxonis.com/_static/install_dependencies.sh | bash 命令重新安装depthai依赖。

有疑问?

我们很乐意为您提供代码或其他问题的帮助。

我们的联系方式

OAK QQ群
QQ

OAK视觉人工智能俱乐部

群号:280844897

加微信邀请入群
WeChat

微信号:13951940532

关注微信公众号:OAK视觉人工智能开发
欢迎到淘宝选购
taobao
OAK中国官方淘宝店

还可以通过我们发布的视频和文章了解OAK