Contrôle#

Introduction#

Le contrôle en Python vous permet d’indiquer au robot quand attendre, quand répéter des actions, comment prendre des décisions et quand mettre fin au projet.

Vous trouverez ci-dessous une liste des contrôles disponibles, y compris les méthodes et les mots-clés principaux de Python :

  • wait – Met le projet en pause pendant une durée donnée.

  • for – Répète le code pour chaque élément d’une séquence.

  • if – Exécute le code si une condition est vraie.

  • if/else – Exécute un code différent en fonction d’une condition.

  • if/elif/else – Vérifie plusieurs conditions dans l’ordre.

  • while – Répète le code tant qu’une condition est vraie.

  • break – Sort immédiatement d’une boucle.

  • quit – Met fin au projet en cours.

  • pass – Espace réservé utilisé lorsqu’aucune action n’est nécessaire.

wait#

wait fait une pause pendant une durée spécifique avant de passer à la ligne de code suivante.

Usage:
wait(time, units)

Paramètres

Description

time

Le temps d’attente, sous forme de nombre entier positif ou décimal.

units

L’unité représentant le temps d’attente : MSEC (par défaut) – millisecondes, ou SECONDS

# Fly for 1 second.
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

for#

for répète un ensemble d’actions un nombre spécifique de fois. for peut être utilisé pour parcourir les éléments des listes, tuples, dictionnaires, ensembles, chaînes de caractères, ou pour un nombre spécifié de boucles avec range.

Utilisation :

for value in expression_list:
    pass

Composants

Description

value

Une variable temporaire qui stocke l’élément courant de l’itération.

expression_list

La collection d’éléments parcourus en boucle (par exemple, liste, chaîne de caractères, plage).

# Move back and forth four times then land.
drone.take_off(climb_to=500)
for i in range(4):
    drone.move_for(direction=0, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
    drone.move_for(direction=180, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
drone.land()

# Print each item in a list.
colors = ["Red", "Green", "Blue"]
for color in colors:
    controller.screen.print(color)
    controller.screen.next_row()

if#

if exécute le bloc de code indenté si la condition est True.

Usage:

if condition:
    pass

Composants

Description

condition

Une expression ou une variable vérifiée lors de l’exécution de l’instruction. Si sa valeur est Vrai True, le code à l’intérieur du bloc if est exécuté ; si sa valeur est Faux ( False).

# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )

    if controller.button5.pressing():
        drone.camera.capture_image(FORWARD_CAMERA)

    wait(5, MSEC)

if/else#

if et else déterminent quel bloc de code indenté s’exécute en fonction de si la condition est True ou False.

Usage:

if condition:
    pass
else:
    pass

Composants

Description

condition

An expression or variable that is checked when the statement runs. If it is True, the code inside the if block executes; if it is False, the code inside the else block executes instead.

# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
    if controller.axis1.position() > 0:
        drone.climb(direction=UP, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

if/elif/else#

La structure if/elif/else sélectionne le bloc de code indenté qui s’exécute en fonction de conditions :

  • if exécute son bloc si la condition est True.

  • elif vérifie les conditions supplémentaires uniquement si toutes les conditions précédentes sont False. Plusieurs elif instructions peuvent être utilisées.

  • else exécute son bloc uniquement si aucune des conditions précédentes n’est True.

Usage:

if condition:
    pass
elif condition:
    pass
else:
    pass

Composants

Description

condition

An expression or variable that is checked when the statement runs. The first condition that is True determines which block executes; if none are True, the else block runs.

# Move the drone up or down based on the position of the joystick.
drone.take_off(climb_to=500)
while True:
    position = controller.axis1.position()
    if position > 0:
        drone.climb(direction=UP, velocity=50)
    elif position < 0:
        drone.climb(direction=DOWN, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

while#

while repeatedly runs code as long as the condition is True. It can also be used like a “forever” by using True as the condition, or a “wait until” by adding not to the condition, as shown in the examples below.

Usage:

while condition:
    pass

Composants

Description

condition

Une expression ou une variable vérifiée avant chaque itération. Si elle vaut True, la boucle continue ; si elle vaut False, la boucle s’arrête.

# Hover at 200 mm.
drone.take_off(climb_to=500)
while drone.range.get_distance(DOWNWARD_RANGE, MM) > 200:
    drone.climb(direction=DOWN, velocity=10)
drone.hover()
wait(3, SECONDS)
drone.land()

break#

break sort immédiatement d’une boucle. break peut être utilisé pour interrompre des boucles qui, autrement, tourneraient indéfiniment.

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        break
    wait(5, MSEC)
drone.land()

quit#

quit met fin à un projet en cours.

Usage:
quit()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        quit()
    wait(5, MSEC)
drone.land()

pass#

pass est un espace réservé pour du code futur et peut être utilisé pour éviter les erreurs dans les boucles vides, les conditions et les fonctions.

if condition:
    pass

def function():
    pass