机器人专用积木#

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

运动#

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

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

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

Spin#

Spin 块用于无限旋转电机。

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

该块显示用于使标有“ArmMotor”的电机沿“向上”方向旋转的命令。

选择要使用的电机。

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

选择电机移动的方向。

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

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

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

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

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

图片展示了一系列可视化编码块,这些块代表了使用“ArmMotor”抬起手臂,然后移动到移动目标的代码。代码以“启动时”块开头,后面跟着一条注释:“在移动到移动目标之前抬起手臂”。下一个块指示“ArmMotor”朝“向上”方向“旋转”。接下来是一个“等待”块,用于暂停执行“1 秒”。最后,代码包含一个“停止”块,用于停止“ArmMotor”。

Spin for#

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

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

图片展示了一个可视化编程模块,它代表了控制“ArmMotor”的命令。该模块旨在使电机沿“向上”方向“旋转”90度。

选择要使用的电机。

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

选择电机移动的方向。

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

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

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

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

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

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

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

图片显示了用于控制“ArmMotor”的编码模块。该模块设置为使电机沿“向上”方向旋转 90 度。此外,该模块还包含一个选项,指示电机旋转后不应“等待”,这意味着代码将在电机开始旋转指定的 90 度后立即继续执行下一条指令。

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

图片展示了一个设置为在代码启动时运行的编程模块。该模块指示“ArmMotor”朝“向上”方向旋转 350 度。

Spin to position#

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

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

图片展示了一个控制“ArmMotor”旋转到特定位置的编程模块。电机被设置为旋转到 90 度的位置。

选择要使用的电机。

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

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

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

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

图片显示了一个代码块,其中“ArmMotor”被编程为旋转至 90 度的位置。该操作设置为在电机到达该位置后立即执行,无需等待电机到达即可继续执行下一个命令。

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

图片展示了一个代码块,它首先将“ArmMotor”抬升至 350 度的位置。此操作的目的是防止手臂等待 AI 视觉传感器。该命令在代码启动时触发。

Stop Motor#

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

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

该图显示了命令“ArmMotor”停止的编码块。

选择要使用的电机。

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

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

图片展示了一系列可视化编码块,这些块代表了使用“ArmMotor”抬起手臂,然后移动到移动目标的代码。代码以“启动时”块开头,后面跟着一条注释:“在移动到移动目标之前抬起手臂”。下一个块指示“ArmMotor”朝“向上”方向“旋转”。接下来是一个“等待”块,用于暂停执行“1 秒”。最后,代码包含一个“停止”块,用于停止“ArmMotor”。

Set Motor position#

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

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

图片显示了用于将“ArmMotor”的位置设置为 0 度的编码块。

选择要使用的电机。

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

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

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

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

图片显示了一个以“启动时”块开头的编码序列,表示这些命令将在代码启动时执行。序列中的第一个块命令“ArmMotor”旋转到 350 度的位置。然后,第二个块将“ArmMotor”位置设置为 0 度,使新位置成为参考点或“0 度”位置。

Set Motor velocity#

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

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

该图显示了一个编码块,它将“ArmMotor”的速度设置为 50%。

选择要使用的电机。

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

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

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

图片展示了一组用于在代码启动时控制“ArmMotor”的编码块。第一个块将“ArmMotor”的速度设置为 100%,确保其全速移动。第二个块指示“ArmMotor”向上旋转 350 度。

Set Motor timeout#

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

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

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

 图中显示了一个代码块,它将“ArmMotor”的超时时间设置为 1 秒。这意味着电机将在运行 1 秒后自动停止,无论它是否完成了预期动作。

选择要使用的电机。

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

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

图片展示了一个以“启动时”模块开头的编程序列,表示代码将在启动时运行。第一个模块将“ArmMotor”的超时设置为 1 秒。这意味着 1 秒后,无论 ArmMotor 正在执行什么操作,它都会自动停止。第二个模块指示 ArmMotor 向上旋转 5 圈。此命令将使电机沿指定方向旋转给定的圈数。第一个模块中设置的超时确保电机在 1 秒后停止,即使它尚未完成 5 圈。

传感#

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

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

Motor Sensing#

电机已完成#

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

图中显示了一个标有“ArmMotor 完成了吗?”的块。该块用于检查“ArmMotor”是否已完成其任务,例如到达目标位置或完成旋转命令。

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

图片显示了一个标有“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 正在旋转?”的模块,其中包含一个用于选择电机的下拉菜单。下拉菜单当前已选中“ArmMotor”。该模块用于检查“ArmMotor”或其他选定的电机当前是否正在旋转。

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

图片显示了一个标有“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 位置(度)”的模块。该模块用于检索“ArmMotor”的当前位置并以度为单位返回。下拉菜单允许您选择其他电机或更改测量单位,但目前已选择“ArmMotor”和“度”。

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

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

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

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

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

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

图片展示了一个基于块的编码序列,以“启动时”块开头。该代码旨在升起 ArmMotor,以确保其不会遮挡 AI 视觉传感器。该序列首先指示 ArmMotor 朝“向上”方向旋转。然后,代码会等待 ArmMotor 的位置(以度为单位)超过 300 度。一旦 ArmMotor 超过 300 度,电机就会停止,确保 ArmMotor 升至避开 AI 视觉传感器的位置后再停止。

电机转速#

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

图片展示了一个用于检索 ArmMotor 速度百分比的模块。该模块是基于模块的编程界面的一部分,您可以在其中选择不同的电机并以百分比形式测量其速度。ArmMotor 可从下拉菜单中选择,并将速度单位设置为百分比。

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

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

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

Rotation Sensing#

设置旋转位置#

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

图片展示了一个基于块的编程界面中的块,该界面允许用户设置旋转传感器或电机的位置。该块当前配置为将“PusherRotation”设置为 0 度。

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

该图显示了一个基于块的编码序列,其中代码设置为在启动时执行两个操作。首先,它旋转“PusherMotor”并将其降低 270 度。执行此操作后,代码将“PusherRotation”设置为 0 度的新位置,本质上使较低的 Pusher 位置成为 0 度旋转的新参考点。

旋转角度#

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

该图显示了一个编码块,用于检索“PusherRotation”的当前角度(以度为单位)。

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

图片显示了一系列代码块。代码首先为下部推进器机构设置一个新的零度旋转位置。“旋转”块控制“推进器电机”将机构降低 270 度。执行此操作后,“打印”块将检索并打印“推进器旋转”的当前角度(以度为单位),从而提供有关推进器电机精确旋转位置的反馈。

旋转位置#

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

图中显示了一个标有“PusherRotation 位置(度)”的编码块。此块用于检索“PusherRotation”组件的当前位置,并以度为单位表示。

选择报告的单位,

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

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

图片展示了一个代码块序列,其中“PusherMotor”设置为降低270度。一旦电机旋转到这个位置,代码块就会打印“PusherRotation”的位置(以度为单位)。这个序列的目的似乎是为下部推进器设置新的零度旋转位置,以确保后续操作能够准确跟踪起始位置。

GPS Sensing#

GPS 位置#

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

图片显示了一个标有“GPS 位置 X 坐标(毫米)”的编码块。该块用于检索 GPS 传感器位置的 X 坐标(以毫米为单位)。

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

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

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

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

GPS 航向#

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

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

图片显示了一个用于获取 GPS 航向(以度为单位)的编码块。该块允许用户选择 GPS 传感器,然后检索航向信息,该信息指示机器人或物体所面向的方向(以度为单位)。

AI Vision Sensing#

拍摄快照#

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

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

该块显示“拍摄 AI 视觉的 AI 分类快照”。它涉及使用 AI 视觉传感器拍摄快照,尤其专注于 AI 分类。

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

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

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

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

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

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

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

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

图中,积木呈现的代码在代码启动时生效,使机械臂电机向上旋转 270 度,以防止 AI 视觉传感器受到遮挡。使用专注于 AI 分类的 AI 视觉传感器拍摄快照,代码会检查上次快照中是否检测到任何 AI 分类。如果 AI 视觉传感器检测到物体,代码会打印检测到的最大物体的宽度。

AI分类是#

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

图片中的区块显示:“AI Vision AI 分类是 MobileGoal?” 该区块的结构用于检查 AI Vision 传感器是否检测到了被归类为“MobileGoal”的物体。

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

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

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

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

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

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

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

此图显示了一个编码序列,其中臂电机设置为旋转 270 度,以确保 AI 视觉传感器不受遮挡。然后,AI 视觉传感器拍摄快照,检查是否检测到任何 AI 分类。如果检测到任何物体,该序列将检查该物体是否被归类为移动目标。

设置对象项#

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

该图显示了将 AI Vision 系统的对象项设置为 1 的编码块。

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

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

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

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

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

该图展示了一个基于块的编码序列。代码首先将 Arm 电机向上旋转 270 度,以免遮挡 AI 视觉传感器。接下来,AI 视觉传感器拍摄 AI 分类的快照。然后,程序检查上次快照中是否检测到任何 AI 分类。如果存在对象,程序会将 AI 视觉对象的 item 设置为 2,表示第二大对象。最后,程序打印该对象的高度,并将光标设置到下一行。

对象计数#

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

图片显示了一个标有“AIVision 对象计数”的块。该块开头的下拉菜单设置为“AIVision”,该块将返回 AI Vision 传感器检测到的物体数量。

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

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

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

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

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

该图展示了用于执行与 AI 视觉传感器交互的程序的一系列块。该程序首先将手臂电机向上旋转 270 度,以避免等待 AI 视觉传感器。电机完成运动后,将拍摄 AI 分类的快照。然后,程序检查 AI 视觉传感器是否检测到任何物体。如果检测到物体,程序将打印检测到的物体的数量,并将光标移动到下一行。

对象存在#

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

该图显示了一个块,用于检查 AI 视觉传感器检测到的物体是否存在。该块输出一个布尔值,指示是否检测到了物体。

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

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

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

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

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

该图展示了用于执行与 AI 视觉传感器交互的程序的一系列块。该程序首先将手臂电机向上旋转 270 度,以避免等待 AI 视觉传感器。电机完成运动后,将拍摄 AI 分类的快照。然后,程序检查 AI 视觉传感器是否检测到任何物体。如果检测到物体,程序将打印检测到的物体的数量,并将光标移动到下一行。

人工智能视觉对象#

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

该图显示了一个用于检索 AI 视觉传感器检测到的物体宽度的块。该块包含下拉菜单,用于选择 AI 视觉传感器并将测量类型指定为宽度。它输出检测到的物体的宽度值。

选择要报告的 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 分类。

图中,积木呈现的代码在代码启动时生效,使机械臂电机向上旋转 270 度,以防止 AI 视觉传感器受到遮挡。使用专注于 AI 分类的 AI 视觉传感器拍摄快照,代码会检查上次快照中是否检测到任何 AI 分类。如果 AI 视觉传感器检测到物体,代码会打印检测到的最大物体的宽度。