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

Введение#

Робот-герой Декс оснащен двумя вариантами двигателей, датчиком искусственного интеллекта, оптическим датчиком и датчиком игровой системы позиционирования (GPS).

Все стандартные методы VEXcode VR доступны для использования в игровой зоне V5 25-26 Push Back.

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

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

  • Действия

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

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

  • Оптический

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

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

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

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

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

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

  • GPS

    • x_position – Возвращает текущую x-координату GPS-датчика на поле.

    • y_position – Возвращает текущую y-координату GPS-датчика на поле.

    • heading – Возвращает направление, в котором робот в данный момент находится, на основе показаний GPS-датчика от 0 до 359 градусов.

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

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

Силовая установка управляет движением и поворотами 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))

Движение#

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

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

Действия#

вращаться#

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

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

мотор

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

intake_motor

intake_motor.spin(direction) — Впускной двигатель

conveyor_motor

conveyor_motor.spin(direction) — Двигатель конвейера

Параметры

Описание

direction

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

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

спин_фор#

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

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

мотор

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

intake_motor

intake_motor.spin_for(direction, distance, units, wait) — Впускной двигатель

conveyor_motor

conveyor_motor.spin_for(direction, distance, units, wait) — Двигатель конвейера

Параметры

Описание

direction

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

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

distance

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

units

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

wait

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

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# 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.

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

мотор

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

intake_motor

intake_motor.spin_to_position(angle, units, wait=True) — Впускной двигатель

conveyor_motor

conveyor_motor.spin_to_position(angle, units, wait=True) — Двигатель конвейера

Параметры

Описание

angle

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

units

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

wait

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

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(150, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

останавливаться#

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

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

мотор

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

intake_motor

intake_motor.stop() — Впускной двигатель

conveyor_motor

conveyor_motor.stop() — Двигатель конвейера

Параметры

Описание

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

Мутаторы#

set_position#

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

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

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

мотор

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

intake_motor

intake_motor.set_position(position, units) — Впускной двигатель

conveyor_motor

conveyor_motor.set_position(position, units) — Двигатель конвейера

Параметры

Описание

position

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

units

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

def main():
    # Pick up a second Block
    conveyor_motor.set_position(-150, DEGREES)
    conveyor_motor.spin_to_position(0, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

set_velocity#

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

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

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

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

мотор

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

intake_motor

intake_motor.set_velocity(velocity, units) — Впускной двигатель

conveyor_motor

conveyor_motor.set_velocity(velocity, units) — Двигатель конвейера

Параметры

Описание

velocity

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

units

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

def main():
    # Pick up a second Block
    conveyor_motor.set_velocity(90, PERCENT)
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

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

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

мотор

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

intake_motor

intake_motor.set_timeout(value, units) — Впускной двигатель

conveyor_motor

conveyor_motor.set_timeout(value, units) — Двигатель конвейера

Параметры

Описание

value

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

units

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

def main():
    # Pick up a second Block
    conveyor_motor.set_timeout(0.5, SECONDS)
    conveyor_motor.spin_to_position(1000, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

Геттеры#

готово#

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

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

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

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

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

мотор

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

intake_motor

intake_motor.is_done() — Впускной двигатель

conveyor_motor

conveyor_motor.is_done() — Двигатель конвейера

Параметры

Описание

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while not conveyor_motor.is_done():
        drivetrain.drive(FORWARD)
        intake_motor.spin(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

is_spinning#

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

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

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

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

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

мотор

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

intake_motor

intake_motor.is_spinning() — Впускной двигатель

conveyor_motor

conveyor_motor.is_spinning() — Двигатель конвейера

Параметры

Описание

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while conveyor_motor.is_spinning():
        drivetrain.drive_for(FORWARD, 200, MM)
        intake_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

позиция#

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

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

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

мотор

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

intake_motor

intake_motor.position(units) — Впускной двигатель

conveyor_motor

conveyor_motor.position(units) — Двигатель конвейера

Параметры

Описание

units

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

def main():
    # Pick up a second Block
    while conveyor_motor.position(DEGREES) < 150:
        conveyor_motor.spin(FORWARD)
        wait(2, MSEC)
    conveyor_motor.stop()
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

скорость#

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

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

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

мотор

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

intake_motor

intake_motor.velocity(units) — Впускной двигатель

conveyor_motor

conveyor_motor.velocity(units) — Двигатель конвейера

Параметры

Описание

units

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

def main():
    # Pick up a second block
    conveyor_motor.set_velocity(100, PERCENT)
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.2, SECONDS)
    brain.screen.print(conveyor_motor.velocity(PERCENT))
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

ИИ-зрение#

Геттеры#

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

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

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

Usage:
ai_vision.take_snapshot(signature)

Параметры

Описание

signature

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

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

def main():
    # If an object is detected, pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            intake_motor.spin(FORWARD)
            drivetrain.drive(FORWARD)
            while not bumper.pressing():
                wait(2, MSEC)
            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():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].width > 65:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.высота#

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

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].height > 55:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.centerX#

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

def main():
    # Pick up a Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn(LEFT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if 140 < ai_objects[0].centerX < 180:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

.centerY#

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

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].centerY > 140:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.originX#

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

def main():
    # Pick up a Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 300, MM)
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn(RIGHT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if 100 < ai_objects[0].originX < 140:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

.originY#

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

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].originY > 120:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

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

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

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

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

Подпись

Синий блок

1

GameElements.BLUE_BLOCK

Красный блок

2

GameElements.RED_BLOCK

def main():
    # Pick up a Red Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 300, MM)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            drivetrain.drive(FORWARD)
            if (ai_objects[0].id) == 2:
                intake_motor.spin(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()
                break

# VR threads — Do not delete
vr_thread(main)

Консоль#

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

Печать#

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

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

Используйте 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)

Ощущение#

Оптический#

is_near_object#

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

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

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

Usage:
optical.is_near_object()

Параметры

Описание

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

def main():
    # Move the preloaded Block to the top of the Conveyor
    conveyor_motor.spin(FORWARD)
    while not optical.is_near_object():
        wait(2, MSEC)
    conveyor_motor.stop()

# 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():
    # Pick up and move a Blue Block to the top of the Conveyor
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 360, MM)
    conveyor_motor.spin(FORWARD)
    while not optical.color() == BLUE:
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

яркость#

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

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

Usage:
optical.brightness()

Параметры

Описание

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

def main():
    # Move the preloaded Block to the top of the Conveyor
    conveyor_motor.spin(FORWARD)
    while not 0 < optical.brightness():
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

оттенок#

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

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

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

Usage:
optical.hue()

Параметры

Описание

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

def main():
    # Pick up and move a Blue Block to the top of the Conveyor
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 360, MM)
    conveyor_motor.spin(FORWARD)
    while not 220 < optical.hue() < 260:
        wait(2, MSEC)
    conveyor_motor.stop()

# 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 ready_block():
  # Stop the conveyor when Block is at the Sensor
  conveyor_motor.stop()

def main():
  # Move the preloaded Block near the top of the Conveyor
  conveyor_motor.spin(FORWARD)
  optical.object_detected(ready_block)

# 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 ready_block():
  # Stop the conveyor when Block is at the top
  conveyor_motor.stop()

def main():
  # Move the preloaded Block to the top of the Conveyor
  conveyor_motor.spin(FORWARD)
  optical.object_lost(ready_block)

# VR threads — Do not delete
vr_thread(main)

GPS#

x_позиция#

x_position возвращает текущую x-координату GPS-датчика (системы позиционирования в игре™), расположенного на поле.

Usage:
gps.x_position(units)

Параметры

Описание

единицы

Единица измерения значения смещения: INCHES или MM

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive(FORWARD)
    while not gps.x_position(MM) > -795:
        wait(2, MSEC)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

y_позиция#

y_position возвращает текущую y-координату GPS-датчика (Game Positioning System™), расположенного на поле.

Usage:
gps.y_position(units)

Параметры

Описание

единицы

Единица измерения значения смещения: INCHES или MM

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive(FORWARD)
    while not -450 > gps.y_position(MM):
        wait(2, MSEC)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

заголовок#

Параметр heading возвращает направление, в котором в данный момент находится робот, на основе показаний датчика GPS (Game Positioning System™) в диапазоне от 0 до 359 градусов.

Usage:
gps.heading()

Параметры

Описание

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

def main():
    # Score the preloaded Block into a Center Goal
    drivetrain.set_turn_velocity(30, PERCENT)
    drivetrain.turn(LEFT)
    while not 40 > gps.heading():
        wait(2, MSEC)
    drivetrain.drive_for(FORWARD, 1000, MM)
    drivetrain.turn(RIGHT)
    while not gps.heading() > 310:
        wait(2, MSEC)
    drivetrain.drive_for(REVERSE, 400, MM)
    conveyor_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)