人工智能视觉传感器#

介绍#

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

AI 视觉示例专为配备 AI 视觉传感器的 Basebot 设计。在这些示例中,传感器的配置名称为 AIVision1,该名称显示在代码块中。

以下是可用块的列表:

操作 – 从 AI 视觉传感器捕获选定签名的数据。

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

设置——选择要交互的对象。

– 访问和使用捕获的数据。

行动#

获取对象数据#

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

必须先在 AI Vision Utility 中配置颜色和颜色代码,然后才能将其与此块一起使用。

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

获取对象数据堆栈块。#
从 [AIVision 1 v]获取 [SELECT_A_SIG v] 数据

范围

描述

签名

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

**注意:**要显示 AprilTag 或 AI 分类选项,必须在 AI Vision 实用程序中启用它们的检测。

例子

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

AI Classifications#

The AI Vision Sensor can detect different objects under certain AI Classifications. Depending on the AI Classification model selected when configuring the AI Vision Sensor in the Devices window, different objects will be detected. The currently available models are:

Classroom Objects

  • BlueBall

  • GreenBall

  • RedBall

  • BlueRing

  • GreenRing

  • RedRing

  • BlueCube

  • GreenCube

  • RedCube

VIQRC Mix & Match

  • Beam

  • RedPin

  • BluePin

  • OrangePin

色彩签名#

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

颜色签名用于 获取对象数据 中,以实时处理和检测彩色对象。一次最多可配置 7 个颜色签名。

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

例子

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

颜色代码#

颜色代码是由 2 到 4 个按特定顺序排列的颜色特征组成的结构化模式。这些代码使 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)

例子

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

设置#

设置 AI Vision 对象项#

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

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

参数

描述

物品

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

例子

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

价值观#

AI Vision 对象存在吗?#

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

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

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

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

参数

描述

该块没有参数。

例子

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

AI 视觉对象计数#

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

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

参数

描述

该块没有参数。

例子

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

AI Vision 对象属性#

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

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

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

范围

描述

财产

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

宽度#

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

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

例子

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

高度#

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

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

例子

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

中心X#

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] 转
永久循环
从 [AI Classifications v]获取 [AIVision 1 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.]
永久循环
从 [AI Classifications v]获取 [AIVision 1 v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [中心Y坐标 v]) [math_less_than v] [140]> 那么
驱动 [向前 v]
结束
否则
驱动停止

角度#

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

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

例子

当开始
[Slide left or right depending on how the Color Code is rotated.]
永久循环
从 [RED_BLUE v]获取 [AIVision 1 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]
否则
驱动停止
结束
否则
驱动停止

原点X#

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] 列
从 [AI Classifications v]获取 [AIVision 1 v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [原点X v]) [math_less_than v] [160]> 那么
在屏幕上打印 [To the left!]▶
否则
在屏幕上打印 [To the right!]▶
结束
等待 [0.5] 秒

原点Y#

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] 列
从 [AI Classifications v]获取 [AIVision 1 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.]
永久循环
从 [AprilTags v]获取 [AIVision 1 v] 数据
如果 <[AIVision 1 v] 对象存在?> 那么
如果 <([AIVision 1 v] 对象 [tagID v]) [math_equal v] [0]> 那么
驱动 [向前 v]
否则
驱动停止
结束
等待 [0.5] 秒

AI视觉的对象是什么?#

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

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

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

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

范围

描述

目的

Which AI Classification to compare the item to.

例子

当开始
[Display if a Blue Cube is detected.]
永久循环
从 [AI Classifications v]获取 [AIVision 1 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 Vision 检测到 AprilTag 是布尔块。#
<[AIVision 1 v] 对象是 AprilTag [1] 吗?>

参数

描述

四月标签号码

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

例子:

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