Трансмісія#
Вступ#
Трансмісія контролює, як VR-робот керує рухом та поворотами. Трансмісія може рухатися вперед або назад, повертати ліворуч або праворуч, змінювати напрямок руху та відстежувати своє обертання.
Існує багато способів кодування трансмісії. Нижче наведено список усіх методів кодування трансмісії:
Дії — Переміщення та поворот робота.
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— Вказує роботу, як швидко повертатися.
Геттери — Перевірка стану трансмісії.
Дії#
drive#
drive переміщує робота вперед або назад безкінечно. Робот продовжуватиме рухатися, доки йому не буде надано іншу дію, таку як поворот або зупинка.
Usage:
drivetrain.drive(direction)
Параметри |
Опис |
|---|---|
|
Напрямок руху робота: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
drive_for#
drive_for переміщує робота вперед або назад на певну відстань. Проект чекатиме, поки робот завершить рух, перш ніж буде виконано наступний рядок коду.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Параметри |
Опис |
|---|---|
|
Напрямок руху робота: |
|
Відстань, яку проїжджає робот. Це може бути |
|
Необов’язково. Одиниця вимірювання відстані: |
|
Необов’язково. |
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#
turn повертає робота ліворуч або праворуч назавжди. Робот продовжуватиме обертатися, доки йому не буде надано іншу дію, наприклад, рух або зупинка.
Usage:
drivetrain.turn(direction)
Параметри |
Опис |
|---|---|
|
Напрямок повороту робота: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
turn_for#
turn_for повертає робота ліворуч або праворуч на певну кількість градусів. Поворот здійснюється відносно поточного положення робота. Проект чекатиме, поки робот завершить поворот, перш ніж буде виконано наступний рядок коду.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Параметри |
Опис |
|---|---|
|
Напрямок повороту робота: |
|
Кількість градусів, на яку повертається робот. Це може бути |
|
Необов’язково. Одиниця обертання: |
|
Необов’язково. |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
Курс руху – це напрямок, у якому рухається робот, виміряний у градусах. turn_to_heading повертає робота обличчям до певного курсу від -359 до 359 градусів. Робот поверне у найкоротшому напрямку, щоб досягти цільового курсу.
Початковий курс робота становить 0 градусів.
Проєкт чекатиме, поки робот завершить обертання, перш ніж буде виконано наступний рядок коду.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Параметри |
Опис |
|---|---|
|
The direction the robot should face, in degrees. This can be an |
|
Необов’язково. Одиниця обертання: |
|
Необов’язково. |
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_rotation#
turn_to_rotation повертає робота до певного обертання.
Обертання – це кут повороту робота, виміряний у градусах. На початку проекту значення повороту встановлюється на 0 градусів. Обертання також можна встановити за допомогою методу set_rotation.
Значення обертання є абсолютними. Це означає, що напрямок повороту залежить від поточного обертання робота. Поворот праворуч збільшує обертання, а поворот ліворуч зменшує обертання.
Наприклад, якщо робот починає рух з кута 0 градусів, а потім повертається на 720 градусів, він двічі повернеться праворуч. Якщо потім повернути на 360 градусів, він один раз повернеться ліворуч, оскільки 360 менше за 720.
Проєкт чекатиме, поки робот завершить обертання, перш ніж буде виконано наступний рядок коду.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Параметри |
Опис |
|---|---|
|
Значення повороту в градусах, до якого повернеться робот. Це може бути ціле число |
|
Необов’язково. Одиниця обертання: |
|
Необов’язково. |
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#
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)
Параметри |
Опис |
|---|---|
|
Значення курсу в градусах, яке потрібно встановити для робота. Це може бути ціле число |
|
Необов’язково. Одиниця вимірювання заголовка: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
Обертання – це кут повороту робота, виміряний у градусах. На початку проекту значення повороту встановлюється на 0 градусів. set_rotation змінює поточне обертання робота на нове значення.
Наприклад, якщо робот зробив два повних оберти праворуч, значення його обертання становитиме 720 градусів. Встановлення обертання на 0 градусів скине це обертання з 720 до 0 градусів. Потім робот зможе повертатися до обертань на основі цього нового значення.
Usage:
drivetrain.set_rotation(rotation, units)
Параметри |
Опис |
|---|---|
|
Значення обертання в градусах, яке потрібно встановити для робота. Це може бути ціле число |
|
Необов’язково. Одиниця обертання: |
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)
Параметри |
Опис |
|---|---|
|
Кількість часу, протягом якого робот може намагатися завершити рух. Це може бути додатне ціле число |
|
Необов’язково. Одиниця вимірювання часу: |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
set_drive_velocity вказує роботу, з якою швидкістю рухатися. Вищий відсоток робить робот швидшим, а нижчий – повільнішим.
Кожен проєкт починається з того, що робот рухається зі швидкістю 50% за замовчуванням.
Примітка: Вища швидкість робить робот швидшим, але це може бути менш точно. Нижча швидкість робить робот повільнішим, але це може бути точнішим.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Параметри |
Опис |
|---|---|
|
Швидкість руху від 0% до 100%. Це може бути |
|
Необов’язково. Одиниця вимірювання швидкості: |
def main():
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
set_turn_velocity вказує роботу, як швидко повертатися. Вищий відсоток змушує робота повертатися швидше, а нижчий — повільніше.
Кожен проект починається з того, що робот обертається зі швидкістю 50% за замовчуванням.
Примітка: Вища швидкість змушує робота обертатися швидше, але це може бути менш точно. Нижча швидкість змушує робота обертатися повільніше, але це може бути точніше.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Параметри |
Опис |
|---|---|
|
Швидкість обертання від 0% до 100%. Це може бути |
|
Необов’язково. Одиниця вимірювання швидкості: |
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#
Курс – це напрямок, у якому рухається робот, виміряний у градусах. heading повертає поточний курс робота від 0 до 359,99 градусів.
Початковий курс робота становить 0 градусів.
Usage:
drivetrain.heading(units)
Параметри |
Опис |
|---|---|
|
Необов’язково. Одиниця вимірювання заголовка: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
Обертання – це кут повороту робота, виміряний у градусах. На початку проекту значення повороту встановлюється на 0 градусів. rotation повертає поточне обертання робота.
Поворот праворуч збільшує обертання, а поворот ліворуч зменшує. Наприклад, два повних оберти праворуч повернуть обертання на 720 градусів.
Usage:
drivetrain.rotation(units)
Параметри |
Опис |
|---|---|
|
Необов’язково. Одиниця обертання: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done повертає, чи завершив рух робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.
True— Робот завершив рух.False— Робот все ще рухається.
Цей метод працює разом із наступними методами Drivetrain, які мають параметр wait : drive_for, turn_for, turn_to_heading та turn_to_rotation.
Usage:
drivetrain.is_done()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
is_moving#
is_moving повертає інформацію про те, чи рухається робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.
True— Робот рухається.False— Робот не рухається.
Usage:
drivetrain.is_moving()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |