Makro#
Introduktion#
VEX AIM Python-makron är förbyggda kodblock som kan dras in i ett Python-projekt. Varje makro är en grupp Python-kommandon som arbetar tillsammans för att få roboten att slutföra ett större beteende.
Det här är inte enskilda metoder som anropas från kod. Istället infogas varje makro som en färdig kodsekvens som kan användas som den är eller redigeras efter att den har lagts till i ett projekt.
På den här sidan visar varje Python-kodblock den faktiska kodsekvensen som infogas när makrot används.
Nedan följer en lista över alla makron:
Känslor — Få roboten att agera uttrycksfullt.
act happy— Får roboten att agera glad.act sad— Får roboten att agera ledsen.act silly— Får roboten att bete sig fånigt.act angry— Får roboten att agera arg.act excited— Får roboten att agera upphetsad.
AI-vision (sportboll) — Vänd dig mot eller samla sportbollar.
turn right until sports ball— Svänger höger tills en sportboll detekteras.turn left until sports ball— Svänger vänster tills en sportboll detekteras.get sports ball— Flyttar roboten för att hämta en sportboll.
AI-vision (orange tunna) — Vänd dig mot eller samla orange tunnor.
turn right until orange barrel— Svänger höger tills en orange tunna detekteras.turn left until orange barrel— Svänger vänster tills en orange tunna detekteras.get orange barrel— Flyttar roboten för att hämta en orange tunna.
AI-vision (blå tunna) — Vänd dig mot eller samla blå tunnor.
turn right until blue barrel— Svänger höger tills en blå pipa detekteras.turn left until blue barrel— Svänger vänster tills en blå pipa detekteras.get blue barrel— Flyttar roboten för att hämta en blå tunna.
AI-vision (AIM-robot) — Vänd dig mot eller rör dig mot andra AIM-robotar.
turn right until AIM robot— Svänger höger tills en annan AIM-robot detekteras.turn left until AIM robot— Svänger vänster tills en annan AIM-robot detekteras.move to AIM robot— Rör sig mot en annan AIM-robot.
AI-vision (AprilTag) — Vrid dig mot eller rör dig mot AprilTags.
turn right until AprilTag— Svänger höger tills en AprilTag detekteras.turn left until AprilTag— Svänger vänster tills en AprilTag detekteras.move to AprilTag— Flyttar mot en AprilTag.
Känslor#
act happy#
Detta makro får roboten att agera glatt genom att visa glada ansikten, spela upp ett glatt ljud, byta lysdioder och röra sig fram och tillbaka. Använd det när roboten ska reagera på ett glatt eller positivt sätt.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Det här makrot får roboten att bete sig ledsen genom att visa ledsna ansikten, spela upp ett ledset ljud, tona ner lysdioderna och röra sig långsamt i olika riktningar. Använd det när roboten ska visa en besviken eller lågenergireaktion.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Det här makrot får roboten att bete sig fånigt genom att snurra, byta ansikten och blinka med olika LED-färger. Använd det när roboten ska göra en lekfull eller överraskande reaktion.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Det här makrot får roboten att agera arg genom att visa arga ansikten, spela upp ett argt ljud, tända lysdioderna röda och röra sig skarpt. Använd det när roboten ska visa en frustrerad eller varnande reaktion.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro får roboten att agera upphetsad genom att visa ett upphetsat ansikte, spela ett upphetsat ljud, röra sig snabbt från sida till sida och blinka orange lysdioder. Använd det när roboten ska fira eller reagera med hög energi.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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-vision (sportboll)#
turn right until sports ball#
Detta makro vrider roboten åt höger tills AI-visionssensorn detekterar en sportboll och vrider sig sedan mot det detekterade objektet. Använd det när roboten behöver söka efter en sportboll innan den rör sig mot den eller samlar in den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro vrider roboten åt vänster tills AI-visionssensorn detekterar en sportboll och vrider sig sedan mot det detekterade objektet. Använd det när roboten behöver söka efter en sportboll innan den rör sig mot den eller samlar in den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro flyttar roboten mot en upptäckt sportboll tills roboten har plockat upp den. Använd detta efter att roboten kan se en sportboll, eller efter att ha använt ett makro “vrid-tills-sportboll” för att hitta en.
Obs! Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rörelse- och vridhastigheter med set_move_velocity och set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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-vision (orange tunna)#
turn right until orange barrel#
Detta makro vrider roboten åt höger tills AI-visionssensorn detekterar en orange tunna och vrider sig sedan mot det detekterade objektet. Använd det när roboten behöver söka efter en orange tunna innan den rör sig mot den eller hämtar den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro vrider roboten åt vänster tills AI-visionssensorn detekterar en orange tunna och vrider sig sedan mot det detekterade objektet. Använd det när roboten behöver söka efter en orange tunna innan den rör sig mot den eller hämtar den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro flyttar roboten mot en detekterad orange tunna tills roboten har plockat upp den. Använd detta efter att roboten kan se en orange tunna, eller efter att ha använt ett makro “vrid tills orange tunna” för att hitta en.
Obs! Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rörelse- och vridhastigheter med set_move_velocity och set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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-vision (Blue Barrel)#
turn right until blue barrel#
Detta makro vrider roboten åt höger tills AI-visionssensorn detekterar en blå tunna och vrider sig sedan mot det detekterade objektet. Använd det när roboten behöver söka efter en blå tunna innan den rör sig mot den eller hämtar den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro vrider roboten åt vänster tills AI-visionssensorn detekterar en blå tunna och vrider sig sedan mot det detekterade objektet. Använd det när roboten behöver söka efter en blå tunna innan den rör sig mot den eller hämtar den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro flyttar roboten mot en upptäckt blå tunna tills roboten har plockat upp den. Använd detta efter att roboten kan se en blå tunna, eller efter att ha använt ett makro “vrid tills blå tunna” för att hitta en.
Obs! Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rörelse- och vridhastigheter med set_move_velocity och set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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-vision (AIM-robot)#
turn right until AIM robot#
Detta makro vrider roboten åt höger tills AI-visionssensorn detekterar en annan VEX AIM-kodningsrobot och vrider sig sedan mot den. Använd det när roboten behöver söka efter en annan robot innan den rör sig mot den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro vrider roboten åt vänster tills AI-visionssensorn detekterar en annan VEX AIM-kodningsrobot och vrider sig sedan mot den. Använd det när roboten behöver söka efter en annan robot innan den rör sig mot den.
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro flyttar roboten mot en annan VEX AIM-kodningsrobot tills den är tillräckligt nära för att stanna. Använd detta efter att roboten kan se en annan robot, eller efter att ha använt ett makro “vrid-tills-AIM-robot” för att hitta en.
Obs! Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rörelse- och vridhastigheter med set_move_velocity och set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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-vision (AprilTag)#
turn right until AprilTag#
Detta makro vrider roboten åt höger tills AI-visionssensorn detekterar AprilTag ID 0 och vrider sig sedan mot den detekterade AprilTag. Använd det när roboten behöver söka efter en AprilTag innan den rör sig mot den. För att ändra vilken AprilTag roboten ska vrida sig till, ersätt 0 i TAG0 med valfritt nummer från 0 till 37 (AprilTags 5 till 37 kan användas med utskrivna AprilTags från AIM Printables.)
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro vrider roboten åt vänster tills AI-visionssensorn detekterar AprilTag ID 0 och vrider sig sedan mot den detekterade AprilTag. Använd det när roboten behöver söka efter en AprilTag innan den rör sig mot den. För att ändra vilken AprilTag roboten ska vrida sig till, ersätt 0 i TAG0 med valfritt nummer från 0 till 37 (AprilTags 5 till 37 kan användas med utskrivna AprilTags från AIM Printables.)
Obs: Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rotationshastighet med set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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#
Detta makro flyttar roboten mot AprilTag ID 0 tills den är tillräckligt nära för att stanna. Använd detta efter att roboten kan se en AprilTag, eller efter att ha använt ett “vrid-tills-AprilTag”-makro för att hitta en. För att ändra vilken AprilTag roboten ska flytta till, ersätt 0 i TAG0 med valfritt nummer från 0 till 37 (AprilTags 5 till 37 kan användas med utskrivna AprilTags från AIM Printables.)
Obs! Om roboten har svårt att upptäcka föremål kan du försöka sänka robotens rörelse- och vridhastigheter med set_move_velocity och set_turn_velocity.
Koden nedan visar Python-sekvensen som läggs till i ditt projekt när detta makro dras från verktygslådan. Du kan använda sekvensen som den är eller redigera den efter att du har lagt till den.
# 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)