Macro#

Introduction#

Les macros Python de VEX AIM sont des blocs de code prédéfinis que l’on peut glisser-déposer dans un projet Python. Chaque macro est un groupe de commandes Python qui, ensemble, permettent au robot d’exécuter une action complexe.

Il ne s’agit pas de méthodes isolées appelées depuis le code. Chaque macro est plutôt insérée sous forme de séquence de code prête à l’emploi, utilisable telle quelle ou modifiable après son ajout à un projet.

Sur cette page, chaque bloc de code Python affiche la séquence de code réelle qui est insérée lorsque cette macro est utilisée.

Vous trouverez ci-dessous la liste de toutes les macros :

Émotions — Faites en sorte que le robot agisse de manière expressive.

Vision IA (ballon de sport) — Se tourner vers les ballons de sport ou les ramasser.

Vision IA (Baril orange) — Tournez-vous vers les barils orange ou ramassez-les.

Vision IA (Baril bleu) — Tournez-vous vers les barils bleus ou ramassez-les.

Vision IA (robot AIM) — Se tourner vers ou se déplacer vers d’autres robots AIM.

Vision IA (AprilTag) — Se tourner vers ou se déplacer vers AprilTags.

Émotions#

act happy#

Cette macro permet au robot d’afficher une expression joyeuse, d’émettre un son joyeux, de faire changer les LED et de se déplacer d’avant en arrière. Utilisez-la lorsque le robot doit réagir de manière joyeuse ou positive.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro permet au robot d’afficher une expression triste : visage triste, son triste, extinction progressive des LED et déplacements lents dans différentes directions. Utilisez-la lorsque le robot doit manifester de la déception ou un manque d’énergie.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro permet au robot de faire des bêtises : il tourne sur lui-même, change d’expression et fait clignoter ses LED de différentes couleurs. Utilisez-la lorsque le robot doit avoir une réaction amusante ou surprenante.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro simule la colère chez le robot : affichage d’expressions menaçantes, émission d’un son agressif, allumage des LED en rouge et mouvements brusques. Utilisez-la lorsque le robot doit exprimer de la frustration ou un avertissement.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro permet au robot de manifester de l’enthousiasme : expression faciale, son, mouvements latéraux rapides et clignotement de LED orange. Utilisez-la lorsque le robot doit célébrer un événement ou réagir avec énergie.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Vision IA (ballon de sport)#

turn right until sports ball#

Cette macro fait pivoter le robot vers la droite jusqu’à ce que le capteur de vision IA détecte un ballon de sport, puis le dirige vers l’objet détecté. Utilisez-la lorsque le robot doit rechercher un ballon de sport avant de s’en approcher ou de le ramasser.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro fait pivoter le robot vers la gauche jusqu’à ce que le capteur de vision IA détecte un ballon de sport, puis le dirige vers l’objet détecté. Utilisez-la lorsque le robot doit rechercher un ballon de sport avant de s’en approcher ou de le ramasser.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro déplace le robot vers un ballon de sport détecté jusqu’à ce qu’il l’ait ramassé. Utilisez-la une fois que le robot a repéré un ballon, ou après avoir utilisé une macro de déplacement vers le ballon pour en trouver un.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire les vitesses de déplacement et de rotation du robot avec set_move_velocity et set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Vision IA (Baril orange)#

turn right until orange barrel#

Cette macro fait pivoter le robot vers la droite jusqu’à ce que le capteur de vision IA détecte un baril orange, puis le dirige vers l’objet détecté. Utilisez-la lorsque le robot doit rechercher un baril orange avant de s’en approcher ou de le ramasser.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro fait pivoter le robot vers la gauche jusqu’à ce que le capteur de vision IA détecte un baril orange, puis le dirige vers l’objet détecté. Utilisez-la lorsque le robot doit rechercher un baril orange avant de s’en approcher ou de le ramasser.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro déplace le robot vers un baril orange détecté jusqu’à ce qu’il l’ait ramassé. Utilisez-la une fois que le robot a repéré un baril orange, ou après avoir utilisé une macro de déplacement vers un baril orange pour en trouver un.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire les vitesses de déplacement et de rotation du robot avec set_move_velocity et set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Vision IA (Blue Barrel)#

turn right until blue barrel#

Cette macro fait pivoter le robot vers la droite jusqu’à ce que le capteur de vision IA détecte un baril bleu, puis le dirige vers l’objet détecté. Utilisez-la lorsque le robot doit rechercher un baril bleu avant de s’en approcher ou de le ramasser.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro fait pivoter le robot vers la gauche jusqu’à ce que le capteur de vision IA détecte un baril bleu, puis le dirige vers l’objet détecté. Utilisez-la lorsque le robot doit rechercher un baril bleu avant de s’en approcher ou de le ramasser.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro déplace le robot vers un baril bleu détecté jusqu’à ce qu’il l’ait récupéré. Utilisez-la une fois que le robot a repéré un baril bleu, ou après avoir utilisé une macro de déplacement vers un baril bleu pour en trouver un.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire les vitesses de déplacement et de rotation du robot avec set_move_velocity et set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Vision par IA (robot AIM)#

turn right until AIM robot#

Cette macro oriente le robot vers la droite jusqu’à ce que le capteur de vision IA détecte un autre robot de codage VEX AIM, puis se dirige vers lui. Utilisez-la lorsque le robot doit rechercher un autre robot avant de s’en approcher.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro fait pivoter le robot vers la gauche jusqu’à ce que le capteur de vision IA détecte un autre robot de codage VEX AIM, puis le robot se dirige vers lui. Utilisez-la lorsque le robot doit rechercher un autre robot avant de s’en approcher.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro déplace le robot vers un autre robot de codage VEX AIM jusqu’à ce qu’il soit suffisamment proche pour s’arrêter. Utilisez-la une fois que le robot a repéré un autre robot, ou après avoir utilisé une macro de rotation jusqu’à ce qu’un robot AIM soit détecté.

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire les vitesses de déplacement et de rotation du robot avec set_move_velocity et set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Vision IA (AprilTag)#

turn right until AprilTag#

Cette macro fait tourner le robot vers la droite jusqu’à ce que le capteur de vision IA détecte l’AprilTag d’ID 0, puis le dirige vers l’AprilTag détecté. Utilisez-la lorsque le robot doit rechercher un AprilTag avant de s’en approcher. Pour modifier l’AprilTag vers lequel le robot tournera, remplacez 0 dans TAG0 par un nombre compris entre 0 et 37 (les AprilTags 5 à 37 peuvent être utilisés avec les AprilTags imprimés de AIM Printables).

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro fait tourner le robot vers la gauche jusqu’à ce que le capteur de vision IA détecte l’AprilTag d’ID 0, puis le dirige vers l’AprilTag détecté. Utilisez-la lorsque le robot doit rechercher un AprilTag avant de s’en approcher. Pour modifier l’AprilTag vers lequel le robot tournera, remplacez 0 dans TAG0 par un nombre compris entre 0 et 37 (les AprilTags 5 à 37 peuvent être utilisés avec les AprilTags imprimés de AIM Printables).

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire la vitesse de rotation du robot avec set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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

Cette macro déplace le robot vers l’étiquette AprilTag 0 jusqu’à ce qu’il soit suffisamment proche pour s’arrêter. Utilisez-la une fois que le robot a détecté une étiquette AprilTag, ou après avoir utilisé une macro de déplacement vers une étiquette AprilTag pour en trouver une. Pour modifier l’étiquette AprilTag vers laquelle le robot se déplacera, remplacez 0 dans TAG0 par un nombre compris entre 0 et 37 (les étiquettes AprilTag 5 à 37 peuvent être utilisées avec les étiquettes AprilTag imprimées de AIM Printables).

Remarque : Si le robot a des difficultés à détecter les objets, essayez de réduire les vitesses de déplacement et de rotation du robot avec set_move_velocity et set_turn_velocity.

Le code ci-dessous illustre la séquence Python ajoutée à votre projet lorsque vous faites glisser cette macro depuis la boîte à outils. Vous pouvez l’utiliser telle quelle ou la modifier après l’avoir ajoutée.

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