Makro#
Zavedení#
Makra Pythonu VEX AIM jsou předpřipravené bloky kódu, které lze přetáhnout do projektu v Pythonu. Každé makro je skupina příkazů Pythonu, které spolupracují na dokončení rozsáhlejšího chování robota.
Nejedná se o jednotlivé metody volané z kódu. Místo toho je každé makro vloženo jako hotová sekvence kódu, kterou lze použít tak, jak je, nebo upravit po přidání do projektu.
Na této stránce každý blok kódu Pythonu zobrazuje skutečnou sekvenci kódu, která se vloží při použití daného makra.
Níže je uveden seznam všech maker:
Emoce – Nechte robota jednat expresivně.
act happy— Umožní robotovi chovat se šťastně.act sad— Způsobí, že se robot chová smutně.act silly— Způsobí, že se robot chová hloupě.act angry— Způsobí, že se robot chová naštvaně.act excited— Způsobí, že se robot chová vzrušeně.
AI Vision (Sportovní míč) – Otáčejte se směrem ke sportovním míčům nebo je sbírejte.
turn right until sports ball— Odbočuje doprava, dokud není detekován sportovní míč.turn left until sports ball— Odbočuje doleva, dokud není detekován sportovní míč.get sports ball— Přesune robota, aby sebral sportovní míč.
AI Vision (Oranžový sud) – Otočte se směrem k oranžovým sudům nebo je seberte.
turn right until orange barrel— Odbočuje doprava, dokud není detekován oranžový sud.turn left until orange barrel— Odbočuje doleva, dokud není detekován oranžový sud.get orange barrel— Přesune robota, aby sebral oranžový sud.
AI Vision (Modrý sud) – Otočte se směrem k modrým sudům nebo je seberte.
turn right until blue barrel— Odbočuje doprava, dokud není detekován modrý sud.turn left until blue barrel— Odbočuje doleva, dokud není detekován modrý sud.get blue barrel— Přesune robota, aby sebral modrý sud.
AI Vision (AIM Robot) – Otáčení nebo pohyb k jiným AIM robotům.
turn right until AIM robot— Odbočuje doprava, dokud není detekován další robot AIM.turn left until AIM robot— Odbočuje doleva, dokud není detekován další robot AIM.move to AIM robot— Pohybuje se směrem k jinému robotovi AIM.
AI Vision (AprilTag) – Otočte se nebo se posuňte směrem k AprilTags.
turn right until AprilTag— Odbočuje doprava, dokud není detekován AprilTag.turn left until AprilTag— Odbočuje doleva, dokud není detekován AprilTag.move to AprilTag— Přesune se k AprilTag.
Emoce#
act happy#
Toto makro rozveselí robota tím, že ukazuje šťastné tváře, přehrává šťastný zvuk, mění LED diody a pohybuje se tam a zpět. Použijte ho, když má robot reagovat vesele nebo pozitivně.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro způsobí, že se robot chová smutně, zobrazuje smutné obličeje, přehrává smutný zvuk, ztlumuje LED diody a pomalu se pohybuje různými směry. Použijte ho, když by robot měl projevovat zklamání nebo nízkou energii.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro způsobí, že se robot bude chovat hloupě – otáčením, změnou obličeje a blikáním různých barev LED diod. Použijte ho, když má robot reagovat hravě nebo překvapivě.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro způsobí, že se robot chová rozzlobeně tím, že ukazuje rozzlobené obličeje, přehrává rozzlobený zvuk, rozsvítí LED diody červeně a prudce se pohybuje. Použijte ho, když by robot měl projevit frustrovanou nebo varovnou reakci.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro způsobí, že se robot chová nadšeně – ukazuje nadšený výraz, přehrává nadšený zvuk, rychle se pohybuje ze strany na stranu a blikají oranžové LED diody. Použijte ho, když má robot oslavovat nebo reagovat s vysokou energií.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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 (sportovní míč)#
turn right until sports ball#
Toto makro otáčí robota doprava, dokud senzor AI Vision Sensor nezaznamená sportovní míč, a poté se otočí směrem k detekovanému objektu. Použijte ho, když robot potřebuje vyhledat sportovní míč, než se k němu pohne nebo ho sebere.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro otáčí robota doleva, dokud senzor AI Vision Sensor nezaznamená sportovní míč, a poté se otočí směrem k detekovanému objektu. Použijte ho, když robot potřebuje vyhledat sportovní míč, než se k němu pohne nebo ho sebere.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro pohybuje robotem směrem k detekovanému sportovnímu míči, dokud ho robot nezvedne. Použijte ho poté, co robot sportovní míč uvidí, nebo po použití makra „otáčej, dokud sportovní míč nenajde“.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost pohybu a otáčení robota pomocí set_move_velocity a set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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)
Vidění umělé inteligence (oranžový hlaveň)#
turn right until orange barrel#
Toto makro otáčí robota doprava, dokud senzor AI Vision Sensor nezaznamená oranžový sud, a poté se otočí směrem k detekovanému objektu. Použijte ho, když robot potřebuje oranžový sud vyhledat, než se k němu pohne nebo ho sebere.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro otáčí robota doleva, dokud senzor AI Vision Sensor nezaznamená oranžový sud, a poté se otočí směrem k detekovanému objektu. Použijte ho, když robot potřebuje oranžový sud vyhledat, než se k němu pohne nebo ho sebere.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro pohybuje robotem směrem k detekovanému oranžovému sudu, dokud ho robot nesebere. Použijte ho poté, co robot oranžový sud uvidí, nebo po použití makra „otáčej, dokud oranžový sud nenajde“.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost pohybu a otáčení robota pomocí set_move_velocity a set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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)
Vidění s umělou inteligencí (Modrý sud)#
turn right until blue barrel#
Toto makro otáčí robota doprava, dokud senzor AI Vision Sensor nezaznamená modrý sud, a poté se otočí směrem k detekovanému objektu. Použijte ho, když robot potřebuje vyhledat modrý sud, než se k němu pohne nebo ho sebere.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro otáčí robota doleva, dokud senzor AI Vision Sensor nezaznamená modrý sud, a poté se otočí směrem k detekovanému objektu. Použijte ho, když robot potřebuje vyhledat modrý sud, než se k němu pohne nebo ho sebere.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro pohybuje robotem směrem k detekovanému modrému sudu, dokud ho robot nesebere. Použijte ho poté, co robot modrý sud uvidí, nebo po použití makra „otáčej, dokud se modrý sud nenajde“ k jeho nalezení.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost pohybu a otáčení robota pomocí set_move_velocity a set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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)
Vidění s využitím umělé inteligence (robot AIM)#
turn right until AIM robot#
Toto makro otáčí robota doprava, dokud senzor AI Vision Sensor nezaznamená jiného kódovacího robota VEX AIM, a poté se k němu otočí. Použijte ho, když robot potřebuje vyhledat jiného robota, než se k němu pohne.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro otáčí robota doleva, dokud senzor AI Vision Sensor nezaznamená jiného kódovacího robota VEX AIM, a poté se k němu otočí. Použijte ho, když robot potřebuje vyhledat jiného robota, než se k němu pohne.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro pohybuje robotem směrem k jinému kódovacímu robotu VEX AIM, dokud se nedostane dostatečně blízko na to, aby se zastavil. Použijte ho poté, co robot uvidí jiného robota, nebo po použití makra „otáčej se, dokud robot AIM nenájde“ k jeho nalezení.
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost pohybu a otáčení robota pomocí set_move_velocity a set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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)
Vize umělé inteligence (AprilTag)#
turn right until AprilTag#
Toto makro otáčí robota doprava, dokud senzor AI Vision Sensor nezaznamená ID AprilTag 0, a poté se otočí směrem k detekovanému AprilTagu. Použijte ho, když robot potřebuje vyhledat AprilTag, než se k němu pohne. Chcete-li změnit, ke kterému AprilTagu se robot bude otáčet, nahraďte 0 v TAG0 libovolným číslem od 0 do 37 (AprilTagy 5 až 37 lze použít s vytištěnými AprilTagy z AIM Printables.)
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro otáčí robota doleva, dokud senzor AI Vision Sensor nezaznamená ID AprilTag 0, a poté se otočí směrem k detekovanému AprilTagu. Použijte ho, když robot potřebuje vyhledat AprilTag, než se k němu pohne. Chcete-li změnit, do kterého AprilTagu se robot bude otáčet, nahraďte 0 v TAG0 libovolným číslem od 0 do 37 (AprilTagy 5 až 37 lze použít s vytištěnými AprilTagy z AIM Printables.)
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost otáčení robota pomocí set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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#
Toto makro pohybuje robotem směrem k AprilTag ID 0, dokud není dostatečně blízko k zastavení. Použijte ho poté, co robot AprilTag uvidí, nebo po použití makra turn-until-AprilTag k jeho nalezení. Chcete-li změnit, ke kterému AprilTag se robot přesune, nahraďte 0 v TAG0 libovolným číslem od 0 do 37 (AprilTagy 5 až 37 lze použít s vytištěnými AprilTagy z AIM Printables.)
Poznámka: Pokud má robot potíže s detekcí objektů, zkuste snížit rychlost pohybu a otáčení robota pomocí set_move_velocity a set_turn_velocity.
Níže uvedený kód ukazuje sekvenci Pythonu, která se přidá do vašeho projektu, když je toto makro přetaženo z Toolboxu. Sekvenci můžete použít tak, jak je, nebo ji po přidání upravit.
# 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)