Python, разработанный специально для роботов#

Введение#

Робот-герой Хьюи оснащен двумя вариантами двигателей, датчиком зрения IQ AI, оптическим датчиком и сенсорным светодиодом.

Все стандартные методы VEXcode VR доступны для использования на игровой площадке IQ 25-26 Mix & Match.

Ниже приведён список всех доступных методов, специфичных для роботов:

Трансмиссия – перемещение и поворот робота.

  • Действия

    • 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 — Захват и анализ объектов с помощью датчика IQ 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 — Добавляет одно или несколько значений датчика на вкладку «Монитор».

Использование датчиков — Задействуйте различные датчики робота.

  • Сенсорный светодиод

    • set_color - Устанавливает цвет сенсорного светодиода на выбранный цвет.

  • Оптический

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

    • color – Возвращает цвет, обнаруженный оптическим датчиком.

    • brightness – Возвращает количество света, отраженного от объекта.

    • hue – Возвращает оттенок, обнаруженный оптическим датчиком.

    • object_detected – Регистрирует функцию, которая будет вызываться, когда оптический датчик обнаружит объект.

    • object_lost – Регистрирует функцию, которая будет вызываться, когда оптический датчик потеряет объект.

В примерах на этой странице используется начальная позиция по умолчанию в игровой зоне.

Трансмиссия#

Силовая установка управляет движением и поворотами VR-робота. Она позволяет ему двигаться вперед или назад, поворачивать влево или вправо, менять направление движения и отслеживать вращение.

Действия#

водить машину#

Привод drive перемещает робота вперед или назад бесконечно. Робот будет продолжать движение, пока ему не будет дано другое действие, например, поворот или остановка.

Usage:
drivetrain.drive(direction)

Параметры

Описание

direction

Направление движения робота: FORWARD или REVERSE.

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)

Параметры

Описание

direction

Направление движения робота: FORWARD или REVERSE.

distance

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

units

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

wait

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

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 поворачивает робота влево или вправо бесконечно. Робот будет продолжать поворачивать, пока ему не будет дано другое действие, например, движение или остановка.

Usage:
drivetrain.turn(direction)

Параметры

Описание

direction

Направление поворота робота: LEFT или RIGHT.

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)

Параметры

Описание

direction

Направление поворота робота: LEFT или RIGHT.

angle

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

units

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

wait

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

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)

Параметры

Описание

angle

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

units

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

wait

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

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)

Параметры

Описание

angle

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

units

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

wait

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

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 останавливает движение робота.

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)

Параметры

Описание

heading

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

units

Необязательно. Единица измерения заголовка: DEGREES умолчанию).

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)

Параметры

Описание

rotation

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

units

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

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)

Параметры

Описание

value

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

units

Единица измерения времени: SECONDS или MSEC).

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)

Параметры

Описание

velocity

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

units

Необязательно. Единица измерения скорости: PERCENT (по умолчанию).

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)

Параметры

Описание

velocity

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

units

Необязательно. Единица измерения скорости: PERCENT (по умолчанию).

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 возвращает текущее направление движения робота от 0 до 359,99 градусов.

Начальный курс робота составляет 0 градусов.

Usage:
drivetrain.heading(units)

Параметры

Описание

units

Необязательно. Единица измерения заголовка: DEGREES умолчанию).

def main():
    # Display the heading after turning
    drivetrain.turn_for(RIGHT, 450, 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)

Параметры

Описание

units

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

def main():
    # Display the rotation after turning
    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()

Параметры

Описание

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

is_moving#

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

  • True — Робот движется.

  • False — Робот не движется.

Usage:
drivetrain.is_moving()

Параметры

Описание

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

скорость#

Значение velocity возвращает скорость движения робота в процентах от -100% до 100%.

Usage:
drivetrain.velocity(units)

Параметры

Описание

units

Необязательно. Единица измерения скорости: PERCENT (по умолчанию).

Пример

def main():
    # Display the velocity after driving
    drivetrain.drive_for(FORWARD, 150, MM)
    brain.screen.print("Velocity: ")
    brain.screen.print(drivetrain.velocity(PERCENT))

Движение#

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

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

Действия#

вращаться#

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.spin(direction) — Коготь двигателя

lift_motor

lift_motor.spin(direction) — Lift Motor

Параметры

Описание

direction

Направление вращения двигателя:

  • FORWARD — Открывает захват или опускает подъемник.
  • REVERSE — Закрывает захват или поднимает подъемник.

def main():
    # Raise the lift, drive forward, then open the claw.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

спин_фор#

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.spin_for(direction, distance, units, wait=True) — Коготь двигателя

lift_motor

lift_motor.spin_for(direction, distance, units, wait=True) — Lift Motor

Параметры

Описание

direction

Направление вращения двигателя:

  • FORWARD — Открывает захват или опускает подъемник.
  • REVERSE — Закрывает захват или поднимает подъемник.

distance

Расстояние, на которое вращается двигатель. DEGREES используйте целые числа. TURNS можете использовать целые числа или десятичные дроби.

units

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

wait

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

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

def main():
    # Raise the lift, drive forward, then open the claw.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

spin_to_position#

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

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

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

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.spin_to_position(angle, units, wait=True) — Коготь двигателя

lift_motor

lift_motor.spin_to_position(angle, units, wait=True) — Подъемный двигатель

Параметры

Описание

angle

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

units

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

wait

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

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

def main():
    # Raise the lift to a known position, drive, then open the claw
    lift_motor.spin_to_position(-720, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

остановить двигатель#

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.stop() — Коготь двигателя

lift_motor

lift_motor.stop() — Двигатель лифта

Параметры

Описание

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

def main():
    # Raise the lift for 2 seconds, then stop
    lift_motor.spin(REVERSE)
    wait(2, SECONDS)
    lift_motor.stop()
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

Мутаторы#

set_position#

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

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.set_position(position, units) — Коготь двигателя

lift_motor

lift_motor.set_position(position, units) — Двигатель лифта

Параметры

Описание

position

Значение положения, которое нужно установить для двигателя. DEGREES использовать целые числа. TURNS можно использовать целые числа или десятичные дроби.

units

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

def main():
    # Reset the lift position, then move to a new target.
    lift_motor.set_position(100, DEGREES)
    lift_motor.spin_to_position(-500, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

set_velocity#

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

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

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.set_velocity(velocity, units) — Коготь двигателя

lift_motor

lift_motor.set_velocity(velocity, units) — Подъемный двигатель

Параметры

Описание

velocity

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

units

Единица измерения скорости: PERCENT.

def main():
    # Set lift speed, then raise it.
    lift_motor.set_velocity(100, PERCENT)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.set_timeout(value, units) — Коготь двигателя

lift_motor

lift_motor.set_timeout(value, units) — Подъемный двигатель

Параметры

Описание

value

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

units

Единица измерения времени: SECONDS или MSEC).

def main():
    # Limit how long the lift waits to reach its target.
    lift_motor.set_timeout(2, SECONDS)
    lift_motor.spin_for(REVERSE, 1800, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

Геттеры#

готово#

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

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

  • False — Двигатель все еще вращается.

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.is_done() — Коготь двигателя

lift_motor

lift_motor.is_done() — Подъемный двигатель

Параметры

Описание

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

def main():
    # Flash the Touch LED while the lift is moving.
    lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while not lift_motor.is_done():
        touchled.set_color(RED)
        wait(0.5, SECONDS)
        touchled.set_color(NONE)
        wait(0.5, SECONDS)

# VR threads — Do not delete
vr_thread(main)

is_spinning#

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

  • True — Мотор вращается.

  • False — Двигатель не вращается.

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.is_spinning() — Коготь двигателя

lift_motor

lift_motor.is_spinning() — Подъемный двигатель

Параметры

Описание

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

def main():
    # Flash the Touch LED while the lift is spinning.
    lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while lift_motor.is_spinning():
        touchled.set_color(RED)
        wait(0.5, SECONDS)
        touchled.set_color(NONE)
        wait(0.5, SECONDS)

# VR threads — Do not delete
vr_thread(main)

позиция#

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

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.position(units) — Коготь двигателя

lift_motor

lift_motor.position(units) — Lift Motor

Параметры

Описание

units

Устройство для возврата двигателя в исходное положение: DEGREES или TURNS оборота.

def main():
    # Raise the lift until it reaches roughly 600 degrees.
    lift_motor.spin(REVERSE)
    while not lift_motor.position(DEGREES) <= -600:
        wait(2, MSEC)
    lift_motor.stop()
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

скорость#

velocity возвращает скорость вращения двигателя.

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

Использование:
Для этого метода можно использовать один из двух доступных объектов двигателя, как показано ниже:

мотор

Командование

claw_motor

claw_motor.velocity(units) — Коготь двигателя

lift_motor

lift_motor.velocity(units) — Lift Motor

Параметры

Описание

units

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

def main():
    # Print the lift velocity while it is moving.
    lift_motor.set_velocity(100, PERCENT)
    lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
    wait(0.5, SECONDS)
    brain.screen.print(lift_motor.velocity(PERCENT))

# VR threads — Do not delete
vr_thread(main)

ИИ-зрение#

Геттеры#

сделать снимок#

Функция take_snapshot take_snapshot фильтрует данные из кадра датчика IQ AI Vision Sensor, сводя их к единой сигнатуре — сохраненному описанию того, что датчик может распознать, например, игрового элемента на поле, — и возвращает кортеж.

Кортеж хранит объекты, упорядоченные по ширине от наибольшего к наименьшему, начиная с индекса 0. Доступ к свойствам каждого объекта (properties) осуществляется по его индексу. Если соответствующие объекты не обнаружены, возвращается пустой кортеж.

Usage:
ai_vision.take_snapshot(signature)

Параметры

Описание

signature

Фильтрует набор данных, чтобы включить только данные с заданной сигнатурой. Доступные сигнатуры:

  • AiVision.ALL_AIOBJS - Обнаруживает лучи и синие, красные и оранжевые метки.

def main():
    # Place the Red Pin on the top-left Blue Pin.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.turn_for(LEFT, 38, DEGREES)

    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    while not ai_objects[0].width > 48:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        drivetrain.drive(FORWARD)

    drivetrain.drive_for(FORWARD, 160, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

Характеристики#

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

Все значения свойств, кроме .id описывают положение и размер обнаруженного объекта в поле зрения датчика IQ AI Vision в момент использования take_snapshot Эти значения измеряются в пикселях, исходя из разрешения датчика 320 на 240 пикселей.

.ширина#

.width возвращает ширину обнаруженного объекта в пикселях, которая является целым числом от 1 до 320.

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].width)

# VR threads — Do not delete
vr_thread(main)

.высота#

.height возвращает высоту обнаруженного объекта в пикселях, которая является целым числом от 1 до 240.

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].height)

# VR threads — Do not delete
vr_thread(main)

.centerX#

.centerX возвращает x-координату центра обнаруженного объекта в пикселях, которая является целым числом от 0 до 320.

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].centerX)

# VR threads — Do not delete
vr_thread(main)

.centerY#

.centerY возвращает y-координату центра обнаруженного объекта в пикселях, которая является целым числом от 0 до 240.

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].centerY)

# VR threads — Do not delete
vr_thread(main)

.originX#

.originX возвращает x-координату верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях, которая является целым числом от 0 до 320.

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].originX)

# VR threads — Do not delete
vr_thread(main)

.originY#

.originY возвращает y-координату верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях, которая является целым числом от 0 до 240.

def main():
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
    if len(ai_objects) > 0:
        brain.screen.print(ai_objects[0].originY)

# VR threads — Do not delete
vr_thread(main)

.идентификатор#

.id возвращает идентификатор обнаруженной классификации ИИ в виде целого числа.

Классификация ИИ

идентификатор

Подпись

Луч

0

GameElements.BEAM

Синяя булавка

1

GameElements.BLUE_PIN

Красная булавка

2

GameElements.RED_PIN

Оранжевый значок

3

GameElements.ORANGE_PIN

def main():
    # Find the nearest Blue Pin in the current snapshot.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    object_count = 1
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) > 0:
        for repeat_count in range(len(ai_objects)):
            if ai_objects[repeat_count].id == GameElements.BLUE_PIN:
                brain.screen.print(str("Closest Blue Pin is ") + str(object_count))
                break
            object_count = object_count + 1

# VR threads — Do not delete
vr_thread(main)

Консоль#

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

Печать#

мозг.экран.печать#

brain.screen.print отображает текст, числа или значения переменных в консоли, используя текущую позицию курсора. Ведет себя аналогично print на странице API консоли.

Используйте brain.screen.next_row, если вы хотите, чтобы следующее выводимое значение начиналось с новой строки.

Usage:
brain.screen.print(value)

Параметры

Описание

value

Текст, число или значение переменной для отображения в консоли.

def main():
    # Display a message in the Console
    brain.screen.print("Hello, robot!")

# VR threads — Do not delete
vr_thread(main)

Консоль VEXcode, отображающая консоль и текст «Привет, робот!».

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)

Консоль VEXcode, отображающая консоль и текст «Строка 1» на первой строке и «Строка 2» на второй строке.

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”)

Параметры

Описание

variable

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

def main():
    # Monitor the amount of loops
    global loops
    monitor_variable("loops")

    # Drive in a square 3 times
    for loops in range(12):
        drivetrain.turn_for(RIGHT, 90, DEGREES)
        drivetrain.drive_for(FORWARD, 150, MM)

# VR threads — Do not delete
vr_thread(main)

монитор_датчик#

Параметр monitor_sensor добавляет одно или несколько значений датчиков на вкладку «Монитор» в VEXcode. Это позволяет отслеживать изменение значений датчиков во время выполнения проекта.

Укажите значение каждого датчика в виде строки.

Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)

Параметры

Описание

sensor

Значение датчика для мониторинга, заданное в виде строки. Чтобы отслеживать несколько значений датчика, разделяйте каждое значение запятой. Поддерживаемые идентификаторы датчиков:

  • Brain
    • brain.timer.time
  • Drivetrain
    • drivetrain.is_done
    • drivetrain.is_moving
    • drivetrain.heading
    • drivetrain.rotation
    • drivetrain.velocity
  • Pusher Motor
    • pusher_motor.is_done
    • pusher_motor.is_spinning
    • pusher_motor.position
    • pusher_motor.velocity
  • Arm Motor
    • arm_motor.is_done
    • arm_motor.is_spinning
    • arm_motor.position
    • arm_motor.velocity
  • Передний датчик расстояния
    • front_distance.is_object_detected
    • front_distance.object_distance_mm
    • front_distance.object_distance_inches
  • Передний оптический датчик
    • front_optical.is_near_object
    • front_optical.color
    • front_optical.brightness
    • front_optical.hue
  • GPS Sensor
    • gps.position_mm
    • gps.position_inches
    • gps.heading
  • Pusher Rotation Sensor
    • pusher_rotation.angle
    • pusher_rotation.position
  • AI Vision Sensor
    • ai_vision.object_count
    • ai_vision.height
    • ai_vision.width
    • ai_vision.centerX
    • ai_vision.centerY
    • ai_vision.originX
    • ai_vision.originY
    • ai_vision.id

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)

Ощущение#

Сенсорный светодиод#

set_color#

set_color устанавливает цвет сенсорного светодиода.

Usage:
touchled.set_color(color)

Параметры

Описание

color

The color to set the Touch LED to:

  • NONE - Turns off the Touch LED
  • RED
  • GREEN
  • BLUE
  • YELLOW
  • ORANGE
  • PURPLE
  • WHITE
  • RED_VIOLET
  • VIOLET
  • BLUE_VIOLET
  • BLUE_GREEN
  • YELLOW_GREEN
  • YELLOW_ORANGE
  • RED_ORANGE

def main():
    # Light the Touch LED while placing a Pin.
    touchled.set_color(RED)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    touchled.set_color(NONE)

# VR threads — Do not delete
vr_thread(main)

Оптический#

is_near_object#

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

  • True – Оптический датчик обнаруживает объект.

  • False – Оптический датчик не обнаруживает объект.

Usage:
optical.is_near_object()

Параметры

Описание

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

def main():
    # Wait until the claw no longer detects an object, then lower the lift.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while optical.is_near_object():
        wait(2, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

цвет#

Функция color возвращает экземпляр класса ` Color , основанный на обнаруженном значении оттенка. Эти значения можно сравнивать с предопределенными объектами Color для создания условных операторов.

Возможные цвета:

  • NONE

  • RED - Оттенок в диапазоне от 340° до 20°

  • GREEN - Оттенок от 80° до 140°

  • BLUE - Оттенок от 200° до 240°

  • YELLOW - Оттенок от 40° до 60°

  • ORANGE - Оттенок от 20° до 40°

  • PURPLE - Оттенок в диапазоне от 240° до 280°

  • CYAN - Оттенок в диапазоне от 140° до 200°

Примечание: Оптический датчик ищет диапазоны оттенков, соответствующие указанному цвету. Для определения конкретных диапазонов оттенков см. hue.

Usage:
optical.color()

Параметры

Описание

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

def main():
    # Wait until the Optical Sensor detects red, then lower the lift.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while not optical.color() == RED:
        wait(5, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

яркость#

brightness возвращает количество света, отраженного от объекта, в виде десятичной дроби (float в процентах.

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

Usage:
optical.brightness()

Параметры

Описание

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

def main():
    # Lower the lift once the claw sees a darker object.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while not 30 > optical.brightness():
        wait(5, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

оттенок#

hue возвращает значение оттенка обнаруженного цвета в виде десятичного числа (float) от 0 до 359.

Оттенок — это способ описания цвета с помощью чисел на цветовом круге.

Круговой цветовой круг, отображающий полный спектр оттенков, обозначенных значениями градусов по периметру, увеличивающимися с шагом в 30 градусов от 0 градусов вверху до 360 градусов.

Usage:
optical.hue()

Параметры

Описание

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

def main():
    # Lower the lift once the Optical Sensor reports a hue value.
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)
    while not optical.hue() > 0:
        wait(5, MSEC)
    lift_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

объект_обнаружен#

object_detected регистрирует функцию, которая будет вызываться всякий раз, когда оптический датчик обнаружит новый объект.

Usage:
optical.object_detected(callback, arg)

Параметры

Описание

callback

Ранее определенная функция, которая выполняется, когда оптический датчик обнаруживает новый объект.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information.

def pin_in_claw():
    touchled.set_color(RED)

def main():
    # Change the Touch LED color when the claw detects an object.
    optical.object_detected(pin_in_claw)
    touchled.set_color(GREEN)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

объект_потерян#

object_lost регистрирует функцию, которая будет вызываться всякий раз, когда оптический датчик теряет обнаруженный объект.

Usage:
optical.object_lost(callback, arg)

Параметры

Описание

callback

Ранее определенная функция, которая выполняется, когда оптический датчик теряет обнаруженный объект.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information.

def lower_lift():
    # Lower the lift when the claw no longer holds an object.
    lift_motor.spin_to_position(0, DEGREES)

def main():
    optical.object_lost(lower_lift)
    lift_motor.spin_for(REVERSE, 600, DEGREES)
    drivetrain.drive_for(FORWARD, 140, MM)
    claw_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)