人工智能视觉#

介绍#

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

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

  • AI Vision viewer – Enables or disables the live AI Vision feed on the robot’s screen.

  • get object data – Captures data for a specific object type, such as colors, pre-trained objects, or AprilTags.

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

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

行动#

AI 视觉查看器#

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

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

参数

描述

地位

Controls the display of the data feed on the robot’s screen:

  • show - Displays the data feed.
  • hide - Removes the data feed from the screen.

例子

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

获取对象数据#

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

必须先在 AI Vision Utility 中配置颜色和颜色代码,然后才能使用此方法。

The dataset stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using AI Vision object property block. An empty dataset is returned if no matching objects are detected.

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

范围

描述

签名

Filters the dataset to only include data of the given signature. Available signatures are:

  • sports ball
  • orange barrel
  • blue barrel
  • AIM robot
  • AprilTag ID 0
  • AprilTag ID 1
  • AprilTag ID 2
  • AprilTag ID 3
  • AprilTag ID 4
  • all cargo – Sports balls and all barrels
  • NAME – A color or color code where NAME is the name configured in the AI Vision Utility

例子

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

色彩签名#

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

Color Signatures are used in the Get object data block to process and detect colored objects in real-time.

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 处检测到物体。

  • True – The robot has the object.

  • False – The robot does not have the object.

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

范围

描述

目的

The object to detect against the robot’s kicker:

  • sports ball
  • any barrel
  • orange barrel
  • blue barrel

例子

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

AI Vision 对象存在吗?#

AI Vision 对象存在返回一个布尔值,指示是否在数据集中检测到任何对象。

  • True – The dataset includes a detected object.

  • False – The dataset does not include any detected objects.

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

参数

描述

该块没有参数。

例子

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

AI视觉的对象是什么?#

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

  • True – The item in the dataset is the specific object.

  • False – The item in the dataset is not the specific object.

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

范围

描述

目的

Which object to compare the item to:

  • sports ball
  • orange barrel
  • blue barrel
  • AIM robot

例子

一组块,以“启动时”块开头,后跟注释块,内容为“如果检测到运动球则显示”。在一个永久循环中,一个“拍摄 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 匹配。

  • True – The AprilTag ID is the number.

  • False – The AprilTag ID is not the number.

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 对象属性#

There are nine properties that are included with each object (shown below) stored after the Get object data block is used.

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

某些属性值基于使用获取对象数据块时检测到的物体在 AI 视觉传感器视图中的位置。AI 视觉传感器的分辨率为 240 x 320 像素。

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

范围

描述

财产

Which property of the detected object to use:

宽度#

width returns the width of the detected object in pixels as an integer from 1 to 320.

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

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

例子

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

高度#

height returns the height of the detected object in pixels as an integer from 1 to 240.

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

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

例子

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

中心X#

centerX returns the x-coordinate of the center of the detected object in pixels as an integer from 0 to 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 returns the y-coordinate of the center of the detected object in pixels as an integer from 0 to 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 returns the x-coordinate of the top-left corner of the detected object’s bounding box in pixels as an integer from 0 to 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 returns the y-coordinate of the top-left corner of the detected object’s bounding box in pixels as an integer from 0 to 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] 秒

旋转#

rotation returns the orientation of the detected AprilTag or Color Code as an integer in degrees from 0 to 359.

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]
否则
停止移动
结束
否则
停止移动

轴承#

bearing returns how far an object is to the left or right of the center of the AI Vision Sensor’s view as a degree. A value of 0 means it’s centered, positive values mean the object is to the right, and negative values mean the object is to the left.

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

标签ID#

tagID returns the identification number of the detected AprilTag as an integer.

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

例子

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