Рух#

Вступ#

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

Круглий циферблат компаса від 0 до 315 градусів оточує темно-сірий дисплей з темно-синім екраном. Передня частина робота спрямована на 0 градусів на циферблаті компаса.

Нижче наведено список доступних методів:

Дії — Переміщення та поворот робота.

  • 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)

Параметри

Опис

angle

Кут у градусах, на який рухається робот. Це може бути ціле або десяткове число від -360 до 360.

velocity

Необов’язково. Швидкість руху від 0% до 100% при використанні PERCENTабо від 0 до 200 міліметрів за секунду при використанні MMPSЦе може бути ціле або десяткове число (число з плаваючою комою). Якщо швидкість не вказана, робот рухається з поточною швидкістю руху.

units

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

# 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)

Параметри

Опис

distance

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

angle

Кут у градусах, на який рухається робот. Це може бути ціле або десяткове число від -360 до 360.

velocity

Необов’язково. Швидкість руху від 0% до 100% при використанні PERCENTабо від 0 до 200 міліметрів за секунду при використанні MMPSЦе може бути ціле або десяткове число (число з плаваючою комою). Якщо швидкість не вказана, робот рухається з поточною швидкістю руху.

units

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

wait

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

# 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)

Параметри

Опис

forward

Швидкість робота вздовж осі y, від -100% до 100%. Від’ємні значення переміщують робота назад, а позитивні — вперед.

rightward

Швидкість робота вздовж осі x, від -100% до 100%. Від’ємні значення переміщують робота ліворуч, а додатні — праворуч.

rotation

Швидкість повороту робота від -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)

Параметри

Опис

direction

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

velocity

Необов’язково. Швидкість повороту від 0% до 100% при використанні PERCENTабо від 0 до 150 градусів за секунду при використанні DPSЦе може бути ціле або десяткове число (число з плаваючою комою). Якщо швидкість не вказана, робот повертається з поточною швидкістю повороту.

units

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

# 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)

Параметри

Опис

direction

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

angle

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

velocity

Необов’язково. Швидкість повороту від 0% до 100% при використанні PERCENTабо від 0 до 150 градусів за секунду при використанні DPSЦе може бути ціле або десяткове число (число з плаваючою комою). Якщо швидкість не вказана, робот повертається з поточною швидкістю повороту.

units

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

wait

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

# 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)

Параметри

Опис

heading

Кут, яким має бути повернутий робот, від -360 до 360 градусів.

velocity

Необов’язково. Швидкість повороту від 0% до 100% при використанні PERCENTабо від 0 до 150 градусів за секунду при використанні DPSЦе може бути ціле або десяткове число (число з плаваючою комою). Якщо швидкість не вказана, робот повертається з поточною швидкістю повороту.

units

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

wait

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

# 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)

Параметри

Опис

velocity

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

units

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

# 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)

Параметри

Опис

velocity

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

units

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

# 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

Значення позиції x, яке потрібно встановити для робота, у мм. Це може бути ціле або десяткове число (число з плаваючою комою).

y

Значення положення робота за осю 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()