人工智能视觉#

介绍#

VEX AIM 编程机器人的 AI 视觉传感器可以检测并追踪物体、颜色和 AprilTag。这使得机器人能够分析周围环境、跟踪物体并根据检测到的视觉数据做出反应。以下是所有可用模块的列表:

操作——控制 AI Vision 馈送并捕获对象数据。

  • AI Vision 查看器 – 在机器人屏幕上启用或禁用实时 AI Vision 馈送。

  • 获取对象数据 – 捕获特定对象类型的数据,例如颜色、预训练对象或 AprilTags。

设置——调整访问哪些检测到的对象。

值——返回对象的存在、分类和属性。

行动#

AI 视觉查看器#

AI Vision 查看器 模块用于在机器人屏幕上启用或禁用实时 AI Vision 图像。启用后,屏幕将显示实时传感器数据,并阻止显示其他图像或文本。如需显示其他内容,请使用此模块隐藏图像。

显示或隐藏 AI Vision 仪表板堆栈块。#
屏幕上的AI视觉 [显示 v] 查看器

参数

描述

地位

控制机器人屏幕上数据馈送的显示:

  • 显示 - 显示数据馈送。
  • 隐藏 - 从屏幕上删除数据馈送。

例子

一组块,以“启动时”块开头,后跟注释块,内容为“查看 AI 视觉传感器的 feed 五秒钟”。“显示 AI 视觉仪表板”块显示 feed,然后“等待”块暂停执行五秒钟。等待结束后,“隐藏 AI 视觉仪表板”块将从视图中移除 feed。#
当开始 :: hat events
[查看 AI 视觉传感器的反馈五秒钟.]
屏幕上的AI视觉 [显示 v] 查看器
等待 [5] 秒
屏幕上的AI视觉 [隐藏 v] 查看器

获取对象数据#

获取对象数据 模块会过滤来自 AI 视觉传感器框架的数据。AI 视觉传感器可以检测包含预训练对象、AprilTag 或已配置颜色和颜色代码的签名。

Colors and color codes must be configured first in the AI Vision Utility before they can be used with this block.

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

获取对象数据堆栈块。#
获得 AI 视觉仪 [运动球 v] 数据

范围

描述

签名

过滤数据集以仅包含指定签名的数据。可用的签名包括:

  • 运动球
  • 橙色桶
  • 蓝色桶
  • AIM 机器人
  • AprilTag ID 0
  • AprilTag ID 1
  • AprilTag ID 2
  • AprilTag ID 3
  • AprilTag ID 4
  • 所有货物 – 运动球和所有桶
  • NAME – 颜色或颜色代码,其中 NAME 是在 AI Vision Utility 中配置的名称

例子

一组以“启动时”块开头的块,后面跟着一个注释块,注释块内容为“如果检测到运动球,则向前移动”。“拍摄 AI 视觉快照”块用于捕捉运动球的图像。然后,“如果”块检查是否存在 AI 视觉对象。如果存在,则“向前移动”块将机器人向前移动 10 毫米。#
当开始 :: hat events
[如果检测到运动球,则向前移动.]
永久循环
获得 AI 视觉仪 [运动球 v] 数据
如果 <AI 视觉仪对象存在?> 那么
移动 [正 v] [10] [mm v] ▶

色彩签名#

颜色特征是 AI 视觉传感器能够识别的独特颜色。这些特征使传感器能够根据物体的颜色进行检测和跟踪。配置颜色特征后,传感器便可以识别视野范围内具有该特定颜色的物体。

颜色特征用于 获取对象数据 中,以实时处理和检测彩色对象。

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

例子

当开始 :: hat events
[检测到与红框特征匹配的对象显示.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[将签名更改为任何已配置的彩色签名.]
获得 AI 视觉仪 [运动球 v] 数据
如果 <AI 视觉仪对象存在?> 那么
打印 [检测到颜色特征!] 在屏幕 ▶

颜色代码#

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

颜色代码对于识别复杂物体、与游戏元素对齐或为自主导航创建唯一标记特别有用。

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

例子

当开始 :: hat events
[检测到与蓝红代码匹配的物体的显示.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[将签名更改为任何配置的颜色代码.]
获得 AI 视觉仪 [BlueRed v] 数据
如果 <AI 视觉仪对象存在?> 那么
打印 [检测到颜色代码!] 在屏幕 ▶

设置#

设置 AI Vision 对象项#

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

设置 AI Vision 对象项堆栈块。#
设定 AI 视觉仪对象标号为 (1)

参数

描述

物品

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

例子

一组块,以“何时启动”块开头,后跟注释块,内容为“显示检测到的最大 AprilTag ID”。在一个永久循环中,“拍摄 AI Vision 快照”块会捕获 AprilTag 的图像。“如果”块会检查 AI Vision 对象是否存在。如果为真,则“设置 AI Vision 对象项”块会将对象计数赋给变量,最后,“打印”块会在屏幕上显示检测到的对象的标签 ID。#
当开始 :: hat events
[显示检测到的最大 AprilTag ID.]
永久循环
获得 AI 视觉仪 [四月标签 v] 数据
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <AI 视觉仪对象存在?> 那么
设定 AI 视觉仪对象标号为 (AI 视觉仪对象数目)
打印 (AI 视觉仪对象 [标签ID v]) 在屏幕 ▶

价值观#

有对象吗?#

has object 块返回一个布尔值,指示机器人当前是否在其 Kicker 处检测到物体。

  • 正确 – 机器人拥有该物体。

  • 错误 – 机器人没有该物体。

显示或隐藏 AI Vision 仪表板堆栈块。#
<[运动球 v] 存在?>

范围

描述

目的

检测机器人踢球者所面对的物体:

  • 运动球
  • 任意桶
  • 橙色桶
  • 蓝色桶

例子

一组以“启动时”块开头的块,后面跟着一个注释块,注释块内容为“当机器人有球时踢”。在一个永久循环内,一个“如果”块检查机器人是否有运动球。如果为真,则以中等强度执行“踢物体”块。#
当开始 :: hat events
[当机器人有运动球时踢球.]
永久循环
如果 <[运动球 v] 存在?> 那么
[中 v] 踢出对象

AI Vision 对象存在吗?#

The AI Vision object exists block returns a Boolean indicating whether any object is detected in the dataset.

  • 真 – 数据集包含检测到的对象。

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

AI Vision对象存在布尔块。#
<AI 视觉仪对象存在?>

参数

描述

该块没有参数。

例子

一组块,以“启动时”块开头,后跟注释块“检测到球时向前移动”。“拍摄 AI 视觉快照”块用于捕捉运动球的图像。“如果”块用于检查 AI 视觉对象是否存在。如果存在,则“向前移动”块将机器人向前移动 10 毫米。#
当开始 :: hat events
[如果检测到运动球,则向前移动.]
永久循环
获得 AI 视觉仪 [运动球 v] 数据
如果 <AI 视觉仪对象存在?> 那么
移动 [正 v] [10] [mm v] ▶

AI视觉的对象是什么?#

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

  • 真 – 数据集中的项目是特定对象。

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

AI Vision AI分类是对象布尔块。#
<AI 视觉仪对象为 [运动球 v] ?>

范围

描述

目的

将物品与哪个物体进行比较:

  • 运动球
  • 橙色桶
  • 蓝色桶
  • AIM 机器人

例子

一组块,以“启动时”块开头,后跟注释块,内容为“如果检测到运动球则显示”。在一个永久循环中,一个“拍摄 AI 视觉快照”块使用 AI 分类捕获图像。屏幕被清空,光标被设置到第 1 行第 1 列。一个“如果”块检查 AI 视觉对象是否存在,如果存在,则另一个“如果”块验证分类是否为运动球。如果存在,则打印块在屏幕上显示“检测到球!”,然后是一个等待块,暂停 0.5 秒,然后重复该过程。#
当开始 :: hat events
[如果检测到运动球则显示.]
永久循环
获得 AI 视觉仪 [所有货物 v] 数据
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <AI 视觉仪对象存在?> 那么
如果 <AI 视觉仪对象为 [运动球 v] ?> 那么
打印 [检测到运动球!] 在屏幕 ▶
等待 [0.5] 秒

AI Vision 对象是 AprilTag ID?#

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

  • 正确 – AprilTag ID 是数字。

  • 错误 – AprilTag ID 不是数字。

AI Vision 检测到 AprilTag 是布尔块。#
<AI 视觉仪检测到 AprilTag [1] ?>

参数

描述

四月标签号码

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

当开始 :: hat events
[如果检测到 AprilTag ID 3 则报告.]
永久循环
清屏
在屏幕上设定光标至 [1] 行 [1] 列
获得 AI 视觉仪 [四月标签 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <AI 视觉仪检测到 AprilTag [3] ?> 那么
打印 [即 3!] 在屏幕 ▶
否则
打印 [那不是 3!] 在屏幕 ▶
结束
结束
等待 [0.1] 秒

AI 视觉对象计数#

AI Vision 对象计数 块以整数形式返回数据集中检测到的对象的数量。

设置 AI Vision 对象项堆栈块。#
AI 视觉仪对象数目

参数

描述

该块没有参数。

例子

当开始 :: hat events
[显示运动球和桶的数量.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
获得 AI 视觉仪 [所有货物 v] 数据
如果 <AI 视觉仪对象存在?> 那么
打印 [AI 视觉仪对象数目] 在屏幕 ▶
结束
等待 [0.5] 秒

AI Vision 对象属性#

使用 获取对象数据 后存储的每个对象(如下所示)包含九个属性。

AI Vision 对象属性报告器块。#
AI 视觉仪对象 [宽 v]

Some property values are based off of the detected object’s position in the AI Vision Sensor’s view at the time that the Get object data block was used. The AI Vision Sensor has a resolution of 320 by 240 pixels.

带有橙色条纹的蓝色桶位于框架的中心,周围环绕着黑色边界框。

范围

描述

财产

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

宽度#

width 以像素为单位返回检测到的对象的宽度,范围是 1 到 320 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为宽度。#
AI 视觉仪对象 [宽 v]

带有橙色条纹的蓝色桶位于框架中央,周围环绕着黑色边界框。两条垂直的红色虚线从框架顶部延伸至边界框的左右边缘。两条线之间的双向黑色箭头表示宽度测量值。

例子

当开始 :: hat events
[向蓝色桶移动,直到其宽度大于 100 像素.]
永久循环
获得 AI 视觉仪 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [宽 v]) [math_less_than v] [100]> 那么
移动 [正 v]
结束
否则
停止移动

高度#

高度以像素为单位返回检测到的物体的高度,范围是 1 到 240 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为高度。#
AI 视觉仪对象 [高 v]

带有橙色条纹的蓝色桶位于框架中央,周围环绕着黑色边界框。两条水平红色虚线从框架左侧延伸至边界框的顶部和底部边缘。两条线之间的双向黑色箭头表示高度测量值。

例子

当开始 :: hat events
[向蓝色桶移动,直到其高度大于 100 像素.]
永久循环
获得 AI 视觉仪 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [高 v]) [math_less_than v] [100]> 那么
移动 [正 v]
结束
否则
停止移动

中心X#

centerX 以像素为单位返回检测到的物体中心的 x 坐标,为 0 到 320 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 centerX。#
AI 视觉仪对象 [中心X坐标 v]

带有橙色条纹的蓝色桶位于框架中央,周围环绕着黑色边界框。一条垂直的红色虚线从框架顶部延伸至边界框的中心,指示中心的 X 坐标。

例子

当开始 :: hat events
[慢慢转动,直到蓝色桶位于机器人前方中央.]
设定转向速度为 [30] %
[右 v] 转
永久循环
获得 AI 视觉仪 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <[140] [math_less_than v] (AI 视觉仪对象 [中心X坐标 v]) [math_less_than v] [180]> 那么
停止移动

中心Y#

centerY 以像素为单位返回检测到的物体中心的 y 坐标,为 0 到 240 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 centerY。#
AI 视觉仪对象 [中心Y坐标 v]

带有橙色条纹的蓝色桶位于框架中央,周围环绕着黑色边界框。一条水平红色虚线从框架左侧延伸至边界框中心,表示中心的 Y 坐标。

例子

当开始 :: hat events
[向蓝色桶移动,直到其中心 y 坐标超过 140.]
永久循环
获得 AI 视觉仪 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [中心Y坐标 v]) [math_less_than v] [140]> 那么
移动 [正 v]
结束
否则
停止移动

原点X#

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

AI Vision 对象属性堆栈块,其参数设置为 originX。#
AI 视觉仪对象 [原点X v]

带有橙色条纹的蓝色桶位于框架中央,周围环绕着黑色边界框。一条垂直的红色虚线从框架顶部延伸到边界框的左边缘,表示边界框原点的 X 坐标。

例子

当开始 :: hat events
[显示橙色桶是在左边还是右边.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
获得 AI 视觉仪 [橙色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [原点X v]) [math_less_than v] [160]> 那么
打印 [向左转!] 在屏幕 ▶
否则
打印 [向右!] 在屏幕 ▶
结束
等待 [0.5] 秒

原点#

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

AI Vision 对象属性堆栈块,其参数设置为 originY。#
AI 视觉仪对象 [原点Y v]

带有橙色条纹的蓝色桶位于框架中央,周围环绕着黑色边界框。一条水平红色虚线从框架左侧延伸至边界框顶部边缘,表示边界框原点的 Y 坐标。

例子

当开始 :: hat events
[显示橙色桶距离机器人是否较近或较远.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
获得 AI 视觉仪 [橙色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [原点Y v]) [math_less_than v] [80]> 那么
打印 [远的!] 在屏幕 ▶
否则
打印 [关闭!] 在屏幕 ▶
结束
等待 [0.5] 秒

旋转#

旋转以 0 至 359 度之间的整数形式返回检测到的 AprilTag 或颜色代码的方向。

AI Vision 对象属性堆栈块,其参数设置为旋转。#
AI 视觉仪对象 [旋转 v]

相机界面显示一个垂直堆叠的物体,上半部分为蓝色,下半部分为红色,位于画面中央。物体下方的标签为“Red_Blue A:270° CX:185 CY:81 W:93 H:150”,指示物体的名称、旋转角度、中心 X 和 Y 坐标、宽度和高度。网格线和数字轴标记图像尺寸,X 轴范围为 0 到 320,Y 轴范围为 0 到 240。

例子

当开始 :: hat events
[根据颜色代码的旋转方式向左或向右滑动.]
永久循环
获得 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 表示位于中心,正值表示位于右侧,负值表示位于左侧。

当开始 :: hat events
[将蓝色桶放在机器人正前方.]
设定转向速度为 [40] %
永久循环
获得 AI 视觉仪 [蓝色桶 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [方位 v]) [math_greater_than v] [5]> 那么
[右 v] 转
否则如果 <(AI 视觉仪对象 [方位 v]) [math_less_than v] [-5]> 那么
[左 v] 转
否则
停止移动

标签ID#

tagID 以整数形式返回检测到的 AprilTag 的识别号。

AI Vision 对象属性堆栈块,其参数设置为 tagID。#
AI 视觉仪对象 [标签ID v]

例子

当开始 :: hat events
[当检测到 AprilTag ID 0 时向前移动.]
永久循环
获得 AI 视觉仪 [四月标签 v] 数据
如果 <AI 视觉仪对象存在?> 那么
如果 <(AI 视觉仪对象 [标签ID v]) [math_equal v] [0]> 那么
移动 [正 v]
结束
停止移动