使用 VEXcode V5 块中的 AI 视觉传感器进行编码

确保您已使用 AI 视觉传感器配置了 颜色签名颜色代码 ,以便它们可与您的块一起使用。 要了解有关如何配置它们的更多信息,您可以阅读以下文章:

AI视觉传感器还可以检测AI分类和AprilTags。 要了解如何启用这些检测模式,请访问:

要了解有关这些单独块的更多详细信息以及如何在 VEXcode 中使用它们,请访问 API 站点。


拍摄快照

包含命令拍摄快照的块具有两个下拉选项:一个标记为 AIVision1,另一个标记为 COL1。 该模块旨在从 AI 视觉传感器获取快照,并从视觉编码环境中的指定变量中引用特定对象或颜色。 块的形状在末端有轻微的曲线,这是基于块的编码界面的典型特征。

拍摄快照 块拍摄 AI 视觉传感器当前看到的照片,并从该快照中提取数据,然后可用于项目。 拍摄快照时,您需要指定 AI 视觉传感器应收集哪种类型的对象的数据:

  • 色彩签名
  • 颜色代码
  • 人工智能分类
  • 四月标签

拍摄快照将创建您指定的所有检测到的对象的一个数组。 例如,如果您想检测“红色”颜色特征,并且 AI 视觉传感器检测到 3 个不同的红色物体,则这三个物体的数据都将放入数组中。

有关如何在不同对象之间指定的更多信息,请转到本文中的“设置对象项”部分。

浅蓝色编码块,带有拍摄对象或颜色快照的命令。 有两个下拉选项:一个标记为 AIVision2,另一个标记为 Blue。 该模块设计用于基于块的编码环境,它从 AI 视觉传感器捕获快照并跟踪定义为蓝色的对象或颜色。 该块有轻微的曲线,这是使用模块化块的编码接口的典型特征。

在这个例子中,它将只检测与其配置的“蓝色” 颜色特征 匹配的对象,而不会检测其他任何对象。

从快照获取的数据

请记住,AI 视觉传感器将使用其最后拍摄的快照来处理之后的任何区块。 为了确保您始终从 AI 视觉传感器获取最新的信息,每次想要从中提取数据时,请重新拍摄快照。 

解决

了解人工智能视觉传感器的分辨率对于准确的数据解释至关重要。 该传感器的分辨率为 320x240 像素,中心坐标位于 (160, 120)。

X 坐标小于 160 对应传感器视野的左半部分,而大于 160 对应传感器视野的右半部分。 类似地,小于 120 的 Y 坐标表示视图的上半部分,大于 120 的 Y 坐标表示视图的下半部分

转到 了解 VEXcode V5 中 AI Vision 实用程序中的数据,了解有关如何使用 AI Vision 传感器测量物体的更多信息。

宽度和高度

这是检测到的物体的宽度或高度(以像素为单位)。

图像显示了一个蓝色的巴基球,上面有一个白色方形轮廓跟踪它。 左上角有一个标签,表明它是一个蓝色物体,坐标为 X:176,Y:117,尺寸为 W:80,H:78。 红色箭头突出显示物体的宽度和高度。

宽度和高度的测量有助于识别不同的物体。 例如,巴基球的高度比环的高度大。

视觉识别系统正在追踪两个蓝色立方体物体。 上方的立方体具有白色轮廓,标签指示其位置为 X:215、Y:70,尺寸为 W:73、H:84。 下方立方体具有类似的白色轮廓,标签显示 X:188、Y:184 和尺寸 W:144、H:113。 每个立方体的中心都有一个白色十字,可能表示跟踪的焦点。 标签突出显示了每个物体的测量值和跟踪数据。

宽度和高度也表示物体与 AI 视觉传感器的距离。 测量值越小通常表示物体距离较远,而测量值越大则表示物体距离较近。

程序启动时以块开始,然后是永久循环。 在循环内部,程序使用 AI Vision 传感器 (AIVision1) 拍摄快照以检测蓝色物体。 如果该对象存在,程序将检查该对象的宽度是否小于 250 像素。 如果为真,机器人则向前行驶;否则,机器人停止行驶。 这些块堆叠在一起,表示模块化编码环境中程序的流程。

在此示例中,对象的宽度用于导航。 机器人会接近物体,直到宽度达到特定尺寸后才停止。

CenterX 和 Center Y

这是检测到的物体的中心坐标(以像素为单位)。

计算机视觉系统正在追踪蓝色巴基球。 该物体的轮廓为白色方块,轮廓内有一个较小的红色方块,围绕着中间的白色十字。 在图像的左上角,标签表示该物体是蓝色的,坐标为 X:176、Y:117,尺寸为 W:80、H:78。

CenterX 和 CenterY 坐标有助于导航和定位。 AI 视觉传感器的分辨率为 320 x 240 像素。

视觉系统追踪两个蓝色立方体物体。 上方物体的标签为坐标 X:215、Y:70,尺寸为 W:73、H:84,带有白色轮廓和中心白色十字。 下方物体的坐标为 X:188、Y:184,尺寸为 W:144、H:113,也以白色勾勒出中心白色十字的轮廓。

您可以看到,距离 AI 视觉传感器较近的物体的 CenterY 坐标将比较远的物体低。

基于块的编码序列,以何时启动开始,然后是永久循环。 在循环内部,程序使用 AIVision1 拍摄快照以检测蓝色物体。 如果存在物体,程序就会转动,直到该物体位于 AI Vision 传感器视图的中心。 如果对象的 centerX 值介于 150 和 170 之间,则认为该对象位于中心。 如果物体不在中心,机器人就右转;否则,机器人停止行驶。 这些块表明了可视化程序的流程和逻辑。

在此示例中,由于 AI 视觉传感器的视图中心是 (160, 120),因此机器人将向右转弯,直到检测到的物体的中心 X 坐标大于 150 像素但小于 170 像素。

角度

Angle 是仅适用于颜色代码AprilTags的属性。 这表示检测到的颜色代码AprilTag 是否方向不同。

两个立方体的堆叠,一个在顶部,一个在底部,正在被视觉系统跟踪。 两个立方体周围都有白色轮廓,绿色立方体的中心有一个白色十字。 图像底部的标签显示 Green_Blue A:87°,表示检测到的颜色和角度测量值。 在其下方,列出的坐标为 X:117、Y:186,尺寸为 W:137、H:172,表示框架中堆叠立方体的位置和大小。

您可以查看机器人是否相对于颜色代码AprilTag 有不同的方向,并据此做出导航决策。

两个立方体,一个是绿色,一个是蓝色,并排放置并由视觉系统跟踪。 两个立方体周围都有白色轮廓,中心有一个白色十字架。 左上角的标签表示 Green_Blue A:0°,参考检测到的颜色和角度测量。 在其下方,坐标显示为 X:150、Y:102,尺寸为 W:179、H:109,表示立方体在框架内的位置和大小。

例如,如果未在适当的角度检测到颜色代码 ,则机器人可能无法正确拾取它所代表的物体。

OriginX 和 OriginY

OriginX 和 OriginY 是检测到的物体左上角的坐标(以像素为单位)。

视觉系统正在追踪蓝色巴基球。 物体周围有白色轮廓,轮廓内居中有一个白色十字。 左上角的标签表示该物体的颜色为蓝色,坐标为 X:176、Y:117,尺寸为 W:80、H:78。 一个小红方块突出显示了对象的左上角。

OriginX 和 OriginY 坐标有助于导航和定位。 通过将该坐标与对象的宽度和高度相结合,您可以确定对象边界框的大小。 这有助于追踪移动物体或在物体之间导航。

基于块的编码序列以何时开始开始,然后是永久循环。 在循环内部,程序使用 AIVision1 拍摄快照以检测蓝色物体。 如果该物体存在,程序将根据该物体的位置和大小在 Brain 屏幕上绘制一个矩形。 该矩形是使用对象的原点X、原点Y、宽度和高度值绘制的,这些值由 AIVision1 传感器提供。 该程序以视觉方式跟踪并在大脑屏幕上突出显示检测到的物体。

在此示例中,将使用其原点、宽度和高度的精确坐标在 Brain 上绘制一个矩形。

标签ID

该 tagID 仅适用于AprilTags。 这是指定AprilTag的 ID 号。

视觉系统正在追踪三张带有 AprilTag 的方形卡片。 每张卡片都贴有 ID 号和相关的跟踪数据。 左侧的卡片标记为 ID:0,显示坐标 A:350°、X:110、Y:96、W:41、H:41。 中间的卡片标记为 ID:3,坐标为 A:1°、X:187、Y:180、W:57、H:57。 右侧的卡片标签为 ID:9,坐标为 A:3°、X:237、Y:89、W:38、H:38。 每张卡片都有白色轮廓,系统正在跟踪它们的位置和方向。

识别特定的 AprilTags 可以实现选择性导航。 您可以对机器人进行编程,使其朝某些标签移动而忽略其他标签,有效地将它们用作自动导航的路标。

分数

当使用 AI 视觉传感器检测AI 分类 时使用分数属性。

图像显示视觉系统正在追踪四个物体:两个球和两个环。 红球的坐标为 X:122、Y:84、W:67、H:66,得分为 99%。 蓝球的X:228,Y:86,W:70,H:68,得分为99%。 绿环的坐标为 X:109、Y:186、W:98、H:92,得分为 99%。 红色圆环标记为 X:259、Y:187、W:89、H:91,得分为 99%。 每个物体都以白色勾勒出轮廓,表明跟踪准确性。

置信度分数表示人工智能视觉传感器对其检测的确定程度。 在这张图片中,识别这四个物体的 AI 分类的信心达到 99%。 您可以使用此分数来确保您的机器人只关注高度可信的检测。


设置对象项目

当 AI 视觉传感器检测到一个物体时,它会被放入一个数组中。 默认情况下,AI视觉传感器将从数组中的第一个对象或索引为1的对象中提取数据。 如果您的 AI 视觉传感器仅检测到一个物体,那么默认情况下将选择该物体

要从哪个对象中提取数据。

浅蓝色的编码块。 它包含一个命令,用于将 AIVision1 的对象项设置为 1。 该块是基于块的编码环境的一部分,通常用于定义 AI Vision 传感器应该关注或跟踪哪个对象或项目。 该块的形状略有曲线,符合视觉编码平台的模块化特性。

当AI视觉传感器检测到多个物体时,它们会按从大到小的顺序排列在阵列中。 这意味着检测到的最大物体将始终被设置为对象索引 1,而最小物体将始终被设置为最高数字。

AI Vision Utility 界面左侧检测到两个蓝色立方体,每个立方体都标有其 X 和 Y 坐标和尺寸。 系统已连接,AprilTags 已打开,AI 分类已关闭。 右侧显示蓝色设置,色调和饱和度范围可调,分别设置为 22 和 0.34。 有一个选项可以添加或设置颜色并冻结视频。 固件已更新,运行版本1.0.0.b16,底部有关闭按钮。

在此示例中,已检测到两个具有颜色特征 “蓝色”的物体。 当使用Take Snapshot 块时,它们都将被放入数组中。

AI Vision Utility 界面,跟踪两个标有 X、Y 和尺寸数据的蓝色立方体。 左边的立方体坐标为 X:127,Y:179,尺寸为 W:136,H:123,而右边的立方体坐标为 X:233,Y:74,尺寸为 W:78,H:87。 系统已连接,AprilTags已打开,AI分类已关闭。 蓝色设置的色调范围为 22,饱和度为 0.34。 底部显示冻结视频按钮和固件信息(版本 1.0.0.b16)。

这里,前面的对象将成为对象索引 1,因为它是最大的对象,而最小的对象将成为对象索引 2。


对象存在

在从快照中提取任何数据之前,务必进行始终 检查,以确保 AI 视觉传感器已首先检测到该快照中的任何对象。 这就是Object Exists 块发挥作用的地方。

是否存在一个带有文本 AIVision1 对象的浅蓝色六边形编码块? 该块是基于块的编码环境的一部分,通常用于检查标记为 AIVision1 的 AI Vision 传感器是否检测到物体。 该块的设计适合模块化编码结构,具有此类环境特有的轻微曲线和形状。

此块将返回TrueFalse 值,表示最后拍摄的快照是否在其中检测到任何对象。

此块应始终 用于确保您不会尝试从可能为空的快照中提取任何数据。

基于块的编码序列,以何时启动开始,然后是永久循环。 在循环内部,AI Vision 传感器 (AIVision2) 拍摄快照来检测蓝色。 如果检测到具有蓝色视觉特征的物体,机器人就会向前行驶。 如果没有检测到物体,机器人将停止行驶。 这些块被堆叠起来以表示程序的条件逻辑,其中检测到的物体的存在控制机器人的运动。

例如,机器人将使用 AI 视觉传感器不断拍摄快照。 如果它识别出 任何 具有“蓝色” 颜色特征的物体,它就会向前行驶。


如果任何快照没有“蓝色” 颜色特征,机器人将停止移动。


对象计数

浅蓝色圆形编码块标有 AIVision1 对象计数。 该块用于基于块的编码环境中,检索标记为 AIVision1 的 AI Vision 传感器检测到的物体的数量。 该模块适合模块化结构,常用于机器人或视觉系统的可视化编程界面。

使用 对象计数 块将允许您看到 AI 视觉传感器在其最后一张快照中可以看到多少个特定 颜色特征 的对象。 

AI Vision Utility 界面左侧检测到两个蓝色立方体。 系统已连接,AprilTags 已启用,AI 分类已关闭。 界面显示检测蓝色的设置,色调设置为 22,饱和度设置为 0.34。 有用于冻结视频和添加或设置颜色的按钮。 固件显示为最新版本,运行版本 1.0.0.b16。 还有一个按钮可以断开连接或关闭实用程序。

在这里,我们看到 AI 视觉传感器配置了 颜色特征 “蓝色”,并且正在检测两个物体。

从启动时开始的基于块的编码序列,然后是永久循环。 在循环内部,程序使用 AIVision2 拍摄快照以检测蓝色视觉特征。 它会清除并重置控制台,然后检查是否检测到任何蓝色物体。 如果存在蓝色对象,则将对象计数打印到控制台。 然后程序等待两秒钟,然后重复该过程。 这些块直观地表示对蓝色对象的持续检查,并在控制台中显示结果。控制台输出数字 2。 控制台是更大界面的一部分,可能显示在基于块的编码环境中运行的程序的结果。 控制台的顶部有用于附加操作或控制的按钮,这里运行的程序正在将数据输出到打印控制台,在屏幕上显示结果 2。

在此代码中,AI 视觉传感器将拍摄快照并在 VEXcode 控制台上打印“2”,因为它只检测到两个“蓝色” 颜色签名


目的

用于选择与 AIVision1 相关的对象属性的下拉菜单。 选定的选项是宽度,菜单列出了其他选项,包括高度、centerX、centerY、角度、originX、originY、tagID 和分数。 这些选项允许用户从 AI Vision 传感器检测到的物体中检索特定数据点,从而为跟踪或测量物体的各种属性提供灵活性。

对象 块允许您报告指定对象的属性。 这使您可以使用从最近拍摄的快照中提取的任何可用数据。

可以从拍摄的快照中提取的对象属性包括:

  • 宽度
  • 高度
  • 中心X
  • 中心Y
  • 角度
  • 原点X
  • 原点
  • 标签ID
  • 分数

阅读本文的“从快照获取的数据”部分以获取有关这些属性的更多信息。


检测到的 AprilTag 是

来自编码界面的浅蓝色六角形块。 它包含检查 AIVision1 检测到的 AprilTag 是否与值 1 匹配的命令。 该块用于基于块的编码环境,旨在评估特定的 AprilTag 是否存在。 它的形状和结构使其能够适应其他逻辑块,通常用于机器人或人工智能视觉任务的可视化编程。

检测到的 AprilTag 是 块仅在打开AprilTag 检测模式 时可用。4

将根据指定对象是否为某个 AprilTag 报告 True 或 False。

视觉系统正在追踪三个 AprilTag。 每个标签都有一个 ID 和相关坐标。 左边的标签为 ID:0,坐标为 X:110、Y:96、W:41、H:41。 中心标签为 ID:3,坐标为 X:187、Y:180、W:57、H:57。 右侧标签为 ID:9,坐标为 X:237、Y:89、W:38、H:38。

当在单个快照中检测到多个 AprilTag 时,它们会根据其标识的 ID 而不是大小排列在数组中

在此图像中,检测到三个 AprilTag,ID 分别为 0、3 和 9。 它们将按照数组中 ID 的升序排列。 索引 1 处的对象对应于 ID 为 0 的 AprilTag,索引 2 处的对象对应于 ID 为 3 的 AprilTag,索引 3 处的对象对应于 ID 为 9 的 AprilTag。

有关 AprilTag 是什么以及如何使用 AI 视觉传感器实现其检测的更多信息,请阅读本文。


人工智能分类是

来自基于块的编码环境的浅蓝色六角形块。 该块包含命令AIVision1AI分类是BlueBall? 该块检查 AI Vision 传感器 (AIVision1) 是否将检测到的物体归类为蓝球。 该模块具有下拉选项,允许用户在可视化编程界面中选择不同的对象或 AI 分类进行跟踪和决策。

AI 分类为 块仅在AI 分类检测模式 开启时可用。

 

该块将根据指定对象是否属于某个 AI 分类来报告 True 或 False。

AI 视觉传感器可以检测到的 AI 分类取决于您使用的型号。 有关可用的 AI 分类以及如何使用 AI 视觉传感器启用其检测的更多信息,请阅读本文

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: