常见问题#

一般问题#

CMUcam1 有什么独特之处?#

传统上,需要快速的计算机来捕获和处理相机图像。还需要编写软件来执行此处理。因此,很难在简单系统中将视觉用作传感器。

CMUcam1 视觉系统使用一个快速、低成本的微控制器来处理相机数据的所有高速处理,并包含执行简单视觉任务的软件。由于用户可以选择仅从视觉系统输出低带宽的高级信息,例如红色物体位于 X-Y 位置,因此像 PIC 微控制器这样的简单处理器就可以读取这些数据,并指挥小型机器人执行诸如追逐彩色球之类的任务。CMUcam1 视觉系统使得忽略相机接口的复杂性成为可能,并像使用机器人系统中常用的任何其他传感器(即声纳)一样使用视觉。

CMUcam1 的帧率是多少?#

最快的帧率为每秒 16.7 帧。这意味着 CMUcam1 每秒可以告诉您物体的位置约 17 次。如果需要,您可以使用串行软件协议来减慢速度。

CMUcam1 支持哪些波特率?#

截至最新版本的固件 (v1.12),CMUcam1 可以以 9600、19200、38400 或 115200 的波特率进行通信。波特率通过电路板上的跳线设置来选择。

我如何升级我的 CMUcam1 固件?#

如果您当前使用的是固件 v1.11,除非您需要支持较低的波特率,否则没有理由升级。1.11 版支持 38400 和 115200 波特。1.12 版支持这些波特率,并增加了对 9600 和 19200 波特的支持。要升级固件,您需要重新对处理器芯片中的闪存进行编程。如果您有编程器,可以从我们的 下载 页面下载当前版本,然后自己重新刷写处理器。

CMUcam1 在户外能工作吗?#

CMUcam1 可在户外工作,但不能在阳光直射下工作。我们使用的 CMOS 相机没有高质量的红外滤光片,因此在阳光直射下,阳光会使红色像素饱和,图像本质上会变成单色。可以添加外部滤光片来改善户外操作。我们有一份简短的文章,向您展示光照条件如何影响 CMUcam1,您可以 在此处 下载。

我可以为 CMUcam1 编写自定义代码吗?#

当然可以。为此,请向我们索取固件源代码,为 Ubicom 芯片订购一个 C 编程环境,然后动手吧。当我们向您发送固件源代码时,我们还会向您发送一份关于代码结构的摘要以及我们所使用的编程环境的信息。

CMUcam1 消耗多少功率?#

整个系统消耗约 200 毫安。

CMUcam1 的视场角是多少?#

这取决于您安装到 CMOS 相机上的镜头。如果您按标准销售的方式订购 CMOS 相机,您最终将得到约 25 度的视场角,这相对较窄。不过,您可以在订购 CMOS 相机时定制订购更广角的镜头。

CMUcam1 使用哪种处理器?#

我们的图像处理代码驻留在来自 Ubicom 的一块以 75 MHz 运行的微控制器芯片上,即 SX28AC。该芯片通过并行接口从 CMOS 相机读取所有像素,并实时进行所有处理。然后,它通过串行端口接口将结果传送给您的微控制器或计算机。

CMUcam1 使用哪种 CMOS 相机?#

我们使用一个 CMOS 相机,它采用了 OmniVision OV6620 单芯片 CMOS 相机。我们使用型号为 C3088 的 CMOS 相机板,上面安装了传感器、一个连接器和一个镜头。

CMUcam1 能与其他 CMOS 相机配合使用吗?#

不能。目前,硬件和软件系统专门设计为与 OmniVision OV6620 CMOS 相机配合使用。要与另一个相机配合使用,系统需要完全重新设计。

有什么地方可以让我找到我其他问题的答案吗?#

是的。我们在此页面上有一些关于更多技术问题的信息。

我在哪里可以了解更多关于计算机视觉的一般信息?#

CMUcam1 以小巧、廉价的封装执行了它被设计来执行的简单计算机视觉任务。然而,在任意条件下试图识别任意物体这一通用计算机视觉问题仍然是一个非常活跃的研究课题,而且远未接近解决。

如果您想了解有关计算机视觉的更多信息,您可能想尝试这些链接:

技术问题#

演示模式在上电时执行的确切步骤顺序是什么?#

以下是演示模式在上电时执行的确切顺序:

  1. 复位相机。

  2. 等待 5 秒钟,让相机参数自动调整稳定下来。

  3. 发送相机寄存器字符串:CR 18 32 19 32,它选择 YCrCb 模式并关闭自动增益。

  4. 执行 TW命令。

此后,相机将开始驱动舵机朝向由 TW命令检测到的颜色的质心移动。

"TW" 命令执行的确切步骤顺序是什么?#

以下是 TW命令执行的确切顺序:

  1. 将窗口缩小到当前窗口尺寸的 1/4(每个维度),形成一个以当前窗口中心为中心的新窗口。

  2. 调用 get mean。

  3. 将窗口恢复到完整图像大小。

  4. 将每个颜色通道的最大值和最小值设置为该通道的均值 +/- 30。

此后,相机将开始流式传输 C、M 或 N 类型的数据包。

启用自动模式时,跟踪 LED 在什么条件下亮起?#

当返回的 pixel_count >= 2时,LED 将亮起。返回的 pixel_count = (actual_pixel_count + 4) / 8

如果 CMOS 相机的分辨率为 352 x 288 像素,为什么 CMUcam1 的分辨率只有 80 x 143?#

这里的问题是彩色数码相机的工作原理。在所有数码彩色相机中(即使是非常昂贵的相机——除了一些基于某种 非常先进的技术的相机),每个像素位置您只能得到一个颜色通道的测量值,这称为马赛克滤波。这里有一个很好的图表有助于解释这一点:

Mosaic

(图表由 Foveon, Inc. 提供)

所以您可以看到,像素可以被认为是以四个为一组排列的,每组有两个 G 测量值以及一个 R 和一个 B 测量值。如果您丢弃其中一个 G 测量值(我们就是这样做的),您会发现 352x288 相机的真实分辨率更接近 176x144。我们以半分辨率模式运行相机,水平方向上每隔一个 2x2 块跳过一个,从而得到 88x144。由于处理器中的内存限制,我们在水平方向上丢弃 8 列,在垂直方向上丢弃包含测试图案的一行,从而得到 80x143 作为最终分辨率。

仅供参考,标准数码相机使用复杂的插值技术来尝试填补每个像素处缺失的颜色值,从而为您提供更接近传感器全分辨率的图像。

我如何才能准确地对 CMUcam1 对焦?#

当然,进行对焦的最佳方法是使用 GUI 进行帧转储。您手边可能没有计算机,或者您可能使用的是 BotBall CMUcam1,它在其硬接线的 9600 波特率下没有足够的分辨率来让这种方法很好地工作。

在这种情况下,有两种替代方法。首先,您可以尝试数螺纹。在最佳对焦时,镜头并未完全拧入。相反,会有大约 1 毫米的螺纹间隙露出。就螺纹数量而言,即镜头和镜头座之间的间隙中大约露出 2 圈螺纹。

第二种替代方法依赖于这样一种思想:当图像清晰时,暗部最暗,亮部最亮。换句话说,即对比度最大时。当图像变得失焦时,极值会消退为更均匀的强度分布。因此,如果您启动流模式,然后调用 GM (Get Mean),您就可以实时对焦。观察红色偏差。当您在所需距离上对高对比度物体(例如写满字的一张纸)清晰对焦时,在最清晰对焦时红色偏差会有一个明显的峰值。请注意,这种对焦方法要求您在转动镜头时将相机和目标固定得相当牢固。