人工智能视觉传感器#

介绍#

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 对象属性 代码块访问每个对象的属性。如果未检测到匹配的对象,则报告数据集为空。

获取对象数据堆栈块。#
get [SELECT_A_SIG v] data from [AIVision1 v]

范围

描述

签名

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

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

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

例子

when started
[Drive forward if an AprilTag ID is detected.]
forever
get [AprilTag IDs v] data from [AIVision1 v]
if <[AIVIsion1 v] object exists?> then
drive [forward v] for [10] [mm v] ▶

人工智能分类#

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

教室物品

  • 蓝球

  • 绿球

  • 红球

  • 蓝环

  • 绿环

  • 红环

  • 蓝立方

  • 绿立方

  • 红立方

VIQRC 混搭组合

  • 光束

  • 红针

  • 蓝针

  • 橙针

色彩签名#

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

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

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

例子

when started
[Display if any objects matching the RED_BOX signature is detected.]
forever
set cursor to row [1] column [1] on screen
clear row [1] on screen
[Change the signature to any configured Color Signature.]
get [RED_BOX v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
print [Color detected!] on screen ▶

颜色代码#

颜色代码是一种结构化的图案,由 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)

例子

when started
[Display if any objects matching the RED_BLUE code is detected.]
forever
set cursor to row [1] column [1] on screen
clear row [1] on screen
[Change the signature to any configured Color Code.]
get [RED_BLUE v] data from [AIVision1 v]
if <[AIVIsion1 v] object exists?> then
print [Code detected!] on screen ▶

设置#

设置 AI Vision 对象项#

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

设置 AI Vision 对象项堆栈块。#
set [AIVision1 v] object item to (1)

参数

描述

物品

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

例子

一系列代码块以一个“开始”代码块开始,后面跟着一个注释代码块,内容为“显示检测到的最大 AprilTag ID”。在一个无限循环中,“拍摄 AI Vision 快照”代码块捕获 AprilTag ID 的图像。一个“如果”代码块检查 AI Vision 对象是否存在。如果存在,“设置 AI Vision 对象项”代码块将对象数量赋值给一个变量,然后一个“打印”代码块在屏幕上显示检测到的对象的标签 ID。#
when started
[Display the largest detected AprilTag ID.]
forever
get [AprilTag IDs v] data from [AIVision1 v]
clear row [1] on screen
set cursor to row [1] column [1] on screen
if <[AIVision1 v] object exists?> then
set [AIVision1 v] object item to ([AIVision1 v]object count)
print ([AIVision1 v] object [tagID v]) on screen ▶

价值观#

AI Vision 对象存在#

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

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

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

AI Vision对象存在布尔块。#
<[AIVision1 v] object exists?>

参数

描述

该块没有参数。

例子

when started
[Drive forward if an object is detected.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
drive [forward v] for [10] [mm v] ▶

AI 视觉对象计数#

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

设置 AI Vision 对象项堆栈块。#
([AIVision1 v] object count)

参数

描述

该块没有参数。

例子

when started
[Display the total amount of cubes, rings, and balls.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
print ([AIVision1 v] object count) on screen ▶
结束
wait [0.5] seconds

AI Vision 对象属性#

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

AI Vision 对象属性报告器块。#
([AIVision1 v] object [width v])

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

范围

描述

财产

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

宽度#

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

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

例子

when started
[Drive towards an object until its width is larger than 100 pixels.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [width v]) [math_less_than v] [100]> then
drive [forward v]
结束
else
stop driving

高度#

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

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

例子

when started
[Drive towards an object until its height is larger than 100 pixels.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [height v]) [math_less_than v] [100]> then
drive [forward v]
结束
else
stop driving

中心X#

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

AI Vision 对象属性堆栈块,其参数设置为 centerX。#
([AIVision1 v] object [centerX v])

例子

when started
[Turn slowly until an object is centered in front of the robot.]
set turn velocity to [30] [% v]
turn [right v]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <[140] [math_less_than v] ([AIVision1 v] object [centerX v]) [math_less_than v] [180]> then
stop driving

中心Y#

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

AI Vision 对象属性堆栈块,其参数设置为 centerY。#
([AIVision1 v] object [centerY v])

例子

when started
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [centerY v]) [math_less_than v] [140]> then
drive [forward v]
结束
else
stop driving

角度#

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

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

例子

when started
[Slide left or right depending on how the Color Code is rotated.]
forever
get [RED_BLUE v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <[50] [math_less_than v] ([AIVision1 v] object [angle v]) [math_less_than v] [100]> then
drive [right v]
else if <[270] [math_less_than v] ([AIVision1 v] object [angle v]) [math_less_than v] [330]> then
drive [left v]
else
stop driving
结束
else
stop driving

原点X#

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

AI Vision 对象属性堆栈块,其参数设置为 originX。#
([AIVision1 v] object [originX v])

例子

when started
[Display if an object is to the left or the right.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [originX v]) [math_less_than v] [160]> then
print [To the left!] on screen ▶
else
print [To the right!] on screen ▶
结束
wait [0.5] seconds

原点Y#

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

AI Vision 对象属性堆栈块,其参数设置为 originY。#
([AIVision1 v] object [originY v])

例子

when started
[Display if an object is close or far from the robot.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [originY v]) [math_less_than v] [80]> then
print [Far!] on screen ▶
else
print [Close!] on screen ▶
结束
wait [0.5] seconds

标签ID#

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

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

例子

when started
[Drive forward when AprilTag ID 0 is detected.]
forever
get [AprilTag IDs v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [tagID v]) [math_equal v] [0]> then
drive [forward v]
else
stop driving
结束
wait [0.5] seconds

AI视觉的对象是什么?#

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

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

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

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

范围

描述

目的

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

例子

when started
[Display if a Blue Cube is detected.]
forever
get [AI Classifications v] data from [AIVision1 v]
clear row [1] on screen
set cursor to row [1] column [1] on screen
if <[AIVision1 v] object exists?> then
if <[AIVision1 v] object is [BlueCube v]?> then
print [Cube detected!] on screen ▶
wait [0.5] seconds

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 号码进行比较的数字。

例子:

when started
[Report if AprilTag ID 3 is detected.]
forever
clear screen
set cursor to row [1] column [1] on screen
get [AprilTag IDs v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <[AIVision1 v] object is AprilTag ID [3] ?> then
print [That is 3!] on screen ▶
else
print [That isn't 3!] on screen ▶
结束
结束
wait [0.1] seconds