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