机器人专用积木#

所有标准 VEXcode VR 块均可用于 V5RC 虚拟技能 - 高风险 游乐场。

运动#

这个游乐场的积木将可以访问所有运动积木的臂电机推杆电机参数。

当为运动块选择方向时,向上将使手臂向前旋转,向下将使手臂反向旋转。

对于推进器电机,降低将使推进器电机正向旋转,升高将使推进器电机反向旋转。

Spin#

Spin 块用于无限旋转电机。

这是一个非等待块,允许任何后续块无延迟地执行。

[ArmMotor v] [向上 v] 转

选择要使用的电机。

图片展示了一个来自可视化编程界面的模块,用户正在选择一个电机来执行“旋转”命令。所选电机为“ArmMotor”,下拉菜单中的备选选项为“PusherMotor”。该模块设置为使“ArmMotor”沿“向上”方向旋转。

选择电机移动的方向。

臂电机可以向上或向下旋转。

图片展示了可视化编程界面中的一个代码块,用户正在选择“旋转”命令的方向。所选的电机是“ArmMotor”,方向设置为“向上”,下拉菜单中可以选择切换到“向下”。

推进器电机可以朝降低升高方向旋转。

图片展示了一个可视化编程模块,其中“旋转”命令应用于“推进器电机”。旋转方向当前设置为“降低”,下拉菜单中有一个选项可切换为“升高”。

在这个例子中,手臂马达将旋转 1 秒以准备得分。

当开始
[Lift the Arm before moving to a Mobile Goal.]
[ArmMotor v] [向上 v] 转
等待 (1) 秒
[ArmMotor v] 停止

Spin for#

Spin for 块用于使电机旋转给定的距离。

这可以是非等待等待块,取决于是否使用并且不等待选项。

[ArmMotor v] [向上 v] 转 [90] [度 v] ▶

选择要使用的电机。

图片展示了一个来自可视化编程界面的用于控制电机的模块。在这个特定的模块中,从下拉菜单中选择了“ArmMotor”,并将其设置为“向上”旋转“90度”。下拉菜单可见,并提供一个选项,可以选择“PusherMotor”而不是“ArmMotor”。

选择电机移动的方向。

臂电机可以向上或向下旋转。

图片展示了一个用于控制电机的可视化编程模块。在这个模块中,选择了“ArmMotor”,并从下拉菜单中将方向设置为“向上”。该模块指定电机将“向上”旋转“90度”。下拉菜单可见,提供选择“向下”而不是“向上”的选项。

推进器电机可以朝降低升高方向旋转。

图片展示了一个控制标有“PusherMotor”电机的编程模块。该模块指定电机应沿“降低”方向旋转 90 度。屏幕上会显示一个下拉菜单,用户可以选择“降低”或“升高”作为方向。

通过输入一个值并选择测量单位(度或圈)来设置电机旋转的距离。

图片展示了用于控制“ArmMotor”的编码模块。该模块设置为使电机沿“向上”方向旋转 90 个单位,单位可以从下拉菜单中选择,下拉菜单提供“度”或“圈”选项。

默认情况下,旋转块会阻止任何后续块的执行,直到其完成为止。通过展开旋转块以显示不等待,块将在电机转动时继续执行。

[ArmMotor v] [向上 v] 转 [90] [度 v] ◀ 并且不等待

在这个例子中,臂电机将向上旋转 350 度以免阻挡 AI 视觉传感器。

当开始
[Lift the Arm to not block the AI Vision Sensor.]
[ArmMotor v] [向上 v] 转 [200] [度 v] ▶

Spin to position#

旋转到位置块用于将电机旋转到设定位置。

这可以是非等待等待块,取决于是否使用并且不等待选项。

[ArmMotor v] 转至 [90] [度 v] ▶

选择要使用的电机。

图片显示了一个编程模块,其中选中了“ArmMotor”以使其旋转到特定 90 度的位置。此操作可以在“ArmMotor”和“PusherMotor”之间进行选择。

通过输入一个值并选择测量单位(度或圈)来设置电机旋转的距离。

图片展示了一个代码块,其中“ArmMotor”设置为旋转 90 个单位。单位可以在“度”和“圈”之间选择,当前选择的是“度”。

默认情况下,旋转到指定位置积木会阻止所有后续积木的执行,直到其完成。通过展开旋转到指定位置积木以显示不等待,积木将在电机移动时继续执行。

[ArmMotor v] 转至 [90] [度 v] ◀ 并且不等待

在这个例子中,臂电机将旋转到 350 度位置以免阻挡 AI 视觉传感器。

当开始
[Lift the Arm to not block the AI Vision Sensor]
[ArmMotor v] 转至 [350] [度 v] ▶

Stop Motor#

停止电机块用于停止电机移动。

这是一个非等待块,允许任何后续块无延迟地执行。

[ArmMotor v] 停止

选择要使用的电机。

该图显示了一个编码块,用户可以在“ArmMotor”和“PusherMotor”之间进行选择,以停止所选电机。

在这个例子中,手臂马达将旋转 1 秒以准备得分。

当开始
[Lift the Arm before moving to a Mobile Goal.]
[ArmMotor v] [向上 v] 转
等待 (1) 秒
[ArmMotor v] 停止

Set Motor position#

设置电机位置块用于将电机的编码器位置设置为输入的值。

这是一个非等待块,允许任何后续块无延迟地执行。

设定 [ArmMotor v] 转位至 [0] [度 v]

选择要使用的电机。

图片显示了一个代码块,它将“ArmMotor”的位置设置为 0 度。下拉菜单展开,显示两个选项:“ArmMotor”和“PusherMotor”。当前选中的是“ArmMotor”,表示位置命令将应用于该特定电机。

设置要使用的测量单位,度或圈。

图片展示了一个代码块,其中“ArmMotor”的位置设置为 0,测量单位从下拉菜单中选择。下拉菜单当前已展开,显示两个选项:“度”和“转”。选择“度”选项,表示位置命令将以度为单位执行。

在此示例中,手臂被提升到 350 度位置,并将其设置为新的 0 度位置。

当开始
[Make the raised Arm position the new 0 degrees position.]
[ArmMotor v] 转至 [350] [度 v] ▶
设定 [ArmMotor v] 转位至 [0] [度 v]

Set Motor velocity#

设置电机速度块用于设置电机的速度。

这是一个非等待块,允许任何后续块无延迟地执行。

设定 [ArmMotor v] 转速为 [50] [% v]

选择要使用的电机。

图片显示了一个代码块,用于将“ArmMotor”的速度设置为 50%。下拉菜单已打开,显示可选择“ArmMotor”或“PusherMotor”作为速度设置的选项。当前已选择“ArmMotor”。

设置电机速度块将接受-100%到100%的范围。

在此示例中,在臂抬起之前,电机的速度设置为 100%。

当开始
[Raise Arm to not block the AI Vision Sensor.]
设定 [ArmMotor v] 转速为 [100] [% v]
[ArmMotor v] [向上 v] 转 [350] [度 v] ▶

Set Motor timeout#

设置电机超时块用于设置电机运动块的时间限制。

这可以防止未到达预定位置的运动块阻止后续块运行。

这是一个非等待命令,允许任何后续命令无延迟地执行。

设定 [ArmMotor v] 超时为 [1] 秒

选择要使用的电机。

图片展示了一个编程模块,用户可以在其中设置电机的超时时间。在本例中,从下拉菜单中选择“ArmMotor”,并可选择根据需要切换到“PusherMotor”。超时时间设置为 1 秒,这意味着所选电机将在 1 秒后停止运行,无论其当前任务是什么。

在此示例中,在 Arm 升起之前,电机超时设置为 1 秒。

当开始
[Raise Arm to not block the AI Vision Sensor.]
设定 [ArmMotor v] 超时为 [1] 秒
[ArmMotor v] [向上 v] 转 [5] [转 v] ▶

传感#

Axel 可以使用标准大脑、传动系统、保险杠、距离感应块。

眼部感应已重命名为光学感应,以匹配前置光学传感器。

Motor Sensing#

电机已完成#

电机已完成块用于报告所选电机或电机组是否已完成其运动。

<[ArmMotor v] 已结束?>

选择要使用的电机或电机组。

图片显示了一个标有“ArmMotor 是否完成?”的模块,其中包含一个用于选择电机的下拉菜单。下拉菜单当前显示已选中“ArmMotor”,但也允许用户选择“PusherMotor”。该模块用于检查所选电机(无论是“ArmMotor”还是“PusherMotor”)是否已完成其动作,例如到达指定位置或完成一次旋转。

The Motor is done block reports True when the selected Motor or Motor Group has completed its movement.

The Motor is done block reports False when the selected Motor or Motor Group has not completed its movement.

电机已完成块用于具有六边形(六面)空间的块中。

电机旋转#

电机正在旋转块用于报告所选电机或电机组是否正在移动。

<[ArmMotor v] 正在转?>

选择要使用的电机或电机组。

图片显示了一个标有“ArmMotor 正在旋转吗?”的模块,其下拉菜单当前处于展开状态。下拉菜单允许您在“ArmMotor”和“PusherMotor”之间进行选择,当前已选择“ArmMotor”。该模块用于检查所选电机(在本例中为“ArmMotor”)当前是否正在旋转。

The Motor is spinning block reports True when the selected Motor or Motor Group is moving.

The Motor is spinning block reports False when the selected Motor or Motor Group is not moving.

马达正在旋转块用于具有六边形(六面)空间的块中。

电机位置#

电机位置块用于报告电机或电机组中第一个电机的位置。

([ArmMotor v] 转位 [度 v])

选择要使用的电机或电机组。

图片显示了“ArmMotor 位置(以度为单位)”模块,其中包含一个下拉菜单,可让您选择不同的电机。当前已选择“ArmMotor”,另有“PusherMotor”可供选择。

选择使用的单位,度或圈。

图片显示了“ArmMotor 位置(以度为单位)”模块,下拉菜单当前显示“度”作为所选单位。下拉菜单还提供了一个附加选项,可以用“转”来测量位置。

电机位置块用于具有圆形空间的块中。

在此示例中,手臂将升高,直到其位置大于 300 度。

当开始
[Raise Arm to not block the AI Vision Sensor.]
[ArmMotor v] [向上 v] 转
等到 <([ArmMotor v] 转位 [度 v]) [math_greater_than v] [300]>
[ArmMotor v] 停止

电机转速#

电机速度块用于报告电机或电机组中第一个电机的当前速度。

([ArmMotor v] 速度 [% v] 值 :: custom-motion)

选择要使用的电机或电机组。

图片显示了一个基于块的编程界面中的块,用户可以在其中选择一个电机来获取其速度百分比。下拉菜单当前已展开,显示“ArmMotor”或“PusherMotor”的选项。选择“ArmMotor”,并将速度单位设置为百分比(“%”)。

电机速度块用于具有圆形空间的块中。

Rotation Sensing#

设置旋转位置#

设置旋转位置块用于将推进器电机的当前旋转位置设置为新值。

设定 [PusherRotation v] 位置为 [0] 度

在此示例中,将环推离臂的旋转将设置为 0 度。

当开始
[Make lower Pusher position the new 0 degrees rotation position.]
[PusherMotor v] [更低 v] 转 [270] [度 v] ▶
设定 [PusherRotation v] 位置为 [0] 度

旋转角度#

旋转角度块用于报告推进器电机当前的旋转角度(以度为单位)。

([PusherRotation v] 角度值)

在这个例子中,推动器将把环从臂上推下来,然后报告电机的旋转角度。

当开始
[Make lower Pusher position the new 0 degrees rotation position.]
[PusherMotor v] [更低 v] 转 [270] [度 v] ▶
打印 ([PusherRotation v] 角度值) ▶

旋转位置#

旋转位置块用于报告推进器电机的当前位置。

([PusherRotation v] 转位 [度 v] :: custom-sensing)

选择报告的单位,

图片显示了一个代码块,其中“PusherRotation”组件的位置可以用“度”或“圈”来检查。下拉菜单当前设置为“度”,但也提供了切换到“圈”作为测量单位的选项。

在这个例子中,推动器将把环从臂上推下来,然后以度为单位报告电机的位置。

当开始
[Make lower Pusher position the new 0 degrees rotation position.]
[PusherMotor v] [更低 v] 转 [270] [度 v] ▶
打印 ([PusherRotation v] 转位 [度 v] :: custom-sensing) ▶

GPS Sensing#

GPS 位置#

GPS 位置 模块使用 GPS(游戏定位系统™)传感器报告机器人转弯参考点与场地中心的位置偏移。

([PusherRotation v] [X v] 位置 [毫米 v])

选择要报告的 X 轴或 Y 轴。

图片展示了一个代码块,允许用户在 X 和 Y 坐标之间进行选择,以便从 GPS 传感器检索位置。下拉菜单中选定的选项是“X”,但也可以选择“Y”。

选择报告偏移值的单位,毫米 (MM) 还是英寸。

图片显示了一个代码块,允许用户选择 GPS 位置的测量单位,具体来说是毫米 (mm) 和英寸。下拉菜单中的当前选择是“mm”,表示位置将以毫米为单位进行测量。

GPS 航向#

GPS 航向 块使用 GPS(游戏定位系统™)传感器根据 GPS 传感器从 VEX GPS 场代码读取的数据报告机器人当前所面对的航向。

GPS 航向报告范围从 0.00 到 359.99 度。

([GPS v] 归位角度值)

AI Vision Sensing#

拍摄快照#

拍摄快照块将从 AI 视觉传感器捕获当前图像,以便进行处理和分析以进行 AI 分类。

AI 分类为移动目标、红环和蓝环。

[AIVision v] 拍照 [AI Classifications v]

所有后续的 AI 视觉传感器模块都依赖于最新快照的数据。为了确保您使用最新的信息,定期拍摄新的快照至关重要。每次新的快照都会刷新所有 AI 视觉传感器模块可用的数据,使它们能够处理来自传感器环境的最新视觉信息。

在尝试访问上次快照存储的数据之前,请务必检查是否检测到 AI 分类。操作方法如下:

  1. 拍摄快照之后,用如果块包裹你的 AI 视觉块。

  2. 使用对象存在吗?块作为如果块的条件。

  3. 这将检查在尝试从上次拍摄的快照中提取任何数据之前是否检测到 AI 分类。

在此示例中,拍摄了快照并将检测到的最大 AI 分类的宽度和高度打印到打印控制台。

  • 默认情况下,对象按大小进行索引,最大的对象位于索引 1。

  • AI 视觉传感器在快照后自动选择最大的物体(索引 1)。

当开始
[Spin the Arm Motor up so that the AI Vision Sensor is not blocked.]
[ArmMotor v] [向上 v] 转 [270] [度 v] ▶
[AIVision v] 拍照 [AI Classifications v]
[Check if any AI Classifications were detected in the last snapshot.]
如果 <[AIVision v] 对象存在?> 那么
[Only if an AI Classification is detected, then print data from the largest AI Classification.]
打印 [Largest object's width:] ▶
打印 ([AIVision v] 对象 [宽 v]) ◀ 并设定光标为下一行
结束

AI分类是#

如果检测到指定的 AI 分类,则 AI 分类是 块将报告。

<[AIVision v] AI Classification is [MobileGoal v]?>

选择在最后一张快照中检测的 AI 分类。

图片中的方块写着:“AI Vision AI Classification 是 MobileGoal 吗?” “MobileGoal” 旁边的下拉菜单已打开,显示可选择“MobileGoal”、“RedRing”或“BlueRing”的选项。

在尝试访问上次快照存储的数据之前,请务必检查是否检测到 AI 分类。操作方法如下:

  1. 拍摄快照之后,用如果块包裹你的 AI 视觉块。

  2. 使用对象存在吗?块作为如果块的条件。

  3. 这将检查在尝试从上次拍摄的快照中提取任何数据之前是否检测到 AI 分类。

在此示例中,拍摄快照后,代码将检查是否检测到任何移动目标。

当开始
[Spin the Arm Motor up so that the AI Vision Sensor is not blocked.]
[ArmMotor v] [向上 v] 转 [270] [度 v] ▶
[AIVision v] 拍照 [AI Classifications v]
[Check if any AI Classifications were detected in the last snapshot.]
如果 <[AIVision v] 对象存在?> 那么
[If any AI Classification is detected, check if any of them are a Mobile Goal.]
如果 <[AIVision v] AI Classification is [MobileGoal v]?> 那么
打印 [Mobile Goal is detected.] ▶
否则
打印 [Mobile Goal is not detected.] ▶
结束
结束

设置对象项#

设置对象项 块将从检测到的对象中设置(您想要了解更多信息的对象)的对象项。默认情况下,项目开始时对象项设置为 1。

设定 [AIVision v] 对象标号为 [1]

在尝试访问上次快照存储的数据之前,请务必检查是否检测到 AI 分类。操作方法如下:

  1. 拍摄快照之后,用如果块包裹你的 AI 视觉块。

  2. 使用对象存在吗?块作为如果块的条件。

  3. 这将检查在尝试从上次拍摄的快照中提取任何数据之前是否检测到 AI 分类。

在此示例中,拍摄快照后,当前对象索引被设置为检测到的第二大对象,并且其高度被打印到打印控制台。

当开始
[Spin the Arm Motor up so that the AI Vision Sensor is not blocked.]
[ArmMotor v] [向上 v] 转 [270] [度 v] ▶
[AIVision v] 拍照 [AI Classifications v]
[Check if any AI Classifications were detected in the last snapshot.]
如果 <[AIVision v] 对象存在?> 那么
[Print the second-largest object's height.]
设定 [AIVision v] 对象标号为 [2]
打印 ([AIVision v] 对象 [高 v]) ◀ 并设定光标为下一行
结束

对象计数#

对象计数 块将从检测到的对象中设置(您想要了解更多信息的对象)的对象项。默认情况下,项目开始时的对象项设置为 1。

([AIVision v] 对象数目)

在尝试访问上次快照存储的数据之前,请务必检查是否检测到 AI 分类。操作方法如下:

  1. 拍摄快照之后,用如果块包裹你的 AI 视觉块。

  2. 使用对象存在吗?块作为如果块的条件。

  3. 这将检查在尝试从上次拍摄的快照中提取任何数据之前是否检测到 AI 分类。

在这个例子中,代码将检查快照后是否检测到 AI 分类,如果检测到,将打印检测到了多少个 AI 分类。

当开始
[Spin the Arm Motor up so that the AI Vision Sensor is not blocked.]
[ArmMotor v] [向上 v] 转 [270] [度 v] ▶
[AIVision v] 拍照 [AI Classifications v]
[Check if any AI Classifications were detected in the last snapshot.]
如果 <[AIVision v] 对象存在?> 那么
打印 ([AIVision v] 对象数目) ◀ 并设定光标为下一行
结束

对象存在#

如果 AI 视觉传感器检测到 AI 分类,则对象存在块将进行报告。

<[AIVision v] 对象存在?>

在尝试访问上次快照存储的数据之前,请务必检查是否检测到 AI 分类。操作方法如下:

  1. 拍摄快照之后,用如果块包裹你的 AI 视觉块。

  2. 使用对象存在吗?块作为如果块的条件。

  3. 这将检查在尝试从上次拍摄的快照中提取任何数据之前是否检测到 AI 分类。

在这个例子中,代码将检查快照后是否检测到 AI 分类,如果检测到,将打印检测到了多少个 AI 分类。

当开始
[Spin the Arm Motor up so that the AI Vision Sensor is not blocked.]
[ArmMotor v] [向上 v] 转 [270] [度 v] ▶
[AIVision v] 拍照 [AI Classifications v]
[Check if any AI Classifications were detected in the last snapshot.]
如果 <[AIVision v] 对象存在?> 那么
打印 ([AIVision v] 对象数目) ◀ 并设定光标为下一行
结束

人工智能视觉对象#

AI 视觉对象块将报告上次使用拍摄快照块时的 AI 分类信息。

([AIVision v] 对象 [宽 v])

选择要报告的 AI 分类属性:

  • 宽度:AI 分类的像素宽度。

  • 高度:AI 分类的高度(以像素为单位)。

  • centerX:AI 分类正中心的 X 坐标。

  • centerY:AI 分类正中心的 Y 坐标。

  • originX:AI分类左上角的X坐标。

  • originY:AI分类左上角的Y坐标。

图片顶部水平排列着一组蓝色圆形按钮,分别标有“AIVision”、“对象”和“宽度”。在“宽度”按钮下方,展开了一个下拉菜单,显示一系列选项,包括“宽度”(已选中)、“高度”、“中心X”、“中心Y”、“原点X”和“原点Y”。

在尝试访问上次快照存储的数据之前,请务必检查是否检测到 AI 分类。操作方法如下:

  1. 拍摄快照之后,用如果块包裹你的 AI 视觉块。

  2. 使用对象存在吗?块作为如果块的条件。

  3. 这将检查在尝试从上次拍摄的快照中提取任何数据之前是否检测到 AI 分类。

当开始
[Spin the Arm Motor up so that the AI Vision Sensor is not blocked.]
[ArmMotor v] [向上 v] 转 [270] [度 v] ▶
[AIVision v] 拍照 [AI Classifications v]
[Check if any AI Classifications were detected in the last snapshot.]
如果 <[AIVision v] 对象存在?> 那么
[Only if an AI Classification is detected, then print data from the largest AI Classification.]
打印 [Largest object's width:] ▶
打印 ([AIVision v] 对象 [宽 v]) ◀ 并设定光标为下一行
结束