机器人专用模块#

介绍#

GO 竞赛机器人包括机械臂电机控制装置和机器人专用传感模块。

所有标准 VEXcode VR 模块均可在 GO 竞赛 - 火星数学探险 游乐场中使用。

以下是所有可用的机器人专用模块列表:

驱动系统——控制机器人的移动和转向。

  • 操作

    • drive — 使机器人无限向前或向后移动。

    • 驱动 — 使机器人向前或向后移动指定的距离。

    • turn — 使机器人永远向左或向右转弯。

    • turn for — 使机器人向左或向右旋转指定的角度数。

    • 转向航向 — 将机器人转向面向特定航向。

    • 转向旋转 — 将机器人转向指定的旋转方向。

    • 停止驾驶 — 停止机器人的移动。

  • 设置

  • 价值观

运动控制 – 控制机器人手臂电机的移动和跟踪。

感知——利用机器人的传感器。

  • 眼部传感器

  • 陀螺仪传感

本页示例使用 Playground 的默认起始位置。

传动系统#

动力系统控制着VR机器人的行驶和转向。动力系统可以前进或后退、左转或右转、转向特定航向并跟踪其旋转。

行动#

驾驶#

驱动 模块使机器人能够无限向前或向后移动。机器人将持续移动,直到收到其他指令,例如转向或停止。

驱动 [向前 v]

参数

描述

方向

机器人移动方向:前进后退

例子

当开始 :: hat events
[Drive forward, then stop.]
驱动 [向前 v]
等待 (2) 秒
驱动停止

驱动#

驱动堆栈模块控制机器人前进或后退一段特定距离。程序会等待机器人完成移动后,才会运行堆栈中的下一个模块。

驱动 [向前 v] (200) [毫米 v] ▶

参数

描述

方向

机器人移动方向:前进后退

距离

机器人行驶的距离。可以是整数,也可以是小数。

单元

距离单位:mm(毫米)或英寸

不要等待

选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。

例子

当开始 :: hat events
[Drive forward.]
驱动 [向前 v] (500) [毫米 v] ▶

转动#

转向 积木块会让机器人无限向左或向右转向。机器人会一直转向,直到收到其他动作指令,例如行驶或停止。

[右 v] 转

参数

描述

方向

机器人转向的方向:向左向右

例子

当开始 :: hat events
[Turn right, then stop.]
[右 v] 转
等待 (2) 秒
驱动停止

转向#

“转向”堆栈模块会使机器人向左或向右旋转指定的角度。旋转角度是相对于机器人的当前位置而言的。程序会等待机器人完成旋转后,才会运行堆栈中的下一个模块。

[右 v] 转 (90) 度 ▶

参数

描述

方向

机器人转向的方向:向左向右

角度

机器人旋转的角度数。可以是整数,也可以是小数。

不要等待

选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。

例子

当开始 :: hat events
[Turn left, then turn around to the right.]
[左 v] 转 (90) 度 ▶
[右 v] 转 (180) 度 ▶

转向标题#

航向角是指机器人面向的方向,以度为单位。转向航向角 代码块可以将机器人转向 -359 度到 359 度之间的特定航向角。机器人会选择到达目标航向角的最短路径。

起始航向为0度。

该项目将等待机器人完成转向后,才会运行堆栈中的下一个模块。

归位至 (90) 度 ▶

参数

描述

标题

机器人应面向的航向,范围从 -359 度到 359 度。

不要等待

选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。

例子

当开始 :: hat events
[Turn to face the cardinal directions.]
归位至 (90) 度 ▶
等待 (2) 秒
归位至 (180) 度 ▶
等待 (2) 秒
归位至 (270) 度 ▶
等待 (2) 秒
归位至 (0) 度 ▶
等待 (2) 秒

转向旋转#

旋转到旋转堆栈块使机器人旋转到特定方向。

旋转角度是指机器人转动的幅度,以度为单位。在项目开始时,旋转角度值设置为 0 度。也可以使用 set drive rotation 代码块来设置旋转角度。

旋转角度是绝对值。这意味着转弯方向取决于机器人当前的旋转角度。向右转弯会增加旋转角度,向左转弯会减少旋转角度。

例如,如果机器人从0度开始,你将其旋转720度,它会向右转两次。如果你再将其旋转360度,它会向左转一次,因为360小于720。

该项目将等待机器人完成转向后,才会运行堆栈中的下一个模块。

转向至 (90) 度 ▶

参数

描述

旋转

机器人将要旋转的角度值,以度为单位。可以是整数或小数。

不要等待

选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。

例子

当开始 :: hat events
[Turn left, then spin in a circle clockwise and face right.]
转向至 (-90) 度 ▶
等待 (2) 秒
转向至 (450) 度 ▶

停止驾驶#

停止驱动堆栈块会停止机器人的运动。

驱动停止

参数

描述

此代码块没有参数。

例子

当开始 :: hat events
[Drive forward, then stop.]
驱动 [向前 v]
等待 [4] 秒
驱动停止

设置#

设定驱动速度#

设置驱动速度 代码块告诉机器人以多快的速度行驶。百分比越高,机器人行驶速度越快;百分比越低,机器人行驶速度越慢。

每个项目开始时,机器人默认以 50% 的速度行驶。

**注意:**速度越高,机器人行驶速度越快,但精度可能越低;速度越低,机器人行驶速度越慢,但精度可能越高。

设定驱动速度为 (50) [% v]

参数

描述

速度

行驶速度,范围从 0% 到 100%。

单元

速度单位:%

例子

当开始 :: hat events
[Drive forward at the default velocity.]
驱动 [向前 v] (100) [毫米 v] ▶
等待 (1) 秒
[Move slower.]
设定驱动速度为 (20) [% v]
驱动 [向前 v] (100) [毫米 v] ▶
等待 (1) 秒
[Move faster.]
设定驱动速度为 (100) [% v]
驱动 [向前 v] (100) [毫米 v] ▶
等待 (1) 秒

设定转弯速度#

设置转弯速度 代码块告诉机器人转弯的速度。百分比越高,机器人转弯越快;百分比越低,机器人转弯越慢。

每个项目开始时,机器人默认以 50% 的速度旋转。

**注意:**速度越高,机器人转弯越快,但精度可能越低;速度越低,机器人转弯越慢,但精度可能越高。

设定转向速度为 (50) [% v]

参数

描述

速度

转弯速度从 0% 到 100%。

单元

速度单位:%

例子

当开始 :: hat events
[Turn at default velocity.]
[右 v] 转 (100) 度 ▶
等待 (1) 秒
[Turn slower.]
设定转向速度为 (20)%
[右 v] 转 (100) 度 ▶
等待 (1) 秒
[Turn faster.]
设定转向速度为 (100)%
[右 v] 转 (100) 度 ▶
等待 (1) 秒

设置驱动航向#

航向角是指机器人朝向的方向,以度为单位。设置驱动航向堆栈块会将机器人的当前航向角更改为新的航向角值。

例如,如果机器人转向右侧,将航向设置为 0 度,则该右侧位置将成为新的 0 度航向。然后,机器人可以根据新的航向转向其他位置。

设定底盘归位至 (0) 度

参数

描述

标题

要设置的机器人航向值(以度为单位)。

例子

当开始 :: hat events
[Turn to the left.]
设定底盘归位至 (90) 度
归位至 (0) 度 ▶

设置驱动旋转#

旋转角度是指机器人转动的程度,以度为单位。在项目开始时,旋转角度值设置为 0 度。设置驱动旋转角度 代码块会将机器人的当前旋转角度更改为新值。

例如,如果机器人向右转了两圈,它的旋转角度将为 720 度。将旋转角度设置为 0 度会将旋转角度从 720 度重置为 0 度。然后,机器人可以根据这个新的旋转角度进行旋转。

设定底盘转向至 (0) 度

参数

描述

旋转

机器人旋转角度的设定值,单位为度。可以是整数或小数。

例子

当开始 :: hat events
[Spin counterclockwise two times.]
设定底盘转向至 (720) 度
转向至 (0) 度 ▶

设置驱动超时#

设置驱动超时 代码块用于设置机器人尝试完成一次动作的秒数。如果机器人无法在规定时间内完成,它将停止尝试并执行代码块中的下一个。这样可以防止机器人卡在某个动作上。

设定驱动超时为 (1) 秒

参数

描述

时间

机器人尝试完成一次动作的秒数。该值可以是整数或小数。

例子

启动时,将行驶时间限制为 1 秒,然后旋转 90 度。#
当开始 :: hat events
[Drive forward for 1 second, then turn.]
设定驱动超时为 (1) 秒
驱动 [向前 v] (25) [英寸 v] ▶
[右 v] 转 (90) 度 ▶

价值观#

驾驶已完成#

“驱动完成”布尔模块用于报告机器人是否已停止移动。这可用于根据机器人的移动状态来控制其他行为的执行时间。

  • 正确 — 机器人已停止移动。

  • 错误 — 机器人仍在移动。

该模块与具有 and don’t wait 参数的传动系统模块配合使用。

<驱动已结束?>

参数

描述

此代码块没有参数。

例子

当开始 :: hat events
[Start spinning when the drive is complete.]
驱动 [向前 v] (200) [毫米 v] ◀ 并且不等待
等到 <驱动已结束?>
[右 v] 转 (360) 度 ▶

车辆正在行驶#

“驱动正在移动”布尔模块用于报告机器人是否正在移动。这可用于根据机器人的移动状态来控制其他行为的执行时间。

  • 正确 — 机器人正在移动。

  • 错误 — 机器人没有移动。

该模块与具有 and don’t wait 参数的传动系统模块配合使用。

<驱动进行中?>

参数

描述

此代码块没有参数。

例子

当开始 :: hat events
[Print that the robot is moving while it is still driving.]
驱动 [向前 v] (200) [毫米 v] ◀ 并且不等待
当 <驱动进行中?>
打印 [Still Moving...] ▶
等待 (0.1) 秒
清屏
结束
打印 [Done!] ▶

行驶方向#

航向角是指机器人朝向的方向,以度为单位。驱动航向报告模块会报告 0 到 359.99 度的航向角。

机器人的初始航向角为0度。

(底盘归位角度值)

参数

描述

此代码块没有参数。

例子

当开始 :: hat events
[Display the heading after turning.]
[右 v] 转 (450) 度 ▶
在屏幕上打印 (底盘归位角度值)◀ 并设定光标为下一行

驱动旋转#

旋转角度是指机器人转动的程度,以度为单位。项目开始时,旋转角度值设置为 0 度。“驱动旋转”报告模块会报告机器人当前的旋转角度。

向右转会增加旋转角度,向左转会减少旋转角度。例如,向右转两圈,旋转角度将达到 720 度。

(底盘转向角度值)

参数

描述

此代码块没有参数。

例子

当开始 :: hat events
[Display the rotation after turning.]
[右 v] 转 (450) 度 ▶
在屏幕上打印 (底盘转向角度值)◀ 并设定光标为下一行

驱动速度#

驱动速度报告模块会报告机器人的行驶速度。

(驱动速度 [% v])

参数

描述

单元

速度单位:%

例子

当开始 :: hat events
[Display the velocity after driving.]
驱动 [向前 v] (200) [毫米 v] ▶
在屏幕上打印 (驱动速度 [% v])◀ 并设定光标为下一行

运动#

GO 竞赛高级 2.0 机器人利用手臂电机来升降手臂,从而能够拾取、举起和搬运物体。

行动#

旋转马达#

旋转电机堆栈模块会使机械臂电机持续旋转,直至接收到其他指令,例如改变旋转方向或停止。

[ArmMotor v] [向上 v] 转

参数

描述

发动机

要旋转的电机:ArmMotor

方向

电机旋转的方向:向上向下

例子

当开始
[Raise the Arm Motor, then stop.]
[ArmMotor v] [向上 v] 转
等待 (1) 秒
[ArmMotor v] 停止

用于旋转马达#

“旋转电机”堆叠模块会使电机旋转一段特定距离。旋转距离是相对于电机当前位置的。程序会等待电机旋转完毕后,才会运行堆叠中的下一个模块。

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

参数

描述

发动机

要旋转的电机:ArmMotor

方向

电机旋转的方向:向上向下

距离

电机旋转的距离。角度使用整数。圈数可以使用整数或小数。

单元

距离单位:

不要等待

选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。

例子

当开始
[Raise the Arm Motor by 200 degrees.]
spin [ArmMotor v] [up v] for [200] [degrees v] ▶

旋转电机定位#

旋转电机定位 堆栈模块使电机旋转到特定位置。

电机的位置是指它旋转的距离,以圈数来衡量。一等于360度。在项目开始时,电机位置设置为0度。也可以使用set motor position代码块来设置电机位置。

位置值是绝对值。这意味着旋转方向取决于电机的当前位置。

例如,如果电机从0度开始旋转到720度,它将正转两圈。如果它接着旋转到360度,它将反转一圈,因为360小于720。

spin [ArmMotor v] to position [90] [degrees v] ▶

参数

描述

发动机

要旋转的电机:ArmMotor

位置

电机旋转到的位置值。角度使用整数。圈数可以使用整数或小数。

单元

位置单位:

不要等待

选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。

例子

当开始
[Move the Arm Motor to 180 degrees.]
spin [ArmMotor v] to position [180] [degrees v] ▶

停止电机#

停止电机 堆栈块停止选定的电机。

[ArmMotor v] 停止

参数

描述

发动机

要停止的电机:ArmMotor

例子

当开始
[Raise the Arm Motor, then stop.]
[ArmMotor v] [向上 v] 转
等待 (1) 秒
[ArmMotor v] 停止

设置#

设定电机速度#

“设置电机转速”模块用于控制电机的转速。百分比越高,电机转速越快;百分比越低,电机转速越慢。

set [ArmMotor v] velocity to [50] [% v]

参数

描述

发动机

设置电机速度的参数为:ArmMotor

速度

电机旋转的速度。百分比使用0%到100%之间的整数。

单元

速度单位:%

例子

当开始
[Set the Arm Motor velocity to 100%.]
set [ArmMotor v] velocity to [100] [% v]
spin [ArmMotor v] [up v] for [1] [turns v] ▶

设置电机超时#

设置电机超时 代码块用于设置电机尝试完成一次运动的超时时间。如果电机无法在规定时间内完成,它将停止尝试并执行代码块堆栈中的下一个代码块。这样可以防止电机卡在某个运动中。

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

参数

描述

发动机

设置电机超时时间为:ArmMotor

时间

电机尝试完成一次运动的秒数。该值可以是整数或小数。

例子

当开始
[Limit Arm Motor movement to 1 second.]
设定 [ArmMotor v] 超时为 [1] 秒
spin [ArmMotor v] [up v] for [3] [turns v] ▶

位置#

电机位置#

电机的位置是指它旋转的距离,以圈数来衡量。一等于360度。电机位置报告模块会报告电机的当前位置。

项目开始时,电机位置设置为 0 度。如果电机正向旋转一周,则位置为 360 度或 1 圈。如果电机反向旋转,则位置为负值。

([ArmMotor v] 转位 [度 v] :: custom-motion)

参数

描述

发动机

用于报告以下部件位置的电机:ArmMotor

单元

报告电机位置的单位:

例子

当开始
[Print the Arm Motor position.]
打印 ([ArmMotor v] 转位 [度 v] :: custom-motion) ▶

设置电机位置#

电机的位置是指它旋转的距离,以圈数来衡量。一等于360度。设置电机位置堆栈块会将电机的当前位置更改为新值。

例如,如果电机旋转了 180 度,将其位置设置为 0 度会将该位置从 180 度重置为 0 度。然后,电机可以根据这个新值旋转到其他位置。

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

参数

描述

发动机

用于设置以下部件位置的电机:ArmMotor

位置

要设置的电机位置值。角度使用整数。圈数可以使用整数或小数。

单元

位置单位:

例子

当开始
[Set the Arm Motor to 90 degrees, then return to 0 degrees.]
set [ArmMotor v] position to [90] [degrees v]
[ArmMotor v] 转至 [0] [度 v] ▶

价值观#

电机已完成#

“电机已完成”布尔模块用于报告电机是否已停止运转。这可用于根据电机的运转状态来控制其他行为的执行时间。

  • 正确 — 电机已停止运转。

  • 错误 — 电机仍在运转。

该模块与以下具有and don’t wait参数的运动模块配合使用:spin motor forspin motor to position

<[ArmMotor v] 已结束?>

参数

描述

发动机

用于报告是否已停止运动的电机:ArmMotor

例子

当开始
[Check when the Arm Motor has finished moving.]
[ArmMotor v] [向上 v] 转 [180] [度 v] ◀ 并且不等待
等待 (0.1) 秒
如果 <[ArmMotor v] 已结束?> 那么
print [Arm Motor is done.] ▶
结束

电机正在旋转#

“电机是否旋转”布尔模块用于报告电机是否正在旋转。这可以根据电机的运动状态来控制其他行为的执行时间。

  • 正确——电机正在旋转。

  • 错误 — 电机没有转动。

该模块与以下具有and don’t wait参数的运动模块配合使用:spin motor forspin motor to position

<[ArmMotor v] 正在转?>

参数

描述

发动机

用于报告电机是否旋转的参数:ArmMotor

例子

当开始
[Check whether the Arm Motor is moving.]
[ArmMotor v] [向上 v] 转 [180] [度 v] ◀ 并且不等待
等待 (0.1) 秒
如果 <[ArmMotor v] 正在转?> 那么
print [Arm Motor is spinning.] ▶
结束

电机速度#

电机速度报告模块以百分比形式报告电机的旋转速度,范围从 -100% 到 100%。

正值表示电机正转,负值表示电机反转。

([ArmMotor v] velocity in [% v] :: custom-motion)

参数

描述

发动机

要报告速度的电机:ArmMotor

单元

电机速度的报告单位:%

例子

当开始
[Print the Arm Motor velocity.]
print ([ArmMotor v] velocity in [% v] :: custom-motion) ▶

传感#

虚拟英雄机器人还可以访问标准的大脑和驱动系统传感模块。

眼睛#

眼睛发现了一个物体#

Eye found a object 布尔模块报告 Eye 传感器是否在范围内检测到物体。

  • 正确 — 眼部传感器检测到物体。

  • 错误 — 眼部传感器未检测到物体。

<[FrontEye v] found an object?>

参数

描述

此代码块没有参数。

例子

当开始
[Check whether the Front Eye Sensor detects an object.]
if <[FrontEye v] found an object?> then
print [Object detected!] ▶
否则
print [No object detected.] ▶
结束

眼睛能感知颜色#

眼睛检测颜色布尔模块根据检测到的色调值报告眼睛传感器是否检测到特定颜色。

  • 正确 — 眼部传感器检测到所选颜色。

  • 错误 — 眼睛传感器未检测到所选颜色。

要检查眼睛传感器检测到的确切色调值,请使用 眼睛色调 报告器模块。

<[FrontEye v] 测得 [红色 v]?>

参数

描述

颜色

眼动传感器可检测的颜色:

  • 红色 – 色调值介于 340° 和 20° 之间。2
  • 绿色** – 色调值介于 75° 和 154° 之间。4
  • 蓝色** – 色调值介于 160° 和 254° 之间。6
  • 无** – 未检测到任何可用颜色

例子

当开始
[Check whether the Front Eye Sensor detects blue.]
if <[FrontEye v] detects [blue v]?> then
print [Blue object detected.] ▶
结束

眼睛亮度#

眼睛亮度报告模块会报告有多少光线反射回眼睛传感器,以 0% 到 100% 的百分比表示。

百分比越高,意味着反射回眼部传感器的光线越多;百分比越低,意味着反射回的光线越少。

([FrontEye v] 亮度百分比)

参数

描述

此代码块没有参数。

例子

当开始
[Print the brightness detected by the Front Eye Sensor.]
print ([FrontEye v] brightness in %) ▶

眼睛颜色#

眼睛色调报告模块将眼睛传感器检测到的色调报告为 0 到 359 度之间的数字。

色相是用色轮上的数字来描述颜色的一种方法。

一个圆形色轮,显示完整的色调光谱,边缘标有度数,从顶部的 0 度到 360 度,以 30 度为增量递增。

([FrontEye v] hue in degrees)

参数

描述

此代码块没有参数。

例子

当开始
[Print the hue detected by the Front Eye Sensor.]
print ([FrontEye v] hue in degrees) ▶

陀螺仪#

GO 竞赛高级 2.0 机器人使用陀螺仪传感来检测突然的冲击,例如撞到墙壁或物体。

检测到崩溃#

检测到碰撞布尔模块报告机器人是否检测到突然的撞击,例如撞到墙壁或物体,其力度足以迅速改变其运动。

  • 正确 — 检测到崩溃。

  • 错误 — 未检测到崩溃。

<检测到碰撞?>

参数

描述

此代码块没有参数。

例子

当开始
[Drive until the robot crashes, then stop.]
驱动 [向前 v]
等到 <检测到碰撞?>
驱动停止