Рух#
Вступ#
Робот-кодувальник VEX AIM використовує голономний трансмісійний механізм для руху вперед, назад, вліво, вправо або під кутом, а також здатний самостійно повертатися. Методи руху контролюють, як робот рухається та повертається, як швидко він рухається, а також як відстежуються його положення x та y.

Нижче наведено список доступних методів:
Дії — Переміщення та поворот робота.
move_at— Переміщує робота під певним кутом назавжди.move_for— Переміщує робота під певним кутом на певну відстань.move_with_vectors— Переміщує робота, використовуючи векторні значення x, y та обертання.turn— Повертає робота ліворуч або праворуч назавжди.turn_for— Повертає робота ліворуч або праворуч на певну кількість градусів.turn_to— Повертає робота обличчям у певному напрямку.stop_all_movement— Зупиняє всі рухи робота.
Мутатори — встановлення значень руху робота.
set_move_velocity— Вказує роботу, з якою швидкістю рухатися.set_turn_velocity— Вказує роботу, як швидко повертатися.set_xy_position— Змінює поточне положення робота по осях x та y на нові значення.
Геттери — Повертають стан та позицію робота.
get_x_position— Повертає поточну x-координату робота.get_y_position— Повертає поточну y-координату робота.is_move_active— Повертає, чи рухається робот.is_turn_active— Повертає, чи повертається робот.is_stopped— Повертає, чи не рухається і не обертається робот.
Дії#
move_at#
move_at переміщує робота назавжди під певним кутом. Кут залежить від поточного положення робота. Робот продовжуватиме рухатися, доки йому не буде надано іншу дію, таку як рух під іншим кутом, поворот або зупинка.
Використання:
robot.move_at(angle, velocity, units)
Параметри |
Опис |
|---|---|
|
Кут у градусах, на який рухається робот. Це може бути ціле або десяткове число від -360 до 360. |
|
Необов’язково. Швидкість руху від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості: |
# Move right, then move forward and stop.
robot.move_at(90)
wait(1,SECONDS)
robot.move_at(0)
wait(1,SECONDS)
robot.stop_all_movement()
# Move right slowly, move in reverse quickly and stop.
robot.move_at(90, 25)
wait(2, SECONDS)
robot.move_at(180, 100, PERCENT)
wait(1, SECONDS)
robot.stop_all_movement()
# Move diagonally to the right and stop.
robot.move_at(45.33)
wait(1,SECONDS)
robot.stop_all_movement()
move_for#
move_for переміщує робота під певним кутом на певну відстань. Кут залежить від поточного положення робота. Проект чекатиме, поки робот завершить рух, перш ніж буде виконано наступний рядок коду.
Використання:
robot.move_for(distance, angle, velocity, units, wait)
Параметри |
Опис |
|---|---|
|
Відстань, на яку рухається робот, у міліметрах (мм). Це може бути ціле або десяткове число (число з плаваючою комою). |
|
Кут у градусах, на який рухається робот. Це може бути ціле або десяткове число від -360 до 360. |
|
Необов’язково. Швидкість руху від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості: |
|
Необов’язково. |
# Move right, then move forward.
robot.move_for(50, 90)
robot.move_for(100, 0)
# Move in reverse slowly, then move forward quickly.
robot.move_for(100, 180, 25)
robot.move_for(100, 0, 100, PERCENT)
# Drive forward and blink all LEDs red.
robot.move_for(100, 0, wait=False)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)
move_with_vectors#
Вектор — це спосіб опису швидкості руху об’єкта та напрямку руху. move_with_vectors переміщує робота за допомогою векторного руху. Робот поєднує значення швидкості руху вперед, праворуч та обертання для створення плавного руху. Робот продовжуватиме рухатися, використовуючи цей вектор, доки йому не буде надано іншу дію, таку як рух під іншим кутом, поворот або зупинка.
Примітка: Цей метод безпосередньо встановлює значення швидкості руху та повороту, тому він не використовує set_move_velocity або set_turn_velocity.
Використання:
robot.move_with_vectors(forward, rightward, rotation)
Параметри |
Опис |
|---|---|
|
Швидкість робота вздовж осі y, від -100% до 100%. Від’ємні значення переміщують робота назад, а позитивні — вперед. |
|
Швидкість робота вздовж осі x, від -100% до 100%. Від’ємні значення переміщують робота ліворуч, а додатні — праворуч. |
|
Швидкість повороту робота від -100% до 100%. Від’ємні значення повертають робота проти годинникової стрілки, а позитивні значення — за годинниковою стрілкою. |
# Move at 15°
robot.move_with_vectors(48.3, 12.95, 0)
wait(2, SECONDS)
robot.stop_all_movement()
# Move at 45° while turning counterclockwise.
robot.move_with_vectors(50, 50, -30)
wait(2, SECONDS)
robot.stop_all_movement()
# Scaling movement using the controller joystick
while True:
# Move forward (and backwards) slower than axis1 input
forward = controller.axis1.position() * 0.7
# Move right (and left) faster than axis2 input
rightward = controller.axis2.position() * 1.5
robot.move_with_vectors(forward, rightward, 0)
wait(5, MSEC)
turn#
turn повертає робота ліворуч або праворуч назавжди. Робот продовжуватиме обертатися, доки йому не буде надано іншу дію, таку як рух або зупинка.
Використання:
robot.turn(direction, velocity, units)
Параметри |
Опис |
|---|---|
|
Напрямок повороту робота: |
|
Необов’язково. Швидкість повороту від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості: |
# Turn left, then stop.
robot.turn(LEFT)
wait(1, SECONDS)
robot.stop_all_movement()
# Turn left quickly, turn right slowly, then stop.
robot.turn(LEFT, 80)
wait(2, SECONDS)
robot.turn(RIGHT, 20, PERCENT)
wait(3, SECONDS)
robot.stop_all_movement()
turn_for#
turn_for повертає робота ліворуч або праворуч на певну кількість градусів. Поворот здійснюється відносно поточного напрямку, в якому рухається робот. Проект чекатиме, поки робот завершить поворот, перш ніж виконуватиметься наступний рядок коду.
Використання:
robot.turn_for(direction, angle, velocity, units, wait)
Параметри |
Опис |
|---|---|
|
Напрямок повороту робота: |
|
Кількість градусів, на яку повертається робот, у діапазоні від -360 до 360 градусів. Це може бути ціле або десяткове число (число з плаваючою комою). |
|
Необов’язково. Швидкість повороту від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості: |
|
Необов’язково. |
# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)
# Turn left quickly, then turn right slowly.
robot.turn_for(LEFT, 90, 100)
robot.turn_for(RIGHT, 180, 15, PERCENT)
# Turn right and blink all LEDs blue.
robot.turn_for(RIGHT, 180, wait=False)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
turn_to#
Курс – це напрямок, у якому рухається робот, виміряний у градусах. turn_to повертає робота обличчям у певному напрямку. Робот поверне найкоротшим шляхом, щоб досягти цільового курсу.
Початковий курс робота становить 0 градусів.
Проєкт чекатиме, поки робот завершить обертання, перш ніж буде виконано наступний рядок коду.
Використання:
robot.turn_to(heading, velocity, units, wait)
Параметри |
Опис |
|---|---|
|
Кут, яким має бути повернутий робот, від -360 до 360 градусів. |
|
Необов’язково. Швидкість повороту від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості: |
|
Необов’язково. |
# Turn to face each cardinal directions.
robot.turn_to(90)
wait(2, SECONDS)
robot.turn_to(180)
wait(2, SECONDS)
robot.turn_to(270)
wait(2, SECONDS)
robot.turn_to(0)
# Turn to face backward slowly, then face forward quickly.
robot.turn_to(180, 25)
wait(1, SECONDS)
robot.turn_to(0, 90, PERCENT)
# Turn around quickly and blink all LEDs green.
robot.turn_to(180, 100, wait=False)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
stop_all_movement#
stop_all_movement зупиняє всі рухи робота.
Використання:
robot.stop_all_movement()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Turn right, then stop moving
robot.turn(RIGHT)
wait(1, SECONDS)
robot.stop_all_movement()
Мутатори#
set_move_velocity#
set_move_velocity вказує роботу, з якою швидкістю рухатися. Вищий відсоток змушує робота рухатися швидше, а нижчий — повільніше.
Кожен проєкт починається з того, що робот рухається зі швидкістю 50% за замовчуванням.
Швидкість руху 100% еквівалентна 200 міліметрам за секунду.
Використання:
robot.set_move_velocity(velocity, units)
Параметри |
Опис |
|---|---|
|
Швидкість руху від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості: |
# Move forward at the default velocity,
robot.set_move_velocity(50)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move slower than the default velocity
robot.set_move_velocity(20)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move faster than the default velocity
robot.set_move_velocity(100)
robot.move_for(100, 0)
set_turn_velocity#
set_turn_velocity вказує роботу, як швидко повертатися. Вищий відсоток змушує робота повертатися швидше, а нижчий — повільніше.
Кожен проєкт починається з того, що робот за замовчуванням обертається зі швидкістю 50% (75 градусів за секунду).
Використання:
robot.set_turn_velocity(velocity, units)
Параметри |
Опис |
|---|---|
|
Швидкість повороту від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості: |
# Turn around at default velocity
robot.set_turn_velocity(50)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around slower than the default velocity
robot.set_turn_velocity(20)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around faster than the default velocity
robot.set_turn_velocity(100)
robot.turn_for(RIGHT, 180)
set_xy_position#
set_xy_position змінює поточне положення робота по осях x та y на нові значення.
Наприклад, якщо робот відійшов від своєї початкової точки, встановлення x на 0 та y на 0 робить поточне розташування робота новою позицією 0, 0. Тоді робот може відстежувати майбутні позиції на основі цього нового значення.
Використання:
robot.set_xy_position(x, y)
Параметри |
Опис |
|---|---|
|
Значення позиції x, яке потрібно встановити для робота, у мм. Це може бути ціле або десяткове число (число з плаваючою комою). |
|
Значення положення робота за осю Y, яке потрібно встановити, у мм. Це може бути ціле або десяткове число (число з плаваючою комою). |
# Set the robot's current position
# Move forward and print the new coordinate
robot.set_xy_position(100, 50)
robot.move_for(150, 0)
robot.screen.print("X:", robot.get_x_position())
robot.screen.next_row()
robot.screen.print("Y:", robot.get_y_position())
Геттери#
get_x_position#
get_x_position повертає поточну x-координату робота в міліметрах.
На початку проекту положення робота по осі x встановлюється на 0. Положення по осі x змінюється, коли робот рухається вліво або вправо, і його можна встановити за допомогою методу set_xy_position.
Використання:
robot.get_x_position()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the start and end x-value
# of the robot's position after moving
robot.screen.print("Start X:", robot.get_x_position())
robot.move_for(200, 90)
robot.screen.next_row()
robot.screen.print("End X:", robot.get_x_position())
get_y_position#
get_y_position повертає поточну y-координату робота в міліметрах.
На початку проекту y-позиція робота встановлюється на 0. Y-позиція змінюється, коли робот рухається вперед або назад, і її можна встановити за допомогою методу set_xy_position.
Використання:
robot.get_y_position()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the start and end y-value
# of the robot's position after moving
robot.screen.print("Start Y:", robot.get_y_position())
robot.move_for(200, 0)
robot.screen.next_row()
robot.screen.print("End Y:", robot.get_y_position())
is_move_active#
is_move_active повертає інформацію про те, чи рухається робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.
True— Робот рухається.False— Робот не рухається.
Цей метод працює разом із методами Motion, які мають параметр wait , наприклад, move_for.
Використання:
robot.is_move_active()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Blink all the LEDs when the robot is moving.
robot.move_for(200, 0, wait=False)
while robot.is_move_active():
robot.led.on(ALL_LEDS, ORANGE)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, CYAN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
is_turn_active#
is_turn_active повертає, чи повертається робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.
True— Робот обертається.False— Робот не обертається.
Цей метод працює разом із методами Motion, які мають параметр wait , такими як turn_for та turn_to.
Використання:
robot.is_turn_active()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Blink all the LEDs while the robot is turning
robot.turn_for(RIGHT, 180, wait=False)
while robot.is_turn_active():
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, CYAN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
is_stopped#
is_stopped повертає логічне значення, яке показує, чи не рухається і не обертається робот. Це можна використовувати для керування часом інших дій на основі руху робота.
True— Робот не рухається і не повертається.False— Робот рухається або повертається.
Використання:
robot.is_stopped()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Blink all the LEDs while the robot is moving or turning
def light_show():
# Flash LEDs while the robot is moving or turning
while not robot.is_stopped():
robot.led.on(ALL_LEDS, GREEN)
wait(.5, SECONDS)
robot.led.on(ALL_LEDS, PURPLE)
wait(.5, SECONDS)
robot.led.off(ALL_LEDS)
robot.move_for(200, 0, wait=False)
light_show()
robot.turn_for(RIGHT, 180, wait=False)
light_show()