Автомобильная и автомобильная группа#

Введение#

Двигатели и группы двигателей управляют движением частей робота. Двигатель Motor управляет одним настроенным интеллектуальным двигателем, а группа двигателей MotorGroup управляет несколькими настроенными интеллектуальными двигателями одновременно, так что они движутся синхронно. Двигатели и группы двигателей могут использоваться для подъема руки, вращения клешни, вращения колеса или перемещения другой части конструкции. Два или четыре двигателя могут работать вместе как привод для перемещения и поворота всего робота.

Каждый двигатель или группа двигателей настраиваются в окне «Устройства». В зависимости от сборки, имена двигателей и групп двигателей могут меняться. На этой странице в качестве примеров используются имена motor_1 и motor_group_1 При необходимости замените их своими собственными настроенными именами.

На схеме двигателя VEX V5 направление вращения обозначено знаком «плюс», а стрелка указывает на вращение влево, или против часовой стрелки. На изображении двигателя VEX V5 показано обратное направление вращения, обозначенное знаком минус, а стрелка указывает на вращение вправо, или по часовой стрелке.

По умолчанию, FORWARD вращает двигатель против часовой стрелки, а REVERSE вращает двигатель по часовой стрелке. Если двигатель настроен на реверс, направления вращения будут поменяны местами.

Существует множество способов программирования двигателей и групп двигателей. Ниже приведён список всех методов программирования двигателей и групп двигателей:

Действия — Остановка и вращение двигателей и групп двигателей.

  • spin — Вращает двигатель или группу двигателей вперед или назад бесконечно.

  • spin_for — Раскручивает двигатель или группу двигателей на определенное расстояние.

  • spin_to_position — Раскручивает двигатель или группу двигателей до определенного положения.

  • stop — Останавливает вращение двигателя или группы двигателей.

Мутаторы — Настройка параметров двигателя и группы двигателей.

  • set_position — Изменяет текущее положение двигателя или группы двигателей на новое значение.

  • set_velocity — Указывает двигателю или группе двигателей, с какой скоростью вращаться.

  • set_stopping — Задает способ остановки двигателя или группы двигателей: торможение, движение накатом или удержание.

  • set_max_torque — Задает, с какой силой двигатель или группа двигателей могут толкать во время вращения.

  • set_timeout — Устанавливает, сколько времени двигатель или группа двигателей будут пытаться завершить движение.

  • set_reversed — Изменяет направление вращения двигателя.

  • reset_position — Изменяет текущее положение двигателя или группы двигателей на 0.

Геттеры — Проверка состояния двигателя и группы двигателей.

  • is_done — Возвращает значение логического значения, указывающее, завершил ли двигатель или группа двигателей движение.

  • is_spinning — Возвращает значение логического типа, указывающее, вращается ли двигатель или группа двигателей.

  • position — Возвращает текущее положение двигателя или группы двигателей.

  • velocity — Возвращает скорость вращения двигателя или группы двигателей.

  • current — Возвращает значение электрического тока, потребляемого двигателем или группой двигателей.

  • power — Возвращает значение мощности, потребляемой двигателем или группой двигателей.

  • torque — Возвращает значение крутящего момента, используемого двигателем или группой двигателей.

  • efficiency — Возвращает, насколько эффективно двигатель или группа двигателей используют мощность.

  • temperature — Возвращает температуру двигателя или группы двигателей.

  • count — Возвращает количество двигателей в группе двигателей.

  • get_timeout — Возвращает текущую продолжительность тайм-аута двигателя или группы двигателей.

Конструкторы — Вручную инициализируют и настраивают двигатели и группы двигателей.

  • Motor — Создает двигатель.

  • MotorGroup — Создает группу двигателей.

Действия#

spin#

spin вращает двигатель или группу двигателей вперед или назад бесконечно. Двигатель или группа двигателей будут продолжать вращаться до тех пор, пока им не будет дано другое действие, например, вращение в другом направлении или остановка.

Usage:
motor_1.spin(direction, velocity, units)

Параметры

Описание

direction

Направление вращения двигателя или группы двигателей: FORWARD или REVERSE.

velocity

Необязательно. Скорость вращения от 0% до 100% при использовании PERCENTЭто может быть целое число integer или десятичная дробь (float).

units

Необязательно. Единица измерения скорости:

  • PERCENT
  • RPM (по умолчанию) — оборотов в минуту
  • VelocityUnits.DPS — градусы в секунду
  • VOLT — напряжение

# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

spin_for#

Параметр spin_for spin_for вращает двигатель или группу двигателей на определенное расстояние. Вращение происходит относительно текущего положения двигателя или группы двигателей. Проект будет ждать, пока двигатель или группа двигателей не закончат вращение, прежде чем будет выполнена следующая строка кода.

Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)

Параметры

Описание

direction

Направление вращения двигателя или группы двигателей: FORWARD или REVERSE.

angle

Расстояние, на которое вращается двигатель или группа двигателей. Это может быть целое число integer или десятичное число (float float).

units

Дополнительно. Единица измерения расстояния: DEGREES (по умолчанию) или TURNS.

velocity

Необязательно. Скорость вращения от 0% до 100% при использовании PERCENTЭто может быть целое число integer или десятичная дробь (float).

units_v

Необязательно. Единица измерения скорости:

  • PERCENT
  • RPM (по умолчанию) — Количество оборотов в минуту

wait

Необязательно.

  • wait=True (по умолчанию) — Заставляет проект ждать, пока двигатель или группа двигателей не закончат вращение, прежде чем будет выполнена следующая строка кода.
  • wait=False — Заставляет следующую строку кода выполниться немедленно.

# Spin the motor forward once, then reset
motor_1.spin_for(FORWARD, 90, DEGREES)
wait(1, SECONDS)
motor_1.spin_for(REVERSE, 90, DEGREES)

spin_to_position#

spin_to_position вращает двигатель или группу двигателей в заданное положение.

Положение двигателя или группы двигателей — это угол их вращения, измеряемый в DEGREES или TURNSОдин оборот равен 360 градусам. В начале проекта положение двигателя или группы двигателей устанавливается на 0 градусов. Положение двигателя или группы двигателей также можно установить с помощью метода set_position.

Значения положения являются абсолютными. Это означает, что направление вращения зависит от текущего положения двигателя или группы двигателей.

Например, если двигатель или группа двигателей начинают движение с 0 градусов и вращаются до положения 720 градусов, они совершат два оборота вперед. Если же они затем вращаются до положения 360 градусов, они совершат один оборот в обратном направлении, поскольку 360 меньше 720.

Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)

Параметры

Описание

rotation

Значение положения, до которого будет вращаться двигатель или группа двигателей. Это может быть целое число integer или десятичное число (float).

units

Единица измерения положения: DEGREES или TURNS оборота.

velocity

Необязательно. Скорость вращения от 0% до 100% при использовании PERCENTЭто может быть целое число integer или десятичная дробь (float).

units_v

Необязательно. Единица измерения скорости:

  • PERCENT
  • RPM — оборотов в минуту
  • VelocityUnits.DPS — градусы в секунду

wait

Необязательно.

  • wait=True (по умолчанию) — Заставляет проект ждать, пока двигатель или группа двигателей не закончат вращение, прежде чем будет выполнена следующая строка кода.
  • wait=False — Заставляет следующую строку кода выполниться немедленно.

# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

stop#

stop останавливает вращение двигателя или группы двигателей.

Usage:
motor_1.stop(mode)

Параметры

Описание

mode

Дополнительно. Способ остановки двигателя или группы двигателей:

  • BRAKE — Мгновенная остановка.
  • COAST — Замедление до полной остановки.
  • HOLD — Мгновенная остановка и удержание положения двигателя.

# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

Мутаторы#

set_position#

Положение двигателя или группы двигателей — это угол их вращения, измеряемый в DEGREES или TURNSОдин оборот равен 360 градусам. set_position изменяет текущее положение двигателя или группы двигателей на новое значение.

Например, если двигатель или группа двигателей повернулись на 180 градусов, установка положения на 0 градусов сбросит это положение со 180 до 0 градусов. Затем двигатель или группа двигателей смогут вращаться в положениях, соответствующих этому новому значению.

Usage:
motor_1.set_position(position, units)

Параметры

Описание

position

Значение положения, которое необходимо установить для двигателя или группы двигателей. Это может быть целое число integer или десятичное число (float).

units

Дополнительно. Единица измерения положения: DEGREES (по умолчанию) или TURNS.

# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

set_velocity#

Параметр set_velocity указывает двигателю или группе двигателей, с какой скоростью вращаться. Более высокое значение в процентах заставляет двигатель или группу двигателей вращаться быстрее, а более низкое — медленнее.

Каждый проект начинается с того, что каждый двигатель или группа двигателей по умолчанию вращаются со скоростью 50% от обычной.

Примечание: Более высокая скорость вращения приводит к более быстрому вращению двигателя или группы двигателей, но может снизить точность. Более низкая скорость вращения приводит к более медленному вращению двигателя или группы двигателей, но может повысить точность.

Usage:
motor_1.set_velocity(velocity, units)

Параметры

Описание

velocity

Скорость вращения от 0% до 100% при использовании PERCENTЭто может быть целое число integer или десятичная дробь (float).

units

Необязательно. Единица измерения скорости:

  • PERCENT
  • RPM (по умолчанию) — оборотов в минуту
  • VelocityUnits.DPS — градусы в секунду

# Spin forward at the default velocity
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

set_stopping#

set_stopping задает способ остановки двигателя или группы двигателей: торможение, движение накатом или удержание.

Usage:
motor_1.set_stopping(mode)

Параметры

Описание

mode

Как двигатель или группа двигателей остановятся:

  • BRAKE — Немедленная остановка.
  • COAST — Замедление до полной остановки.
  • HOLD — Немедленная остановка и удержание положения двигателя.

Если этот метод не используется, двигатель будет использовать BRAKE при остановке.

set_max_torque#

Крутящий момент показывает, насколько сильно двигатель или группа двигателей могут толкать или тянуть во время вращения.

set_max_torque устанавливает максимальный крутящий момент, который может использовать двигатель или группа двигателей.

Более высокий процент позволяет двигателю или группе двигателей прилагать больше усилий, например, при подъеме тяжелого предмета. Более низкий процент ограничивает силу, с которой двигатель или группа двигателей могут двигаться. Это может помочь защитить робота, если двигатель или группа двигателей застрянут или достигнут предела своего хода.

В начале каждого проекта крутящий момент каждого двигателя или группы двигателей по умолчанию составляет 50%.

Usage:
motor_1.set_max_torque(value, units)

Параметры

Описание

value

Максимальный крутящий момент, который может использовать двигатель или группа двигателей. Это может быть целое число integer или десятичное число (float).

units

Дополнительно. Единица измерения крутящего момента:

  • PERCENT
  • TorqueUnits.NM (по умолчанию) — Ньютон-метры
  • TorqueUnits.INLB — Дюйм-фунты
  • CurrentUnits.AMP

set_timeout#

Параметр set_timeout задает время, в течение которого двигатель или группа двигателей будут пытаться завершить движение. Если двигатель или группа двигателей не смогут завершить движение за это время, они прекратят попытки и перейдут к следующей строке кода. Это предотвращает застревание двигателя или группы двигателей на определенном этапе движения.

Usage:
motor_1.set_timeout(value, units)

Параметры

Описание

value

Время, в течение которого двигатель или группа двигателей могут попытаться завершить движение. Это может быть положительное число integer или десятичное (float).

units

Необязательно. Единица времени:

  • SECONDS
  • MSEC (по умолчанию) — Миллисекунды

set_reversed#

set_reversed изменяет направление вращения двигателя. Этот метод работает так же, как установка параметра reverse в значение True при создании Motor.

Примечание: Этот метод работает только с отдельным двигателем, а не с группой двигателей.

Usage:
motor_1.set_reversed(value)

Параметры

Описание

value

Изменение направления вращения двигателя:

  • True — Изменяет направление вращения двигателя.
  • False — Возвращает направление вращения двигателя к значению по умолчанию.

reset_position#

reset_position изменяет текущее положение двигателя или группы двигателей на 0.

Usage:
motor_1.reset_position()

Параметры

Описание

Этот метод не имеет параметров.

Геттеры#

is_done#

is_done возвращает значение логического типа (Boolean), указывающее, завершилось ли движение двигателя или группы двигателей. Это можно использовать для управления временем выполнения других действий в зависимости от движения двигателя.

  • True — Двигатель или группа двигателей завершили движение.

  • False — Двигатель или группа двигателей все еще находятся в движении.

Этот метод работает совместно со следующими методами Motion, имеющими параметр wait : spin_for и spin_to_position.

Usage:
motor_1.is_done()

Параметры

Описание

Этот метод не имеет параметров.

# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
  if motor_1.is_done():
    drivetrain.stop()
  else:
    drivetrain.drive(FORWARD)

is_spinning#

is_spinning возвращает значение логического типа (Boolean), указывающее, вращается ли двигатель или группа двигателей. Это можно использовать для управления синхронизацией других действий в зависимости от движения двигателя.

  • True — Двигатель или группа двигателей вращаются.

  • False — Двигатель или группа двигателей не вращаются.

Этот метод работает совместно со следующими методами Motion, имеющими параметр wait : spin_for и spin_to_position.

Usage:
motor_1.is_spinning()

Параметры

Описание

Этот метод не имеет параметров.

# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
  if motor_1.is_spinning():
    drivetrain.drive(FORWARD)
  else:
    drivetrain.stop()

position#

Положение двигателя или группы двигателей — это угол их вращения, измеряемый в DEGREES или TURNSОдин оборот равен 360 градусам. position возвращает текущее положение двигателя или группы двигателей.

В начале проекта положение двигателя или группы двигателей устанавливается на 0 градусов. Если двигатель или группа двигателей вращается на один оборот вперед, положение будет равно 360 градусам или 1 обороту. Если двигатель или группа двигателей вращается в другом направлении, положение будет отрицательным.

Usage:
motor_1.position(units)

Параметры

Описание

units

Дополнительно. Устройство для возврата двигателя или группы двигателей в исходное положение: DEGREES (по умолчанию) или TURNS.

# Display the motor's position after spinning
brain.screen.print(motor_1.position())
brain.screen.next_row()

motor_1.spin(FORWARD)
wait(1, SECONDS)
brain.screen.print(motor_1.position())

motor_1.stop()

velocity#

Значение velocity возвращает скорость вращения двигателя или группы двигателей в процентах от -100% до 100% или в оборотах в минуту от -127 об/мин до 127 об/мин.

Положительное значение означает, что двигатель или группа двигателей вращаются в прямом направлении. Отрицательное значение означает, что они вращаются в обратном направлении.

Usage:
motor_1.velocity(units)

Параметры

Описание

units

Необязательно. Единица измерения скорости для возврата:

  • PERCENT
  • RPM (по умолчанию) — оборотов в минуту
  • VelocityUnits.DPS — градусы в секунду

current#

current возвращает величину электрического тока, потребляемого двигателем или группой двигателей, измеряемую в амперах от 0,0 до 1,2 А. Ток — это количество электричества, протекающего через двигатель или группу двигателей.

Более высокое значение тока означает, что двигатель или группа двигателей потребляют больше электроэнергии. Это может произойти, когда двигатель или группа двигателей поднимают что-то тяжелое, толкают какой-либо объект или пытаются сдвинуться с места, когда они застряли.

Это можно использовать для проверки того, испытывает ли двигатель или группа двигателей трудности во время движения. Если ток остается высоким, двигатель может нагреваться или потреблять энергию менее эффективно.

Usage:
motor_1.current(units)

Параметры

Описание

units

Необязательно. Текущая единица измерения для возврата:

  • CurrentUnits.AMP (по умолчанию) — Амперы

power#

Значение power показывает, сколько энергии потребляет двигатель или группа двигателей, измеряемое в ваттах от 0,0 до 22,0 Вт. Мощность показывает, как быстро двигатель или группа двигателей потребляет энергию.

Более высокое значение мощности означает, что двигатель или группа двигателей потребляют энергию быстрее. Это может происходить, когда двигатель или группа двигателей поднимают что-то тяжелое, толкают объект или пытаются сдвинуться с места, когда они застряли.

Это можно использовать для сравнения движений или проверки того, испытывает ли двигатель или группа двигателей трудности. Если мощность остается высокой, двигатель может нагреваться или потреблять энергию менее эффективно.

Usage:
motor_1.power(units)

Параметры

Описание

units

Необязательно. Возвращаемая единица измерения мощности:

  • PowerUnits.WATT (по умолчанию) — Ватт

torque#

Крутящий момент показывает, насколько сильно двигатель или группа двигателей скручиваются, толкают или тянут во время вращения.

Значение torque и показывает величину крутящего момента, используемого двигателем или группой двигателей, измеряемую в дюйм-фунтах (InLb) от 0,0 до 22,0 или ньютон-метрах (Нм) от 0,0 до 2,1.

Более высокое значение крутящего момента означает, что двигатель или группа двигателей прилагают больше усилий для толкания или тяги. Это может происходить, когда двигатель или группа двигателей поднимают что-то тяжелое, толкают какой-либо объект или пытаются сдвинуться с места, когда они застряли.

Это можно использовать для проверки того, испытывает ли двигатель или группа двигателей трудности, или для сравнения того, какое усилие требуется для выполнения различных движений.

Чтобы задать крутящий момент двигателя или группы двигателей, используйте set_max_torque.

Usage:
motor_1.torque(units)

Параметры

Описание

units

Единица измерения крутящего момента для возврата:

  • TorqueUnits.NM (по умолчанию) — Ньютон-метры
  • TorqueUnits.INLB — Дюйм-фунты

efficiency#

Показатель эффективности efficiency отражает, насколько эффективно двигатель или группа двигателей используют мощность, в процентах от 0% до 100%.

КПД показывает, какая часть мощности двигателя или группы двигателей используется для движения. Более высокое значение КПД означает, что большая часть мощности двигателя или группы двигателей используется для движения. Более низкое значение КПД может наблюдаться, когда двигатель или группа двигателей работают с большой нагрузкой, но мало двигаются, например, когда они застряли или толкают какой-либо объект.

Это можно использовать для сравнения движений или проверки того, не расходует ли двигатель или группа двигателей энергию впустую, вместо того чтобы использовать ее для движения.

Usage:
motor_1.efficiency(units)

Параметры

Описание

units

Необязательно. Единица измерения эффективности для возврата:

  • PERCENT (по умолчанию)

temperature#

temperature возвращает температуру двигателя или группы двигателей.

Температура двигателя показывает, насколько нагрет двигатель или группа двигателей. Более высокая температура означает, что двигатель или группа двигателей нагреваются во время работы. Для обеспечения полной производительности двигатель должен работать при температуре ниже 55°C.

Если двигатель или группа двигателей перегреваются, они снижают максимальный ток для самозащиты. При температуре 70°C двигатель перестает работать до тех пор, пока не остынет.

Это можно использовать для проверки того, не перегревается ли двигатель или группа двигателей во время многократных движений, длительных поездок или при воздействии на какой-либо объект.

Usage:
motor_1.temperature(units)

Параметры

Описание

units

Необязательно. Единица измерения температуры для возврата:

  • TemperatureUnits.CELSIUS (по умолчанию)
  • TemperatureUnits.FAHRENHEIT
  • PERCENT

count#

Функция count возвращает количество двигателей в группе двигателей.

Примечание: Этот метод будет работать только с группой двигателей.

Usage:
motor_group_1.count()

Параметры

Описание

Этот метод не имеет параметров.

get_timeout#

get_timeout возвращает текущий таймаут двигателя или группы двигателей в миллисекундах.

Usage:
motor_1.get_timeout()

Параметры

Описание

Этот метод не имеет параметров.

Строители#

Конструкторы используются для ручного создания объектов Motor и MotorGroup вне окна «Устройства».

Motor#

Двигатель Motor создает двигатель.

Usage:
Motor(port, gears, reverse)

Параметр

Описание

port

Интеллектуальный порт, к которому подключен двигатель, обозначается как Ports.PORTx, где x — номер порта.

gears

Необязательно. Передаточное число двигателя:

  • GearSetting.RATIO_1_1 (по умолчанию) — передаточное число 1:1
  • GearSetting.RATIO_2_1 — передаточное число 2:1
  • GearSetting.RATIO_3_1 — передаточное число 3:1

reverse

Необязательный параметр. Определяет, будет ли направление вращения двигателя изменено:

  • True — заставляет FORWARD вращаться по часовой стрелке.
  • False (по умолчанию) — заставляет FORWARD вращаться против часовой стрелки.

# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)

"""
Create a motor with the following values:
- In Port 1
- 2:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_2_1, True)

MotorGroup#

MotorGroup создает группу двигателей.

Usage:
MotorGroup(motors)

Параметр

Описание

motors

Названия ранее созданных объектов Motor , которые нужно поместить в группу моторов, разделенные запятыми (,). В группу можно добавить до 12 объектов Motor.

# Create the Motors
motor_1 = Motor(Ports.PORT1)
motor_2 = Motor(Ports.PORT2)

# Create a Motor Group
motor_group_1 = MotorGroup(motor_1, motor_2)