传动系统#

介绍#

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

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

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.

以下是所有方法的列表:

Actions – Move and turn the robot.

  • drive – 无限期地沿指定方向移动传动系统。

  • drive_for – Moves the drivetrain for a set distance.

  • turn – 无限期地向左或向右转动传动系统。

  • turn_for – Turns the drivetrain for a set distance.

  • turn_to_heading – Turns the smart drivetrain to a specified heading using sensors.

  • turn_to_rotation – Turns the smart drivetrain to a specific rotational value.

  • stop – 以可配置的行为停止传动系统。

  • calibrate_drivetrain – Calibrate the Inertial Sensor.

Mutators – Set default movement and turn speeds.

Getters – Return robot state and position.

  • heading – 返回智能传动系统的当前航向。

  • rotation – 返回智能传动系统的当前旋转值。

  • velocity – 返回传动系统的当前速度。

  • current – Returns the current of the drivetrain.

  • is_moving – Returns whether a drivetrain is currently moving.

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

  • is_turning – Returns whether a drivetrain is currently turning.

  • power – 返回传动系统使用的功率。

  • torque – 返回传动系统产生的扭矩。

  • 效率 – 返回传动系统的效率。

  • temperature – Returns the temperature of the drivetrain.

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

  • DriveTrain – 创建基本传动系统。

  • SmartDrive – 创建配置有陀螺仪传感器或脑惯性传感器的动力传动系统。

Actions#

drive#

“drive” 无限期地将传动系统沿指定方向移动。

Usage:
drivetrain.drive(direction, velocity, units)

参数

描述

direction

行驶方向:

  • 前进</li><li>后退

velocity

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

单位

可选。表示速度的单位:

  • PERCENT
  • RPM – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

drive_for#

drive_for 将传动系统沿指定方向移动一段设定的距离。

Usage:
drivetrain.drive_for(direction, distance, units, velocity, units_v, wait)

参数

描述

direction

行驶方向:

  • 前进</li><li>后退

distance

动力传动系统移动的距离,以浮点数或整数表示。

单位

表示距离的单位:

  • MM – 毫米
  • INCHES(默认)
  • DistanceUnits.CM – 厘米

velocity

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

units_v

可选。表示速度的单位:

  • PERCENT
  • RPM(默认) – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

wait

可选

  • wait=True(默认)– 项目等待 drive_for 完成后再执行
  • 行代码。2
  • wait=False - 项目启动操作并立即转到下一行代码,而
等待 drive_for 完成。4

# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)

# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)

turn#

turn 无限地向左或向右转动传动系统。

Usage:
drivetrain.turn(direction, velocity, units)

参数

描述

direction

转弯方向:

  • 左</li><li>

velocity

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

单位

可选。表示速度的单位:

  • PERCENT
  • RPM(默认) – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()

# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

turn_for#

turn_for turns the drivetrain left or right for a specified angle or rotations.

Usage:
drivetrain.turn_for(direction, angle, units, velocity, units_v, wait)

参数

描述

direction

转弯方向:

  • 左</li><li>

angle

传动系统转动的度数,以浮点数或整数表示。

单位

表示旋转值的单位:

  • DEGREES(默认)
  • TURNS

velocity

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

units_v

可选。表示速度的单位:

  • PERCENT
  • RPM(默认) – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

wait

可选

  • wait=True(默认)– 项目等待 turn_for 完成后再执行
  • 行代码。2
  • wait=False - 项目开始
并立即转到下一行代码,而不等待 turn_for 完成。4

# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)

# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)

turn_to_heading#

turn_to_heading 将智能传动系统转向指定的方向。

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

Usage:
drivetrain.turn_to_heading(angle, units, velocity, units_v, wait)

参数

描述

angle

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

单位

表示旋转值的单位:

  • DEGREES

velocity

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

units_v

可选。表示速度的单位:

  • PERCENT
  • RPM – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

wait

可选

  • wait=True(默认)– 项目等待 turn_to_heading 完成后再执行
  • 行代码。2
  • wait=False - 项目开始
并立即转到下一行代码,而不等待 turn_to_heading 完成。4

# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)

# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)

turn_to_rotation#

turn_to_rotation 将智能传动系统旋转至指定的旋转值。

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

Usage:
drivetrain.turn_to_rotation(angle, units, velocity, units_v, wait)

参数

描述

angle

将传动系统转向的旋转值作为浮点数或整数。

单位

表示旋转值的单位:

  • DEGREES
  • TURNS

velocity

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

units_v

可选。表示速度的单位:

  • PERCENT
  • RPM – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

wait

可选

  • wait=True(默认)– 项目等待 turn_to_rotation 完成后再执行
  • 行代码。2
  • wait=False - 项目启动
并立即转到下一行代码,而无需等待 turn_to_rotation 完成。4

# Turn left, then spin in a circle 
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)

# Turn left then slowly spin in a 
# circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)

stop#

stop 停止传动系统。

Usage:
drivetrain.stop(mode)

参数

描述

mode

可选。传动系统方式:

  • “COAST”(滑行)—— 逐渐减速直至停止。2
  • BRAKE”(制动)—— 立即停止。4
  • ”(保持)—— 停止并通过电机反馈阻止移动。6
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)

calibrate_drivetrain#

calibrate_drivetrain calibrates the Gyro Sensor or Brain Inertial Sensor that is configured with the drivetrain. Calibration should be done when the drivetrain is not moving.

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

Usage:
calibrate_drivetrain()

参数

描述

该方法没有参数。

# Calibrate the DriveTrain after turning
drivetrain.turn_for(RIGHT, 90, DEGREES)
calibrate_drivetrain()
brain.screen.print("Done!")

Mutators#

set_drive_velocity#

set_drive_velocity 设置传动系统的默认移动速度。如果未提供具体速度,则此速度设置将用于后续调用任何传动系统函数。

Usage:
drivetrain.set_drive_velocity(velocity, units)

参数

描述

velocity

动力传动系统移动的速度,以浮点数或整数表示。

单位

可选。表示速度的单位:

  • PERCENT
  • RPM – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)

set_turn_velocity#

set_turn_velocity 设置传动系统的默认转弯速度。如果未提供具体速度,则此速度设置将用于后续调用任何传动系统函数。

Usage:
drivetrain.set_turn_velocity(velocity, units)

参数

描述

velocity

动力传动系统转动的速度,以浮点数或整数表示。

单位

可选。表示速度的单位:

  • PERCENT
  • RPM – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)

set_stopping#

set_stopping 设置传动系统的停止模式。

Usage:
drivetrain.set_stopping(mode)

参数

描述

mode

传动系统如何:

  • BRAKE – 立即停止。2
  • COAST 逐渐减速直至停止。4</li><li>HOLD – 停止并使用电机反馈阻止运动。6
# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.set_stopping(COAST)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

set_timeout#

set_timeout 设置传动系统函数等待达到目标的时间限制。如果传动系统无法在设定的时间内完成运动,它将自动停止并继续执行下一个函数。

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

Usage:
drivetrain.set_timeout(value, units)

参数

描述

value

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

单位

可选。表示时间的单位:

  • SECONDS
  • MSEC(默认) – 毫秒

# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)

set_heading#

set_heading 设置智能传动系统的航向。

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

Usage:
drivetrain.set_heading(heading, units)

参数

描述

heading

新的标题为浮点数或整数。

单位

可选。表示航向的单位:

  • (默认)
  • `圈

# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)

set_rotation#

set_rotation 方法设置智能传动系统的旋转。

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

Usage:
drivetrain.set_rotation(rotation, units)

参数

描述

rotation

新的旋转值为浮点数或整数。

单位

可选。表示航向的单位:

  • (默认)
  • `圈

# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)

set_turn_threshold#

set_turn_threshold 方法设置智能传动系统的转弯阈值。该阈值用于判断转弯是否完成。如果阈值过大,转弯将不准确。如果阈值过小,转弯可能无法完成。

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

Usage:
drivetrain.set_turn_threshold(value)

参数

描述

value

以度为单位设置的转弯阈值,可以是浮点数或整数。默认转弯阈值为 1 度。

# Turn and display the heading with different turn thresholds
brain.screen.set_font(FontType.PROP20)
brain.screen.print("Default threshold: ")
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())
brain.screen.next_row()
wait(2, SECONDS)
brain_inertial.reset_heading()
brain.screen.print("20 degree Threshold: ")
drivetrain.set_turn_threshold(20)
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())

set_turn_constant#

set_turn_constant 设置智能传动系统的转弯常数。智能传动系统在转弯时使用一个简单的 P 控制器。这个常数,通常称为 kp,是将角度误差转换为电机速度的方程中使用的增益。

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

Usage:
drivetrain.set_turn_constant(value)

参数

描述

value

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

# Turn and display the heading with different turn constants
brain.screen.set_font(FontType.PROP20)
brain.screen.print("Default Constant: ")
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())
brain.screen.next_row()
wait(2, SECONDS)
brain_inertial.reset_heading()
brain.screen.print("0.2 Turn Constant: ")
drivetrain.set_turn_constant(0.2)
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())

set_turn_direction_reverse#

set_turn_direction_reverse(value) sets the smart drivetrain to be reversed. This method works the same as setting the reverse parameter to True when constructing a SmartDrive.

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

Usage:
drivetrain.set_turn_direction_reverse(value)

参数

描述

value

Boolean value to set the direction reversed or not:

  • True – Reverse the smart drivetrain’s direction
  • False – Return the smart drivetrain’s direction to its default

# Example coming soon

Getters#

heading#

heading 以浮点数形式返回智能传动系统的当前航向。

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

Usage:
drivetrain.heading(units)

参数

描述

单位

可选。表示旋转值的单位:

  • DEGREES(默认)
  • TURNS

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())

rotation#

rotation 以浮点数形式返回智能传动系统的当前旋转值。

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

Usage:
drivetrain.rotation(units)

参数

描述

单位

可选。表示旋转值的单位:

  • DEGREES(默认)
  • TURNS

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())

velocity#

velocity 以浮点数形式返回传动系统的当前速度。

Usage:
drivetrain.velocity(units)

参数

描述

单位

可选。表示速度的单位:

  • PERCENT
  • RPM – 每分钟转数
  • VelocityUnits.DPS – 每秒度数

# Display the robot's velocity before 
# and after moving
brain.screen.print(drivetrain.velocity())
brain.screen.next_row()
drivetrain.drive(FORWARD)
wait(1, SECONDS)
brain.screen.print(drivetrain.velocity())
drivetrain.stop()

current#

current returns the current of the drivetrain in amps.

Usage:
drivetrain.current(units)

参数

描述

单位

Optional. The unit that represents the current:

  • CurrentUnits.AMP – Amps
# Example coming soon

is_moving#

is_moving 返回一个布尔值,指示传动系统当前是否正在移动。

  • “真”——传动系统正在移动。

  • “错误”——传动系统没有移动。

Usage:
drivetrain.is_moving()

参数

描述

该方法没有参数。

# Stop the Drivetrain after moving 
# forward for some time
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
while drivetrain.is_moving():
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Still Moving...")
    wait (0.1, SECONDS)
    brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

is_done()#

is_done 返回一个布尔值,指示传动系统当前是否没有移动。

  • “True”——传动系统没有移动。

  • “错误”——传动系统正在移动。

Usage:
drivetrain.is_done()

参数

描述

该方法没有参数。

# Stop the Drivetrain and turn right 
# after moving forward for some time
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
while True:
    if drivetrain.is_done():
        drivetrain.turn_for(RIGHT, 360)
        break
    else:
        brain.screen.set_cursor(1, 1)
        brain.screen.print("Still Moving...")
        wait (0.1, SECONDS)
        brain.screen.clear_screen()

is_turning#

is_moving 返回一个布尔值,指示智能传动系统当前是否正在转动。

  • “真实”——智能传动系统正在转动。

  • “错误”——智能传动系统没有转动。

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

Usage:
drivetrain.is_turning()

参数

描述

该方法没有参数。

# Detect when the Drivetrain is still turning
drivetrain.turn_for(RIGHT, 180, DEGREES, wait=False)
while drivetrain.is_turning():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Turning...")
    wait (0.1, SECONDS)
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

power#

power returns the average power of the drivetrain in watts.

Usage:
drivetrain.power()

参数

描述

该方法没有参数。

# Example coming soon

torque#

torque returns the average torque of the drivetrain.

Usage:
drivetrain.torque(units)

参数

描述

单位

The unit that represents the torque:

  • TorqueUnits.NM (default) – Newton meters
  • TorqueUnits.INLB – Inch pounds
# Example coming soon

efficiency#

efficiency returns the average efficiency of the drivetrain in percent.

Usage:
drivetrain.efficiency()

参数

描述

该方法没有参数。

# Example coming soon

temperature#

temperature returns the average temperature of the drivetrain.

Usage:
drivetrain.temperature(units)

参数

描述

单位

Optional. The units that represent the temperature:

  • TemperatureUnits.CELSIUS (default)
  • TemperatureUnits.FAHRENHEIT
# Example coming soon

构造函数#

构造函数用于手动创建“DriveTrain”和“SmartDrive”对象,这些对象对于在 VEXcode 之外配置动力传动系统是必需的。

Note: In order to create a drivetrain, at least two Motor or MotorGroup objects must already have been created.

Drivetrain#

“DriveTrain” 创建了一个没有陀螺仪传感器或脑惯性传感器的动力传动系统。

用法:
DriveTrain(lm,rm,wheelTravel,trackWidth,wheelBase,units,externalGearRatio)

范围

描述

lm

The name of a previously created left motor or motor group.

rm

The name of a previously created right motor or motor group.

wheelTravel

可选。传动系统车轮的周长。默认值为 300 毫米。

trackWidth

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

轮距

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

单位

可选。代表 wheelTraveltrackWidthwheelBase 值的单位:

  • MM(默认) – 毫米
  • INCHES
  • DistanceUnits.CM – 厘米

externalGearRatio

可选。如果传动比为整数,则用于补偿驱动距离的传动比。

# Create the Motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)
# Construct a 2-Motor Drivetrain "drivetrain" with the
# DriveTrain class
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)

# Create the left Motors and group them under the
# MotorGroup "left_motors"
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)
# Create the right Motors and group them under the
# MotorGroup "right_motors"
right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)
# Construct a 4-Motor Drivetrain "drivetrain" with the
# DriveTrain class
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)

Smart Drivetrain#

“SmartDrive”创建带有陀螺仪传感器或脑惯性传感器的传动系统。

用法:
SmartDrive(lm、rm、g、wheelTravel、trackWidth、wheelBase、units、externalGearRatio)

范围

描述

lm

The name of a previously created left motor or motor group.

rm

The name of a previously created right motor or motor group.

g

The name of a previously created Inertial Sensor or Gyro Sensor.

wheelTravel

可选。传动系统车轮的周长。默认值为 300 毫米。

trackWidth

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

轮距

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

单位

可选。代表 wheelTraveltrackWidthwheelBase 值的单位:

  • MM(默认) – 毫米
  • INCHES
  • DistanceUnits.CM – 厘米

externalGearRatio

可选。如果传动比为整数,则用于补偿驱动距离的传动比。

# Construct a SmartDrive Drivetrain with 2 motors
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)

If making a smart drivetrain with multiple motors, you need to create the Motors separately before grouping them into a Motor Group.

# Construct a SmartDrive Drivetrain with 4 motors
brain_inertial = Inertial()
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)