机器人专用积木#
介绍#
V5RC 25-26 Push Back 游乐场采用专为此游乐场设计的建筑专用积木,包括两个电机选项、AI 视觉传感器、光学传感器和游戏定位系统 (GPS)。
所有标准 VEXcode VR 积木均可用于 V5RC 25-26 Push Back 游乐场。
以下是所有可用的游乐场专用块的列表:
运动——移动并跟踪机器人的马达。
行动
设置
设置电机速度 – 以百分比设置电机或电机组的速度。
[设置电机超时](#set-motor-timeout)——限制当运动受阻时电机阻塞在放弃之前等待的时间。
位置
价值观
AI 视觉——使用 AI 视觉传感器捕捉和分析物体。
感知——利用机器人的各种传感器。
光学的
全球定位系统
本项目中的示例使用默认的 Playground 起始位置。
运动#
Actions#
旋转#
旋转块使用 当前电机速度 沿指定方向旋转选定的电机或电机组。
[ConveyorMotor v] [向上 v] 转
参数 |
描述 |
---|---|
发动机 |
旋转的电机组:
|
方向 |
旋转方向:
|
例子
当开始 :: hat events
[Pick up a second Block.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [350] [毫米 v] ▶
旋转#
spin for 块使用 当前电机速度(以度或圈数为单位)旋转选定的电机或电机组特定的旋转量。
[ConveyorMotor v] [向上 v] 转 (90) [度 v] ▶
参数 |
描述 |
---|---|
发动机 |
旋转的电机组:
|
方向 |
旋转方向:
|
距离 |
旋转量,为整数或小数。 |
单元 |
测量单位,可以是以下之一:
|
扩大箭头 |
默认情况下,这是一个等待块,因此电机会在运行下一个块之前完成移动。要使电机开始移动并立即运行下一个块,请将块扩展为不等待。 |
例子
当开始 :: hat events
[Pick up a second Block.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [350] [毫米 v] ▶
旋转至位置#
旋转到位置块使用当前 电机速度 和 电机位置 将电机或电机组旋转到特定的绝对位置。
[ConveyorMotor v] 转至 (90) [度 v] ▶
参数 |
描述 |
---|---|
发动机 |
旋转的电机组:
|
位置 |
电机组旋转到的目标位置。 |
单元 |
测量单位,可以是以下之一:
|
扩大箭头 |
默认情况下,这是一个等待块,因此电机会在运行下一个块之前完成移动。要使电机开始移动并立即运行下一个块,请将块扩展为不等待。 |
例子
当开始 :: hat events
[Pick up a second Block.]
[ConveyorMotor v] 转至 [150] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [350] [毫米 v] ▶
停止电机#
停止电机块立即停止选定的电机或电机组。
[ConveyorMotor v] 停止
参数 |
描述 |
---|---|
发动机 |
要停止的电机组:
|
例子
当开始 :: hat events
[Pick up a second Block.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [350] [毫米 v] ▶
[IntakeMotor v] 停止
Settings#
设定电机速度#
设置电机速度块将电机或电机组的默认旋转速度设置为项目中所有后续电机块的百分比。
set [ConveyorMotor v] velocity to (50) [% v]
参数 |
描述 |
---|---|
发动机 |
设定速度的电机组:
|
速度 |
将默认移动速度设置为 0 至 100 的百分比。 |
单元 |
表示速度的单位:
|
例子
当开始 :: hat events
[Pick up a second Block.]
set [ConveyorMotor v] velocity to [100] [% v]
[ConveyorMotor v] [向上 v] 转 [200] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [400] [毫米 v] ▶
设置电机超时#
设置电机超时 模块设置了电机模块等待到达目标的时间限制。如果机器人无法在设定的时间内完成移动,它将自动停止并继续执行下一个模块。
**注意:**电机的时间限制用于防止未到达目标位置的电机块停止堆栈中其他块的执行。
设定 [ConveyorMotor v] 超时为 [1] 秒
参数 |
描述 |
---|---|
发动机 |
设置超时的电机组:
|
时间 |
电机块在停止并移动到下一个块之前运行的最大秒数。 |
例子
当开始 :: hat events
[Pick up a second Block.]
设定 [ConveyorMotor v] 超时为 [0.5] 秒
[ConveyorMotor v] 转至 [1000] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [400] [毫米 v] ▶
Position#
电机位置#
电机位置块返回所选电机或电机组旋转的总距离。
([ConveyorMotor v] 转位 [度 v])
参数 |
描述 |
---|---|
发动机 |
返回位置的电机组:
|
单元 |
测量单位,可以是以下之一:
|
例子
当开始 :: hat events
[Pick up a second Block.]
当 <([ConveyorMotor v] 转位 [度 v]) [math_less_than v] [150]>
[ConveyorMotor v] [向上 v] 转
结束
[ConveyorMotor v] 停止
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [400] [毫米 v] ▶
设置电机位置#
设置电机位置块为电机或电机组设置特定的位置值,从而更新编码器读数。
设定 [ConveyorMotor v] 转位至 (0) [度 v]
参数 |
描述 |
---|---|
发动机 |
要设置位置的电机组:
|
位置 |
要设置的编码器位置值。 |
单元 |
测量单位,可以是以下之一:
|
例子
当开始 :: hat events
[Pick up a second Block.]
设定 [ConveyorMotor v] 转位至 [-150] [度 v]
[ConveyorMotor v] 转至 [0] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [400] [毫米 v] ▶
Values#
电机完成#
电机是否完成? 块返回一个布尔值,指示电机或电机组是否未旋转。
正确 – 电机没有旋转。
错误 – 电机正在旋转。
<[ConveyorMotor v] 已结束?>
参数 |
描述 |
---|---|
发动机 |
检查电机组是否不旋转:
|
例子
当开始 :: hat events
[Pick up a second Block.]
[ConveyorMotor v] 转至 [300] [度 v] ◀ 并且不等待
驱动 [向前 v]
[IntakeMotor v] [收集器 v] 转
等到 <[ConveyorMotor v] 已结束?>
驱动停止
[IntakeMotor v] 停止
电机在旋转吗?#
电机正在旋转? 块返回一个布尔值,指示电机是否正在旋转。
真 – 电机正在旋转。
错误 – 电机没有旋转。
<[ConveyorMotor v] 正在转?>
参数 |
描述 |
---|---|
发动机 |
检查是否旋转的电机组:
|
例子
当开始 :: hat events
[Pick up a second Block.]
[ConveyorMotor v] 转至 [300] [度 v] ◀ 并且不等待
等待 [0.1] 秒
当 <[ConveyorMotor v] 正在转?>
驱动 [向前 v] [200] [毫米 v] ▶
[IntakeMotor v] [收集器 v] 转
电机速度#
电机速度块返回电机或电机组的当前转速,范围从 -100% 到 100%。
([ConveyorMotor v] 速度 [% v] 值)
参数 |
描述 |
---|---|
发动机 |
返回速度的电机组:
|
单元 |
表示速度的单位:
|
例子
当开始 :: hat events
[Pick up a second Block.]
set [ConveyorMotor v] velocity to [100] [% v]
[ConveyorMotor v] 转至 [300] [度 v] ◀ 并且不等待
等待 [0.2] 秒
打印 ([ConveyorMotor v] 速度 [% v] 值) ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [400] [毫米 v] ▶
人工智能视觉#
Actions#
获取对象数据#
获取对象数据 模块会过滤来自 AI 视觉传感器框架的数据。AI 视觉传感器可以检测场地上的游戏元素。
该数据集存储的对象按宽度从大到小排序,从索引 0 开始。可以使用 AI Vision 对象属性 块访问每个对象的属性。如果未检测到匹配的对象,则返回空数据集。
从 AI 视觉仪获取 [AI Classifications v] 数据
范围 |
描述 |
---|---|
签名 |
过滤数据集,仅包含指定签名数据。唯一可用的签名是:
|
例子
当开始 :: hat events
[If an object is detected, pick it up.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
等到 <[Bumper v] 按下了?>
驱动停止
退出循环
Settings#
设置对象项#
set object item 块设置要使用数据集中的哪个项目。
设定 [AIVision v] 对象标号为 [1]
参数 |
描述 |
---|---|
物品 |
数据集中要使用的项目数量。 |
例子
当开始 :: hat events
[Display what object is farthest away.]
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
设定 [AIVision v] 对象标号为 ([AIVision v] 对象数目)
清除所有行
如果 <[AIVision v] object is [BlueBlock v]?> 那么
打印 [Blue Block farthest away.] ▶
否则
打印 [Red Block farthest away.] ▶
Values#
对象存在吗?#
**对象存在?**块返回一个布尔值,指示是否在数据集中检测到任何对象。
真 – 数据集包含检测到的对象。
错误 – 数据集不包含任何检测到的对象。
<AI 视觉仪对象存在?>
参数 |
描述 |
---|---|
该块没有参数。 |
例子
当开始 :: hat events
[If an an object is detected, pick it up.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
等到 <[Bumper v] 按下了?>
驱动停止
退出循环
AI分类是#
AI Vision 对象是? 块返回一个布尔值,指示检测到的对象是否与特定分类匹配。
真 – 数据集中的项目是特定对象。
错误 – 数据集中的项目不是特定对象。
<[AIVision] object is [BlueBlock v]?>
范围 |
描述 |
---|---|
目的 |
将物品与哪个物体进行比较:
|
例子
当开始 :: hat events
[Display what object is farthest away.]
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
设定 [AIVision v] 对象标号为 ([AIVision v] 对象数目)
清除所有行
如果 <[AIVision v] object is [BlueBlock v]?> 那么
打印 [Blue Block farthest away.] ▶
否则
打印 [Red Block farthest away.] ▶
对象计数#
对象计数块以整数形式返回数据集中检测到的对象的数量。
([AIVision] 对象数目)
参数 |
描述 |
---|---|
该块没有参数。 |
例子
当开始 :: hat events
[Display what object is farthest away.]
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
设定 [AIVision v] 对象标号为 ([AIVision v] 对象数目)
清除所有行
如果 <[AIVision v] object is [BlueBlock v]?> 那么
打印 [Blue Block farthest away.] ▶
否则
打印 [Red Block farthest away.] ▶
对象属性#
使用 获取对象数据 块 后存储的每个对象(如下所示)都包含六个属性。
([AIVision v] 对象 [宽 v])
某些属性值基于使用获取对象数据块时检测到的物体在 AI 视觉传感器视图中的位置。AI 视觉传感器的分辨率为 320 x 240 像素。
范围 |
描述 |
---|---|
财产 |
使用检测到的对象哪个属性: |
宽度#
width 以像素为单位返回检测到的对象的宽度,范围是 1 到 320 之间的整数。
([AIVision v] 对象 [宽 v])
例子
当开始 :: hat events
[If an an object is detected, approach and pick it up.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
如果 <([AIVision v] 对象 [宽 v]) [math_greater_than v] [65]> 那么
驱动停止
退出循环
否则
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
高度#
高度以像素为单位返回检测到的物体的高度,范围是 1 到 240 之间的整数。
([AIVision v] 对象 [高 v])
例子
当开始 :: hat events
[If an an object is detected, approach and pick it up.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
如果 <([AIVision v] 对象 [高 v]) [math_greater_than v] [55]> 那么
驱动停止
退出循环
否则
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
中心X#
centerX 以像素为单位返回检测到的物体中心的 x 坐标,为 0 到 320 之间的整数。
([AIVision v] 对象 [中心X坐标 v])
例子
当开始 :: hat events
[Pick up a Block from the top left group.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
[左 v] 转 [80] 度 ▶
驱动 [向前 v] [100] [毫米 v] ▶
设定转向速度为 [20] [% v]
[左 v] 转
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
如果 <<[140] [math_less_than v] ([AIVision v] 对象 [中心X坐标 v])> 与 <([AIVision v] 对象 [中心X坐标 v]) [math_less_than v] [180]>> 那么
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
等到 <[Bumper v] 按下了?>
驱动停止
中心Y#
centerY 以像素为单位返回检测到的物体中心的 y 坐标,为 0 到 240 之间的整数。
([AIVision v] 对象 [中心Y坐标 v])
例子
当开始 :: hat events
[If an an object is detected, approach and pick it up.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
如果 <([AIVision v] 对象 [中心Y坐标 v]) [math_greater_than v] [140]> 那么
驱动停止
退出循环
否则
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
原点X#
originX 以像素为单位返回检测到的对象边界框左上角的 x 坐标,为 0 到 320 之间的整数。
([AIVision v] 对象 [原点X v])
例子
当开始 :: hat events
[Pick up a Block from the top left group.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
[左 v] 转 [80] 度 ▶
驱动 [向前 v] [100] [毫米 v] ▶
设定转向速度为 [20] [% v]
[左 v] 转
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
如果 <<[100] [math_less_than v] ([AIVision v] 对象 [原点X v])> 与 <([AIVision v] 对象 [原点X v]) [math_less_than v] [140]>> 那么
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
等到 <[Bumper v] 按下了?>
驱动停止
原点Y#
originY 以像素为单位返回检测到的对象边界框左上角的 y 坐标,为 0 到 240 之间的整数。
([AIVision v] 对象 [原点Y v])
例子
当开始 :: hat events
[If an an object is detected, approach and pick it up.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
永久循环
从 [AI Classifications v]获取 [AIVision v] 数据
如果 <[AIVision v] 对象存在?> 那么
如果 <[120] [math_less_than v] ([AIVision v] 对象 [原点Y v])> 那么
驱动停止
退出循环
否则
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
结束
结束
传感#
Optical#
光学发现物体?#
**光学发现物体?**块返回一个布尔值,指示光学传感器是否检测到物体。
真 – 光学传感器已检测到物体。
错误 – 光学传感器未检测到物体。
<[Optical v] 发现对象?>
参数 |
描述 |
---|---|
该块没有参数。 |
例子
当开始 :: hat events
[Move the preloaded Block to the top of the Conveyor.]
[ConveyorMotor v] [向上 v] 转
等到 <[Optical v] 发现对象?>
[ConveyorMotor v] 停止
光学检测颜色?#
**光学检测颜色?**块返回一个布尔值,指示光学传感器是否检测到特定颜色。
真 – 光学传感器已检测到指定的颜色。
错误 – 光学传感器未检测到指定的颜色。
<[Optical v] 测得 [红色 v]?>
参数 |
描述 |
---|---|
颜色 |
要检查的颜色:
|
例子
当开始 :: hat events
[Pick up and move a Blue Block to the top of the Conveyor.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [360] [毫米 v] ▶
[ConveyorMotor v] [向上 v] 转
等到 <[Optical v] 测得 [蓝色 v]?>
[ConveyorMotor v] 停止
光学亮度#
光学亮度块返回光学传感器检测到的光量,范围从 0% 到 100%。
([Optical v] 亮度百分比)
参数 |
描述 |
---|---|
该块没有参数。 |
例子
当开始 :: hat events
[Move the preloaded Block to the top of the Conveyor.]
[ConveyorMotor v] [向上 v] 转
等到 <[0] [math_less_than v] ([Optical v] 亮度百分比)>
[ConveyorMotor v] 停止
光学色调#
光学色调块返回光学传感器检测到的颜色的色调值。
色调值范围从 0 到 359 度,对应于下面显示的色轮上的位置。
([Optical v] 色调度数)
参数 |
描述 |
---|---|
该块没有参数。 |
例子
当开始 :: hat events
[Pick up and move a Blue Block to the top of the Conveyor.]
[ConveyorMotor v] [向上 v] 转 [150] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v] [360] [毫米 v] ▶
[ConveyorMotor v] [向上 v] 转
等到 <[240] [math_equal v] ([Optical v] 色调度数)>
[ConveyorMotor v] 停止
当光学#
当光学传感器检测到或丢失物体时,当光学模块会运行其堆叠。你可以使用多个当光学模块来同时运行多个模块堆叠。
当 [Optical v] [detects v] 一个对象 :: hat events
参数 |
描述 |
---|---|
行动 |
哪些动作触发帽子积木:
|
例子
示例即将推出!
GPS#
GPS 位置#
GPS 位置 块通过 GPS(游戏定位系统™)传感器返回机器人转弯参考点与场地中心的位置偏移。
([GPS v] [X v] 位置 [毫米 v])
参数 |
描述 |
---|---|
轴 |
报告哪些 aci:
|
单位 |
表示位置的单位:
|
例子
当开始 :: hat events
[Pick up a second Block.]
[ConveyorMotor v] 转至 [150] [度 v] ▶
[IntakeMotor v] [收集器 v] 转
驱动 [向前 v]
等到 <[-450] [math_greater_than v] ([GPS v] [Y v] 位置 [毫米 v])>
驱动停止
GPS 航向#
GPS 航向 块根据 GPS(游戏定位系统™)传感器从 VEX GPS 场代码读取的从 0.00 到 359.99 度的数值返回机器人当前面对的航向。
([GPS v] 归位角度值)
参数 |
描述 |
---|---|
该块没有参数。 |
例子
当开始 :: hat events
[Score the preloaded Block into a Center Goal.]
[左 v] 转
等到 <[40] [math_greater_than v] ([GPS v] 归位角度值)>
驱动 [向前 v] [1000] [毫米 v] ▶
[右 v] 转
等到 <([GPS v] 归位角度值) [math_greater_than v] [310]>
驱动 [反 v] [200] [毫米 v] ▶
[ConveyorMotor v] [向上 v] 转