视觉传感#
介绍#
VEX V5 的视觉传感器可以检测并追踪颜色和颜色代码。这使得视觉传感器能够分析周围环境、跟踪物体并根据检测到的视觉数据做出反应。以下是所有可用模块的列表:
拍摄视觉传感器快照 – 捕获特定颜色特征或颜色代码的数据。
设置视觉传感器对象项 – 从检测到的对象列表中选择一个特定对象。
视觉传感器对象计数 – 返回检测到的物体的数量。
视觉传感器对象是否存在? – 返回是否检测到对象。
视觉传感器对象属性 – 返回如下详细信息:
拍摄视觉传感器快照#
拍摄视觉传感器快照 模块会过滤来自视觉传感器帧的数据。视觉传感器可以检测包含已配置颜色和颜色代码的签名。
必须先在 Vision Utility 中配置颜色和颜色代码,然后才能将其与该块一起使用。
该数据集按宽度从大到小排序存储对象,从项目 1 开始。可以使用 Vision object property 块访问每个对象的属性。如果未检测到匹配的对象,则返回空数据集。
[Vision 1 v] 拍照 [SELECT_A_SIG v]
范围 |
描述 |
---|---|
想象 |
要使用的视觉传感器,在设备窗口中配置。 |
签名 |
快照中要分析的颜色特征或颜色代码。 |
例子
当开始 :: hat events
[Move forward if a red box is detected.]
永久循环
[Vision 1 v] 拍照 [RED_BOX v]
如果 <[Vision 1 v] 对象存在?> 那么
驱动 [向前 v] [10] [毫米 v] ▶
设置视觉传感器对象项#
设置视觉传感器对象项块设置要使用数据集中的哪个项。
设定 [Vision 1 v] 对象标号为 (1)
范围 |
描述 |
---|---|
想象 |
要使用的视觉传感器,在设备窗口中配置。 |
物品 |
数据集中要使用的项目数量。 |
例子
当开始 :: hat events
[Display the largest detected red object.]
永久循环
[Vision 1 v] 拍照 [RED_BOX v]
清除 [Brain v] 所有行
在 [1] 设定光标至 [1] 行 [Brain v] 列
如果 <[Vision 1 v] 对象存在?> 那么
设定 [Vision 1 v] 对象标号为 (1)
在 ([Vision 1 v] 对象 [宽 v]) ▶上打印 [Brain v]
结束
等待 [0.5] 秒
视觉传感器物体计数#
视觉传感器对象计数块以整数形式返回数据集中检测到的对象的数量。
([Vision 1 v] 对象数目)
范围 |
描述 |
---|---|
想象 |
要使用的视觉传感器,在设备窗口中配置。 |
例子
当开始 :: hat events
[Display the amount of red objects.]
永久循环
清除 [Brain v] 所有行
在 [1] 设定光标至 [1] 行 [Brain v] 列
[Vision 1 v] 拍照 [RED_BOX v]
如果 <[Vision 1 v] 对象存在?> 那么
在 ([Vision 1 v] 对象数目) ▶上打印 [Brain v]
结束
等待 [0.5] 秒
视觉传感器对象存在吗?#
**视觉传感器对象是否存在?**块返回一个布尔值,指示是否在数据集中检测到任何对象。
真 – 数据集包含检测到的对象。
错误 – 数据集不包含任何检测到的对象。
<[Vision 1 v] 对象存在?>
范围 |
描述 |
---|---|
想象 |
要使用的视觉传感器,在设备窗口中配置。 |
例子
当开始 :: hat events
[Move forward if a red box is detected.]
永久循环
[Vision 1 v] 拍照 [RED_BOX v]
如果 <[Vision 1 v] 对象存在?> 那么
驱动 [向前 v] [10] [毫米 v] ▶
视觉传感器对象属性#
使用 拍摄视觉传感器快照 块 后存储的每个对象(如下所示)包含五个属性。
([Vision 1 v] 对象 [宽 v])
某些属性值基于使用 拍摄视觉传感器快照 块 时检测到的物体在视觉传感器视图中的位置。视觉传感器的分辨率为 316 x 212 像素。
范围 |
描述 |
---|---|
想象 |
要使用的视觉传感器,在设备窗口中配置。 |
财产 |
使用检测到的对象的哪个属性: |
宽度#
width 以像素为单位返回检测到的对象的宽度,范围是 1 到 316 之间的整数。
([Vision 1 v] 对象 [宽 v])
例子
当开始 :: hat events
[Move towards a red object until its width is larger than 100 pixels.]
永久循环
[Vision 1 v] 拍照 [RED_BOX v]
如果 <[Vision 1 v] 对象存在?> 那么
如果 <([Vision 1 v] 对象 [宽 v]) [math_less_than v] [100]> 那么
驱动 [向前 v]
结束
否则
驱动停止
高度#
高度以像素为单位返回检测到的物体的高度,范围是 1 到 212 之间的整数。
([Vision 1 v] 对象 [高 v])
例子
当开始 :: hat events
[Move towards a red object until its height is larger than 100 pixels.]
永久循环
[Vision 1 v] 拍照 [RED_BOX v]
如果 <[Vision 1 v] 对象存在?> 那么
如果 <([Vision 1 v] 对象 [高 v]) [math_less_than v] [100]> 那么
驱动 [向前 v]
结束
否则
驱动停止
中心X#
centerX 以像素为单位返回检测到的物体中心的 x 坐标,为 0 到 316 之间的整数。
([Vision 1 v] 对象 [中心X坐标 v])
例子
当开始 :: hat events
[Turn slowly until a red object is centered in front of the Vision Sensor.]
设定转向速度为 [30] [% v]
[右 v] 转
永久循环
[Vision 1 v] 拍照 [RED_BOX v]
如果 <[Vision 1 v] 对象存在?> 那么
如果 <<[140] [math_less_than v] ([Vision 1 v] 对象 [中心X坐标 v])> 与 <([Vision 1 v] 对象 [中心X坐标 v]) [math_less_than v] [180]>> 那么
驱动停止
中心Y#
centerY 以像素为单位返回检测到的物体中心的 y 坐标,为 0 到 212 之间的整数。
([Vision 1 v] 对象 [中心Y坐标 v])
例子
当开始 :: hat events
[Move towards a red object until its center y-coordinate is more than 140 pixels.]
永久循环
[Vision 1 v] 拍照 [RED_BOX v]
如果 <[Vision 1 v] 对象存在?> 那么
如果 <([Vision 1 v] 对象 [中心Y坐标 v]) [math_less_than v] [140]> 那么
驱动 [向前 v]
结束
否则
驱动停止
角度#
角度以 0 至 180 度之间的整数形式返回检测到的颜色代码的方向。
([Vision 1 v] 对象 [夹角 v])
例子
当开始 :: hat events
[Turn left or right depending on how the Color Code is rotated.]
永久循环
[Vision 1 v] 拍照 [BOX_CODE v]
如果 <[Vision 1 v] 对象存在?> 那么
如果 <<[70] [math_less_than v] ([Vision 1 v] 对象 [夹角 v])> 与 <([Vision 1 v] 对象 [夹角 v]) [math_less_than v] [110]>> 那么
[右 v] 转 (45) 度 ▶
否则如果 <<[250] [math_less_than v] ([Vision 1 v] 对象 [夹角 v])> 与 <([Vision 1 v] 对象 [夹角 v]) [math_less_than v] [290]>> 那么
[左 v] 转 (45) 度 ▶
否则
驱动停止
结束