Python, специфічний для роботів#

Вступ#

Робот-герой Flex включає в себе двигун-кігті, двигун-руку, датчик зору зі штучним інтелектом, датчик відстані та датчик системи позиціонування гри (GPS).

Усі стандартні методи віртуальної реальності VEXcode доступні для використання на ігровому майданчику V5 26-27 Override.

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

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

  • Дії

    • 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 — Повертає швидкість обертання двигуна.

Штучний зір – захоплення та аналіз об’єктів за допомогою датчика зору зі штучним інтелектом.

  • Геттери

    • take_snapshot – Повертає кортеж виявлених об’єктів для певної сигнатури.

  • Властивості

    • .width – Width of the detected object in pixels.

    • .height – Висота виявленого об’єкта в пікселях.

    • .centerX – X position of the object’s center in pixels.

    • .centerY – Y position of the object’s center in pixels.

    • .originX – X position of the object’s top-left corner in pixels.

    • .originY – Y position of the object’s top-left corner in pixels.

    • .id – Classification ID of the detected object.

Консоль – Вивід у консоль та моніторинг значень.

  • Друк

    • brain.screen.print — Відображає текст, числа або значення змінних у консолі.

    • brain.screen.next_row — Переміщує курсор консолі на початок наступного рядка.

    • brain.screen.clear_screen — Очищає всі рядки з консолі.

  • Монітор

    • monitor_variable — Додає одну або декілька попередньо визначених змінних до вкладки «Монітор».

    • monitor_sensor — Додає одне або декілька значень датчика до вкладки «Монітор».

Сенсорика – Використовуйте різні датчики робота.

  • Відстань

    • found_object – Повертає, чи виявляє датчик відстані об’єкт у межах досяжності.

    • object_distance – Повертає відстань між датчиком відстані та найближчим виявленим об’єктом.

  • GPS

    • x_position – Повертає поточну x-координату GPS-датчика на полі.

    • y_position – Повертає поточну y-координату GPS-датчика на полі.

    • heading – Повертає напрямок руху робота на основі даних GPS-датчика.

У прикладах на цій сторінці використовується Початкова локація C з передматчового контрольного списку ігрового майданчика.

Трансмісія#

Трансмісія контролює, як VR-робот керує рухом та поворотами. Трансмісія може рухатися вперед або назад, повертати ліворуч або праворуч, змінювати напрямок руху та відстежувати своє обертання.

Дії#

диск#

drive переміщує робота вперед або назад безкінечно. Робот продовжуватиме рухатися, доки йому не буде надано іншу дію, таку як поворот або зупинка.

Usage:
drivetrain.drive(direction)

Параметри

Опис

direction

Напрямок руху робота: FORWARD або REVERSE.

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive(FORWARD)
    wait(0.5, SECONDS)
    drivetrain.stop()
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

диск_для#

drive_for переміщує робота вперед або назад на певну відстань. Проект чекатиме, поки робот завершить рух, перш ніж буде виконано наступний рядок коду.

Usage:
drivetrain.drive_for(direction, distance, units, wait)

Параметри

Опис

direction

Напрямок руху робота: FORWARD або REVERSE.

distance

Відстань, яку проїжджає робот. Це може бути integer або десяткове число (float).

units

Необов’язково. Одиниця вимірювання відстані: INCHES (за замовчуванням) або MM (міліметри).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить рух, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

поворот#

turn повертає робота ліворуч або праворуч назавжди. Робот продовжуватиме обертатися, доки йому не буде надано іншу дію, наприклад, рух або зупинка.

Usage:
drivetrain.turn(direction)

Параметри

Опис

direction

Напрямок повороту робота: LEFT або RIGHT.

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn(LEFT)
    wait(0.78, SECONDS)
    drivetrain.stop()
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

повернути_на#

turn_for повертає робота ліворуч або праворуч на певну кількість градусів. Поворот здійснюється відносно поточного положення робота. Проект чекатиме, поки робот завершить поворот, перш ніж буде виконано наступний рядок коду.

Usage:
drivetrain.turn_for(direction, angle, units, wait)

Параметри

Опис

direction

Напрямок повороту робота: LEFT або RIGHT.

angle

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

units

Необов’язково. Одиниця вимірювання кута: DEGREES (за замовчуванням).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить обертання, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn_for(LEFT, 110, DEGREES)
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

поворот_до_заголовка#

Курс руху – це напрямок, у якому рухається робот, виміряний у градусах. turn_to_heading повертає робота обличчям до певного курсу від -359 до 359 градусів. Робот поверне у найкоротшому напрямку, щоб досягти цільового курсу.

Початковий курс — 0 градусів.

Usage:
drivetrain.turn_to_heading(heading, units, wait)

Параметри

Опис

heading

Кут, куди має дивитися робот, від -359 до 359 градусів.

units

Необов’язково. Одиниця вимірювання кута: DEGREES (за замовчуванням).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить обертання, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn_to_heading(-110, DEGREES)
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

поворот_до_обертання#

turn_to_rotation повертає робота до певного обертання.

Обертання – це кут повороту робота, виміряний у градусах. На початку проекту значення повороту встановлюється на 0 градусів. Поворот праворуч збільшує поворот, а поворот ліворуч зменшує.

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

Usage:
drivetrain.turn_to_rotation(rotation, units, wait)

Параметри

Опис

rotation

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

units

Необов’язково. Одиниця вимірювання кута: DEGREES (за замовчуванням).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить обертання, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn_to_rotation(-110, DEGREES)
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

СТІЙ#

stop зупиняє рух робота.

Usage:
drivetrain.stop()

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn(LEFT)
    wait(0.78, SECONDS)
    drivetrain.stop()
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Мутатори#

set_heading#

Курс – це напрямок, у якому рухається робот, виміряний у градусах. set_heading змінює поточний курс робота на нове значення курсу.

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

Usage:
drivetrain.set_heading(heading, units)

Параметри

Опис

heading

Значення курсу в градусах, яке потрібно встановити для робота.

units

Необов’язково. Одиниця вимірювання кута: DEGREES (за замовчуванням).

def main():
    # Make facing the Neutral Goal the new heading
    drivetrain.set_heading(110, DEGREES)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

встановити_обертання#

Обертання – це кут повороту робота, виміряний у градусах. set_rotation змінює поточне обертання робота на нове значення.

Usage:
drivetrain.set_rotation(rotation, units)

Параметри

Опис

rotation

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

units

Необов’язково. Одиниця вимірювання кута: DEGREES (за замовчуванням).

def main():
    # Make facing the Neutral Goal the new rotation
    drivetrain.set_rotation(110, DEGREES)
    drivetrain.turn_to_rotation(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

set_timeout встановлює, скільки секунд робот намагатиметься завершити рух. Якщо робот не зможе завершити за цей час, він припинить спроби та перейде до наступного рядка коду. Це запобігає зависанню робота на русі.

Usage:
drivetrain.set_timeout(time, units)

Параметри

Опис

time

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

units

Необов’язково. Одиниця вимірювання часу: SECONDS (за замовчуванням) або MSEC.

def main():
    # Turn to face the Neutral Goal
    drivetrain.set_timeout(0.8, SECONDS)
    drivetrain.turn_for(LEFT, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

встановити швидкість_приводу#

set_drive_velocity вказує роботу, з якою швидкістю рухатися. Вищий відсоток робить робот швидшим, а нижчий – повільнішим.

Кожен проєкт починається з того, що робот рухається зі швидкістю 50% за замовчуванням.

Примітка: Вища швидкість робить робот швидшим, але це може бути менш точно. Нижча швидкість робить робот повільнішим, але це може бути точнішим.

Usage:
drivetrain.set_drive_velocity(velocity, units)

Параметри

Опис

velocity

Швидкість руху від 0% до 100%. Це може бути integer або десяткове число (float з плаваючою комою).

units

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням).

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn_for(LEFT, 110, DEGREES)
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    drivetrain.set_drive_velocity(100, PERCENT)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

встановити швидкість повороту#

set_turn_velocity вказує роботу, як швидко повертатися. Вищий відсоток змушує робота повертатися швидше, а нижчий — повільніше.

Кожен проект починається з того, що робот обертається зі швидкістю 50% за замовчуванням.

Примітка: Вища швидкість змушує робота обертатися швидше, але це може бути менш точно. Нижча швидкість змушує робота обертатися повільніше, але це може бути точніше.

Usage:
drivetrain.set_turn_velocity(velocity, units)

Параметри

Опис

velocity

Швидкість обертання від 0% до 100%. Це може бути integer або десяткове число (float з плаваючою комою).

units

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням).

def main():
    # Turn to face the Neutral Goal faster
    drivetrain.set_turn_velocity(100, PERCENT)
    drivetrain.turn_for(LEFT, 110, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Геттери#

заголовок#

Курс – це напрямок, у якому рухається робот, виміряний у градусах. heading повертає поточний курс робота від 0 до 359,99 градусів.

Початковий курс робота становить 0 градусів.

Usage:
drivetrain.heading(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання заголовка: DEGREES (за замовчуванням).

def main():
    # Turn to the Goal, then show heading
    drivetrain.turn_for(LEFT, 110, DEGREES)
    brain.screen.print("Heading: ")
    brain.screen.print(drivetrain.heading(DEGREES))

# VR threads — Do not delete
vr_thread(main)

обертання#

Обертання – це кут повороту робота, виміряний у градусах. На початку проекту значення повороту встановлюється на 0 градусів. rotation повертає поточне обертання робота.

Поворот праворуч збільшує обертання, а поворот ліворуч зменшує. Наприклад, два повних оберти праворуч повернуть обертання на 720 градусів.

Usage:
drivetrain.rotation(units)

Параметри

Опис

units

Необов’язково. Одиниця обертання: DEGREES (за замовчуванням).

def main():
    # Spin to find a Pin, then show rotation
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.screen.print("Rotation: ")
    brain.screen.print(drivetrain.rotation(DEGREES))

# VR threads — Do not delete
vr_thread(main)

зроблено#

is_done повертає, чи завершив рух робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.

  • True — Робот завершив рух.

  • False — Робот все ще рухається.

Цей метод працює разом із наступними методами Drivetrain, які мають параметр wait : drive_for, turn_for, turn_to_heading та turn_to_rotation.

Usage:
drivetrain.is_done()

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn_for(LEFT, 110, DEGREES)
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
    wait(0.5, SECONDS)
    while not drivetrain.is_done():
        wait(5, MSEC)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

рухається#

is_moving повертає інформацію про те, чи рухається робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.

  • True — Робот рухається.

  • False — Робот не рухається.

Usage:
drivetrain.is_moving()

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Raise the Arm once stopped near the Goal
    drivetrain.turn_for(LEFT, 110, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
    wait (0.5, SEC)
    while drivetrain.is_moving():
        wait(5, MSEC)
    arm_motor.spin_for(FORWARD, 800, DEGREES)

# VR threads — Do not delete
vr_thread(main)

швидкість#

velocity повертає швидкість руху робота у відсотках від -100% до 100%.

Usage:
drivetrain.velocity(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням).

def main():
    # Show speed while driving to the Goal
    drivetrain.drive_for(FORWARD, 150, MM)
    brain.screen.print("Velocity: ")
    brain.screen.print(drivetrain.velocity(PERCENT))

# VR threads — Do not delete
vr_thread(main)

Рух#

Flex використовує двигун важеля для підйому та опускання важеля, а двигун кігтя для відкривання та закривання кігтя.

Кожен двигун має свою власну поведінку в напрямку. Описи напрямків пояснюють, як кожен напрямок рухає цей двигун на Flex.

Дії#

обертання#

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

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.spin(direction) — Двигун важеля

claw_motor

claw_motor.spin(direction) — Кігтеподібний двигун

Параметри

Опис

direction

Напрямок обертання двигуна:

  • FORWARD — Переміщує двигун важеля вгору або закриває двигун кігтя.
  • REVERSE — Переміщує двигун важеля вниз або вмикає двигун кігтя.

def main():
    # Raise the Arm before driving toward a Pin
    arm_motor.spin(FORWARD)
    wait(1, SECONDS)
    arm_motor.stop()

# VR threads — Do not delete
vr_thread(main)

обертання_для#

spin_for обертає двигун на певну відстань. Обертання залежить від поточного положення двигуна. Проект чекатиме, поки двигун завершить обертання, перш ніж буде виконано наступний рядок коду.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.spin_for(direction, distance, units, wait) — Двигун важеля

claw_motor

claw_motor.spin_for(direction, distance, units, wait) — Кігтеподібний двигун

Параметри

Опис

direction

Напрямок обертання двигуна:

  • FORWARD — Переміщує двигун важеля вгору або закриває двигун кігтя.
  • REVERSE — Переміщує двигун важеля вниз або вмикає двигун кігтя.

distance

Відстань, на яку обертається двигун. DEGREES використовує цілі числа. TURNS може використовувати цілі або десяткові числа.

units

Необов’язково. Одиниця вимірювання відстані: DEGREES (за замовчуванням) або TURNS.

wait

Необов’язково.

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

def main():
    # Raise the Arm to carry the Pin to the Goal
    arm_motor.spin_for(FORWARD, 800, DEGREES)

# VR threads — Do not delete
vr_thread(main)

обертання_в_позицію#

spin_to_position обертає двигун у певне положення.

Положення двигуна – це кут його обертання, що вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. На початку проекту положення двигуна-маніпулятора встановлюється на 0 градусів. Виняток становить двигун-кіготь – він починається з 467 градусів (повністю закрито). Положення двигуна також можна встановити за допомогою методу set_position.

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

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

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.spin_to_position(angle, units, wait=True) — Двигун важеля

claw_motor

claw_motor.spin_to_position(angle, units, wait=True) — Кігтеподібний двигун

Параметри

Опис

angle

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

units

Необов’язково. Одиниця вимірювання положення: DEGREES (за замовчуванням) або TURNS.

wait

Необов’язково.

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

def main():
    # Raise the Arm, then release the Pin
    arm_motor.spin_to_position(800, DEGREES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

СТІЙ#

stop зупиняє обертання двигуна.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.stop() — Двигун важеля

claw_motor

claw_motor.stop() — Кігтеподібний двигун

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Raise the Arm partway to hold the Pin
    arm_motor.spin(FORWARD)
    wait(1, SECONDS)
    arm_motor.stop()

# VR threads — Do not delete
vr_thread(main)

Мутатори#

set_position#

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

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

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.set_position(position, units) — Двигун важеля

claw_motor

claw_motor.set_position(position, units) — Кігтеподібний двигун

Параметри

Опис

position

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

units

Необов’язково. Одиниця вимірювання положення: DEGREES (за замовчуванням) або TURNS.

def main():
    # Reset encoder, raise Arm, place Pin
    arm_motor.set_position(0, DEGREES)
    arm_motor.spin_to_position(800, DEGREES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

встановити_швидкість#

set_velocity вказує двигуну, як швидко обертатися. Вищий відсоток змушує двигун обертатися швидше, а нижчий відсоток — повільніше.

Кожен проект починається з того, що кожен двигун обертається зі швидкістю 50% за замовчуванням.

Примітка: Вища швидкість робить двигун обертанням швидше, але це може бути менш точно. Нижча швидкість робить двигун обертанням повільніше, але це може бути точнішим.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.set_velocity(velocity, units) — Двигун важеля

claw_motor

claw_motor.set_velocity(velocity, units) — Кігтеподібний двигун

Параметри

Опис

velocity

Швидкість обертання від 0% до 100%. Це може бути integer або десяткове число (float з плаваючою комою).

units

Одиниця вимірювання швидкості: PERCENT.

def main():
    # Raise the Arm fast to release the Pin
    arm_motor.set_velocity(100, PERCENT)
    arm_motor.spin_for(FORWARD, 800, DEGREES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

set_timeout встановлює час, протягом якого двигун намагатиметься завершити рух. Якщо двигун не зможе завершити рух за цей час, він припинить спроби та перейде до наступного рядка коду. Це запобігає зависанню двигуна на русі.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.set_timeout(value, units) — Двигун важеля

claw_motor

claw_motor.set_timeout(value, units) — Кігтеподібний двигун

Параметри

Опис

value

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

units

Одиниця часу: SECONDS або MSEC (мілісекунди).

def main():
    # Score a Pin in a Neutral Goal
    drivetrain.turn_for(LEFT, 110, DEGREES)
    arm_motor.set_timeout(1, SECONDS)
    arm_motor.spin_for(FORWARD, 1800, DEGREES)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Геттери#

зроблено#

is_done повертає, чи завершив рух двигуна, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху двигуна.

  • True — Двигун завершив рух.

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

Цей метод працює разом із наступними методами руху, які мають параметр wait : spin_for та spin_to_position.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.is_done() — Двигун важеля

claw_motor

claw_motor.is_done() — Кігтеподібний двигун

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Raise the Arm while driving to the Goal
    arm_motor.spin_to_position(800, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while not arm_motor.is_done():
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

обертається#

is_spinning повертає, чи обертається двигун, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху двигуна.

  • True — Двигун обертається.

  • False — Двигун не обертається.

Цей метод працює разом із наступними методами руху, які мають параметр wait : spin_for та spin_to_position.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.is_spinning() — Двигун важеля

claw_motor

claw_motor.is_spinning() — Кігтеподібний двигун

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Raise the Arm while driving to the Goal, then release the Pin
    arm_motor.spin_to_position(800, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while arm_motor.is_spinning():
        drivetrain.drive_for(FORWARD, 25, MM)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

позиція#

Положення двигуна — це те, наскільки він обертувався, вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. position повертає поточне положення двигуна.

На початку проєкту положення двигуна важеля встановлюється на 0 градусів. Двигун кігтя є винятком — він починається з 467 градусів (повністю закрито). Якщо двигун обертається на один повний оберт вперед, положення збільшується. Якщо двигун обертається в іншому напрямку, положення зменшується.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.position(units) — Двигун важеля

claw_motor

claw_motor.position(units) — Кігтеподібний двигун

Параметри

Опис

units

Блок для повернення положення двигуна: DEGREES або TURNS.

def main():
    # Raise the Arm, then release the Pin
    while arm_motor.position(DEGREES) < 800:
        arm_motor.spin(FORWARD)
        wait(2, MSEC)
    arm_motor.stop()
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

швидкість#

velocity повертає швидкість обертання двигуна.

Додатне значення означає, що двигун обертається вперед. Від’ємне значення означає, що двигун обертається назад.

Використання:
З цим методом можна використовувати один із двох доступних об’єктів двигуна, як показано нижче:

двигун

Команда

arm_motor

arm_motor.velocity(units) — Двигун важеля

claw_motor

claw_motor.velocity(units) — Кігтеподібний двигун

Параметри

Опис

units

Одиниця вимірювання швидкості, яку потрібно повернути: PERCENT.

def main():
    # Show Arm Motor velocity while raising
    arm_motor.set_velocity(100, PERCENT)
    arm_motor.spin_to_position(800, DEGREES, wait=False)
    wait(0.2, SECONDS)
    brain.screen.print(arm_motor.velocity(PERCENT))

# VR threads — Do not delete
vr_thread(main)

Зір штучного інтелекту#

Геттери#

зробити_знімок#

take_snapshot фільтрує дані з кадру датчика AI Vision Sensor до єдиного підпису — збереженого опису чогось, що датчик може розпізнати, наприклад, ігрового елемента на полі — та повертає кортеж.

Кортеж зберігає об’єкти, відсортовані від найбільшого до найменшого за шириною, починаючи з індексу 0. Доступ до properties кожного об’єкта можна отримати за його індексом. Якщо не виявлено відповідних об’єктів, повертається порожній кортеж.

Usage:
ai_vision.take_snapshot(signature)

Параметри

Опис

signature

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

  • AiVision.ALL_AIOBJS - Виявляє всі ігрові елементи.
  • GameElements.RED_BLUE_PIN - Виявляє ігрові елементи RedBluePin.
  • GameElements.BLUE_YELLOW_PIN - Виявляє ігрові елементи BlueYellowPin.
  • GameElements.RED_YELLOW_PIN - Виявляє ігрові елементи RedYellowPin.
  • GameElements.YELLOW_PIN - Виявляє ігрові елементи YellowPin.
  • GameElements.CUP - Виявляє ігрові елементи Cup.

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Turn to face the Pin
    drivetrain.set_turn_velocity(30, PERCENT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].centerX < 140:
                drivetrain.turn(LEFT)
            elif ai_objects[0].centerX > 180:
                drivetrain.turn(RIGHT)
            else:
                drivetrain.stop()
                break

# VR threads — Do not delete
vr_thread(main)

Властивості#

Існує сім властивостей, які додаються до кожного об’єкта, що зберігається в кортежі після використання take_snapshot.

Усі значення властивості, окрім .id описують положення та розмір виявленого об’єкта в області зору датчика штучного інтелекту у момент використання take_snapshot Ці значення вимірюються в пікселях, виходячи з роздільної здатності датчика 320 на 240 пікселів.

.width#

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

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Approach the next Cup and Pin
    drivetrain.set_drive_velocity(30, PERCENT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].width > 140:
                drivetrain.stop()
                break
            else:
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.висота#

.height повертає висоту виявленого об’єкта в пікселях, що є цілим числом від 1 до 240.

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Approach the next Cup and Pin
    drivetrain.set_drive_velocity(30, PERCENT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].height > 200:
                drivetrain.stop()
                break
            else:
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.centerX#

.centerX повертає x-координату центру виявленого об’єкта в пікселях, яка є цілим числом від 0 до 320.

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Turn and approach the next Cup and Pin
    drivetrain.set_turn_velocity(30, PERCENT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].centerX < 140:
                drivetrain.turn_for(LEFT, 5, DEGREES)
            else: 
                drivetrain.drive_for(FORWARD, 25, INCHES)
                break

# VR threads — Do not delete
vr_thread(main)

.centerY#

.centerY повертає y-координату центру виявленого об’єкта в пікселях, яка є цілим числом від 0 до 240.

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Approach the next Cup and Pin
    drivetrain.set_drive_velocity(30, PERCENT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].centerY > 230:
                drivetrain.stop()
                break
            else:
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.originX#

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

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Turn and approach the next Cup and Pin
    drivetrain.set_turn_velocity(30, PERCENT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].originX < 100:
                drivetrain.turn_for(LEFT, 5, DEGREES)
            else:
                drivetrain.drive_for(FORWARD, 25, INCHES)
                break

# VR threads — Do not delete
vr_thread(main)

.originY#

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

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Approach the next Cup and Pin
    drivetrain.set_drive_velocity(30, PERCENT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].originY > 140:
                drivetrain.stop()
                break
            else:
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.id#

.id повертає ідентифікатор виявленої класифікації ШІ як ціле число.

Класифікація ШІ

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

Підпис

ЧервонийСинійПін

0

GameElements.RED_BLUE_PIN

СинійЖовтийПін

1

GameElements.BLUE_YELLOW_PIN

ЧервонийЖовтийШтифт

2

GameElements.RED_YELLOW_PIN

ЖовтийПін

3

GameElements.YELLOW_PIN

Кубок

4

GameElements.CUP

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    drivetrain.turn_for(LEFT, 70, DEGREES)

    # Display the ID of the next closest object
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            brain.screen.print(ai_objects[0].id)
            break

# VR threads — Do not delete
vr_thread(main)

Консоль#

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

Друк#

мозок.екранний.друк#

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

Використовуйте brain.screen.next_row, коли потрібно, щоб наступне друковане значення починалося з нового рядка.

Usage:
brain.screen.print(value)

Параметри

Опис

value

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

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

# VR threads — Do not delete
vr_thread(main)

brain.screen.next_row#

brain.screen.next_row переміщує курсор до стовпця 1 наступного рядка в консолі. Наступне виведене значення з’явиться в цьому рядку.

Usage:
brain.screen.next_row()

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Print on two rows
    brain.screen.print("Row 1")
    brain.screen.next_row()
    brain.screen.print("Row 2")

# VR threads — Do not delete
vr_thread(main)

brain.screen.clear_screen#

brain.screen.clear_screen очищає всі рядки з консолі та переміщує курсор назад до рядка 1.

Usage:
brain.screen.clear_screen()

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Display text, then clear it after two seconds
    brain.screen.print("This will disappear...")
    wait(2, SECONDS)
    brain.screen.clear_screen()

# VR threads — Do not delete
vr_thread(main)

Монітор#

змінна_монітора#

monitor_variable додає одну або декілька попередньо визначених змінних до вкладки «Монітор» у VEXcode. Це дозволяє спостерігати за зміною значення змінної під час виконання проєкту.

Змінні мають бути глобальними для успішного моніторингу monitor_variable Надайте назву кожної змінної у вигляді рядка.

Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)

Параметри

Опис

variable

Ім’я попередньо визначеної глобальної змінної для моніторингу у вигляді рядка. Щоб моніторити більше однієї змінної, розділіть кожне ім’я змінної комою.

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

    # Turn in a full circle 3 times
    for loops in range(12):
        drivetrain.turn_for(RIGHT, 90, DEGREES)

# VR threads — Do not delete
vr_thread(main)

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

monitor_sensor додає одне або декілька значень датчика до вкладки «Монітор» у VEXcode. Це дозволяє спостерігати за зміною значень датчиків під час виконання проєкту.

Надайте кожне значення датчика як рядок.

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

Параметри

Опис

sensor

Значення датчика для моніторингу у вигляді рядка. Щоб моніторити значення кількох датчиків, розділяйте кожне значення комою. Підтримувані ідентифікатори датчиків включають:

  • Brain
    • brain.timer.time
  • Drivetrain
    • drivetrain.is_done
    • drivetrain.is_moving
    • drivetrain.heading
    • drivetrain.rotation
    • drivetrain.velocity
  • Arm Motor
    • arm_motor.is_done
    • arm_motor.is_spinning
    • arm_motor.position
    • arm_motor.velocity
  • Claw Motor
    • claw_motor.is_done
    • claw_motor.is_spinning
    • claw_motor.position
    • claw_motor.velocity
  • Датчик відстані
    • distance.is_object_detected
    • distance.object_distance_mm
    • distance.object_distance_inches
  • GPS-датчик
    • gps.position_mm
    • gps.position_inches
    • gps.heading
  • Датчик зору зі штучним інтелектом
    • 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)

Зондування#

Відстань#

знайдений_об’єкт#

found_object повертає, чи датчик відстані наразі виявляє об’єкт у межах 2000 мм.

  • True — Датчик відстані виявляє об’єкт.

  • False — Датчик відстані не виявляє об’єкт.

Usage:
distance.found_object()

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Turn until something is detected, then release the Pin
    drivetrain.turn(RIGHT)
    while True:
        wait(5, MSEC)
        if distance.found_object():
            drivetrain.stop()
            break
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

відстань_об’єкта#

object_distance повертає відстань між датчиком відстані та найближчим виявленим об’єктом.

Usage:
distance.object_distance(units)

Параметри

Опис

units

Одиниця вимірювання відстані: MM або INCHES.

def main():
    # Drive until 200 mm from the Goal, then release the Pin
    while distance.object_distance(MM) > 200:
        wait(5, MSEC)
        drivetrain.drive(FORWARD)
    drivetrain.stop()
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

GPS#

положення_x#

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

Usage:
gps.x_position(units)

Параметри

Опис

одиниці

Одиниця вимірювання значення зміщення: INCHES або MM

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive(FORWARD)
    while not gps.x_position(MM) > -1370:
        wait(2, MSEC)
    drivetrain.stop()
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

положення_y#

y_position повертає поточну y-координату GPS-датчика (системи позиціонування гри™) на полі.

Usage:
gps.y_position(units)

Параметри

Опис

одиниці

Одиниця вимірювання значення зміщення: INCHES або MM

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive(FORWARD)
    while not gps.y_position(MM) < -450:
        wait(2, MSEC)
    drivetrain.stop()
    claw_motor.spin_for(REVERSE, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

заголовок#

heading повертає напрямок, у якому рухається робот, на основі показників датчика GPS (Система позиціонування в грі™) від 0 до 359 градусів.

Usage:
gps.heading()

Параметри

Опис

Цей метод не має параметрів.

def main():
    # Raise the Arm, drive to the Goal, release the Pin
    monitor_sensor("gps.heading")
    arm_motor.spin_for(FORWARD, 300, DEGREES)
    drivetrain.drive_for(FORWARD, 10, INCHES)
    claw_motor.spin_for(REVERSE, 180, DEGREES)

    # Turn left to face the Neutral Goal
    drivetrain.set_turn_velocity(30, PERCENT)
    drivetrain.turn(LEFT)
    while not gps.heading() < 18:
        wait(2, MSEC)
    drivetrain.stop()


# VR threads — Do not delete
vr_thread(main)