中国 · 南京 · 栖霞区紫东路2号紫东国际创意园B3-2幢5F
+86-18994094214 (仅工作日:8:30~17:30)
contact@oakchina.cn

OAK POE系列产品上手指南

OAK POE系列产品上手指南

今天来给大家介绍一下 OAK PoE 系列产品的使用及注意事项。

PS: 设置静态IP时网段要避免与已有网段重合

▌OAK-PoE 简介

PoE 允许使用单根 Cat5e(或更高)以太网电缆为设备供电并为其提供高达 100 米(328 英尺)1000 Mbps (1Gbps) 全双工连接。

▌使用前的准备工作

  1. 你需要一台千兆 PoE 交换机来为 PoE 设备供电。最好是支持 DHCP 服务器,这样当你需要动态分配 IP 时,就不需要额外使用一根网线连接路由器了。

在链接交换机时有一点需要注意,看下图。

  1. 如果你为挑选一款好的 PoE 交换机而感到烦恼。我们推荐使用 PoE POWER Supply,48V 的 PoE 供电模块。

PoE 电源 48VPoE 供电模块,千兆网络,48V 供电,大于 10W 功率,给 OAK 的 PoE 相机供电,同时将 OAK 相机的 PoE 网络接口转换成普通网络接口。

只需要将它的两个网口分别连接主机和我们的 OAK-PoE 设备,然后插到电源上即可。

例如下面这款(需要的话可联系我们淘宝店客服,数量不多卖完即止):

  1. 如果你需要在户外使用,推荐使用车载直流供电。
  1. 安装依赖:

运行 OAK-PoE 设备需要 depthai 库大于等于 2.7.0.0 版本。直接安装最新版本即可。

python3 -m pip install -U "depthai>2.7.0.0"

▌设置主机静态 IP

如果你的 PoE 交换机不支持 DHCP 服务器。你需要设置主机的静态 IP,以保证主机和 OAK 设备在同一个局域网内。

所有 PoE 设备出厂默认设置:静态 IP 为 169.254.1.222 ,子网掩码为 255.255.0.0 。所以我们需要将主机 IP 设置为与设备同一网段,子网掩码设为相同。

例如:将静态 IP 设置为 169.254.1.10,子网掩码设置为 255.255.0.0

PS: 子网掩码一定要设置正确!!

OAK POE:
    ip addr: 169.254.1.222
    netmask: 255.255.0.0

PC:
    ip addr: 169.254.1.10
    netmask: 255.255.0.0

可以使用以下命令设置:

▌Windows

▌Linux

sudo ifconfig eth0 169.254.1.10 netmask 255.255.0.0 up

▌设置防火墙

Linux 系统上有一种情况即使分配好了 IP 地址,主机与 OAK 设备同属于一个网段。还是出现找不到设备的错误。这有可能是防火墙阻止的连接。

我们可以使用 iptabels 工具查看防火墙规则表:

iptables -L -n --line-numbers

如果看到 reject-with icmp-port-unreachable 规则,则很有可能是它阻止了连接。

我们可以删除此条规则:

sudo iptables -D <规则链名> <规则序号>

也可以直接清空所有规则:

sudo iptables -F

PS: 不用担心破坏了防火墙规则,此命令为当时生效重启即恢复原样。

WIndows 系统上没有防火墙问题。

▌设置 OAK-PoE 静态 IP

  • 首先我们需要主机能够先找到 PoE 设备。
  • 然后通过代码刷写新的 IP。

设置设备 IP 的示例代码可以在此处找到。

查看设备 Bootloader 版本

查看代码地址

如果 Version 低于 0.0.14,则需要更新 Bootloader 版本。

更新 Bootloader 版本

查看代码地址

由于我手中的设备已经是最新版本,所以没有任何更新信息。

设置静态 IP

查看代码地址

可以看到上图中,运行 depthai-demo.py 程序,设备 IP 已经显示为 192.168.1.201

PS: 设备和主机依然要保存在同一网段,子网掩码相同。

OAK PoE:
    ip addr: 192.168.1.201
    netmask: 255.255.255.0

PC:
    ip addr: 192.168.1.10
    netmask: 255.255.255.0

设备设置静态 IP 需要注意的问题

在设备被设置了静态 IP 后,路由器或支持 DHCP 服务器的 PoE 交换机的自动分配 IP 功能将失效。设备不再接收分配的 IP,会出现找不到设备的情况。

清除配置

可以通过清除刚才的配置,相当于恢复出厂设置。

默认 IP 情况:

OAK PoE:
    ip addr: 169.254.1.222
    netmask: 255.255.0.0

PC:
    ip addr: 169.254.1.10
    netmask: 255.255.0.0

自动分配 IP 的情况:

OAK PoE:
    DHCP

PC:
    DHCP

▌演示

与 USB-C 设备同样的方法使用。当你的程序尝试连接设备时,depthai 库将搜索通过 USB 端口或 LAN 连接的可用设备。

python depthai-demo.py -gt cv

▌OAK-PoE 设备故障排查详解

在进行任何类型的故障排除之前,我们建议尝试使用最新版本 depthai。

No DepthAI devices found! 无可用设备

如果你遇到这个错误,意味着 depthai 在同一个网络上没有找到任何 OAK PoE 相机。请确定相机已打开并与电脑连接在同一个网络上。几个可能:

  • 如果你正在使用 DHCP 服务器,可以在 DHCP 服务器仪表盘上查看 logs/connected devices,查看相机是否已连接及其 IP 地址。
  • 如果没有 DHCP,相机将退回到静态 IP(参见DHCP 和静态 IP)。
  • 当你知道相机的 IP 并能 ping 通它时,参见我可以 ping 通 OAK PoE 相机,但无法连接到它

我可以 ping 通 OAK PoE 相机,但无法连接到它

DepthAI 库仅在同一局域网内搜索可用的 OAK PoE 相机,如果你的相机和主机不在同一个局域网中,你需要手动指定相机的 IP 地址以便进行连接。你可以使用 DepthAI 库提供的相关函数来手动指定相机的 IP 地址。

需要注意的是,为了确保与相机的兼容性,你需要确保相机的 bootloader 版本不低于 0.0.18。你可以使用 OAK 设备管理器来检查相机的bootloader 版本,并根据需要升级相机的bootloader 版本。

import cv2
import depthai as dai

pipeline = dai.Pipeline()

camRgb = pipeline.createColorCamera()

xoutRgb = pipeline.createXLinkOut()
xoutRgb.setStreamName("rgb")
camRgb.preview.link(xoutRgb.input)

device_info = dai.DeviceInfo("169.254.1.222")  # IP
# device_info = depthai.DeviceInfo("14442C108144F1D000")  # MXID
# device_info = depthai.DeviceInfo("3.3.3")  # USB port name

with dai.Device(pipeline, device_info) as device:
    qRgb = device.getOutputQueue(name="rgb", maxSize=4, blocking=False)
    while True:
        cv2.imshow("rgb", qRgb.get().getCvFrame())
        if cv2.waitKey(1) == ord("q"):
            break
            

DHCP 和静态 IP

默认情况下,PoE 设备会尝试从 DHCP 获取 IP 地址。如果网络上没有可用的 DHCP 服务器,设备将使用静态 IP 地址 169.254.1.222, (子网掩码:255.255.0.0)。在这种静态回退情况下,你的计算机需要设置在相同的 IP 地址范围内,否则将无法与设备进行通信。为了解决这个问题,你可以在计算机上设置一个静态 IP 地址(例如静态 IP:169.254.1.10,子网掩码:255.255.0.0),以确保计算机和 PoE 设备可以相互通信。如果需要连接多个 PoE 设备,你需要为每个设备设置唯一的静态 IP 地址,以避免冲突。

端口和防火墙

UDP 设备发现在端口上处理 11491,TCP XLink 连接在端口上处理 11490

在 Ubuntu 上,默认情况下防火墙是禁用的,所以你应该不会有任何问题。你可以通过执行以下命令来检查这一点:

> sudo ufw status
Status: inactive 

如果你启用了防火墙,你可能需要允许这两个端口:

sudo ufw allow 11490/tcp
sudo ufw allow 11491/udp 

我们已经注意到,上述规则并不总是像预期的那样工作,有时有必要运行下面的命令。

在生产环境中,建议将 OAK PoE 设备的 IP 地址设置为静态 IP,以避免在重新连接时 IP 地址发生更改。如果 OAK PoE 设备使用动态 IP 地址,你可能需要重复设置防火墙规则来确保设备的连通性。

ufw allow from [OAK_PoE_IP] 

VPN 连接

在使用 PoE 设备时,如果你同时使用 VPN 连接,可能会导致与该设备的连接中断。这是因为你的电脑可能只在远程网络中搜索该设备,无法在本地网络中找到它。因此,我们建议在使用 PoE 设备时关闭 VPN,或者确保你的本地路由设置为在 VPN 连接时本地设备可用。关闭 VPN 可以确保你可以直接访问本地网络中的设备,而在启用 VPN 时设置本地路由可以让你的电脑继续访问本地网络中的设备。

通过 2 个接口(WiFi/以太网)连接到同一个局域网

偶尔会出现这样的情况:程序可能会发现同一个 PoE 设备两次,并打印该设备的 IP 地址两次。

尽管这种情况很少见,但在某些情况下,例如使用多个设备时,可能会导致初始化错误,例如 RuntimeError: Failed to find device after booting, error message: X_LINK_DEVICE_NOT_FOUND。我们正在尽快修复这个问题。暂时的解决方法是从其中一个接口断开连接,例如断开 WiFi 连接,从而避免设备被重复发现,减少出现初始化错误的可能性。

供电不足

如果你的 PoE 设备出现故障或突然停止工作,很可能是由于使用的 PoE 交换机/注入器存在问题。当每个端口的电力预算似乎足够,但由于其他端口上的设备需求而超出了交换机/注入器的总电力预算时,就会发生这种情况。此时,建议检查你使用的 PoE 交换机/注入器的规格说明,了解其总电力预算,并查看是否需要更换交换机/注入器或重新分配设备的端口,以确保电力预算不会超出范围。这样可以解决 PoE 设备无法正常工作的问题。

“特殊”网络设备

我们注意到,对于某些网络设备,我们默认的 15 秒连接超时时间不足,需要增加超时时间。你可以通过设置环境变量来增加超时时间(以毫秒为单位)。这可以帮助确保在连接到 PoE 设备时,有足够的时间来建立连接,从而避免连接超时导致的问题。要设置环境变量,请查看你使用的操作系统的相关文档,了解如何设置环境变量,并将变量设置为所需的超时时间(以毫秒为单位)。例如,如果你需要将超时时间设置为 30 秒,则需要将环境变量设置为 30000 毫秒。注意,增加超时时间可能会对连接的响应时间产生影响,因此你应该根据实际情况选择合适的超时时间。

  • Linux/MacOS
export DEPTHAI_WATCHDOG_INITIAL_DELAY=60000
export DEPTHAI_BOOTUP_TIMEOUT=60000
python3 script.py 
  • Windows PowerShell
$env:DEPTHAI_WATCHDOG_INITIAL_DELAY=60000
$env:DEPTHAI_BOOTUP_TIMEOUT=60000
python3 script.py 
  • Windows CMD
set DEPTHAI_WATCHDOG_INITIAL_DELAY=60000
set DEPTHAI_BOOTUP_TIMEOUT=60000
python3 script.py 

网络接口控制器设置

在 Linux 上,一些默认的网卡设置可能不适合与 OAK PoE 相机通信,这可能会导致低帧率、高延迟和/或高 OAK CPU 使用率。你可以使用 ethtool 工具来配置这些设置。

ethtool 是一个命令行工具,用于显示和配置以太网适配器的各种参数,例如速度、双工模式和接收器/发送器环路。使用 ethtool,你可以优化网络接口卡的设置,以便优化与 OAK PoE 相机的通信,从而提高帧率、降低延迟和减少 OAK CPU 使用率。

具体来说,你可以使用 ethtool 来调整网络接口卡的缓冲区大小、传输速率和其他参数。要使用 ethtool,请首先安装它,并在终端中运行相应的命令。建议在执行任何修改之前备份你的系统设置,以避免不必要的问题。

*ethtool 设置为我们提供了更好的性能*

有一个案例显示,通过配置 sudo ethtool -C NAME rx-usecs 1022(其中 NAMEenp59s0f1)可以将帧率从 12 帧/秒提高到 20 帧/秒。这说明通过使用 ethtool 工具来调整网卡设置,可以显着提高与 OAK PoE 相机的通信质量。在这个案例中,通过将接收缓冲区的 rx-usecs 参数设置为 1022,可以优化网络接口卡的性能,并提高帧率。需要注意的是,不同的系统和硬件可能需要不同的参数设置,因此建议在进行任何更改之前,仔细研究你正在使用的硬件和操作系统,并查找最佳的参数设置。

Tags:

索引