人工智能视觉传感器#
介绍#
VEX IQ AI视觉传感器能够检测和追踪物体、颜色以及AprilTag ID。这使得机器人能够分析周围环境、追踪物体并根据检测到的视觉数据做出反应。
这些 AI 视觉示例专为配备 VEX IQ AI 视觉传感器的 Basebot 设计。在这些示例中,传感器配置名称为 AIVision1,该名称会显示在代码块中。
以下是所有模块的列表:
操作 — 从 VEX IQ AI 视觉传感器采集所选签名的数据。
获取对象数据 — 捕获特定签名的数据,例如配置的颜色、预训练的对象或 AprilTag ID。
设置 — 选择要与之交互的对象。
设置 AI 视觉对象项 — 从检测到的对象列表中选择特定对象。
价值——访问和使用已捕获的数据。
AI Vision 对象存在 — 报告是否检测到对象。
AI 视觉对象计数 — 报告检测到的对象数量。
AI 视觉对象属性 — 报告详细信息,例如:
AI Vision 对象是? — 检查检测到的对象是否与特定分类匹配。
AI Vision 对象是 AprilTag ID 吗? — 检查检测到的 AprilTag ID 是否与特定 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 视觉实用程序中启用其检测功能。
例子
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 对象项 堆栈块设置要使用数据集中的哪个项。
set [AIVision1 v] object item to (1)
参数 |
描述 |
|---|---|
物品 |
数据集中要使用的项目数量。 |
例子
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 对象存在 布尔块报告数据集中是否检测到任何对象。
正确 — 数据集包含检测到的对象。
错误 — 该数据集不包含任何检测到的对象。
<[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 对象计数 报告模块会将数据集中检测到的对象数量以整数形式报告。
([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 块后,存储的每个对象都包含九个属性(如下所示)。
([AIVision1 v] object [width v])
除 tagID 外,所有属性值均描述了在调用 get object data 模块时,检测到的物体在 VEX IQ AI 视觉传感器视野中的位置和大小。这些值以像素为单位,基于传感器的 320 x 240 像素分辨率。
范围 |
描述 |
|---|---|
财产 |
要使用检测到的对象的哪个属性: |
宽度#
width 属性以像素为单位报告检测到的对象宽度,数值为 1 到 320 之间的整数。
([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 之间的整数。
([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 之间的整数。
([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 之间的整数。
([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 的方向。
([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 之间的整数。
([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 之间的整数。
([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 的标识号。
([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 对象是? 模块会报告一个布尔值,指示检测到的对象是否与特定分类匹配。
正确——数据集中的项就是特定的对象。
错误——数据集中的项不是特定对象。
<[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 不是数字。
<[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