OAK设备可以与微型主机(例如树莓派)进行连接,在树莓派上安装DepthAI, 需要安装相关依赖Dependencies并且可以通过pip安装Depthai Library.
DepthAI Library 在PyPi上对树莓派有预构建的 wheels
使用预配置的树莓派OS 镜像
我们提供预安装了DepthAI及其所有依赖项的镜像文件,预配置的RPi镜像文件可以在这里获取。
- * OAK_CM4_POE - 使用 RPi OS(默认),已预装 DepthAI。 所需硬件:8 GB uSD 卡或更高。 该映像闪存在随 OAK-D CM4 和 OAK-D CM4 PoE 一起发送的 uSD 卡上。 要启用第二张 uSD 卡,请参阅此处的解决方法。 我们建议用户将此图像用于所有 OAK相机设备。
- * KS_Rpi_OS_Full - 使用 RPi Full OS,已预装 DepthAI 和 CEP。 所需硬件:32 GB uSD 卡或更大容量,配备 4 GB 内存的 RPi 4。 此图像已在发送给 KickStarter 支持者的 uSD 卡上闪存。 仅在需要 CEP 平台时使用此镜像!
创建这些图像的步骤和更新日志可在此处找到。
刷写uSD card
1. 从 Google Drive 等渠道下载 RPi 映像(链接如下)。 下载Balena Etcher 程序。 您也可以使用 RPi Imager,但我们注意到有时会出现问题。
2. 打开 Balena Etcher。 如果您下载了 .AppImage,可能需要右键单击它并点击运行来启动程序。
3. 点击 "Flash from file",选择之前下载的 .zip 映像。
4. 选择目标 USD 卡。
5. 单击 "Flash!",等待完成。
6. 闪存完成后,安全取出 uSD 卡,将其插入 RPi,并为 RPi 供电。
从RPi给OAK设备供电
在RPi 文档里,有声明提到树莓派2或更新的版本产品里可以通过USB口提供1.2A的供电。通过简单的管道(Pipeline),OAK相机运行的电流小于1A,这意味着可以通过RPi的USB-C线组为OAK设备直接供电,除非:
- 项目管道非常复杂:尤其是视频编解码与边缘AI推理运算,会产生性能峰值,从而导致供电不足或断电;
- 你有额外的USB设备连接在RPi USB口上并且占用了较多电流。树莓派总计可以提供1.2A的电流供电,如果所有的USB设备所需电流超过1.2A,OAK设备则可能发生供电不足导致的断电情况;
- 如果你的设备是Pro系列产品:这意味着你的设备支持IR激光点阵投影与IR照明LED,这会产生额外约0.25A的电流;
我们仍然建议使用桶形插孔(用于旧版的OAK设备)或OAK-Y型转接头(用于新款的OAK设备),因为OAK会产生峰值电流从而使得在某一时间段供电不足而导致断开连接。
SSH into the RPi
如果你正使用预构建的RPi OS镜像,SSH服务器已经被允许,否则你需要在启动卷内创建SSH文件,这样SSH服务器才会在startup时被启动。(教程在这里)
如果你的树莓派由WiFi连接,你可以通过创建(和编辑)启动卷内置wpa_supplicant.conf设置WiFi SSID/密码。(教程在这里)
通过以太网/WiFi 将 RPi 与电脑连接到同一局域网后,就可以用下面的命令 SSH 登录 RPi。 如果 RPi 和电脑不在同一局域网内,则必须指定 RPi 的 IP,而不是 luxonis.local(这是预配置 RPi 映像中 RPi 的默认名称)。
Command line:
ssh pi@luxonis.local -X
-X 参数可在Linux上启用X11转发,因此OpenCV的imshow图像将通过SSH转发到你的电脑上。 在 MacOS 上,X11 默认未安装,因此必须下载,更多信息请点击此处。 首次 SSH 登录 RPi 时,系统会就真实性发出警告,就像下面的日志一样。
Command line:
The authenticity of host 'raspberrypi.local (192.168.1.222)' can't be established.
ECDSA key fingerprint is SHA256:stb5mbRQeX6veOq8Wzg81rz9IHonxJR2++Q8bDYryTo.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入" yes "以继续
执行此命令后,您需要提供密码。 RPi OS 的默认密码是 raspberry。 您应该修改它。 SSH 成功后,让我们尝试运行一个示例应用程序:
Command line:
python depthai-python/examples/MobileNet/rgb_mobilenet.py
已知镜像限制
在 OAK_CM4_PoE 上,自 V8 图像开始,第二张 uSD 卡支持被禁用。 这是因为如果启用了 uSD 卡支持(用于存储目的),WiFi 连接就会被禁用。 要启用第二张 uSD 卡支持(并禁用 WiFi 连接),可以编辑 /boot/config.txt,取消文件末尾的 dtoverlay=sdhost,poll_once=off 行,然后重启系统。
刷写一个镜像到eMMC
OAK-D CM4和OAK-D CM4 PoE板载有Raspberry Pi计算模块4(CM4)。 大多数 OAK-D-CM4 批次的 CM4 都带有 eMMC 内存,而大多数 OAK-D CM4 PoE 板都带有 CM4 Lite,它没有 eMMC 内存,而是从 uSD 卡启动。 如何将映像闪存到uSD卡上很简单,下面我们将介绍将映像闪存到CM4上的eMMC的过程。
这是一台 OAK-D-CM4 ,红色箭头所示的是带有 eMMC 存储器的 CM4。 CM4 Lite 版本不会在该位置安装该芯片。
要将映像闪存到 CM4 eMMC(RPi 官方指南),首先需要启用 USB_BOOT 针脚。 默认情况下,连接器位于标为 DIS(禁用)的 2 个针脚上,因此我们必须将连接器移到 EN 针脚上(启用)。
将针脚连接器切换为 EN 后,我们就可以将电脑上的 micro-USB 线组连接到上面红色矩形所示的 micro-USB 连接器上。 连接微型 USB 后,应通过 5V 桶状插孔供电。
连接微型 USB 和电源后,我们需要启用 RPi USB 启动。 我们按照此处的教程进行操作。 构建程序并运行后,你应该会看到类似的内容:
/Documents/usbboot$ sudo ./rpiboot
RPIBOOT: build-date Apr 21 2022 version 20220315~121405 445356e1
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Second stage boot server
Loading embedded: start4.elf
File read: start4.elf
Second stage boot server done
启动完成后,你应该能在Raspberry Pi Imager 或 Balena Etcher(我们使用的是 Raspberry Pi Imager 或 Balena Etcher,截图如下)中看到 eMMC 内存,这样你就能轻松地将所需镜像闪入 eMMC。 闪存完成后,确保禁用 USB 启动(再次切换连接器)并重启设备。 它将从新闪存的映像启动!
树莓派Zero
Raspberry Pi Zero 是一款性价比极高的单板计算机 (SBC),价格也非常实惠,它有 512MB RAM、1GHz 单核 CPU 和可选的板载蓝牙和 WiFi 连接,它的功耗约为 0.5 瓦。
RPi Zero 足以满足元数据流(NN 结果)、低分辨率编码视频或轻型计算的需求。 如果您打算流式传输高分辨率视频、执行重型计算(如使用 OpenCV)或后期处理,RPi Zero 将不是主机的最佳选择。
将OAK 设备连接到RPi Zero
RPI Zero 有一个微型 USB 接口,用于连接外设。 您可以使用标准的 USB-C(转 USB-A)线组,但需要 OTG 连接器/电缆将 OAK 摄像头连接到 RPI Zero。
上述所有方案均可使用,这并不是OAK自身的产品,但其实在很多电商平台或3C门店均能获得此类产品。
根据我们的测试,RPi Zero 能够在不使用外部电源(电源插孔或 Y 型适配器)的情况下为 OAK-D 提供足够的电力。
树莓派RPi的故障诊断
RPi Locking Up/OAK在树莓派上运行中断
树莓派的USB口最高支持1.2A的电流供电,而OAK相机会占用到1A(最高功耗,通常在500mA左右)。
因此,如果出现锁定现象,可能是由于 USB 设备从 Pi 上消耗的总功率超过了 1.2A 的限制。 使用供电集线器可以避免这种情况,或者减少通过 USB 从 Pi 为其他设备供电。
这也可能表现为 OAK 在 Pi 上出现随机的崩溃、断开连接。 如果OAK被配置为同时做很多事情,这种情况管道就会变得复杂、特别频繁。 随着我们让DepthAI同时做越来越多的事情--从而提高OAK的最大功率--这种情况越来越有可能发生。 来自 OAK 的峰值功率(电流)尖峰似乎可能超过 Pi 的承受能力,导致 OAK 断电并返回错误。 因此,如果您遇到树莓派上的 DepthAI 稳定性问题,请尝试通过电源和/或供电 USB 集线器为 OAK 摄像头供电,看看错误是否会消失。
如果您以 SSH 方式登录 RPi(不带 -x 参数)并尝试显示帧(例如 cv2.imshow()),很可能会出现类似下面的错误:
- - (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'
- qt.qpa.xcb: could not connect to display: Could not load the Qt platform plugin "xcb" –
- This application failed to start because no Qt platform plugin could be initialized.
解决办法是在 SSH 连接到 RPi 时使用 X11 转发,请参阅 SSH 进入 RPi。
OAK设备在RPi 5上运行
在RPi5上安装DepthAI时,安装可能会被中止并出现以下log、报错:
"Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package libtbb2 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
libtbbmalloc2:armhf libtbbmalloc2
E: Package 'libtbb2' has no installation candidate
E: Unable to locate package libdc1394-22-dev"
这时我们需要
将 libtbb2 替换为 libtbbmalloc2(或者libtbbmalloc2:armhf 如果第一个不起作用)
将 libdc1394-22-dev 替换为 libdc1394-dev
问题应该就会被解决