AI 视觉#
介绍#
VEX AIM 编程机器人的 AI 视觉仪 能够检测并追踪物体、颜色以及 AprilTag ID。这使得机器人能够分析周围环境、跟随物体,并根据检测到的视觉数据做出反应。
AI视觉传感器的分辨率为320×240像素。原点(0, 0)位于左上角,传感器中心位于(160, 120),如下图所示:

下面是所有指令块的列表:
动作 —— 控制 AI 视觉仪的图像流并捕获物体数据。
屏幕上的 AI 视觉查看器 — 启用或禁用机器人屏幕上的实时 AI 视觉画面。
获取对象数据 — 捕获特定签名的数据,例如配置的颜色、预训练的对象或 AprilTag ID。
设置 — 调整要访问的已检测到的对象。
设置 AI 视觉对象项 — 从检测到的对象列表中选择特定对象。
值 — 返回对象是否存在、分类和属性。
has object — 检查机器人是否持有检测到的物体。
AI Vision 对象存在 — 报告是否检测到对象。
AI Vision object is — 检查检测到的对象是否与特定分类匹配。
AI Vision 对象是 AprilTag ID — 检查检测到的 AprilTag ID 是否与特定 ID 匹配。
AI 视觉对象计数 — 报告检测到的对象数量。
AI 视觉对象属性 — 报告详细信息,例如:
行动#
屏幕上的AI视觉查看器#
“屏幕上的 AI 视觉查看器”堆栈块用于启用或禁用机器人屏幕上的实时 AI 视觉画面。启用后,屏幕将显示实时传感器数据,其他图像或文本将无法显示。要显示其他内容,请使用此代码块隐藏画面。
[显示 v]AI 视觉仪在屏幕上的查看器
参数 |
描述 |
|---|---|
地位 |
控制机器人屏幕上数据流的显示:show 显示数据流,而 hide 从屏幕上移除数据流。 |
示例
当开始
[View the AI Vision Sensor's feed for five seconds.]
[显示 v]AI 视觉仪在屏幕上的查看器
等待 [5] 秒
[隐藏 v]AI 视觉仪在屏幕上的查看器
获取对象数据#
获取对象数据堆栈块将来自 AI 视觉传感器帧的数据过滤为单个签名——传感器可以识别的事物的保存描述,例如预训练对象、AprilTag ID 或配置的颜色或颜色代码。
必须先在 AI Vision Utility 中配置颜色和颜色代码,然后才能将其与此块一起使用。
数据集按宽度从大到小的顺序存储对象,索引从 0 开始。可以使用 AI Vision 对象属性 代码块访问每个对象的属性。如果未检测到匹配的对象,则报告数据集为空。
从 AI 视觉仪获取 [运动球 v] 数据
范围 |
描述 |
|---|---|
签名 |
筛选数据集,仅包含给定签名的数据。可用签名包括:
|
示例
当开始
[Move forward if a sports ball is detected.]
永久循环
从 AI 视觉仪获取 [运动球 v] 数据
如果 <AI 视觉仪对象存在?> 那么
将 [向前 v] 移至 [10] [毫米 v] ▶
色彩签名#
颜色特征码是人工智能视觉传感器可以识别的独特颜色。这些特征码使传感器能够根据物体的颜色来检测和跟踪物体。在人工智能视觉实用程序中配置颜色特征码后,传感器即可识别视野范围内具有该特定颜色的物体。
颜色签名在 获取对象数据 块中用于实时处理和检测彩色对象。

示例
当开始
[Display if any objects matching the Red_Box signature is detected.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[Change the signature to any configured Color Signature.]
从 AI 视觉仪获取 [Red_Box v] 数据
如果 <AI 视觉仪对象存在?> 那么
在屏幕上打印 [Color signature detected!]▶
颜色代码#
颜色代码是一种结构化的图案,由 2 到 4 个按特定顺序排列的颜色特征组成。在 AI 视觉实用程序中配置好颜色代码后,传感器即可识别预定义的颜色图案。
颜色代码对于识别复杂物体、与游戏元素对齐或为自主导航创建唯一标记特别有用。

示例
当开始
[Display if any objects matching the BlueRed code is detected.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[Change the signature to any configured Color Code.]
从 AI 视觉仪获取 [BlueRed v] 数据
如果 <AI 视觉仪对象存在?> 那么
在屏幕上打印 [Color code detected!]▶
设置#
设置 AI Vision 对象项#
设置 AI Vision 对象项 堆栈块设置要使用数据集中的哪个项。
设定 AI 视觉仪对象标号为 (1)
参数 |
描述 |
|---|---|
物品 |
数据集中要使用的项目数量。 |
示例
当开始
[Display the width of the smallest detected object.]
永久循环
从 AI 视觉仪获取 [所有货物 v] 数据
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <AI 视觉仪对象存在?> 那么
设定 AI 视觉仪对象标号为 (AI 视觉仪对象数目)
在屏幕上打印 (AI 视觉仪对象 [宽 v])▶
价值观#
有对象#
has object 布尔块报告机器人当前是否检测到有针对其 Kicker 的对象。
正确 — 机器人已获得该物体。
错误 — 机器人没有该物体。
<有 [运动球 v] 吗?>
范围 |
描述 |
|---|---|
目的 |
机器人踢球器要检测的物体:
|
示例
当开始
[Kick when the robot has a sports ball.]
永久循环
如果 <有 [运动球 v] 吗?> 那么
[中 v] 踢出对象
AI Vision 对象存在#
AI Vision 对象存在 布尔块报告数据集中是否检测到对象。
正确 — 数据集包含检测到的对象。
错误 — 未检测到任何物体。
<AI 视觉仪对象存在?>
参数 |
描述 |
|---|---|
该块没有参数。 |
示例
当开始
[Move forward if a sports ball is detected.]
永久循环
从 AI 视觉仪获取 [运动球 v] 数据
如果 <AI 视觉仪对象存在?> 那么
将 [向前 v] 移至 [10] [毫米 v] ▶
AI视觉对象是#
AI Vision 对象是布尔块,用于报告检测到的对象是否与特定分类匹配。
正确 — 数据集中的项是特定对象。
错误 — 数据集中的项不是特定对象。
<AI 视觉仪对象为 [运动球 v]?>
范围 |
描述 |
|---|---|
目的 |
应该将该物品与哪个物体进行比较:
|
示例
当开始
[Display if a sports ball is detected.]
永久循环
从 AI 视觉仪获取 [所有货物 v] 数据
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <AI 视觉仪对象存在?> 那么
如果 <AI 视觉仪对象为 [运动球 v]?> 那么
在屏幕上打印 [Sports ball detected!]▶
等待 [0.5] 秒
AI Vision 对象是 AprilTag ID#
AI Vision 对象是 AprilTag ID 布尔块报告检测到的 AprilTag ID 是否与特定 ID 匹配。
正确 — AprilTag ID 就是这个数字。
错误 — AprilTag ID 不是数字。
<AI Vision object is AprilTag ID [1] ?>
参数 |
描述 |
|---|---|
AprilTag ID |
要与检测到的 AprilTag ID 号码进行比较的数字。 |
AI 视觉对象计数#
AI Vision 对象计数 报告模块会将数据集中检测到的对象数量以整数形式报告。
AI 视觉仪对象数目
参数 |
描述 |
|---|---|
该块没有参数。 |
示例
当开始
[Display the amount of sports balls and barrels.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
从 AI 视觉仪获取 [所有货物 v] 数据
如果 <AI 视觉仪对象存在?> 那么
在屏幕上打印 (AI 视觉仪对象数目)▶
结束
等待 [0.5] 秒
AI Vision 对象属性#
使用 get object data 块后,存储的每个对象都包含九个属性(如下所示)。
AI 视觉仪对象 [宽 v]
除 tagID 外,所有属性值均描述在调用 get object data 模块时检测到的对象的位置、大小、方向或方位。这些值以像素或度为单位进行测量,基于传感器的 320 x 240 像素分辨率。

范围 |
描述 |
|---|---|
财产 |
要使用检测到的对象的哪个属性: |
宽度#
width 属性以像素为单位报告检测到的对象宽度,数值为 1 到 320 之间的整数。
**注:**像素值是相对于传感器坐标系而言的。请参阅引言中的图表以获取参考。
AI 视觉仪对象 [宽 v]

示例
当开始
[Move towards a blue barrel until its width is larger than 100 pixels.]
永久循环
从 AI 视觉仪获取 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [宽 v]) [math_less_than v] [100]> 那么
移动 [向前 v]
结束
否则
停止移动
高度#
height 属性以像素为单位报告检测到的对象的高度,数值为 1 到 240 之间的整数。
**注:**像素值是相对于传感器坐标系而言的。请参阅引言中的图表以获取参考。
AI 视觉仪对象 [高 v]

示例
当开始
[Move towards a blue barrel until its height is larger than 100 pixels.]
永久循环
从 AI 视觉仪获取 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [高 v]) [math_less_than v] [100]> 那么
移动 [向前 v]
结束
否则
停止移动
中心X#
centerX 属性以像素为单位报告检测到的对象中心的 x 坐标,数值为 0 到 320 之间的整数。
**注:**像素值是相对于传感器坐标系而言的。请参阅引言中的图表以获取参考。
AI 视觉仪对象 [中心X坐标 v]

示例
当开始
[Turn slowly until a blue barrel is centered in front of the robot.]
设定转向速度为 [30]%
[右 v] 转
永久循环
从 AI 视觉仪获取 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <[140] [math_less_than v] (AI 视觉仪对象 [中心X坐标 v]) [math_less_than v] [180]> 那么
停止移动
中心Y#
centerY 属性以像素为单位报告检测到的对象中心的 y 坐标,数值为 0 到 240 之间的整数。
**注:**像素值是相对于传感器坐标系而言的。请参阅引言中的图表以获取参考。
AI 视觉仪对象 [中心Y坐标 v]

示例
当开始
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
永久循环
从 AI 视觉仪获取 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [中心Y坐标 v]) [math_less_than v] [140]> 那么
移动 [向前 v]
结束
否则
停止移动
原点X#
originX 属性以像素为单位报告检测到的对象边界框左上角的 x 坐标,数值为 0 到 320 之间的整数。
**注:**像素值是相对于传感器坐标系而言的。请参阅引言中的图表以获取参考。
AI 视觉仪对象 [原点X v]

示例
当开始
[Display if an orange barrel is to the left or the right.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
从 AI 视觉仪获取 [橙色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [原点X v]) [math_less_than v] [160]> 那么
在屏幕上打印 [To the left!]▶
否则
在屏幕上打印 [To the right!]▶
结束
等待 [0.5] 秒
原点#
originY 属性以像素为单位报告检测到的对象边界框左上角的 y 坐标,数值为 0 到 240 之间的整数。
**注:**像素值是相对于传感器坐标系而言的。请参阅引言中的图表以获取参考。
AI 视觉仪对象 [原点Y v]

示例
当开始
[Display if an orange barrel is close or far from the robot.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
从 AI 视觉仪获取 [橙色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [原点Y v]) [math_less_than v] [80]> 那么
在屏幕上打印 [Far!]▶
否则
在屏幕上打印 [Close!]▶
结束
等待 [0.5] 秒
旋转#
rotation 属性以 0 到 359 度的整数表示检测到的 AprilTag ID 或颜色代码的方向。
AI 视觉仪对象 [旋转 v]

示例
当开始
[Slide left or right depending on how the Color Code is rotated.]
永久循环
从 AI 视觉仪获取 [Red_Blue v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <[50] [math_less_than v] (AI 视觉仪对象 [旋转 v]) [math_less_than v] [100]> 那么
移动 [右 v]
否则如果 <[270] [math_less_than v] (AI 视觉仪对象 [旋转 v]) [math_less_than v] [330]> 那么
移动 [左 v]
否则
停止移动
结束
否则
停止移动
轴承#
方位角属性以度为单位报告物体位于AI视觉传感器视野中心左侧或右侧的距离。值为0表示物体位于中心,正值表示物体位于右侧,负值表示物体位于左侧。
当开始
[Keep the blue barrel directly in front of the robot.]
设定转向速度为 [40]%
永久循环
从 AI 视觉仪获取 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [方位 v]) [math_greater_than v] [5]> 那么
[右 v] 转
否则如果 <(AI 视觉仪对象 [方位 v]) [math_less_than v] [-5]> 那么
[左 v] 转
否则
停止移动
标签ID#
tagID 属性以整数形式报告检测到的 AprilTag ID 的标识号。
AI 视觉仪对象 [tagID v]
示例
当开始
[Move forward when AprilTag ID 0 is detected.]
永久循环
从 AI 视觉仪获取 [AprilTag ID 0 v] 数据
如果 <AI 视觉仪对象存在?> 那么
移动 [向前 v]
结束
停止移动