マクロ#

導入#

VEX AIMのPythonマクロは、あらかじめ構築されたコードブロックで、Pythonプロジェクトにドラッグ&ドロップで追加できます。各マクロは、ロボットに一連の動作を実行させるために連携して動作するPythonコマンドのグループです。

これらはコードから呼び出される単一のメソッドではありません。各マクロは、そのまま使用することも、プロジェクトに追加した後に編集することもできる、既製のコードシーケンスとして挿入されます。

このページでは、各Pythonコードブロックに、そのマクロが使用された際に実際に挿入されるコードシーケンスが表示されています。

以下はすべてのマクロの一覧です。

感情表現 ― ロボットに表情豊かな行動をさせる。

  • act happy — ロボットを幸せそうにさせます。

  • act sad — ロボットを悲しませます。

  • act silly — ロボットを馬鹿げた行動をさせます。

  • act angry — ロボットを怒らせます。

  • act excited — ロボットを興奮させる。

AIビジョン(スポーツボール)— スポーツボールの方を向くか、スポーツボールを集める。

AIビジョン(オレンジ色の樽)— オレンジ色の樽の方を向くか、オレンジ色の樽を集めてください。

AIビジョン(青い樽)— 青い樽の方を向くか、青い樽を集めてください。

AIビジョン(AIMロボット)—他のAIMロボットの方へ向きを変える、または他のAIMロボットの方へ移動する。

AIビジョン(AprilTag)— AprilTagの方向を向くか、AprilTagに向かって移動する。

感情#

act happy#

このマクロは、ロボットに笑顔を見せたり、楽しい音を鳴らしたり、LEDの色を変えたり、前後に動いたりすることで、ロボットを幸せな動作へと導きます。ロボットに明るくポジティブな反応をさせたい場合に使用してください。

以下のコードは、このマクロをツールボックスからドラッグしたときにプロジェクトに追加される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#

このマクロは、ロボットに悲しい表情をさせたり、悲しい音を鳴らしたり、LEDをフェードアウトさせたり、様々な方向にゆっくりと動かしたりすることで、ロボットに悲しい反応をさせます。ロボットに落胆した様子や元気のない様子を表現させたい場合に使用してください。

以下のコードは、このマクロをツールボックスからドラッグしたときにプロジェクトに追加される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#

このマクロを使うと、ロボットが回転したり、顔を変えたり、LEDの色を点滅させたりして、おかしな動きをします。ロボットに遊び心のある、あるいは意外な反応をさせたいときに使用してください。

以下のコードは、このマクロをツールボックスからドラッグしたときにプロジェクトに追加される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#

このマクロは、ロボットに怒った表情を見せたり、怒った音を鳴らしたり、LEDを赤く点灯させたり、急に動いたりすることで、ロボットを怒ったように見せます。ロボットに苛立ちや警告の反応をさせたい場合に使用してください。

以下のコードは、このマクロをツールボックスからドラッグしたときにプロジェクトに追加される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#

このマクロを使うと、ロボットは興奮した表情を見せたり、興奮した音を鳴らしたり、左右に素早く動いたり、オレンジ色のLEDを点滅させたりして、興奮した様子を見せるようになります。ロボットが喜びを表現したり、エネルギッシュに反応したりする必要がある場面で使用してください。

以下のコードは、このマクロをツールボックスからドラッグしたときにプロジェクトに追加される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)

AIビジョン(スポーツボール)#

turn right until sports ball#

このマクロは、AIビジョンセンサーがスポーツボールを検出するまでロボットを右に旋回させ、その後、検出された物体に向かって旋回させます。ロボットがスポーツボールに向かって移動したり、ボールを回収したりする前に、スポーツボールを探す必要がある場合に使用してください。

注: ロボットが物体を検出するのに苦労する場合は、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#

このマクロは、AIビジョンセンサーがスポーツボールを検出するまでロボットを左に旋回させ、その後、検出された物体に向かって旋回させます。ロボットがスポーツボールに向かって移動したり、ボールを回収したりする前に、スポーツボールを探す必要がある場合に使用してください。

注: ロボットが物体を検出するのに苦労する場合は、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)

AIビジョン(オレンジバレル)#

turn right until orange barrel#

このマクロは、AIビジョンセンサーがオレンジ色の樽を検出するまでロボットを右に旋回させ、その後、検出された物体に向かって旋回させます。ロボットがオレンジ色の樽に向かって移動したり、樽を回収したりする前に、樽を探す必要がある場合に使用してください。

注: ロボットが物体を検出するのに苦労する場合は、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#

このマクロは、AIビジョンセンサーがオレンジ色の樽を検出するまでロボットを左に旋回させ、その後、検出された物体に向かって旋回させます。ロボットがオレンジ色の樽に向かって移動したり、回収したりする前に、樽を探す必要がある場合に使用してください。

注: ロボットが物体を検出するのに苦労する場合は、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)

AIビジョン(ブルーバレル)#

turn right until blue barrel#

このマクロは、AIビジョンセンサーが青い樽を検出するまでロボットを右に旋回させ、その後、検出された物体に向かって旋回させます。ロボットが青い樽に向かって移動したり、回収したりする前に、その樽を探索する必要がある場合に使用してください。

注: ロボットが物体を検出するのに苦労する場合は、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#

このマクロは、AIビジョンセンサーが青い樽を検出するまでロボットを左に旋回させ、その後、検出された物体に向かって旋回させます。ロボットが青い樽に向かって移動したり、回収したりする前に、その樽を探す必要がある場合に使用してください。

注: ロボットが物体を検出するのに苦労する場合は、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)

AIビジョン(AIMロボット)#

turn right until AIM robot#

このマクロは、AIビジョンセンサーが別の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#

このマクロは、AIビジョンセンサーが別の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)

AIビジョン(AprilTag)#

turn right until AprilTag#

このマクロは、AIビジョンセンサーがAprilTag ID 0を検出するまでロボットを右に回転させ、検出されたAprilTagの方向に回転します。ロボットがAprilTagを探してからその方向へ移動する必要がある場合に使用します。ロボットが回転するAprilTagを変更するには、 TAG0 の 0 を 0 から 37 までの任意の番号に置き換えます(AprilTag 5から37は、AIM Printablesから印刷したAprilTagで使用できます)。

注: ロボットが物体を検出するのに苦労する場合は、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#

このマクロは、AIビジョンセンサーがAprilTag ID 0を検出するまでロボットを左に回転させ、検出されたAprilTagの方向に回転します。ロボットがAprilTagを探してからその方向へ移動する必要がある場合に使用します。ロボットが回転するAprilTagを変更するには、 TAG0 の 0 を 0 から 37 までの任意の番号に置き換えます(AprilTag 5から37は、AIM Printablesから印刷したAprilTagで使用できます)。

注: ロボットが物体を検出するのに苦労する場合は、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 を認識できるようになった後、または AprilTag を見つけるために旋回マクロを使用した後に、このマクロを使用してください。ロボットが移動する AprilTag を変更するには、 TAG0 の 0 を 0 から 37 までの任意の番号に置き換えてください (AprilTag 5 から 37 は、AIM Printables から印刷した AprilTag で使用できます)。

注: ロボットが物体を検出するのに苦労する場合は、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)