Макрос#

Вступ#

Макроси Python для VEX AIM — це попередньо створені блоки коду, які можна перетягнути в проект Python. Кожен макрос — це група команд Python, які працюють разом, щоб робот виконав певну дію.

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

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

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

Емоції — змушують робота діяти виразно.

  • act happy — Змушує робота поводитися щасливо.

  • act sad — Змушує робота поводитися сумно.

  • act silly — Змушує робота поводитися безглуздо.

  • act angry — Змушує робота поводитися розлючено.

  • act excited — Змушує робота діяти збуджено.

AI Vision (спортивний м’яч) — повертайте до спортивних м’ячів або збирайте їх.

  • turn right until sports ball — Повертає праворуч, доки не буде виявлено спортивний м’яч.

  • turn left until sports ball — Повертає ліворуч, доки не буде виявлено спортивний м’яч.

  • get sports ball — Переміщує робота для збору спортивного м’яча.

Зір ШІ (Помаранчева бочка) — Повертайтеся до помаранчевих бочок або збирайте їх.

  • turn right until orange barrel — Повертає праворуч, доки не буде виявлено помаранчеву бочку.

  • turn left until orange barrel — Повертає ліворуч, доки не буде виявлено помаранчеву бочку.

  • get orange barrel — Переміщує робота для збору помаранчевої бочки.

Зір ШІ (Синя бочка) — Повертайтеся до синіх бочок або збирайте їх.

  • turn right until blue barrel — Повертає праворуч, доки не буде виявлено синю бочку.

  • turn left until blue barrel — Повертає ліворуч, доки не буде виявлено синю бочку.

  • get blue barrel — Переміщує робота для збору синьої бочки.

Штучний зір (робот AIM) — повертається або рухається до інших роботів AIM.

  • turn right until AIM robot — Повертає праворуч, доки не буде виявлено іншого робота AIM.

  • turn left until AIM robot — Повертає ліворуч, доки не буде виявлено іншого робота AIM.

  • move to AIM robot — Переміщується до іншого робота AIM.

AI Vision (AprilTag) — Повернення або рух до AprilTags.

Емоції#

act happy#

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

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

# act happy
robot.screen.show_emoji(HAPPY)
wait(.5,SECONDS)
robot.sound.play(ACT_HAPPY)
wait(115, MSEC)

robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.led.on(ALL_LEDS, YELLOW)
robot.turn_for(RIGHT, 4, 100)
robot.led.on(ALL_LEDS, WHITE)
robot.screen.show_emoji(HAPPY, LOOK_LEFT)
robot.turn_for(RIGHT, -8, 100)
robot.led.on(ALL_LEDS, YELLOW)
robot.screen.show_emoji(HAPPY, LOOK_RIGHT)
robot.turn_for(RIGHT, 4, 100)

wait(100,MSEC)
for i in range(3):
    robot.screen.show_emoji(QUIET)
    robot.led.on(ALL_LEDS, WHITE)
    robot.move_for(1,-90)
    robot.screen.show_emoji(HAPPY)
    robot.led.on(ALL_LEDS, YELLOW)
    robot.move_for(1,90)

robot.stop_all_movement()
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)

act sad#

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

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

# act sad
robot.screen.show_emoji(SAD)
wait(.5,SECONDS)
robot.sound.play(ACT_SAD)
wait(115, MSEC)

robot.led.on(ALL_LEDS, Color(0, 0, 250))
robot.screen.show_emoji(SAD, LOOK_RIGHT)
robot.move_for(11, 135, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 100))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 315, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 50))
robot.screen.show_emoji(SAD, LOOK_LEFT)
robot.move_for(11, 225, 70)
robot.led.on(ALL_LEDS, Color(0, 0, 10))
robot.screen.show_emoji(SAD, LOOK_FORWARD)
robot.move_for(11, 45, 70)
wait(.5,SECONDS)
robot.led.off(ALL_LEDS)

act silly#

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

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

# act silly
robot.screen.show_emoji(SILLY)
wait(.5,SECONDS)
robot.sound.play(ACT_SILLY)
wait(115,MSEC)

robot.turn_for(RIGHT, 360, 100, wait=False)
face_list = [SILLY, HAPPY, EXCITED, PROUD, THRILLED, LAUGHING]
colors = [BLUE, CYAN, GREEN, ORANGE, PURPLE, RED, WHITE, YELLOW]

while robot.is_turn_active():
    robot.screen.show_emoji(SILLY)
    robot.led.on(ALL_LEDS, random.choice(colors))
    wait(110,MSEC)
    robot.screen.show_emoji(random.choice(face_list))
    wait(110,MSEC)

robot.screen.show_emoji(SILLY)
robot.led.off(ALL_LEDS)
wait(.5,SECONDS)

act angry#

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

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

# act angry
robot.screen.show_emoji(ANGRY)
wait(.5,SECONDS)
robot.sound.play(ACT_ANGRY)
wait(115,MSEC)

robot.led.on(ALL_LEDS, RED)
robot.move_for(25, 0, 50)
wait(50,MSEC)

for i in range(5):
    robot.screen.show_emoji(ANNOYED)
    robot.move_for(5, 180, 50)
    robot.screen.show_emoji(ANGRY)
    wait(50,MSEC)

wait(.5,SECONDS)
robot.led.off(ALL_LEDS)

act excited#

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

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

# act excited
robot.screen.show_emoji(EXCITED)
wait(.5,SECONDS)
robot.sound.play(ACT_EXCITED)
wait(115, MSEC)

for angle in [3,-3,2,-2,2,-2,2,-2,1,-1]:
    if angle > 0:
        robot.screen.show_emoji(EXCITED, LOOK_RIGHT)
        robot.led.on(LED4, ORANGE)
        robot.led.on(LED5, ORANGE)
        robot.led.on(LED6, ORANGE)
        robot.led.off(LED1)
    else:
        robot.screen.show_emoji(EXCITED, LOOK_LEFT)
        robot.led.on(LED1, ORANGE)
        robot.led.on(LED2, ORANGE)
        robot.led.on(LED3, ORANGE)
        robot.led.off(LED6)
    robot.turn_for(RIGHT, angle)
    robot.led.off(ALL_LEDS)

robot.screen.show_emoji(EXCITED, LOOK_FORWARD)
wait(.5,SECONDS)

ШІ-зір (спортивний м’яч)#

turn right until sports ball#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn right until sports ball is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(SPORTS_BALL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until sports ball#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn left until sports ball is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(SPORTS_BALL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

get sports ball#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість руху та повороту робота за допомогою set_move_velocity та set_turn_velocity.

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

# Get sports ball
while True:
    vision_data = robot.vision.get_data(SPORTS_BALL)

    if vision_data[0].exists:
        if robot.has_sports_ball():
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

ШІ-зір (Помаранчева бочка)#

turn right until orange barrel#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn right until orange barrel is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(ORANGE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until orange barrel#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn left until orange barrel is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(ORANGE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

get orange barrel#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість руху та повороту робота за допомогою set_move_velocity та set_turn_velocity.

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

# Get orange barrel
while True:
    vision_data = robot.vision.get_data(ORANGE_BARREL)

    if vision_data[0].exists:
        if robot.has_orange_barrel():
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

ШІ-зір (Синя бочка)#

turn right until blue barrel#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn right until blue barrel is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until blue barrel#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn left until blue barrel is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

get blue barrel#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість руху та повороту робота за допомогою set_move_velocity та set_turn_velocity.

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

# Get blue barrel
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:
        if robot.has_blue_barrel():
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

Штучний зір (AIM-робот)#

turn right until AIM robot#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn right until AIM robot is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(AIM_ROBOT)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until AIM robot#

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

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn left until AIM robot is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(AIM_ROBOT)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

move to AIM robot#

Цей макрос переміщує робота до іншого робота-кодувача VEX AIM, доки той не наблизиться достатньо, щоб зупинитися. Використовуйте його після того, як робот побачить іншого робота або після використання макросу “поверни, поки не знайдеш робота AIM”, щоб знайти його.

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість руху та повороту робота за допомогою set_move_velocity та set_turn_velocity.

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

# Move to AIM robot
while True:
    vision_data = robot.vision.get_data(AIM_ROBOT)

    if vision_data[0].exists:
        if vision_data[0].width >= 140:
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)

Зір штучного інтелекту (тег квітня)#

turn right until AprilTag#

Цей макрос повертає робота праворуч, доки датчик зору штучного інтелекту не виявить AprilTag ID 0, а потім повертається до виявленого AprilTag. Використовуйте його, коли роботу потрібно знайти AprilTag, перш ніж рухатися до нього. Щоб змінити, до якого AprilTag повертатиметься робот, замініть 0 у TAG0 будь-яким числом від 0 до 37 (AprilTags від 5 до 37 можна використовувати з надрукованими AprilTags з AIM Printables.)

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn right until AprilTag ID 0 is detected
robot.turn(RIGHT)
while True:
    vision_data = robot.vision.get_data(TAG0)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

turn left until AprilTag#

Цей макрос повертає робота ліворуч, доки датчик зору штучного інтелекту не виявить AprilTag ID 0, а потім повертається до виявленого AprilTag. Використовуйте його, коли роботу потрібно знайти AprilTag, перш ніж рухатися до нього. Щоб змінити, до якого AprilTag повертатиметься робот, замініть 0 у TAG0 будь-яким числом від 0 до 37 (AprilTags від 5 до 37 можна використовувати з надрукованими AprilTags з AIM Printables.)

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість повороту робота за допомогою set_turn_velocity.

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

# Turn left until AprilTag ID 0 is detected
robot.turn(LEFT)
while True:
    vision_data = robot.vision.get_data(TAG0)

    if vision_data[0].exists:
        # Turn to the object by adding your current heading and the vision bearing offset
        robot.turn_to(robot.inertial.get_heading() + vision_data[0].bearing)
        break
    wait(20, MSEC)

move to AprilTag#

Цей макрос переміщує робота до AprilTag ID 0, доки він не буде достатньо близько, щоб зупинитися. Використовуйте його після того, як робот побачить AprilTag або після використання макросу turn-until-AprilTag для його знаходження. Щоб змінити, до якого AprilTag рухатиметься робот, замініть 0 у TAG0 будь-яким числом від 0 до 37 (AprilTags з 5 по 37 можна використовувати з надрукованими AprilTags з AIM Printables.)

Примітка: Якщо робот має труднощі з виявленням об’єктів, спробуйте зменшити швидкість руху та повороту робота за допомогою set_move_velocity та set_turn_velocity.

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

# Move to AprilTag ID 0
while True:
    vision_data = robot.vision.get_data(TAG0)

    if vision_data[0].exists:
        if vision_data[0].width >= 60:
            robot.stop_all_movement()
            break
        else:
            robot.move_at(vision_data[0].bearing)
    else:
        robot.move_at(0)
    wait(20, MSEC)