AI视觉传感器#

介绍#

人工智能视觉传感器能够检测和追踪物体、颜色和AprilTag标签。这使得机器人能够分析周围环境、追踪物体,并根据检测到的视觉数据做出反应。

以下是可用模块列表:

操作 – 从 AI 视觉传感器采集所选签名的数据。

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

设置 – 选择要与之交互的对象。

价值——访问和使用已采集的数据。

行动#

拍照#

“拍摄快照”模块会过滤来自 AI 视觉传感器帧的数据。AI 视觉传感器可以检测包含预训练对象、AprilTags 或已配置颜色和颜色代码的特征。

必须先在 AI Vision Utility 中配置颜色和颜色代码,然后才能将此模块使用它们。

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

“拍摄快照”堆栈块。#
[AIVision 1 v] 拍照 [SELECT_A_SIG v]

范围

描述

设备

在“设备”窗口中配置要使用的AI视觉传感器。

签名

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

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

例子

当开始
[Drive forward if an AprilTag is detected.]
永久循环
[AIVision 1 v] 拍照 [AprilTags v]
如果 <[AIVIsion1 v] 对象存在?> 那么
驱动 [向前 v] [10] [毫米 v] ▶

人工智能分类#

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

教室物品

  • 蓝球

  • 绿球

  • 红球

  • 蓝环

  • 绿环

  • 红环

  • 蓝立方

  • 绿立方

  • 红立方

V5RC 推力反馈

  • BlueBlock

  • 红块

V5RC 高风险赛事

  • 移动目标

  • 红环

  • 蓝环

颜色特征#

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

颜色特征码用于拍摄快照模块中,以实时处理和检测彩色物体。一次最多可以配置7个颜色特征码。

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

例子

当开始
[Display if any objects matching the RED_BOX signature is detected.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[Change the signature to any configured Color Signature.]
[AIVision 1 v] 拍照 [RED_BOX v]
如果 <[AIVision 1 v] 对象存在?> 那么
在屏幕上打印 [Color detected!]▶

颜色代码#

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

颜色代码对于识别复杂物体、与游戏元素对齐或创建用于自主导航的独特标记尤其有用。一次最多可配置 8 个颜色代码。

AI视觉实用程序界面显示,连接的视觉传感器检测到两个相邻物体,左侧为蓝色方框,右侧为红色方框,它们被组合在一个标记为“蓝红”的白色边界框中。检测信息包括角度(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的按钮。

例子

当开始
[Display if any objects matching the RED_BLUE code is detected.]
永久循环
在屏幕上设定光标至 [1] 行 [1] 列
清除屏幕第 [1] 行
[Change the signature to any configured Color Code.]
[AIVision 1 v] 拍照 [RED_BLUE v]
如果 <[AIVision 1 v] 对象存在?> 那么
在屏幕上打印 [Code detected!]▶

设置#

设置 AI 视觉对象项#

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

设置 AI Vision 对象项堆叠块。#
设定 [AIVision 1 v] 对象标号为 (1)

参数

描述

设备

在“设备”窗口中配置要使用的AI视觉传感器。

物品

要使用的数据集中的项目编号。

例子

一系列代码块以一个“开始”代码块开始,后面跟着一个注释代码块,内容为“显示检测到的最大 AprilTag ID”。在一个无限循环中,“拍摄 AI Vision 快照”代码块会捕获 AprilTag 的图像。一个“如果”代码块检查 AI Vision 对象是否存在。如果存在,“设置 AI Vision 对象项”代码块会将对象数量赋值给一个变量,然后一个“打印”代码块会在屏幕上显示检测到的对象的标签 ID。#
当开始
[Display the largest detected AprilTag ID.]
永久循环
[AIVision 1 v] 拍照 [AprilTags v]
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <[AIVision 1 v] 对象存在?> 那么
设定 [AIVision 1 v] 对象标号为 ([AIVision1 v]object count)
在屏幕上打印 ([AIVision 1 v] 对象 [tagID v])▶

价值观#

AI视觉对象是否存在?#

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

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

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

AI Vision 对象存在布尔块。#
<[AIVision 1 v] 对象存在?>

参数

描述

设备

在“设备”窗口中配置要使用的AI视觉传感器。

例子

当开始
[Drive forward if an object is detected.]
永久循环
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
驱动 [向前 v] [10] [毫米 v] ▶

AI视觉对象是什么?#

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

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

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

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

范围

描述

设备

在“设备”窗口中配置要使用的AI视觉传感器。

目的

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

例子

当开始
[Display if a Blue Cube is detected.]
永久循环
[AIVision 1 v] 拍照 [AI Classifications v]
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[AIVision1 v] object is [BlueCube v]?> 那么
在屏幕上打印 [Cube detected!]▶
等待 [0.5] 秒

AI Vision 对象是 AprilTag ID 吗?#

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

  • 没错——AprilTag ID 就是这个数字。

  • 错误——AprilTag ID 不是数字。

AI视觉检测到AprilTag是一个布尔块。#
<[AIVision 1 v] 对象是 AprilTag [1] 吗?>

参数

描述

设备

在“设备”窗口中配置要使用的AI视觉传感器。

四月标签号

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

例子:

当开始
[Report if AprilTag ID 3 is detected.]
永久循环
清屏
在屏幕上设定光标至 [1] 行 [1] 列
[AIVision 1 v] 拍照 [AprilTags v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[AIVision 1 v] 对象是 AprilTag [3] 吗?> 那么
在屏幕上打印 [That is 3!]▶
否则
在屏幕上打印 [That isn't 3!]▶
结束
结束
等待 [0.1] 秒

AI视觉对象计数#

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

设置 AI Vision 对象项堆叠块。#
([AIVision 1 v] 对象数目)

参数

描述

设备

在“设备”窗口中配置要使用的AI视觉传感器。

例子

当开始
[Display the total amount of cubes, rings, and balls.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
在屏幕上打印 ([AIVision 1 v] 对象数目)▶
结束
等待 [0.5] 秒

AI Vision 对象属性#

使用 拍摄快照 后,存储的每个对象都包含九个属性(如下所示)。

AI视觉对象属性报告器模块。#
([AIVision 1 v] 对象 [宽 v])

某些属性值基于检测到的物体在执行拍摄快照 代码块时在AI视觉传感器视野中的位置。AI视觉传感器的分辨率为320×240像素。

范围

描述

设备

在“设备”窗口中配置要使用的AI视觉传感器。

财产

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

宽度#

width 函数返回检测到的对象的宽度(以像素为单位),数值为 1 到 320 之间的整数。

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

例子

当开始
[Drive towards an object until its width is larger than 100 pixels.]
永久循环
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [宽 v]) [math_less_than v] [100]> 那么
驱动 [向前 v]
否则
驱动停止
结束

高度#

height 返回检测到的对象的高度(以像素为单位),数值为 1 到 240 之间的整数。

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

例子

当开始
[Drive towards an object until its height is larger than 100 pixels.]
永久循环
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [高 v]) [math_less_than v] [100]> 那么
驱动 [向前 v]
否则
驱动停止
结束

centerX#

centerX 返回检测到的对象中心的 x 坐标(以像素为单位),数值为 0 到 320 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 centerX。#
([AIVision 1 v] 对象 [中心X坐标 v])

例子

当开始
[Turn slowly until an object is centered in front of the robot.]
设定转向速度为 [30] [% v]
[右 v] 转
永久循环
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[140] [math_less_than v] ([AIVision 1 v] 对象 [中心X坐标 v]) [math_less_than v] [180]> 那么
驱动停止

中心Y#

centerY 返回检测到的对象中心的 y 坐标(以像素为单位),数值为 0 到 240 之间的整数。

AI Vision 对象属性堆栈块,其参数设置为 centerY。#
([AIVision 1 v] 对象 [中心Y坐标 v])

例子

当开始
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
永久循环
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [中心Y坐标 v]) [math_less_than v] [140]> 那么
驱动 [向前 v]
否则
驱动停止
结束

角度#

angle 返回检测到的颜色代码或 AprilTag 的方向,以 0 到 359 度的整数表示。

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

例子

当开始
[Slide left or right depending on how the Color Code is rotated.]
永久循环
[AIVision 1 v] 拍照 [RED_BLUE v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <[50] [math_less_than v] ([AIVision 1 v] 对象 [夹角 v]) [math_less_than v] [100]> 那么
驱动 [右 v]
否则如果 <[270] [math_less_than v] ([AIVision 1 v] 对象 [夹角 v]) [math_less_than v] [330]> 那么
驱动 [左 v]
否则
驱动停止
结束
否则
驱动停止

originX#

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

AI Vision 对象属性堆栈块,其参数设置为 originX。#
([AIVision 1 v] 对象 [原点X v])

例子

当开始
[Display if an object is to the left or the right.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [原点X v]) [math_less_than v] [160]> 那么
在屏幕上打印 [To the left!]▶
否则
在屏幕上打印 [To the right!]▶
结束
等待 [0.5] 秒

originY#

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

AI Vision 对象属性堆栈块,其参数设置为 originY。#
([AIVision 1 v] 对象 [原点Y v])

例子

当开始
[Display if an object is close or far from the robot.]
永久循环
清除屏幕第 [1] 行
在屏幕上设定光标至 [1] 行 [1] 列
[AIVision 1 v] 拍照 [AI Classifications v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [原点Y v]) [math_less_than v] [80]> 那么
在屏幕上打印 [Far!]▶
否则
在屏幕上打印 [Close!]▶
结束
等待 [0.5] 秒

标签ID#

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

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

例子

当开始
[Drive forward when AprilTag ID 0 is detected.]
永久循环
[AIVision 1 v] 拍照 [AprilTags v]
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [tagID v]) [math_equal v] [0]> 那么
驱动 [向前 v]
否则
驱动停止
结束
等待 [0.5] 秒

分数#

得分表示模型对检测到的 AI 分类的置信度,以 70% 到 100% 的百分比表示。

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