观察到的限制和潜在问题

下面我们列出了使用多个zivid相机时可能出现的异常和错误,但是这些问题仅发生在使用一台计算机上同时运行4个相机,并且计算机的负载非常高的的时候。在负载非常高的情况下,我们的意思是4个Zivid相机使用最快的捕获设置在较长时间内以尽可能高的采集率连续捕获。

USB控制器错误

重要

仅Zivid One+会出现。

典型异常:

  • Frames were overwritten in snapshot mode

  • Failed to acquire an image from the driver (CAM_API_STS_FLUSHED_BY_CAMERA_REMOVE)

  • Failed to acquire an image from the driver (CAM_API_STS_REQUEST_TIMEOUT)

  • Failed to wait for image stream event (CAM_API_STS_TIMEOUT)

一些USB芯片组在高负载工作时(例如多个相机同时捕获图像)可能表现不佳。上述异常可能表明连接相机的USB控制器工作不正常。如果出现这些异常,请切换到另一个USB控制器。您可以通过以下方式检查您连接的USB控制器

打开 设备管理器,在查看里更改为按连接列出设备 (查看按连接列出设备)。

在命令提示符中输入 lsusb -t

备注

尝试使用不同的USB端口或不同的PC。

GPU内存错误

重要

仅在使用Zivid One+时发现。

典型异常:

  • An OpenCL error occurred: Failed to map image to host memory

  • An OpenCL error occurred: Failed to enqueue kernel

  • An OpenCL error occurred: Failed to wait for image to be mapped to host memory

在Nvidia GPU上以非常高的负载长时间捕获可能会导致OpenCL内存不足的相关异常。此错误的重复发生的可能性取决于您的GPU速度和RAM大小。在中等到高负载的测试中,例如用最快的捕获工作2秒然后休息1秒,则没有出现任何错误。

您可以通过任务管理器来检查GPU内存的使用情况,或者Ubuntu上的系统监视器来测试这一点。

../../../_images/gpu_usage_trace_window.png

备注

这仅在非常高的负载测试期间发生在Nvidia GPU上。

GPU驱动程序错误

重要

仅在使用Zivid One+时发现。

CPU/GPU驱动程序版本会影响多台zivid同时拍照时的性能。确保为您的GPU更新了最新的驱动程序。文章 检查GPU驱动程序 说明了如何检查驱动程序版本和/或升级驱动程序。

OpenCL驱动程序错误

重要

仅在使用Zivid One+时发现。

典型异常:

  • Abort was called at 256 line in file:
    ../neo/runtime/memory_manager/host_ptr_manager.cpp
    
  • 任何其他Intel NEO报错。

根据您的GPU类型,您需要使用不同版本的OpenCL。 检查OpenCL驱动程序 描述了如何检查您当前的OpenCL版本。如果您在Linux上使用intel NEO,请确保您使用的是20.08或更高版本。此驱动程序的旧版本可能不太稳定。关于如何更新Intel NEO,请查看 在Ubuntu中安装OpenCL驱动程序

备注

适用于Linux的Intel NEO需要20.08版本。

结论

  • 我们仅观察到Zivid One+相机的限制和潜在问题。这主要是因为以太网(Zivid 2 和 Zivid 2+)比USB(Zivid One+)具备更强的鲁棒性,该结论也同样适用于仅使用单台相机的情况。

  • 我们仅在以下极端条件下观察到限制和问题:

    • 非常高的负载(捕获之间没有停顿,这对于大多数应用来说并不常见)

    • 特定的USB芯片组和GPU和OpenCL驱动程序版本

    • 同时使用四个相机

  • 通过重新捕获或重新连接例程可以从观察到的异常中恢复。

  • 异常情况并非仅发生于同时使用多个Zivid One+相机的情况下,只是在上述极端条件下更为频繁。

  • 预计异常情况的发生频率与在对比条件下使用单个Zivid One+相机的频率一样。