OAK PoE 部署指南
您需要一个 PoE 交换机或注入器来为 PoE 设备供电(请参阅 为 PoE 设备供电)。为设备供电后,交换机/注入器上的电源 LED 应亮起,如下面的视频所示。
RJ45 PoE 连接器
M12 PoE 连接器


确保正确拧紧连接器——无论是 RJ45 PoE 摄像头的以太网接头,还是M12 连接器——以形成良好的密封。这可确保设备 符合其 IP 等级。
线缆直径
RJ45 PoE 摄像头的以太网线缆直径应在 5mm 到 7mm 之间,以适合接头。直径过大将无法安装,直径过小则无法正确密封。
DepthAI 库将查找同一 LAN 内的所有可用设备。如果摄像头 不在同一 LAN 上,您可以手动指定设备的 IP 地址。如果 DHCP 服务器不可用,摄像头将回退到静态 IP 
如果您收到类似
169.254.1.222。测试设备的最佳方法是运行 OAK Viewer。它是一个 GUI 应用程序,可让您通过实时可视化输出来轻松评估摄像头。如果它能找到设备并开始流式传输帧,则表示连接正常工作。
调试
RuntimeError: No available devices 的错误,则表示 DepthAI 在同一子网中找不到任何 PoE 设备。请确保摄像头已通电并连接到 与您的计算机相同的网络。请参阅下面的选项卡以获取调试步骤。我们建议在使用任何故障排除之前,先使用最新 版本的 depthai。Different Subnet
DepthAI 库仅在同一子网内搜索可用的 OAK PoE 摄像头。您仍然可以
ping 该摄像头,但自动发现功能将找不到该设备。 如果摄像头不在同一子网中,您可以手动指定设备的 IP 地址,如下面的代码所示。Python
Py
1import depthai as dai
2pipeline = dai.Pipeline()
3# ... 填充 pipeline ...
4
5# 定义设备的 IP 地址
6device_info = dai.DeviceInfo("169.254.1.222")
7
8with dai.Device(device_info) as device:
9 # 定义队列,获取消息...C++
C++
1#include "depthai/depthai.hpp"
2
3int main(int argc, char** argv) {
4 dai::Pipeline pipeline;
5 // ... 填充 pipeline ...
6
7 // 定义设备的 IP 地址
8 auto deviceInfo = dai::DeviceInfo("169.254.1.222");
9
10 dai::Device device(deviceInfo);
11
12 // 定义队列,获取消息...
13 return 0;
14}Multiple interfaces
当使用 PoE 设备连接到同时连接了 WiFi 和以太网的 PC 时,需要调整网络路由以避免连接问题。 一个常见的问题是系统会重复检测到同一个 PoE 设备,导致初始化错误 (
RuntimeError: Failed to find device after booting, error message: X_LINK_DEVICE_NOT_FOUND)。快速修复:断开 WiFi 连接以防止重复设备发现。您也可以手动配置网络路由,以确保 DepthAI 设备通过 PoE 进行通信,同时通过 WiFi 保持互联网访问:Windows
- 打开命令提示符:按
Win + R,键入cmd,然后按 Enter 打开命令提示符。 - 识别网络适配器:键入
ipconfig并按 Enter。记下您的网络适配器名称(例如,以太网、Wi-Fi)及其 IP 地址。 - 添加路由:
- 使用
route命令为 DepthAI 设备添加持久路由。通用格式为:route -p ADD [DepthAI-IP] MASK [Subnet-Mask] [Adapter-Gateway-IP]。 - 将
[DepthAI-IP]替换为您的 DepthAI 设备的 IP 地址,[Subnet-Mask]替换为适当的子网掩码,[Adapter-Gateway-IP]替换为您希望用于 DepthAI 通信的适配器的网关 IP。
- 使用
- 验证路由:添加路由后,可以通过键入
route print并按 Enter 来验证。
Linux
- 打开终端:您可以在应用程序菜单中找到终端应用程序,或使用快捷键
Ctrl + Alt + T。 - 识别网络接口:键入
ip addr并按 Enter。记下您的网络接口名称(例如,以太网为eth0,Wi-Fi 为wlan0)。 - 添加路由:
- 使用
ip route命令为 DepthAI 设备添加路由:sudo ip route add [DepthAI-IP]/24 via [Adapter-Gateway-IP] dev [Network-Interface]。 - 将
[DepthAI-IP]替换为您的 DepthAI 设备的 IP 地址(确保掩码24正确),[Adapter-Gateway-IP]替换为您希望用于 DepthAI 通信的适配器的网关 IP,[Network-Interface]替换为网络接口的名称。
- 使用
- 验证路由:可以通过键入
ip route show并按 Enter 来检查路由。
macOS
- 打开终端:您可以在“实用工具”下的“应用程序”中找到终端,或使用 Spotlight 搜索它。
- 识别网络接口:键入
ifconfig并按 Enter。记下您的网络接口名称(例如,以太网为en0,Wi-Fi 为en1)。 - 添加路由:
- 在 网络设置 -> 设置服务顺序 中,将用于 DepthAI 的接口拖到列表底部。
- 将相关流量定向到 DepthAI 适配器:
sudo route add -net 169.254 -interface [dongle-interface]。 - 将
[dongle-interface]替换为 DepthAI 网络接口。
No DHCP
默认情况下,PoE 设备会尝试从 DHCP 服务器获取动态 IP 地址。但是,如果网络中没有 DHCP 服务器, 设备将 回退到其静态 IP
169.254.1.222。在这种情况下,您可以:- 将交换机连接到路由器,以从 DHCP 服务器获取动态 IP 地址。
- 设置您的计算机的静态 IP(例如
169.254.1.10,子网掩码:255.255.0.0),使其与 PoE 设备位于同一子网中,然后连接到您的设备。 - 连接到设备时手动指定设备 IP 地址,您可以使用 IP 地址或 MxId:
Python
Py
1import depthai as dai
2pipeline = dai.Pipeline()
3# ... Populate pipeline ...
4device_info = dai.DeviceInfo("169.254.1.222")
5# device_info = depthai.DeviceInfo("14442C108144F1D000") # MXID
6# device_info = depthai.DeviceInfo("3.3.3") # USB port name
7
8with dai.Device(device_info) as device:
9 # Define queues, get messages...C++
C++
1#include "depthai/depthai.hpp"
2int main(int argc, char** argv) {
3 dai::Pipeline pipeline;
4 // ... Populate pipeline ...
5 auto deviceInfo = dai::DeviceInfo("169.254.1.222");
6 // auto deviceInfo = dai::DeviceInfo("14442C108144F1D000");
7 // auto deviceInfo = dai::DeviceInfo("3.3.3");
8 dai::Device device(deviceInfo);
9 // Define queues, get messages...
10 return 0;
11}多个设备
如果您使用多个 PoE 设备,选项 2 和 3 将不起作用,因为所有设备都将尝试使用相同的 IP 地址。在这种情况下,您需要为 PoE 设备分配静态 IP 地址,请参阅 设置静态 IP。
Firewall
UDP 设备发现通过端口 如果您启用了防火墙,则可能需要允许这两个端口:我们注意到,上述规则并不总是按预期工作,有时需要运行 以下命令。对于生产环境,您需要为 OAK PoE 摄像头设置静态 IP,否则 IP 地址可能会更改,您需要重新设置防火墙规则。
11491 处理,TCP XLink 连接通过端口 11490 处理。在 Ubuntu 上,防火墙默认是禁用的,因此您应该不会遇到任何问题。但您可以通过执行以下命令进行检查:Command Line
1> sudo ufw status
2Status: inactiveCommand Line
1sudo ufw allow 11490/tcp
2sudo ufw allow 11491/udpCommand Line
1ufw allow from [OAK_POE_IP]Network equipment
我们注意到,在使用某些网络设备时,我们默认的 连接 POE 设备 15 秒超时 时间不足,需要增加。您可以通过设置环境变量来增加超时时间(值为毫秒)。
Windows Powershell
Command Line
1$env:DEPTHAI_WATCHDOG_INITIAL_DELAY=60000
2$env:DEPTHAI_BOOTUP_TIMEOUT=60000
3python3 script.pyLinux/macOS
Command Line
1DEPTHAI_WATCHDOG_INITIAL_DELAY=60000 DEPTHAI_BOOTUP_TIMEOUT=60000 python3 script.pyWindows CMD
Command Line
1set DEPTHAI_WATCHDOG_INITIAL_DELAY=60000
2set DEPTHAI_BOOTUP_TIMEOUT=60000
3python3 script.pyVPN
VPN 连接也可能中断与 PoE 设备的连接(因为您的计算机可能只搜索远程网络中的设备,因此无法在本地网络中发现它),因此我们建议在使用 PoE 设备时关闭 VPN,或者确保您的本地路由设置正确,以便在 VPN 连接处于活动状态时本地设备可用/可发现。
成功连接到设备并上传管道后,连接应稳定,延迟应很小(低于 1 秒),带宽应为 700 Mbps。
调试
Connection drop
如果连接在一段时间后中断,可能有几个潜在问题导致此现象。
Network issue
由于网络和网络设备的原因,OAK PoE 摄像头在正常运行一段时间(几小时或几天)后可能会中断连接。针对此问题,有两种潜在的解决方案/变通方法:
- 降低网络负载,以防止连接中断。可以通过降低摄像头的 FPS 或降低摄像头的分辨率来实现。
- 自动重新连接,以防摄像头中断连接。我们有一个演示可以实现此功能。缺点是重新连接最多可能需要 30 秒。首先,看门狗必须启动并重置摄像头(约 5 秒)。然后,引导加载程序必须在摄像头上重启,使其可以再次访问(约 5 秒)。最后,主机计算机必须初始化新连接,并将固件、管道和所有资产(NN)传输到摄像头,以便它可以启动管道(应用程序)。我们有一个自动重连示例。
Device crash
设备可能由于固件中的 bug 或用户应用程序 中的 bug 而崩溃。如果存在固件 bug 或(用户定义的)管道问题,将生成 Crash report,您应将其发送给我们(support@luxonis.com)。如果在运行上述链接的脚本时未找到崩溃报告,则表示存在电源问题、 连接中断(或不太可能发生的硬件问题)。或者,从 depthai 2.28.0 开始,默认启用自动崩溃报告生成。这将把崩溃报告发送到 Luxonis 服务器,并包含:
使用最新的 Bootloader/DepthAI!
请确保您使用的是最新的 DepthAI 版本,并且设备上已刷入最新的 Bootloader,因为最新版本可能已修复了一些 bug。
- 崩溃转储本身