Python, разработанный специально для роботов#
Введение#
Робот-герой Flex включает в себя двигатель для захвата, двигатель для манипулятора, датчик зрения с искусственным интеллектом, датчик расстояния и датчик игровой системы позиционирования (GPS).
Все стандартные методы VEXcode VR доступны для использования в V5 26-27 Override Playground.
Ниже приведён список всех доступных методов, специфичных для роботов:
Трансмиссия – перемещение и поворот робота.
Действия
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— Указывает роботу, с какой скоростью нужно поворачивать.
Геттеры
heading— Возвращает текущий курс робота от 0 до 359,99 градусов.rotation— Возвращает текущее вращение робота.is_done— Возвращает значение логического значения, указывающее, завершил ли робот движение.is_moving— Возвращает значение логического значения, указывающее, движется ли робот.velocity— Возвращает скорость движения робота.
Движение – Перемещение и отслеживание двигателей робота.
Действия
spin— Вращает двигатель вперед или назад бесконечно.spin_for— Раскручивает двигатель на определенное расстояние.spin_to_position— Раскручивает двигатель до определенного положения.stop— Останавливает вращение двигателя.
Мутаторы
set_position— Изменяет текущее положение двигателя на новое значение.set_velocity— Указывает двигателю, с какой скоростью он должен вращаться.set_timeout— Устанавливает, сколько времени двигатель будет пытаться завершить движение.
Геттеры
is_done— Возвращает значение логического значения, указывающее, завершил ли двигатель движение.is_spinning— Возвращает значение логического значения, указывающее, вращается ли двигатель.position— Возвращает текущее положение двигателя.velocity— Возвращает скорость вращения двигателя.
AI Vision – Захват и анализ объектов с помощью датчика AI Vision.
Геттеры
take_snapshot– Возвращает кортеж обнаруженных объектов для определенной сигнатуры.
Характеристики
.width– Ширина обнаруженного объекта в пикселях..height– Высота обнаруженного объекта в пикселях..centerX– X-позиция центра объекта в пикселях..centerY– Положение центра объекта по оси Y в пикселях..originX– X-позиция верхнего левого угла объекта в пикселях..originY– Положение по оси Y верхнего левого угла объекта в пикселях..id– Идентификатор классификации обнаруженного объекта.
Консоль – Вывод значений в консоль и их мониторинг.
Печать
brain.screen.print— Отображает текст, числа или значения переменных в консоли.brain.screen.next_row— Перемещает курсор консоли в начало следующей строки.brain.screen.clear_screen— Очищает все строки из консоли.
Монитор
monitor_variable— Добавляет одну или несколько предопределенных переменных на вкладку «Монитор».monitor_sensor— Добавляет одно или несколько значений датчика на вкладку «Монитор».
Использование датчиков – Задействуйте различные датчики робота.
Расстояние
found_object– Возвращает значение, указывающее, обнаружил ли датчик расстояния объект в пределах досягаемости.object_distance– Возвращает расстояние между датчиком расстояния и ближайшим обнаруженным объектом.
GPS
x_position– Возвращает текущую x-координату GPS-датчика на поле.y_position– Возвращает текущую y-координату GPS-датчика на поле.heading– Возвращает направление, в котором робот в данный момент находится, на основе данных GPS-датчика.
В примерах на этой странице используется стартовая позиция C из контрольного списка перед матчем на игровой площадке.
Трансмиссия#
Силовая установка управляет движением и поворотами VR-робота. Она позволяет ему двигаться вперед или назад, поворачивать влево или вправо, менять направление движения и отслеживать вращение.
Действия#
водить машину#
Привод drive перемещает робота вперед или назад бесконечно. Робот будет продолжать движение, пока ему не будет дано другое действие, например, поворот или остановка.
Usage:
drivetrain.drive(direction)
Параметры |
Описание |
|---|---|
|
Направление движения робота: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
wait(0.5, SECONDS)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
drive_for#
drive_for перемещает робота вперед или назад на определенное расстояние. Проект будет ждать, пока робот не завершит движение, прежде чем будет выполнена следующая строка кода.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Параметры |
Описание |
|---|---|
|
Направление движения робота: |
|
Расстояние, которое проезжает робот. Это может быть целое число |
|
Дополнительно. Единица измерения расстояния: |
|
Необязательно. |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
повернуть#
turn поворачивает робота влево или вправо бесконечно. Робот будет продолжать поворачивать, пока ему не будет дано другое действие, например, движение или остановка.
Usage:
drivetrain.turn(direction)
Параметры |
Описание |
|---|---|
|
Направление поворота робота: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_for#
turn_for поворачивает робота влево или вправо на определенное количество градусов. Поворот осуществляется относительно текущего положения робота. Проект будет ждать, пока робот не завершит поворот, прежде чем будет выполнена следующая строка кода.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Параметры |
Описание |
|---|---|
|
Направление поворота робота: |
|
Количество градусов, на которое поворачивается робот. Это может быть целое число |
|
Необязательно. Единица измерения угла: |
|
Необязательно. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
Направление движения — это направление, в котором смотрит робот, измеряемое в градусах. turn_to_heading поворачивает робота, чтобы тот смотрел в определенном направлении от -359 до 359 градусов. Робот повернется по кратчайшему направлению, чтобы достичь целевого направления.
Начальный курс — 0 градусов.
Usage:
drivetrain.turn_to_heading(heading, units, wait)
Параметры |
Описание |
|---|---|
|
Направление движения робота должно составлять от -359 до 359 градусов. |
|
Необязательно. Единица измерения угла: |
|
Необязательно. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_heading(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_rotation#
turn_to_rotation поворачивает робота на определенное расстояние.
Угол поворота — это величина, на которую повернулся робот, измеряемая в градусах. В начале проекта значение угла поворота установлено на 0 градусов. Поворот вправо увеличивает угол поворота, а поворот влево — уменьшает.
Например, если робот начинает движение с 0 градусов и поворачивается на 720 градусов, он дважды повернется вправо. Если же он затем повернется на 360 градусов, он один раз повернется влево, потому что 360 меньше 720.
Usage:
drivetrain.turn_to_rotation(rotation, units, wait)
Параметры |
Описание |
|---|---|
|
Величина поворота в градусах, на которую будет поворачиваться робот. Это может быть целое число |
|
Необязательно. Единица измерения угла: |
|
Необязательно. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_rotation(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
останавливаться#
stop останавливает движение робота.
Usage:
drivetrain.stop()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Мутаторы#
set_heading#
Направление движения — это направление, в котором смотрит робот, измеряемое в градусах. set_heading изменяет текущее направление движения робота на новое значение.
Например, если робот повернулся вправо, установка направления на 0 градусов делает это положение, в котором робот повернулся вправо, новым значением 0 градусов. Затем робот может поворачиваться в другие положения, основываясь на этом новом направлении.
Usage:
drivetrain.set_heading(heading, units)
Параметры |
Описание |
|---|---|
|
Значение направления в градусах, которое необходимо задать для робота. |
|
Необязательно. Единица измерения угла: |
def main():
# Make facing the Neutral Goal the new heading
drivetrain.set_heading(110, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
Вращение — это величина поворота робота, измеряемая в градусах. set_rotation изменяет текущее вращение робота на новое значение.
Usage:
drivetrain.set_rotation(rotation, units)
Параметры |
Описание |
|---|---|
|
Значение поворота в градусах, которое нужно установить для робота. Это может быть целое число |
|
Необязательно. Единица измерения угла: |
def main():
# Make facing the Neutral Goal the new rotation
drivetrain.set_rotation(110, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
Параметр set_timeout задает время, в течение которого робот будет пытаться завершить движение. Если робот не сможет завершить движение за это время, он прекратит попытки и перейдет к следующей строке кода. Это предотвращает застревание робота на определенном этапе движения.
Usage:
drivetrain.set_timeout(time, units)
Параметры |
Описание |
|---|---|
|
Количество секунд, в течение которых робот может попытаться завершить движение. Это может быть положительное число |
|
Необязательно. Единица измерения времени: |
def main():
# Turn to face the Neutral Goal
drivetrain.set_timeout(0.8, SECONDS)
drivetrain.turn_for(LEFT, 180, DEGREES)
# 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():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# 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 to face the Neutral Goal faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(LEFT, 110, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Геттеры#
заголовок#
Направление движения — это то, в каком направлении смотрит робот, измеряемое в градусах. heading возвращает текущее направление движения робота от 0 до 359,99 градусов.
Начальный курс робота составляет 0 градусов.
Usage:
drivetrain.heading(units)
Параметры |
Описание |
|---|---|
|
Необязательно. Единица измерения заголовка: |
def main():
# Turn to the Goal, then show heading
drivetrain.turn_for(LEFT, 110, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
вращение#
Вращение — это угол поворота робота, измеряемый в градусах. В начале проекта значение вращения устанавливается равным 0 градусам. rotation возвращает текущее вращение робота.
Поворот вправо увеличивает угол поворота, а поворот влево уменьшает его. Например, два полных оборота вправо вернут 720 градусов.
Usage:
drivetrain.rotation(units)
Параметры |
Описание |
|---|---|
|
Дополнительно. Единица измерения вращения: |
def main():
# Spin to find a Pin, then show rotation
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
готово#
is_done возвращает значение логического типа (Boolean), указывающее, завершил ли робот движение. Это можно использовать для управления временем выполнения других действий в зависимости от движения робота.
True— Робот завершил движение.False— Робот всё ещё движется.
Этот метод работает совместно со следующими методами Drivetrain, имеющими параметр wait : drive_for, turn_for, turn_to_heading и turn_to_rotation.
Usage:
drivetrain.is_done()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait(0.5, SECONDS)
while not drivetrain.is_done():
wait(5, MSEC)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
is_moving#
is_moving` возвращает значение логического типа (Boolean), указывающее, движется ли робот. Это можно использовать для управления временем выполнения других действий в зависимости от движения робота.
True— Робот движется.False— Робот не движется.
Usage:
drivetrain.is_moving()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Raise the Arm once stopped near the Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait (0.5, SEC)
while drivetrain.is_moving():
wait(5, MSEC)
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
скорость#
Значение velocity возвращает скорость движения робота в процентах от -100% до 100%.
Usage:
drivetrain.velocity(units)
Параметры |
Описание |
|---|---|
|
Необязательно. Единица измерения скорости: |
def main():
# Show speed while driving to the Goal
drivetrain.drive_for(FORWARD, 150, MM)
brain.screen.print("Velocity: ")
brain.screen.print(drivetrain.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
Движение#
В системе Flex используется двигатель манипулятора для подъема и опускания манипулятора, а также двигатель захвата для открытия и закрытия захвата.
Каждый двигатель имеет собственное поведение в зависимости от направления вращения. Описание направлений объясняет, как каждое направление перемещает данный двигатель на платформе Flex.
Действия#
вращаться#
spin вращает двигатель в одном из двух направлений бесконечно. Двигатель будет продолжать вращаться до тех пор, пока ему не будет дано другое действие, например, вращение в другом направлении или остановка.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Направление вращения двигателя:
|
def main():
# Raise the Arm before driving toward a Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_thread(main)
спин_фор#
Функция spin_for spin_for вращает двигатель на определенное расстояние. Вращение происходит относительно текущего положения двигателя. Проект будет ждать, пока двигатель не завершит вращение, прежде чем будет выполнена следующая строка кода.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Направление вращения двигателя:
|
|
Расстояние, на которое вращается двигатель. |
|
Дополнительно. Единица измерения расстояния: |
|
Необязательно.
|
def main():
# Raise the Arm to carry the Pin to the Goal
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
spin_to_position#
spin_to_position вращает двигатель в заданное положение.
Положение двигателя — это угол его вращения, измеряемый в DEGREES или TURNSОдин оборот равен 360 градусам. В начале проекта положение двигателя манипулятора устанавливается на 0 градусов. Исключением является двигатель захвата — он начинает работу с 467 градусов (полностью замкнутый). Положение двигателя также можно установить с помощью метода set_position.
Значения положения являются абсолютными. Это означает, что направление вращения зависит от текущего положения двигателя.
Например, если двигатель начинает вращаться с 0 градусов и достигает положения 720 градусов, он совершит два оборота вперед. Если же он затем достигнет положения 360 градусов, он совершит один оборот в обратном направлении, поскольку 360 меньше 720.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Значение положения, до которого будет вращаться двигатель. |
|
Дополнительно. Единица измерения положения: |
|
Необязательно.
|
def main():
# Raise the Arm, then release the Pin
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
останавливаться#
stop останавливает вращение двигателя.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Raise the Arm partway to hold the Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_thread(main)
Мутаторы#
set_position#
Положение двигателя — это расстояние, на которое он повернулся, измеряемое в DEGREES или TURNSОдин оборот равен 360 градусам. set_position изменяет текущее положение двигателя на новое значение.
Например, если двигатель повернулся на 180 градусов, установка положения на 0 градусов сбросит это положение со 180 до 0 градусов. Затем двигатель сможет вращаться в положениях, соответствующих этому новому значению.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Значение положения, которое нужно установить для двигателя. |
|
Дополнительно. Единица измерения положения: |
def main():
# Reset encoder, raise Arm, place Pin
arm_motor.set_position(0, DEGREES)
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_velocity#
Параметр set_velocity указывает двигателю скорость вращения. Более высокое значение в процентах приводит к более быстрому вращению двигателя, а более низкое — к более медленному.
Каждый проект начинается с того, что по умолчанию каждый двигатель вращается со скоростью, составляющей 50% от обычной.
Примечание: Более высокая скорость вращения двигателя приводит к его более быстрому вращению, но может снизить точность. Более низкая скорость вращения двигателя приводит к его более медленному вращению, но может повысить точность.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Скорость вращения от 0% до 100%. Это может быть целое число |
|
Единица измерения скорости: |
def main():
# Raise the Arm fast to release the Pin
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_for(FORWARD, 800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
Параметр set_timeout задает время, в течение которого двигатель будет пытаться завершить движение. Если двигатель не сможет завершить движение за это время, он прекратит попытки и перейдет к следующей строке кода. Это предотвращает застревание двигателя в процессе движения.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Время, в течение которого двигатель может попытаться завершить движение. Это может быть положительное число |
|
Единица измерения времени: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.set_timeout(1, SECONDS)
arm_motor.spin_for(FORWARD, 1800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Геттеры#
готово#
is_done возвращает значение логического типа (Boolean), указывающее, завершилось ли движение двигателя. Это можно использовать для управления временем выполнения других действий в зависимости от движения двигателя.
True— Двигатель завершил движение.False— Двигатель все еще вращается.
Этот метод работает совместно со следующими методами Motion, имеющими параметр wait : spin_for и spin_to_position.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Raise the Arm while driving to the Goal
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while not arm_motor.is_done():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
is_spinning#
is_spinning` возвращает значение логического типа (Boolean), указывающее, вращается ли двигатель. Это можно использовать для управления синхронизацией других действий в зависимости от движения двигателя.
True— Мотор вращается.False— Двигатель не вращается.
Этот метод работает совместно со следующими методами Motion, имеющими параметр wait : spin_for и spin_to_position.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Raise the Arm while driving to the Goal, then release the Pin
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while arm_motor.is_spinning():
drivetrain.drive_for(FORWARD, 25, MM)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
позиция#
Положение двигателя — это расстояние, на которое он повернулся, измеряемое в DEGREES или TURNS. Один оборот равен 360 градусам. position возвращает текущее положение двигателя.
В начале проекта положение двигателя манипулятора устанавливается на 0 градусов. Исключением является двигатель захвата — он начинает работу с положения 467 градусов (полностью замкнутый). Если двигатель вращается на один полный оборот вперед, положение увеличивается. Если двигатель вращается в другом направлении, положение уменьшается.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Устройство для возврата двигателя в исходное положение: |
def main():
# Raise the Arm, then release the Pin
while arm_motor.position(DEGREES) < 800:
arm_motor.spin(FORWARD)
wait(2, MSEC)
arm_motor.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
скорость#
velocity возвращает скорость вращения двигателя.
Положительное значение означает, что двигатель вращается в прямом направлении. Отрицательное значение означает, что двигатель вращается в обратном направлении.
Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:
мотор |
Командование |
|---|---|
|
|
|
|
Параметры |
Описание |
|---|---|
|
Единица измерения скорости для возврата: |
def main():
# Show Arm Motor velocity while raising
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.2, SECONDS)
brain.screen.print(arm_motor.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
ИИ-зрение#
Геттеры#
сделать снимок#
take_snapshot фильтрует данные из кадра датчика AI Vision, сводя их к единой сигнатуре — сохраненному описанию чего-либо, что датчик может распознать, например, игрового элемента на поле, — и возвращает кортеж.
Кортеж хранит объекты, упорядоченные по ширине от наибольшего к наименьшему, начиная с индекса 0. Доступ к свойствам каждого объекта (properties) осуществляется по его индексу. Если соответствующие объекты не обнаружены, возвращается пустой кортеж.
Usage:
ai_vision.take_snapshot(signature)
Параметры |
Описание |
|---|---|
|
Фильтрует набор данных, чтобы включить только данные заданной сигнатуры. Доступные сигнатуры:
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn to face the Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn(LEFT)
elif ai_objects[0].centerX > 180:
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
break
# VR threads — Do not delete
vr_thread(main)
Характеристики#
После использования take_snapshot каждый объект, хранящийся в кортеже, включает в себя семь свойств.
Все значения свойств, кроме .id описывают положение и размер обнаруженного объекта в поле зрения датчика AI Vision в момент использования take_snapshot Эти значения измеряются в пикселях, исходя из разрешения датчика 320 на 240 пикселей.
.ширина#
.width возвращает ширину обнаруженного объекта в пикселях, которая является целым числом от 1 до 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].width > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.высота#
.height возвращает высоту обнаруженного объекта в пикселях, которая является целым числом от 1 до 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].height > 200:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.centerX#
.centerX возвращает x-координату центра обнаруженного объекта в пикселях, которая является целым числом от 0 до 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.centerY#
.centerY возвращает y-координату центра обнаруженного объекта в пикселях, которая является целым числом от 0 до 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerY > 230:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.originX#
.originX возвращает x-координату верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях, которая является целым числом от 0 до 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originX < 100:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.originY#
.originY возвращает y-координату верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях, которая является целым числом от 0 до 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originY > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.идентификатор#
.id возвращает идентификатор обнаруженной классификации ИИ в виде целого числа.
Классификация ИИ |
идентификатор |
Подпись |
|---|---|---|
RedBluePin |
0 |
|
BlueYellowPin |
1 |
|
RedYellowPin |
2 |
|
Желтая булавка |
3 |
|
Чашка |
4 |
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Display the ID of the next closest object
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
brain.screen.print(ai_objects[0].id)
break
# VR threads — Do not delete
vr_thread(main)
Консоль#
В консоли отображаются текст, числа и значения переменных во время выполнения проекта. Методы консоли также позволяют перемещать курсор на новую строку, очищать консоль и добавлять переменные или значения датчиков на вкладку «Монитор».
Печать#
мозг.экран.печать#
brain.screen.print отображает текст, числа или значения переменных в консоли, используя текущую позицию курсора.
Используйте brain.screen.next_row, если вы хотите, чтобы следующее выводимое значение начиналось с новой строки.
Usage:
brain.screen.print(value)
Параметры |
Описание |
|---|---|
|
Текст, число или значение переменной для отображения в консоли. |
def main():
# Display a message in the Console
brain.screen.print("Hello, robot!")
# VR threads — Do not delete
vr_thread(main)
brain.screen.next_row#
brain.screen.next_row перемещает курсор в столбец 1 следующей строки в консоли. Следующее выводимое значение появится в этой строке.
Usage:
brain.screen.next_row()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Print on two rows
brain.screen.print("Row 1")
brain.screen.next_row()
brain.screen.print("Row 2")
# VR threads — Do not delete
vr_thread(main)
brain.screen.clear_screen#
brain.screen.clear_screen очищает все строки в консоли и перемещает курсор обратно в строку 1.
Usage:
brain.screen.clear_screen()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Display text, then clear it after two seconds
brain.screen.print("This will disappear...")
wait(2, SECONDS)
brain.screen.clear_screen()
# VR threads — Do not delete
vr_thread(main)
Монитор#
переменная монитора#
Параметр monitor_variable добавляет одну или несколько предопределенных переменных на вкладку «Монитор» в VEXcode. Это позволяет отслеживать изменение значения переменной во время выполнения проекта.
Для успешного мониторинга переменных monitor_variable они должны быть глобальными. Укажите имя каждой переменной в виде строки.
Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)
Параметры |
Описание |
|---|---|
|
Имя предопределенной глобальной переменной для отслеживания, заданное в виде строки. Чтобы отслеживать несколько переменных, разделяйте имена переменных запятой. |
def main():
# Monitor the number of loops
global loops
monitor_variable("loops")
# Turn in a full circle 3 times
for loops in range(12):
drivetrain.turn_for(RIGHT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
монитор_датчик#
Параметр monitor_sensor добавляет одно или несколько значений датчиков на вкладку «Монитор» в VEXcode. Это позволяет отслеживать изменение значений датчиков во время выполнения проекта.
Укажите значение каждого датчика в виде строки.
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
Параметры |
Описание |
|---|---|
|
Значение датчика для мониторинга, заданное в виде строки. Чтобы отслеживать несколько значений датчика, разделяйте каждое значение запятой. Поддерживаемые идентификаторы датчиков:
|
def main():
# Monitor the robot's heading
monitor_sensor("drivetrain.heading")
drivetrain.turn_for(RIGHT, 450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Ощущение#
Расстояние#
найденный_объект#
found_object возвращает значение, указывающее, обнаруживает ли датчик расстояния в данный момент объект в пределах 2000 мм.
True— Датчик расстояния обнаруживает объект.False— Датчик расстояния не обнаруживает объект.
Usage:
distance.found_object()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Turn until something is detected, then release the Pin
drivetrain.turn(RIGHT)
while True:
wait(5, MSEC)
if distance.found_object():
drivetrain.stop()
break
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
объект_расстояние#
object_distance возвращает расстояние между датчиком расстояния и ближайшим обнаруженным объектом.
Usage:
distance.object_distance(units)
Параметры |
Описание |
|---|---|
|
Единица измерения расстояния: |
def main():
# Drive until 200 mm from the Goal, then release the Pin
while distance.object_distance(MM) > 200:
wait(5, MSEC)
drivetrain.drive(FORWARD)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
GPS#
x_позиция#
x_position возвращает текущую x-координату GPS-датчика (системы позиционирования в игре™), расположенного на поле.
Usage:
gps.x_position(units)
Параметры |
Описание |
|---|---|
единицы |
Единица измерения значения смещения: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.x_position(MM) > -1370:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
y_позиция#
y_position возвращает текущую y-координату GPS-датчика (Game Positioning System™), расположенного на поле.
Usage:
gps.y_position(units)
Параметры |
Описание |
|---|---|
единицы |
Единица измерения значения смещения: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.y_position(MM) < -450:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
заголовок#
Параметр heading возвращает направление, в котором в данный момент находится робот, на основе показаний датчика GPS (Game Positioning System™) в диапазоне от 0 до 359 градусов.
Usage:
gps.heading()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
def main():
# Raise the Arm, drive to the Goal, release the Pin
monitor_sensor("gps.heading")
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# Turn left to face the Neutral Goal
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.turn(LEFT)
while not gps.heading() < 18:
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)