人工智能视觉传感器#

介绍#

VEX IQ AI视觉传感器能够检测和追踪物体、颜色以及AprilTag ID。这使得机器人能够分析周围环境、追踪物体并根据检测到的视觉数据做出反应。

这些 AI 视觉示例专为配备 VEX IQ AI 视觉传感器的 Basebot 设计。在这些示例中,传感器配置名称为 AIVision1,该名称会显示在代码块中。

以下是所有模块的列表:

操作 — 从 VEX IQ AI 视觉传感器采集所选签名的数据。

  • 获取对象数据 — 捕获特定签名的数据,例如配置的颜色、预训练的对象或 AprilTag ID。

设置 — 选择要与之交互的对象。

价值——访问和使用已捕获的数据。

行动#

获取对象数据#

获取对象数据堆栈块将来自 VEX IQ AI 视觉传感器帧的数据过滤为单个签名——传感器可以识别的事物的保存描述,例如预训练对象、AprilTag ID 或配置的颜色或颜色代码。

必须先在 AI Vision Utility 中配置颜色和颜色代码,然后才能将其与此块一起使用。

数据集按宽度从大到小的顺序存储对象,索引从 0 开始。可以使用 AI Vision 对象属性 代码块访问每个对象的属性。如果未检测到匹配的对象,则报告数据集为空。

获取对象数据堆栈块。#
从 [AIVision 1 v]获取 [SELECT_A_SIG v] 数据

范围

描述

签名

筛选数据集,仅包含给定签名的数据。可用签名包括:

  • AprilTag ID
  • AI 分类 — 可用性取决于 AI 视觉实用程序中配置的模型。6
  • 名称** — 颜色签名颜色代码,其中 NAME 是在 AI 视觉实用程序中配置的名称

**注意:**要显示 AprilTag ID 或 AI 分类选项,必须在 AI 视觉实用程序中启用其检测功能。

例子

当开始
[Drive forward if an AprilTag ID is detected.]
永久循环
从 [AIVision 1 v]获取 [AprilTag IDs v] 数据
如果 <[AIVIsion1 v] 对象存在?> 那么
驱动 [向前 v] [10] [毫米 v] ▶

人工智能分类#

VEX IQ AI 视觉传感器能够根据特定的 AI 分类检测不同的物体。根据在“设备”窗口中配置 VEX IQ AI 视觉传感器时选择的 AI 分类模型,传感器将检测到不同的物体。目前可用的模型包括:

教室物品

  • 蓝球

  • 绿球

  • 红球

  • 蓝环

  • 绿环

  • 红环

  • 蓝立方

  • 绿立方

  • 红立方

VIQRC 混搭组合

  • 光束

  • 红针

  • 蓝针

  • 橙针

色彩签名#

颜色特征码是VEX IQ AI视觉传感器能够识别的独特颜色。这些特征码使传感器能够根据物体的颜色来检测和跟踪物体。配置好颜色特征码后,传感器就能在其视野范围内识别出具有该特定颜色的物体。

颜色签名用于 获取对象数据 代码块中,以实时处理和检测彩色对象。一次最多可以配置 7 个颜色签名。

AI 视觉实用程序展示了一个连接的视觉传感器正在检测两个彩色物体。左侧显示实时摄像头画面,左侧为蓝色框,右侧为红色框,每个框都带有白色边框。黑色标签显示其各自的名称、坐标和尺寸。右侧包含颜色签名设置,红色和蓝色框的色调和饱和度范围均有滑块。底部是添加颜色、冻结视频、复制和保存图像的按钮,右下角有一个关闭按钮。](/_static/img/AiVision/color_signatures.png)

例子

当开始
[Display if any objects matching the RED_BOX signature is detected.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[Change the signature to any configured Color Signature.]
从 [AIVision 1 v]获取 [RED_BOX v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
在屏幕上打印 [Color detected!]▶

颜色代码#

颜色代码是一种结构化的图案,由 2 到 4 个按特定顺序排列的颜色特征组成。这些代码使 VEX IQ AI 视觉传感器能够识别预定义的颜色图案。

颜色代码对于识别复杂物体、与游戏元素对齐或为自主导航创建独特标记非常有用。一次最多可配置 8 个颜色代码。

AI Vision Utility 界面显示一个已连接的视觉传感器正在检测两个相邻的物体,左侧为蓝色框,右侧为红色框,它们被组合成一个标记为 BlueRed 的白色边界框。检测信息包括角度 (A:11°)、坐标 (X:143, Y:103)、宽度 (W:233) 和高度 (H:108)。右侧面板列出了三个颜色特征:Red_Box、Blue_Box 和 BlueRed,并可调整色调和饱和度范围。BlueRed 特征结合了 Blue_Box 和 Red_Box。视频源下方是标有“冻结视频”、“复制图像”、“保存图像”和“关闭”的按钮。](/_static/img/AiVision/color_code.png)

例子

当开始
[Display if any objects matching the RED_BLUE code is detected.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[Change the signature to any configured Color Code.]
从 [AIVision 1 v]获取 [RED_BLUE v] 数据
如果 <[AIVIsion1 v] 对象存在?> 那么
在屏幕上打印 [Code detected!]▶

设置#

设置 AI Vision 对象项#

设置 AI Vision 对象项 堆栈块设置要使用数据集中的哪个项。

设置 AI Vision 对象项堆栈块。#
设定 [AIVision 1 v] 对象标号为 (1)

参数

描述

物品

数据集中要使用的项目数量。

例子

一系列代码块以一个“开始”代码块开始,后面跟着一个注释代码块,内容为“显示检测到的最大 AprilTag ID”。在一个无限循环中,“拍摄 AI Vision 快照”代码块捕获 AprilTag ID 的图像。一个“如果”代码块检查 AI Vision 对象是否存在。如果存在,“设置 AI Vision 对象项”代码块将对象数量赋值给一个变量,然后一个“打印”代码块在屏幕上显示检测到的对象的标签 ID。#
当开始
[Display the largest detected AprilTag ID.]
永久循环
从 [AIVision 1 v]获取 [AprilTag IDs v] 数据
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <[AIVision 1 v] 对象存在?> 那么
设定 [AIVision 1 v] 对象标号为 ([AIVision 1 v]object count)
在屏幕上打印 ([AIVision 1 v] 对象 [tagID v])▶

价值观#

AI Vision 对象存在#

AI Vision 对象存在 布尔块报告数据集中是否检测到任何对象。

  • 正确 — 数据集包含检测到的对象。

  • 错误 — 该数据集不包含任何检测到的对象。

AI Vision对象存在布尔块。#
<[AIVision 1 v] 对象存在?>

参数

描述

该块没有参数。

例子

当开始
[Drive forward if an object is detected.]
永久循环
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
驱动 [向前 v] [10] [毫米 v] ▶

AI 视觉对象计数#

AI Vision 对象计数 报告模块会将数据集中检测到的对象数量以整数形式报告。

设置 AI Vision 对象项堆栈块。#
([AIVision 1 v] 对象数目)

参数

描述

该块没有参数。

例子

当开始
[Display the total amount of cubes, rings, and balls.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
在屏幕上打印 ([AIVision 1 v] 对象数目)▶
结束
等待 [0.5] 秒

AI Vision 对象属性#

使用 get object data 块后,存储的每个对象都包含九个属性(如下所示)。

AI Vision 对象属性报告器块。#
([AIVision 1 v] 对象 [宽 v])

tagID 外,所有属性值均描述了在调用 get object data 模块时,检测到的物体在 VEX IQ AI 视觉传感器视野中的位置和大小。这些值以像素为单位,基于传感器的 320 x 240 像素分辨率。

范围

描述

财产

要使用检测到的对象的哪个属性:

宽度#

width 属性以像素为单位报告检测到的对象宽度,数值为 1 到 320 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为宽度。#
([AIVision 1 v] 对象 [宽 v])

例子

当开始
[Drive towards an object until its width is larger than 100 pixels.]
永久循环
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [宽 v]) [math_less_than v] [100]> 那么
驱动 [向前 v]
结束
否则
驱动停止

高度#

height 属性以像素为单位报告检测到的对象的高度,数值为 1 到 240 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为高度。#
([AIVision 1 v] 对象 [高 v])

例子

当开始
[Drive towards an object until its height is larger than 100 pixels.]
永久循环
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [高 v]) [math_less_than v] [100]> 那么
驱动 [向前 v]
结束
否则
驱动停止

中心X#

centerX 属性以像素为单位报告检测到的对象中心的 x 坐标,数值为 0 到 320 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 centerX。#
([AIVision 1 v] 对象 [中心X坐标 v])

例子

当开始
[Turn slowly until an object is centered in front of the robot.]
设定转向速度为 [30] [% v]
[右 v] 转
永久循环
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[140] [math_less_than v] ([AIVision 1 v] 对象 [中心X坐标 v]) [math_less_than v] [180]> 那么
驱动停止

中心Y#

centerY 属性以像素为单位报告检测到的对象中心的 y 坐标,数值为 0 到 240 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 centerY。#
([AIVision 1 v] 对象 [中心Y坐标 v])

例子

当开始
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
永久循环
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [中心Y坐标 v]) [math_less_than v] [140]> 那么
驱动 [向前 v]
结束
否则
驱动停止

角度#

angle 属性以 0 到 359 度的整数表示检测到的颜色代码或 AprilTag ID 的方向。

AI Vision 对象属性堆栈块,其参数设置为角度。#
([AIVision 1 v] 对象 [夹角 v])

例子

当开始
[Slide left or right depending on how the Color Code is rotated.]
永久循环
从 [AIVision 1 v]获取 [RED_BLUE v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[50] [math_less_than v] ([AIVision 1 v] 对象 [夹角 v]) [math_less_than v] [100]> 那么
驱动 [右 v]
否则如果 <[270] [math_less_than v] ([AIVision 1 v] 对象 [夹角 v]) [math_less_than v] [330]> 那么
驱动 [左 v]
否则
驱动停止
结束
否则
驱动停止

原点X#

originX 属性以像素为单位报告检测到的对象边界框左上角的 x 坐标,数值为 0 到 320 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 originX。#
([AIVision 1 v] 对象 [原点X v])

例子

当开始
[Display if an object is to the left or the right.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [原点X v]) [math_less_than v] [160]> 那么
在屏幕上打印 [To the left!]▶
否则
在屏幕上打印 [To the right!]▶
结束
等待 [0.5] 秒

原点Y#

originY 属性以像素为单位报告检测到的对象边界框左上角的 y 坐标,数值为 0 到 240 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 originY。#
([AIVision 1 v] 对象 [原点Y v])

例子

当开始
[Display if an object is close or far from the robot.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
从 [AIVision 1 v]获取 [AI Classifications v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [原点Y v]) [math_less_than v] [80]> 那么
在屏幕上打印 [Far!]▶
否则
在屏幕上打印 [Close!]▶
结束
等待 [0.5] 秒

标签ID#

tagID 属性以整数形式报告检测到的 AprilTag ID 的标识号。

AI Vision 对象属性堆栈块,其参数设置为 tagID。#
([AIVision 1 v] 对象 [tagID v])

例子

当开始
[Drive forward when AprilTag ID 0 is detected.]
永久循环
从 [AIVision 1 v]获取 [AprilTag IDs v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [tagID v]) [math_equal v] [0]> 那么
驱动 [向前 v]
否则
驱动停止
结束
等待 [0.5] 秒

AI视觉的对象是什么?#

AI Vision 对象是? 模块会报告一个布尔值,指示检测到的对象是否与特定分类匹配。

  • 正确——数据集中的项就是特定的对象。

  • 错误——数据集中的项不是特定对象。

AI Vision AI分类是对象布尔块。#
<[AIVision1 v] object is [BlueBall v]?>

范围

描述

目的

要将该物品与哪个AI分类进行比较。

例子

当开始
[Display if a Blue Cube is detected.]
永久循环
从 [AIVision 1 v]获取 [AI Classifications v] 数据
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[AIVision1 v] object is [BlueCube v]?> 那么
在屏幕上打印 [Cube detected!]▶
等待 [0.5] 秒

AI Vision 对象是 AprilTag ID?#

AI Vision 对象是否为 AprilTag ID? 块报告一个布尔值,指示检测到的 AprilTag ID 是否与特定 ID 匹配。

  • 没错——AprilTag ID 就是这个数字。

  • 错误——AprilTag ID 不是数字。

AI视觉检测到AprilTag ID是一个布尔块。#
<[AIVision1 v] object is AprilTag ID [1] ?>

参数

描述

AprilTag ID 号

要与检测到的 AprilTag ID 号码进行比较的数字。

例子:

当开始
[Report if AprilTag ID 3 is detected.]
永久循环
清屏
在屏幕上设定光标至 [1] 行 [1] 列
从 [AIVision 1 v]获取 [AprilTag IDs v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[AIVision1 v] object is AprilTag ID [3] ?> 那么
在屏幕上打印 [That is 3!]▶
否则
在屏幕上打印 [That isn't 3!]▶
结束
结束
等待 [0.1] 秒