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

Вступ#

Робот-герой Huey оснащений двома варіантами двигунів: датчиком зору IQ AI, оптичним датчиком та сенсорним світлодіодом.

Усі стандартні методи віртуальної реальності VEXcode доступні для використання на ігровому майданчику IQ 25-26 Mix & Match.

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

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

  • Дії

    • drive — Рухає робота вперед або назад безкінечно.

    • drive_for — Переміщує робота вперед або назад на певну відстань.

    • turn — Повертає робота ліворуч або праворуч назавжди.

    • turn_for — Повертає робота ліворуч або праворуч на певну кількість градусів.

    • turn_to_heading — Повертає робота обличчям до певного напрямку від -359 до 359 градусів.

    • turn_to_rotation — Повертає робота на певний оберт.

    • stop — Зупиняє рух робота.

  • Мутатори

    • set_heading — Змінює поточний напрямок руху робота на новий.

    • set_rotation — Змінює поточне обертання робота на нове обертання.

    • set_timeout — Встановлює, скільки часу робот намагатиметься завершити рух.

    • set_drive_velocity — Вказує роботу, з якою швидкістю рухатися.

    • set_turn_velocity — Вказує роботу, як швидко повертатися.

  • Геттери

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

    • rotation — Повертає поточне обертання робота.

    • is_done — Повертає, чи завершив рух робот, у вигляді логічного значення.

    • is_moving — Повертає значення типу логічне, яке вказує, чи рухається робот.

    • velocity — Повертає швидкість руху робота.

Рух – Переміщення та відстеження двигунів робота.

  • Дії

    • spin — Обертає двигун вперед або назад нескінченно.

    • spin_for — Обертає двигун на певну відстань.

    • spin_to_position — Розкручує двигун у певне положення.

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

  • Мутатори

    • set_position — Змінює поточне положення двигуна на нове значення.

    • set_velocity — Вказує двигуну, з якою швидкістю обертатися.

    • set_timeout — Встановлює, скільки часу двигун намагатиметься завершити рух.

  • Геттери

    • is_done — Повертає, чи завершив рух двигуна, у вигляді логічного значення.

    • is_spinning — Повертає, чи обертається двигун, у вигляді логічного значення.

    • position — Повертає поточну позицію двигуна.

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

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

  • Геттери

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

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

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

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

    • centerX – положення центру об’єкта по осі X у пікселях.

    • centerY – положення центру об’єкта по осі Y у пікселях.

    • originX – положення верхнього лівого кута об’єкта по осі X у пікселях.

    • originY – положення верхнього лівого кута об’єкта по осі Y у пікселях.

    • id – Класифікація або ідентифікатор тегу об’єкта.

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

  • Друк

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

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

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

  • Монітор

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

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

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

  • Сенсорний світлодіодний індикатор

    • set_color - Встановлює вибраний колір для сенсорного світлодіода.

  • Оптичний

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

    • color – Повертає колір, виявлений оптичним датчиком.

    • brightness – Повертає кількість світла, відбитого від об’єкта.

    • hue – Повертає відтінок, виявлений оптичним датчиком.

    • object_detected – Реєструє функцію, яка викликається, коли оптичний датчик виявляє об’єкт.

    • object_lost – Реєструє функцію, яка викликається, коли оптичний датчик втрачає об’єкт.

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

Трансмісія#

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

Дії#

диск#

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

Usage:
drivetrain.drive(direction)

Параметри

Опис

direction

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

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

диск_для#

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

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 повертає робота ліворуч або праворуч на певну кількість градусів. Поворот здійснюється відносно поточного положення робота. Проект чекатиме, поки робот завершить поворот, перш ніж буде виконано наступний рядок коду.

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 повертає робота обличчям до певного курсу від -359 до 359 градусів. Робот поверне у найкоротшому напрямку, щоб досягти цільового курсу.

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

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

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

Параметри

Опис

angle

The direction the robot should face, in degrees. This can be an integer or decimal (float) from -359 to 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 повертає робота до певного обертання.

Обертання – це кут повороту робота, виміряний у градусах. На початку проекту значення повороту встановлюється на 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)

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

Обертання – це кут повороту робота, виміряний у градусах. На початку проекту значення повороту встановлюється на 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 вказує роботу, з якою швидкістю рухатися. Вищий відсоток робить робот швидшим, а нижчий – повільнішим.

Кожен проєкт починається з того, що робот рухається зі швидкістю 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 вказує роботу, як швидко повертатися. Вищий відсоток змушує робота повертатися швидше, а нижчий — повільніше.

Кожен проект починається з того, що робот обертається зі швидкістю 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 повертає, чи завершив рух робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.

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

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

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

Usage:
drivetrain.is_done()

Параметри

Опис

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

рухається#

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

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

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

Usage:
drivetrain.is_moving()

Параметри

Опис

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

швидкість#

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

Usage:
drivetrain.velocity(units)

Параметри

Опис

units

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

Приклад

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

Рух#

Х’юї використовує двигун кігтя, щоб відкривати та закривати його, щоб штифти та балки можна було піднімати або опускати. Підйомний двигун піднімає та опускає штифти або балки, щоб вони могли з’єднуватися одна з одною.

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

Дії#

обертання#

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.spin(direction) — Підйомний двигун

Параметри

Опис

direction

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

  • FORWARD — Відкриває захват або опускає підйомник.
  • REVERSE — Закриває захват або піднімає підйомник.

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

# VR threads — Do not delete
vr_thread(main)

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.spin_for(direction, distance, units, wait=True) — Підйомний двигун

Параметри

Опис

direction

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

  • FORWARD — Відкриває захват або опускає підйомник.
  • REVERSE — Закриває захват або піднімає підйомник.

distance

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

units

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

wait

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

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

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

# VR threads — Do not delete
vr_thread(main)

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

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

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

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.spin_to_position(angle, units, wait=True) — Підйомний двигун

Параметри

Опис

angle

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

units

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

wait

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

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

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

# VR threads — Do not delete
vr_thread(main)

зупинити двигун#

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.stop() — Підйомний двигун

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

Мутатори#

set_position#

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.set_position(position, units) — Підйомний двигун

Параметри

Опис

position

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

units

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

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

# VR threads — Do not delete
vr_thread(main)

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

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

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.set_velocity(velocity, units) — Підйомний двигун

Параметри

Опис

velocity

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

units

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

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

# VR threads — Do not delete
vr_thread(main)

set_timeout#

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.set_timeout(value, units) — Підйомний двигун

Параметри

Опис

value

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

units

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

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

# VR threads — Do not delete
vr_thread(main)

Геттери#

зроблено#

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

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

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.is_done() — Підйомний двигун

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

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

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

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

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.is_spinning() — Підйомний двигун

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

позиція#

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.position(units) — Підйомний двигун

Параметри

Опис

units

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

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

# VR threads — Do not delete
vr_thread(main)

швидкість#

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

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

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

двигун

Команда

claw_motor

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

lift_motor

lift_motor.velocity(units) — Підйомний двигун

Параметри

Опис

units

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

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

# VR threads — Do not delete
vr_thread(main)

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

Геттери#

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

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

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

Usage:
ai_vision.take_snapshot(signature)

Параметри

Опис

signature

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

  • AiVision.ALL_AIOBJS - Виявляє промені та сині, червоні та помаранчеві контакти.

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

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

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

# VR threads — Do not delete
vr_thread(main)

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

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

All property values except .id describe the detected object’s position and size in the IQ AI Vision Sensor’s view at the moment take_snapshot was used. These values are measured in pixels, based on the sensor’s 320 by 240 pixel resolution.

.width#

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

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

# VR threads — Do not delete
vr_thread(main)

.висота#

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

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

# VR threads — Do not delete
vr_thread(main)

.centerX#

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

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

# VR threads — Do not delete
vr_thread(main)

.centerY#

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

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

# VR threads — Do not delete
vr_thread(main)

.originX#

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

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

# VR threads — Do not delete
vr_thread(main)

.originY#

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

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

# VR threads — Do not delete
vr_thread(main)

.id#

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

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

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

Підпис

Промінь

0

GameElements.BEAM

Синій штифт

1

GameElements.BLUE_PIN

Червона шпилька

2

GameElements.RED_PIN

Помаранчевий штифт

3

GameElements.ORANGE_PIN

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

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

# VR threads — Do not delete
vr_thread(main)

Консоль#

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

Друк#

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

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

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

Usage:
brain.screen.print(value)

Параметри

Опис

value

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

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

# VR threads — Do not delete
vr_thread(main)

Консоль VEXcode, що показує консоль та текст "Привіт, роботе!".

brain.screen.next_row#

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

Usage:
brain.screen.next_row()

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

Консоль VEXcode, що показує консоль і текст "Рядок 1" у першому рядку та "Рядок 2" у другому рядку.

brain.screen.clear_screen#

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

Usage:
brain.screen.clear_screen()

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

Монітор#

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

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

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

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

Параметри

Опис

variable

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

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

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

# VR threads — Do not delete
vr_thread(main)

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

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

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

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

Параметри

Опис

sensor

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

  • Brain
    • brain.timer.time
  • Drivetrain
    • drivetrain.is_done
    • drivetrain.is_moving
    • drivetrain.heading
    • drivetrain.rotation
    • drivetrain.velocity
  • Pusher Motor
    • pusher_motor.is_done
    • pusher_motor.is_spinning
    • pusher_motor.position
    • pusher_motor.velocity
  • Arm Motor
    • arm_motor.is_done
    • arm_motor.is_spinning
    • arm_motor.position
    • arm_motor.velocity
  • Передній датчик відстані
    • front_distance.is_object_detected
    • front_distance.object_distance_mm
    • front_distance.object_distance_inches
  • Передній оптичний датчик
    • front_optical.is_near_object
    • front_optical.color
    • front_optical.brightness
    • front_optical.hue
  • GPS-датчик
    • gps.position_mm
    • gps.position_inches
    • gps.heading
  • Датчик обертання штовхача
    • pusher_rotation.angle
    • pusher_rotation.position
  • Датчик зору зі штучним інтелектом
    • ai_vision.object_count
    • ai_vision.height
    • ai_vision.width
    • ai_vision.centerX
    • ai_vision.centerY
    • ai_vision.originX
    • ai_vision.originY
    • ai_vision.id

def main():
    # Monitor the robot's heading
    monitor_sensor("drivetrain.heading")
    drivetrain.turn_for(RIGHT, 450, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Зондування#

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

встановити_колір#

set_color встановлює колір світлодіода Touch.

Usage:
touchled.set_color(color)

Параметри

Опис

color

The color to set the Touch LED to:

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

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

# VR threads — Do not delete
vr_thread(main)

Оптичний#

знаходиться_поблизу_об’єкта#

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

  • True – Оптичний датчик виявляє об’єкт.

  • False – Оптичний датчик не виявляє об’єкт.

Usage:
optical.is_near_object()

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

колір#

color повертає екземпляр класу Color на основі виявленого значення відтінку. Їх можна порівняти з попередньо визначеними об’єктами Color для створення умовних операторів.

Можливі кольори:

  • NONE

  • RED – значення відтінку між 340° та 20°

  • GREEN – значення відтінку між 80° та 140°

  • BLUE – значення відтінку між 200° та 240°

  • YELLOW – значення відтінку між 40° та 60°

  • ORANGE - Значення відтінку між 20° - 40°

  • PURPLE - значення відтінку між 240° - 280°

  • CYAN – значення відтінку між 140° та 200°

Примітка: Оптичний датчик шукає діапазони відтінків, що відповідають заданому кольору. Щоб дізнатися, як визначити певні діапазони відтінків, див. hue.

Usage:
optical.color()

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

яскравість#

brightness повертає кількість світла, відбитого від об’єкта, у вигляді десяткового дробу (float), що представляє відсоток.

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

Usage:
optical.brightness()

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

відтінок#

hue повертає значення відтінку виявленого кольору у вигляді десяткового числа (float) від 0 до 359.

Відтінок – це спосіб опису кольору за допомогою чисел на колірному колі.

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

Usage:
optical.hue()

Параметри

Опис

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

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

# VR threads — Do not delete
vr_thread(main)

виявлений_об’єкт#

object_detected реєструє функцію, яка викликається щоразу, коли оптичний датчик виявляє новий об’єкт.

Usage:
optical.object_detected(callback, arg)

Параметри

Опис

callback

Раніше визначена функція, яка виконується, коли оптичний датчик виявляє новий об’єкт.

arg

Необов’язково. Кортеж tuple, що містить аргументи для передачі функції зворотного виклику. Див. Використання функцій з параметрами для отримання додаткової інформації.

def pin_in_claw():
    touchled.set_color(RED)

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

# VR threads — Do not delete
vr_thread(main)

втрачений_об’єкт#

object_lost реєструє функцію, яка викликається щоразу, коли оптичний датчик втрачає виявлений об’єкт.

Usage:
optical.object_lost(callback, arg)

Параметри

Опис

callback

Раніше визначена функція, яка виконується, коли оптичний датчик втрачає виявлений об’єкт.

arg

Необов’язково. Кортеж tuple, що містить аргументи для передачі функції зворотного виклику. Див. Використання функцій з параметрами для отримання додаткової інформації.

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

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

# VR threads — Do not delete
vr_thread(main)