传动系统#
介绍#
VEX IQ(第二代)机器人使用传动系统来驱动和转向。传动系统由电机和轮子组成,它们协同工作以移动机器人。
配置好的驱动系统可以使用连接的陀螺仪传感器(Inertial.md)、大脑内置的惯性传感器(Inertial.md),或者不使用任何传感器。使用传感器时,驱动系统会利用它来帮助机器人精确地移动和转向。在每个项目开始时,驱动系统会自动校准传感器。校准期间,请保持机器人静止约2秒钟,以便机器人能够正确地移动和转向。
传动系统编程方式有很多种。以下是所有传动系统模块的列表:
动作——移动和转向机器人。
drive — 使机器人无限向前或向后移动。
驱动 — 使机器人向前或向后移动指定的距离。
turn — 使机器人永远向左或向右转弯。
turn for — 使机器人向左或向右旋转指定的角度数。
转向航向 — 将机器人转向 -359 度到 359 度之间的特定航向。机器人将沿最短路径转向以达到目标航向。
转向旋转 — 将机器人转向指定的旋转方向。
停止驾驶 — 停止机器人的移动。
设置 — 调整传动系统设置。
设置驱动速度 — 告诉机器人以多快的速度行驶。
设置转弯速度 — 告诉机器人转弯的速度。
set drive stopping — 告诉机器人如何停止移动:通过制动、滑行或保持。
设置驱动超时 — 设置机器人尝试完成一次移动的秒数。
设置驱动航向 — 将机器人的当前航向更改为新的航向。
设置驱动旋转 — 将机器人的当前旋转更改为新的旋转。
数值 — 检查移动状态。
行动#
驾驶#
驱动 模块使机器人能够无限向前或向后移动。机器人将持续移动,直到收到其他指令,例如转向或停止。
drive [forward v]
参数 |
描述 |
|---|---|
方向 |
机器人移动方向:前进或后退。 |
例子
when started
[Drive forward, then stop.]
drive [forward v]
wait (2) seconds
stop driving
开车去#
驱动堆栈模块控制机器人前进或后退一段特定距离。程序会等待机器人完成移动后,才会运行堆栈中的下一个模块。
drive [forward v] for (200) [mm v] ▶
参数 |
描述 |
|---|---|
方向 |
机器人移动方向:前进或后退。 |
距离 |
机器人行驶的距离。可以是整数,也可以是小数。 |
单元 |
距离单位:mm(毫米)或英寸。 |
不要等待 |
选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。 |
例子
when started
[Drive backward 500 mm (millimeters).]
drive [reverse v] for (500) [mm v] ▶
转动#
转向 积木块会让机器人无限向左或向右转向。机器人会一直转向,直到收到其他动作指令,例如行驶或停止。
turn [right v]
参数 |
描述 |
|---|---|
方向 |
机器人转向的方向:向左或向右。 |
例子
when started
[Turn right, then stop.]
turn [right v]
wait (2) seconds
stop driving
转向#
“转向”堆栈模块会使机器人向左或向右旋转指定的角度。旋转角度是相对于机器人的当前位置而言的。程序会等待机器人完成旋转后,才会运行堆栈中的下一个模块。
turn [right v] for (90) degrees ▶
参数 |
描述 |
|---|---|
方向 |
机器人转向的方向:向左或向右。 |
角度 |
机器人旋转的角度数。可以是整数,也可以是小数。 |
不要等待 |
选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。 |
例子
when started
[Turn left, then turn around to the right.]
turn [left v] for (90) degrees ▶
turn [right v] for (180) degrees ▶
转向航向#
航向角是指机器人面向的方向,以度为单位。转向航向角 代码块可以将机器人转向 -359 度到 359 度之间的特定航向角。机器人会选择到达目标航向角的最短路径。
机器人的初始航向角为0度。
该项目将等待机器人完成转向后,才会运行堆栈中的下一个模块。
turn to heading (90) degrees ▶
参数 |
描述 |
|---|---|
标题 |
机器人应面向的方向,以度为单位。该值可以是-359到359之间的整数或小数。 |
不要等待 |
选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。 |
例子
when started
[Turn to face the cardinal directions.]
turn to heading (90) degrees ▶
wait (2) seconds
turn to heading (180) degrees ▶
wait (2) seconds
turn to heading (270) degrees ▶
wait (2) seconds
turn to heading (0) degrees ▶
wait (2) seconds
转向旋转#
旋转到旋转 堆栈块使机器人旋转到特定角度。
旋转角度是指机器人转动的幅度,以度为单位。在项目开始时,旋转角度值设置为 0 度。也可以使用 set drive rotation 代码块来设置旋转角度。
旋转角度是绝对值。这意味着转弯方向取决于机器人当前的旋转角度。向右转弯会增加旋转角度,向左转弯会减少旋转角度。
例如,如果机器人从0度开始,你将其旋转720度,它会向右转两次。如果你再将其旋转360度,它会向左转一次,因为360小于720。
turn to rotation (90) degrees ▶
参数 |
描述 |
|---|---|
旋转 |
机器人将要旋转的角度值,以度为单位。可以是整数或小数。 |
不要等待 |
选择箭头(▶)展开代码块,显示“不要等待”,这样堆栈中的下一个代码块就会立即运行。 |
例子
when started
[Turn left, then spin in a circle clockwise and face right.]
turn to rotation (-90) degrees ▶
wait (2) seconds
turn to rotation (450) degrees ▶
停止驾驶#
停止驱动堆栈块会停止机器人的运动。
stop driving
参数 |
描述 |
|---|---|
该块没有参数。 |
例子
when started
[Drive forward, then stop.]
drive [forward v]
wait [4] seconds
stop driving
设置#
设置驱动速度#
设置驱动速度 代码块告诉机器人以多快的速度行驶。速度值越高,机器人行驶速度越快;速度值越低,机器人行驶速度越慢。
每个项目开始时,机器人默认以 50% 的速度行驶。
**注意:**速度越高,机器人行驶速度越快,但精度可能越低;速度越低,机器人行驶速度越慢,但精度可能越高。
set drive velocity to (50) [% v]
参数 |
描述 |
|---|---|
速度 |
使用 % 时,行驶速度的取值范围为 0% 到 100%。rpm(每分钟转数)的取值范围为 0 到 120。 |
单元 |
计量单位:% 或 rpm(每分钟转数)。 |
例子
when started
[Drive forward at the default velocity.]
drive [forward v] for (100) [mm v] ▶
wait (1) seconds
[Move slower.]
set drive velocity to (20) [% v]
drive [forward v] for (100) [mm v] ▶
wait (1) seconds
[Move faster.]
set drive velocity to (100) [% v]
drive [forward v] for (100) [mm v] ▶
wait (1) seconds
设置转弯速度#
设置转弯速度 代码块告诉机器人转弯的速度。速度越高,机器人转弯越快;速度越低,机器人转弯越慢。
每个项目开始时,机器人默认以 50% 的速度旋转。
**注意:**速度越高,机器人转弯越快,但精度可能越低;速度越低,机器人转弯越慢,但精度可能越高。
set turn velocity to (50) [% v]
参数 |
描述 |
|---|---|
速度 |
使用百分比时,转速的取值范围为 0% 到 100%。每分钟转数 (rpm) 的取值范围为 0 到 120。 |
单元 |
计量单位:% 或 rpm(每分钟转数)。 |
例子
when started
[Turn at default velocity.]
turn [right v] for (100) degrees ▶
wait (1) seconds
[Turn slower.]
set turn velocity to (20) [% v]
turn [right v] for (100) degrees ▶
wait (1) seconds
[Turn faster.]
set turn velocity to (100) [% v]
turn [right v] for (100) degrees ▶
wait (1) seconds
设置驱动器停止#
设置驱动停止堆栈块设置机器人停止移动的方式:通过制动、滑行或保持。
set drive stopping to [brake v]
参数 |
描述 |
|---|---|
停止行为 |
机器人停止方式:
|
如果不使用此模块,机器人停止时将使用刹车。
例子
when started
[Drive forward and coast to a stop.]
set drive velocity to (100) [% v]
set drive stopping to [coast v]
drive [forward v]
wait (2) seconds
stop driving
设置驱动器超时#
设置驱动超时 代码块用于设置机器人尝试完成一次动作的秒数。如果机器人无法在规定时间内完成,它将停止尝试并执行代码块中的下一个。这样可以防止机器人卡在某个动作上。
set drive timeout to (1) seconds
参数 |
描述 |
|---|---|
时间 |
机器人尝试完成一次动作的秒数。该值可以是整数或小数。 |
例子
when started
[Drive forward for 1 second, then turn.]
set drive timeout to (1) seconds
drive [forward v] for (25) [inches v] ▶
turn [right v] for (90) degrees ▶
设置驾驶航向#
航向角是指机器人朝向的方向,以度为单位。设置驱动航向堆栈块会将机器人的当前航向角更改为新的航向角值。
例如,如果机器人转向右侧,将航向设置为 0 度,则该右侧位置将成为新的 0 度航向。然后,机器人可以根据新的航向转向其他位置。
set drive heading to (0) degrees
参数 |
描述 |
|---|---|
标题 |
要设置的机器人航向角值,单位为度。该值可以是整数,也可以是 0 到 359 之间的十进制数。 |
例子
when started
[Turn to the left.]
set drive heading to (90) degrees
turn to heading (0) degrees ▶
设置驱动器旋转#
旋转角度是指机器人转动的程度,以度为单位。在项目开始时,旋转角度值设置为 0 度。设置驱动旋转角度 代码块会将机器人的当前旋转角度更改为新值。
例如,如果机器人向右转了两圈,它的旋转角度将为 720 度。将旋转角度设置为 0 度会将旋转角度从 720 度重置为 0 度。然后,机器人可以根据这个新的旋转角度进行旋转。
set drive rotation to (0) degrees
参数 |
描述 |
|---|---|
旋转 |
机器人旋转角度的设定值,单位为度。可以是整数或小数。 |
例子
when started
[Spin counterclockwise two times.]
set drive rotation to (720) degrees
turn to rotation (0) degrees ▶
价值观#
驾驶已完成#
“驱动完成”布尔模块用于报告机器人是否已停止移动。这可用于根据机器人的移动状态来控制其他行为的执行时间。
正确 — 机器人已停止移动。
错误 — 机器人仍在移动。
该模块与以下具有and don’t wait参数的传动系统模块配合使用:drive for、turn for、turn to heading和turn to rotation。
<drive is done?>
参数 |
描述 |
|---|---|
该块没有参数。 |
例子
when started
[Start spinning when the drive is complete.]
drive [forward v] for (200) [mm v] ◀ and don't wait
forever
if <drive is done?> then
turn [right v] for (360) degrees ▶
break
else
set cursor to row (1) column (1) on screen
print [Still Moving...] on screen ▶
wait (0.1) seconds
clear screen
车辆正在行驶#
“驱动正在移动”布尔模块用于报告机器人是否正在移动。这可用于根据机器人的移动状态来控制其他行为的执行时间。
正确 — 机器人正在移动。
错误 — 机器人没有移动。
该模块与以下具有and don’t wait参数的传动系统模块配合使用:drive for、turn for、turn to heading和turn to rotation。
<drive is moving?>
参数 |
描述 |
|---|---|
该块没有参数。 |
例子
when started
[Print that the robot is moving while it is still driving.]
drive [forward v] for (200) [mm v] ◀ and don't wait
while <drive is moving?>
set cursor to row (1) column (1) on screen
print [Still Moving...] on screen ▶
wait (0.1) seconds
clear screen
结束
set cursor to row (1) column (1) on screen
print [Done!] on screen ▶
行驶方向#
航向角是指机器人朝向的方向,以度为单位。驱动航向报告模块会报告机器人当前的航向角,范围从 0 度到 359 度。
机器人的初始航向角为0度。
(drive heading in degrees)
参数 |
描述 |
|---|---|
该块没有参数。 |
例子
when started
[Display the heading after turning.]
turn [right v] for (450) degrees ▶
print (drive heading in degrees) on screen ◀ and set cursor to next row
驱动旋转#
旋转角度是指机器人转动的程度,以度为单位。项目开始时,旋转角度值设置为 0 度。“驱动旋转”报告模块会报告机器人当前的旋转角度。
向右转会增加旋转角度,向左转会减少旋转角度。例如,向右转两圈,旋转角度将达到 720 度。
(drive rotation in degrees)
参数 |
描述 |
|---|---|
该块没有参数。 |
例子
when started
[Display the rotation after turning.]
turn [right v] for (450) degrees ▶
print (drive rotation in degrees) on screen ◀ and set cursor to next row
驱动速度#
驱动速度报告模块会报告机器人的行驶速度。
它可以以百分比(-100% 到 100%)或转速(rpm,即每分钟转数,-127 到 127)的形式报告速度。正值表示机器人向前行驶,负值表示机器人向后行驶。
(drive velocity in [% v])
参数 |
描述 |
|---|---|
单元 |
报告驱动速度的单位为:%(从 -100% 到 100%)或 rpm(每分钟转数,从 -127 到 127)。 |
例子
when started
[Display the velocity as the robot is moving.]
drive [forward v]
wait (1) seconds
print (drive velocity in [% v]) on screen ◀ and set cursor to next row
stop driving
驱动电流#
驱动电流报告模块报告驱动系统正在使用的电流大小,以安培(A)为单位,范围从 0.0 到 1.2 A。电流是指流经驱动系统的电量。
电流值越高,意味着驱动系统消耗的电流越大。这种情况可能发生在机器人推挤物体或被卡住后试图移动时。
这可以用来检查传动系统在运动过程中是否运转吃力。如果电流持续偏高,传动系统可能会发热或动力利用效率降低。
(drive current in [amps v])
参数 |
描述 |
|---|---|
该块没有参数。 |
例子
when started
[Display the current as the robot is moving.]
set print precision to [0.01 v] on screen
drive [forward v]
wait (1) seconds
print (drive current in [amps v]) on screen ◀ and set cursor to next row
stop driving