Трансмиссия#
Введение#
Силовая установка управляет движением и поворотами VR-робота. Она позволяет ему двигаться вперед или назад, поворачивать влево или вправо, менять направление движения и отслеживать вращение.
Существует множество способов программирования трансмиссии. Ниже приведён список всех методов программирования трансмиссии:
Действия — Перемещение и поворот робота.
drive— Двигает робота вперед или назад бесконечно.drive_for— Перемещает робота вперед или назад на определенное расстояние.turn— Поворачивает робота влево или вправо навсегда.turn_for— Поворачивает робота влево или вправо на определенное количество градусов.turn_to_heading— Поворачивает робота, чтобы тот смотрел в определенном направлении от -359 до 359 градусов.turn_to_rotation— Поворачивает робота на заданное направление.stop— Останавливает движение робота.
Мутаторы — Настройка параметров трансмиссии.
set_heading— Изменяет текущее направление движения робота на новое.set_rotation— Изменяет текущее вращение робота на новое вращение.set_timeout— Устанавливает, сколько времени робот попытается завершить движение.set_drive_velocity— Указывает роботу, с какой скоростью двигаться.set_turn_velocity— Указывает роботу, с какой скоростью нужно поворачивать.
Геттеры — Проверка состояния трансмиссии.
Действия#
drive#
Привод drive перемещает робота вперед или назад бесконечно. Робот будет продолжать движение, пока ему не будет дано другое действие, например, поворот или остановка.
Usage:
drivetrain.drive(direction)
Параметры |
Описание |
|---|---|
|
Направление движения робота: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
drive_for#
drive_for перемещает робота вперед или назад на определенное расстояние. Проект будет ждать, пока робот не завершит движение, прежде чем будет выполнена следующая строка кода.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Параметры |
Описание |
|---|---|
|
Направление движения робота: |
|
Расстояние, которое проезжает робот. Это может быть целое число |
|
Дополнительно. Единица измерения расстояния: |
|
Необязательно. |
def main():
# Drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# VR threads — Do not delete
vr_thread(main)
turn#
turn поворачивает робота влево или вправо бесконечно. Робот будет продолжать поворачивать, пока ему не будет дано другое действие, например, движение или остановка.
Usage:
drivetrain.turn(direction)
Параметры |
Описание |
|---|---|
|
Направление поворота робота: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
turn_for#
turn_for поворачивает робота влево или вправо на определенное количество градусов. Поворот осуществляется относительно текущего положения робота. Проект будет ждать, пока робот не завершит поворот, прежде чем будет выполнена следующая строка кода.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Параметры |
Описание |
|---|---|
|
Направление поворота робота: |
|
Количество градусов, на которое поворачивается робот. Это может быть целое число |
|
Дополнительно. Единица измерения вращения: |
|
Необязательно. |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
Направление движения — это направление, в котором смотрит робот, измеряемое в градусах. turn_to_heading поворачивает робота, чтобы тот смотрел в определенном направлении от -359 до 359 градусов. Робот повернется по кратчайшему направлению, чтобы достичь целевого направления.
Начальный курс робота составляет 0 градусов.
Проект будет ждать, пока робот не завершит вращение, прежде чем запустится следующая строка кода.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Параметры |
Описание |
|---|---|
|
Направление, в котором должен быть повернут робот, в градусах. Это может быть целое число |
|
Дополнительно. Единица измерения вращения: |
|
Необязательно. |
def main():
# 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)
# VR threads — Do not delete
vr_thread(main)
turn_to_rotation#
turn_to_rotation поворачивает робота на определенное расстояние.
Вращение — это величина поворота робота, измеряемая в градусах. В начале проекта значение вращения устанавливается равным 0 градусам. Вращение также можно установить с помощью метода set_rotation.
Значения вращения являются абсолютными. Это означает, что направление поворота зависит от текущего вращения робота. Поворот вправо увеличивает вращение, а поворот влево уменьшает его.
Например, если робот начинает движение с 0 градусов, а затем вы поворачиваетесь на 720 градусов, он дважды повернется вправо. Если же вы повернетесь на 360 градусов, он один раз повернется влево, потому что 360 меньше 720.
Проект будет ждать, пока робот не завершит вращение, прежде чем запустится следующая строка кода.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Параметры |
Описание |
|---|---|
|
Величина поворота в градусах, на которую будет поворачиваться робот. Это может быть целое число |
|
Дополнительно. Единица измерения вращения: |
|
Необязательно. |
def main():
# 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)
# VR threads — Do not delete
vr_thread(main)
stop#
stop останавливает движение робота.
Usage:
drivetrain.stop()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Мутаторы#
set_heading#
Направление движения — это направление, в котором смотрит робот, измеряемое в градусах. set_heading изменяет текущее направление движения робота на новое значение.
Например, если робот повернулся вправо, установка направления на 0 градусов делает это положение, в котором робот повернулся вправо, новым значением 0 градусов. Затем робот может поворачиваться в другие положения, основываясь на этом новом направлении.
Usage:
drivetrain.set_heading(heading, units)
Параметры |
Описание |
|---|---|
|
Значение направления в градусах, которое нужно задать для робота. Это может быть целое число |
|
Необязательно. Единица измерения заголовка: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
Вращение — это угол поворота робота, измеряемый в градусах. В начале проекта значение вращения устанавливается равным 0 градусам. Параметр set_rotation изменяет текущее значение вращения робота на новое значение.
Например, если робот совершил два полных оборота вправо, значение его вращения составит 720 градусов. Установка значения вращения на 0 градусов сбросит это значение с 720 до 0 градусов. Затем робот сможет совершать повороты, исходя из этого нового значения.
Usage:
drivetrain.set_rotation(rotation, units)
Параметры |
Описание |
|---|---|
|
Значение поворота в градусах, которое нужно установить для робота. Это может быть целое число |
|
Дополнительно. Единица измерения вращения: |
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
Параметр set_timeout задает время, в течение которого робот будет пытаться завершить движение. Если робот не сможет завершить движение за это время, он прекратит попытки и перейдет к следующей строке кода. Это предотвращает застревание робота на определенном этапе движения.
Usage:
drivetrain.set_timeout(value, units)
Параметры |
Описание |
|---|---|
|
Время, в течение которого робот может попытаться завершить движение. Это может быть положительное число |
|
Необязательно. Единица измерения времени: |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
Параметр set_drive_velocity указывает роботу, с какой скоростью двигаться. Более высокое значение в процентах увеличивает скорость движения робота, а более низкое — уменьшает.
Каждый проект начинается с того, что робот по умолчанию движется со скоростью, составляющей 50% от максимальной.
Примечание: Более высокая скорость приводит к более быстрому движению робота, но может снизить точность. Более низкая скорость приводит к более медленному движению робота, но может повысить точность.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Параметры |
Описание |
|---|---|
|
Скорость движения от 0% до 100%. Это может быть целое число |
|
Необязательно. Единица измерения скорости: |
def main():
# 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)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
Параметр set_turn_velocity указывает роботу, с какой скоростью он должен поворачиваться. Более высокое значение в процентах приводит к более быстрому повороту робота, а более низкое — к более медленному.
Каждый проект начинается с того, что робот по умолчанию вращается со скоростью, составляющей 50% от его обычной скорости.
Примечание: Более высокая скорость приводит к более быстрому повороту робота, но может быть менее точной. Более низкая скорость приводит к более медленному повороту робота, но может быть более точной.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Параметры |
Описание |
|---|---|
|
Скорость поворота от 0% до 100%. Это может быть целое число |
|
Необязательно. Единица измерения скорости: |
def main():
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Геттеры#
heading#
Направление движения — это то, в каком направлении смотрит робот, измеряемое в градусах. heading возвращает текущее направление движения робота от 0 до 359,99 градусов.
Начальный курс робота составляет 0 градусов.
Usage:
drivetrain.heading(units)
Параметры |
Описание |
|---|---|
|
Необязательно. Единица измерения заголовка: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
Вращение — это угол поворота робота, измеряемый в градусах. В начале проекта значение вращения устанавливается равным 0 градусам. rotation возвращает текущее вращение робота.
Поворот вправо увеличивает угол поворота, а поворот влево уменьшает его. Например, два полных оборота вправо вернут 720 градусов.
Usage:
drivetrain.rotation(units)
Параметры |
Описание |
|---|---|
|
Дополнительно. Единица измерения вращения: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done возвращает значение логического типа (Boolean), указывающее, завершил ли робот движение. Это можно использовать для управления временем выполнения других действий в зависимости от движения робота.
True— Робот завершил движение.False— Робот всё ещё движется.
Этот метод работает совместно со следующими методами Drivetrain, имеющими параметр wait : drive_for, turn_for, turn_to_heading и turn_to_rotation.
Usage:
drivetrain.is_done()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
is_moving#
is_moving` возвращает значение логического типа (Boolean), указывающее, движется ли робот. Это можно использовать для управления временем выполнения других действий в зависимости от движения робота.
True— Робот движется.False— Робот не движется.
Usage:
drivetrain.is_moving()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |