传动系统#

介绍#

传动系统控制机器人的运动,使其能够精确地前进、转弯和停止。

当配置陀螺仪传感器或脑惯性传感器时,它还可以用作智能传动系统。

For the examples below, the configured drivetrain will be named Drivetrain and will be used in all subsequent examples throughout this API documentation when referring to drivetrain and smartdrive class methods.

以下是所有方法的列表:

动作——移动和转动机器人。

  • drive – Moves the drivetrain in a specified direction indefinitely.

  • driveFor – Moves the drivetrain in a specified direction for a set distance.

  • turn – Turns the drivetrain left or right indefinitely.

  • turnFor – Turns the drivetrain left or right for a set distance.

  • turnToHeading – Turns a smart drivetrain to a specified heading.

  • turnToRotation – Turns a smart drivetrain to a specified rotational value.

  • stop – Stops a drivetrain.

  • calibrateDrivetrain – Calibrates the drivetrain.

变异器——设置默认移动和转动速度。

Getters – 返回机器人状态和位置。

  • isDone – Returns whether a drivetrain is not currently moving.

  • isMoving – Returns whether a drivetrain is currently moving.

  • heading – Returns the current heading of a smart drivetrain.

  • rotation – Returns the current rotational value of a smart drivetrain.

  • velocity – Returns the current velocity of a drivetrain.

  • current – Returns the current current of a drivetrain.

  • power – Returns the average power of the smart drivetrain.

  • torque – Returns the average torque of the drivetrain.

  • efficiency – Returns the average efficiency of the drivetrain.

  • temperature – Returns the average temperature of the drivetrain.

构造函数——手动初始化和配置传动系统。

  • drivetrain – Creates a basic drivetrain.

  • smartdrive – Creates a drivetrain configured with a Gyro Sensor or Brain Inertial Sensor.

行动#

drive#

drive moves the drivetrain in a specified direction indefinitely.

Default Usage:
Drivetrain.drive(direction);

Overload Usages:
Drivetrain.drive(direction, velocity, units);

参数

描述

方向

The direction in which to drive:

  • forward
  • reverse

速度

传动系统移动的速度,以浮点数或整数表示。如果未指定速度,则默认速度为 50%。

单位

The unit that represents the velocity:

  • velocityUnits::pct (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Drive forward, then stop
  Drivetrain.drive(forward);
  wait(2, seconds);
  Drivetrain.stop();
}

driveFor#

driveFor moves the drivetrain in a specified direction for a set distance.

Default Usage:
Drivetrain.driveFor(direction, distance, units, wait);

Overload Usages:
Drivetrain.driveFor(direction, distance, units, wait);
Drivetrain.driveFor(direction, distance, units, velocity, units_v, wait);
Drivetrain.driveFor(distance, units, wait);
Drivetrain.driveFor(distance, units, velocity, units_v, wait);

参数

描述

方向

The direction in which to drive:

  • forward
  • reverse

距离

传动系统以双倍速度移动的距离。

单位

The unit that represents the distance:

  • mm – Millimeters
  • inches – Inches
  • cm – Centimeters

等待

Optional.

  • true (default) – The project waits until driveFor is complete before executing the next line of code.
  • false - The project starts the action and moves on to the next line of code right away, without waiting for driveFor to finish.

速度

传动系统以双精度移动的速度。如果未指定速度,则默认速度为 50%。

单位

The unit that represents the velocity:

  • velocityUnits::pct (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Drive 200 mm, then back 200 mm
  Drivetrain.driveFor(forward, 200, mm);
  Drivetrain.driveFor(reverse, 200, mm);
}

turn#

turn turns the drivetrain left or right indefinitely.

Default Usage:
Drivetrain.turn(direction);

Overload Usages:
Drivetrain.turn(direction, velocity, units);

参数

描述

方向

The direction in which to turn:

  • left
  • right

速度

传动系统以双倍速度旋转的速度。如果未指定速度,则默认速度为 50%。

单位

The unit that represents the velocity:

  • velocityUnits::pct (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Turn right, then left, then stop
  Drivetrain.turn(right);
  wait(2, seconds);
  Drivetrain.turn(left);
  wait(2, seconds);
  Drivetrain.stop();
}

turnFor#

turnFor turns the drivetrain left or right for a set distance.

Default Usage:
Drivetrain.turnFor(direction, angle, units, wait);

Overload Usages:
Drivetrain.turnFor(direction, angle, units, velocity, units_v, wait);
Drivetrain.turnFor(angle, units, wait);
Drivetrain.turnFor(angle, units, velocity, units_v, wait);

参数

描述

方向

The direction in which to turn:

  • left
  • right

角度

传动系统旋转的度数为双倍。

单位

The unit that represents the rotational value:

  • degrees
  • turns

速度

传动系统以双倍速度旋转的速度。如果未指定速度,则默认速度为 50%。

单位

The unit that represents the velocity:

  • velocityUnits::pct (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

等待

Optional.

  • true (default) – The project waits until turnFor is complete before executing the next line of code.
  • false - The project starts the action and moves on to the next line of code right away, without waiting for turnFor to finish.

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Turn right then left
  Drivetrain.turnFor(right, 90, degrees);
  wait(1, seconds);
  Drivetrain.turnFor(left, 90, degrees);
}

turnToHeading#

turnToHeading turns a smart drivetrain to a specified heading.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Default Usage:
Drivetrain.turnToHeading(angle, units, wait);

Overload Usages:
Drivetrain.turnToHeading(angle, units, velocity, units_v, wait);

参数

描述

角度

以浮点数或整数形式表示传动系统转向的方向。

单位

The unit that represents the rotational value:

  • degrees
  • turns

速度

电机或电机组的旋转速度,以浮点数或整数表示。如果未指定速度,则默认速度为 50%。

单位

The unit that represents the velocity:

  • velocityUnits::pct (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

等待

Optional.

  • true (default) – The project waits until turnToHeading is complete before executing the next line of code.
  • false - The project starts the action and moves on to the next line of code right away, without waiting for turnToHeading to finish.

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Face the cardinal directions
  Drivetrain.turnToHeading(90, degrees);
  wait(1, seconds);
  Drivetrain.turnToHeading(180, degrees);
  wait(1, seconds);
  Drivetrain.turnToHeading(270, degrees);
  wait(1, seconds);
  Drivetrain.turnToHeading(0, degrees);
}

turnToRotation#

turnToRotation turns a smart drivetrain to a specified rotational value.

Note: This method will only work with a drivetrain that has been configured with a Gyro Sensor or the Brain’s Inertial Sensor.

Default Usage:
Drivetrain.turnToRotation(angle, units, wait);

Overload Usages:
Drivetrain.turnToRotation(angle, units, velocity, units_v, wait);

参数

描述

角度

The rotational value to turn the drivetrain to face as a float or integer.

单位

The unit that represents the rotational value:

  • degrees
  • turns

速度

电机或电机组的旋转速度,以浮点数或整数表示。如果未指定速度,则默认速度为 50%。

单位

The unit that represents the velocity:

  • velocityUnits::pct (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

等待

Optional.

  • true (default) – The project waits until turnToRotation is complete before executing the next line of code.
  • false - The project starts the action and moves on to the next line of code right away, without waiting for turnToRotation to finish.

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Turn left, then spin clockwise to face right
  Drivetrain.turnToRotation(-90, degrees);
  wait(1, seconds);
  Drivetrain.turnToRotation(450, degrees);
}

stop#

stop stops a drivetrain.

Default Usage:
Drivetrain.stop();

Overload Usages:
Drivetrain.stop(mode);

参数

描述

模式

How the drivetrain will stop:

  • coast – Slows gradually to a stop.
  • brake – Stops immediately.
  • hold – Stops and resists movement using motor feedback.

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Drive forward, then coast to a stop
  Drivetrain.setDriveVelocity(100, percent);
  Drivetrain.drive(forward);
  wait(2, seconds);
  Drivetrain.stop(coast);
}

calibrateDrivetrain#

calibrateDrivetrain calibrates the drivetrain.

This is a method generated by the VEXcode Robot Configuration when a Drivetrain is configured in the Devices window. It will not function outside of VEXcode IQ (2nd gen).

Note: The Brain will automatically calibrate at the start of each project.

Usage:
Drivetrain.calibrateDrivetrain();

修改器#

setDriveVelocity#

setDriveVelocity sets the default moving velocity for a drivetrain. This velocity setting will be used for subsequent calls to any drivetrain functions if a specific velocity is not provided.

Usage:
Drivetrain.setDriveVelocity(velocity, units);

参数

描述

速度

传动系统以双倍速度移动。

单位

The unit that represents the velocity:

  • percent (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Try default, slow, then fast
  Drivetrain.driveFor(forward, 150, mm);
  wait(1, seconds);
  Drivetrain.setDriveVelocity(20, percent);
  Drivetrain.driveFor(forward, 150, mm);
  wait(1, seconds);
  Drivetrain.setDriveVelocity(100, percent);
  Drivetrain.driveFor(forward, 150, mm);
}

setTurnVelocity#

setTurnVelocity sets the default turning velocity for a drivetrain. This velocity setting will be used for subsequent calls to any drivetrain functions if a specific velocity is not provided.

Usage:
Drivetrain.setTurnVelocity(velocity, units);

参数

描述

速度

传动系统以双倍速度旋转的速度。

单位

The unit that represents the velocity:

  • percent (Percent)
  • rpm (Rotations per minute)
  • dps (Degrees per second)

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Try default, slow, then fast
  Drivetrain.turnFor(right, 360, degrees);
  wait(1, seconds);
  Drivetrain.setTurnVelocity(20, percent);
  Drivetrain.turnFor(right, 360, degrees);
  wait(1, seconds);
  Drivetrain.setTurnVelocity(100, percent);
  Drivetrain.turnFor(right, 360, degrees);
}

setStopping#

setStopping sets the stopping mode for a drivetrain.

Usage:
Drivetrain.setStopping(mode);

参数

描述

模式

How the drivetrain will stop:

  • brake – Stops immediately.
  • coast – Slows gradually to a stop.
  • hold – Stops and resists movement using motor feedback.

setTimeout#

setTimeout sets a time limit for how long a drivetrain function will wait to reach its target. If the drivetrain cannot complete the movement within the set time, it will stop automatically and continue with the next function.

**注意:**传动系统的时间限制用于防止未达到目标位置的传动系统功能停止项目其余部分的执行。

Usage:
Drivetrain.setTimeout(time, units);

参数

描述

时间

电机功能在停止并移动到下一个功能之前运行的最大秒数(整数)。

单位

The unit that represents the time:

  • seconds
  • msec – Milliseconds

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Stop turning if drive took too long
  Drivetrain.setTimeout(1, seconds);
  Drivetrain.driveFor(forward, 25, inches);
  Drivetrain.turnFor(right, 90, degrees);
}

setHeading#

setHeading sets the heading of a smart drivetrain.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.setHeading(value, units);

参数

描述

价值

新的标题为双重标题。

单位

The unit that represents the heading:

  • degrees
  • turns

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Set 0° to current right-facing
  Drivetrain.setHeading(90, degrees);
  Drivetrain.turnToHeading(0, degrees);
}

setRotation#

setRotation sets the rotation for the smart drivetrain.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.setRotation(value, units);

参数

描述

价值

新的旋转值(双精度值)。

单位

The unit that represents the rotation:

  • degrees
  • turns

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Spin counterclockwise for 2 turns, then face forward
  Drivetrain.setRotation(720, degrees);
  Drivetrain.turnToRotation(0, degrees);
}

setGearRatio#

setGearRatio sets the gear ratio for all motors on the Drivetrain.

Usage:
Drivetrain.setGearRatio(mode);

参数

描述

模式

Gear Ratio options:

  • ratio1_1 – A gear unit that is defined as 1:1 gearing.
  • ratio2_1 – A gear unit that is defined as 2:1 gearing.
  • ratio3_1 – A gear unit that is defined as 3:1 gearing.

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Set 2:1 gear ratio
  Drivetrain.setGearRatio(ratio2_1);
}

setTurnThreshold#

setTurnThreshold method sets the turn threshold for the Smartdrive. The threshold value is used to determine that turns are complete. If this is too large, then turns will not be accurate. If too small, then turns may not complete.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.setTurnThreshold(t);

参数

描述

The new turn threshold in degrees. The default for a Smart Drivetrain is 1 degree.

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Increase turn tolerance to 5 degrees
  Drivetrain.setTurnThreshold(5);
}

setTurnConstant#

setTurnConstant method sets the turn constant for the Smartdrive. The Smart Drivetrain uses a simple P controller when doing turns. This constant, generally known as kp, is the gain used in the equation that turns angular error into motor velocity.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.setTurnConstant(kp);

参数

描述

千帕

新的转弯常数,范围为 0.1 - 4.0。默认值为 1.0。

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Increase turn gain to 2.0
  Drivetrain.setTurnConstant(2.0);
}

setTurnDirectionReverse#

setTurnDirectionReverse method sets the expected turn direction for positive heading.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.setTurnDirectionReverse(value);

参数

描述

价值

A Boolean value to set the reversed flag to true or false.

吸气剂#

isDone#

isDone returns a Boolean indicating whether a drivetrain is not currently moving.

  • true – The drivetrain is not moving.

  • false – The drivetrain is moving.

Usage:
Drivetrain.isDone()

参数

描述

该方法没有参数。

isMoving#

isMoving returns a Boolean indicating whether a drivetrain is currently moving.

  • true – The drivetrain is moving.

  • false – The drivetrain is not moving.

Usage:
Drivetrain.isMoving()

参数

描述

该方法没有参数。

heading#

heading returns the current heading of a smart drivetrain as a double.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.heading(units)

参数

描述

单位

Optional. The unit that represents the rotational value:

  • degrees (default)
  • turns

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Display heading after a long turn
  Drivetrain.turnFor(right, 450, degrees);
  Brain.Screen.print("Heading: %f", Drivetrain.heading(degrees));
}

rotation#

rotation returns the current rotational value of a smart drivetrain as a double.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.rotation(units)

参数

描述

单位

Optional. The unit that represents the rotational value:

  • degrees (default)
  • turns

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Display rotation after a long turn
  Drivetrain.turnFor(right, 450, degrees);
  Brain.Screen.print("Rotation: %f", Drivetrain.rotation(degrees));
}

velocity#

velocity returns the current velocity of a drivetrain as a double.

Usage:
Drivetrain.velocity(units)

参数

描述

单位

The unit that represents the velocity:

  • percent
  • rpm – Rotations per minute
  • dps – Degrees per second

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Show velocity before and during motion
  Brain.Screen.print("Resting: %f", Drivetrain.velocity(percent));
  Drivetrain.drive(forward, 100, velocityUnits::pct);
  wait(1, seconds);
  Brain.Screen.newLine();
  Brain.Screen.print("Moving: %f", Drivetrain.velocity(percent));
  Drivetrain.stop();
}

current#

current returns the drivetrain’s current as a double.

Usage:
Drivetrain.current(units)

参数

描述

单位

Optional. The unit that represents the current:

  • percent
  • amp (default)

power#

power(units) returns the average power of the Smart Drivetrain as a double.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.power(units)

参数

描述

单位

The only valid unit for power is watt.

torque#

torque returns the average torque of the Drivetrain as a double.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.torque(units)

参数

描述

单位

A valid torque Unit:

  • Nm (default) – A torque unit that is measured in newton meters.
  • InLb – A torque unit that is measured in inch pounds.

efficiency#

efficiency returns the average efficiency of the Drivetrain as a double.

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

Usage:
Drivetrain.efficiency(units)

参数

描述

单位

The only valid unit for efficiency is percent.

temperature#

The temperature() method returns the average temperature of the Drivetrain as a double.

Usage:
Drivetrain.temperature(units)

注意:此方法仅适用于配置了陀螺仪传感器或脑惯性传感器的传动系统。

参数

描述

单位

The only valid unit for temperature is percent.

构造函数#

Drivetrain#

使用以下构造函数创建动力传动系统:

The drivetrain constructor creates a drivetrain object.

Usage:
drivetrain(lm, rm, wheelTravel, trackWidth, wheelBase, unit, externalGearRatio);

范围

描述

lm

左侧 电机电机组 的名称。

rm

右侧 电机电机组 的名称。

wheelTravel

驱动轮的周长。默认值为 300 毫米。

trackWidth

传动系统的轮距。默认值为 320 毫米。

wheelBase

传动系统的轴距。默认值为 320 毫米。

unit

A valid distanceUnit for the units that wheelTravel, trackWidth and wheelBase are specified in. The default is MM.

externalGearRatio

如果使用齿轮传动,则使用齿轮比来补偿驱动距离。

必须先创建 Motors 和/或 Motor Groups,然后才能使用传动系统类构造函数创建对象。

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Make left and right drive motors
  motor leftMotor = motor(PORT1, false);
  motor rightMotor = motor(PORT2, true);

  // Build a 2-motor drivetrain with those motors
  drivetrain Drivetrain = drivetrain(leftMotor, rightMotor,
                                     259.34, 320, 40, mm, 1);
}

如果制作 4 电机传动系统,则需要先单独创建 电机,然后再将它们分组到 电机组中。

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Make two motor groups for left and right motors
  motor leftA = motor(PORT1, false);
  motor leftB = motor(PORT2, false);
  motor_group leftGroup = motor_group(leftA, leftB);

  motor rightA = motor(PORT3, true);
  motor rightB = motor(PORT4, true);
  motor_group rightGroup = motor_group(rightA, rightB);

  // Build a 4-motor drivetrain with those motors
  drivetrain Drivetrain = drivetrain(leftGroup, rightGroup, 259.34, 320, 40, mm, 1);
}

This Drivetrain object will be used in all subsequent examples throughout this API documentation when referring to drivetrain class methods.

要在您的传动系统中加入 惯性传感器陀螺仪传感器 以增强转弯功能,您可以在使用 smartdrive 类构造函数创建对象时将其包含在内。

Smartdrive#

使用以下构造函数创建智能传动系统:

The smartdrive constructor creates a smartdrive object. This object can do everything a drivetrain can do but has additional methods that include use of an Inertial Sensor or Gyro in order to make more accurate turns.

Usage:
smartdrive(lm, rm, guido, wheelTravel, trackWidth, wheelBase, unit, externalGearRatio);

范围

描述

lm

左侧 电机电机组 的名称。

rm

右侧 电机电机组 的名称。

guido

用于检测机器人角度或航向的设备名称。可以是任意 惯性传感器陀螺仪传感器

wheelTravel

驱动轮的周长。默认值为 300 毫米。

trackWidth

智能传动系统的轮距。默认值为 320 毫米。

wheelBase

智能传动系统的轴距。默认值为 320 毫米。

unit

A valid distanceUnit for the units that wheelTravel, trackWidth and wheelBase are specified in. The default is mm.

externalGearRatio

如果使用齿轮传动,则使用齿轮比来补偿驱动距离。

必须先创建 Motors 和/或 Motor Groups,然后才能使用 smartdrive 类构造函数创建对象。

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Create two motors
  motor leftMotor = motor(PORT1, false);
  motor rightMotor = motor(PORT2, true);

  // Create an Inertial sensor
  inertial Inertial = inertial(PORT3);

  // Build a 2-motor smartdrive with the Inertial Sensor
  smartdrive Smartdrive = smartdrive(leftMotor, rightMotor, Inertial, 259.34, 320, 40, mm, 1);
}

如果制作 4 电机智能传动系统,则需要先单独创建 电机,然后再将它们分组到 电机组中。

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Make two motor groups for left and right motors
  motor leftA = motor(PORT1, false);
  motor leftB = motor(PORT2, false);
  motor_group leftGroup = motor_group(leftA, leftB);

  motor rightA = motor(PORT3, true);
  motor rightB = motor(PORT4, true);
  motor_group rightGroup = motor_group(rightA, rightB);

  // Create an Inertial sensor
  inertial Inertial = inertial(PORT5);

  // Build a 4-motor smartdrive with the Inertial Sensor
  smartdrive Smartdrive = smartdrive(leftGroup, rightGroup, Inertial, 259.34, 320, 40, mm, 1);
}

This Smartdrive object will be used in all subsequent examples throughout this API documentation when referring to smartdrive class methods.

要创建不带 惯性传感器陀螺仪传感器 功能的对象,请改用 传动系统 类构造函数创建对象。