Kontrollera#

Introduktion#

Kontroll i Python låter dig tala om för roboten när den ska vänta, när den ska upprepa åtgärder, hur den ska fatta beslut och när den ska avsluta projektet.

Nedan följer en lista över tillgängliga kontroller, inklusive metoder och centrala Python-nyckelord:

  • wait – Pausar projektet under en given tid.

  • for – Upprepar kod för varje objekt i en sekvens.

  • if – Kör kod om ett villkor är sant.

  • if/else – Kör olika kod beroende på ett villkor.

  • if/elif/else – Kontrollerar flera villkor i ordning.

  • while – Upprepar kod medan ett villkor är sant.

  • break – Avslutar en loop omedelbart.

  • quit – Avslutar det pågående projektet.

  • pass – Platshållare används när ingen åtgärd behövs.

wait#

wait pausar under en viss tid innan nästa kodrad går vidare.

Usage:
wait(time, units)

Parametrar

Beskrivning

time

Väntetiden, som ett positivt heltal eller decimaltal.

units

Enheten som representerar väntetiden: MSEC (standard) – millisekunder, eller SECONDS

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

for#

for upprepar en uppsättning åtgärder ett visst antal gånger. for kan användas för att loopa igenom objekt i listor, tupler, ordböcker, mängder, strängar eller för ett visst antal loopar med range.

Användning:

for value in expression_list:
    pass

Komponenter

Beskrivning

value

En temporär variabel som lagrar det aktuella elementet i iterationen.

expression_list

Samlingen av element som loopas igenom (t.ex. lista, sträng, intervall).

# 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 kör det indragna kodblocket om villkoret är True.

Användande:

if condition:
    pass

Komponenter

Beskrivning

condition

Ett uttryck eller en variabel som kontrolleras när satsen körs. Om den är Truekörs koden inuti if blocket; om den är Falsehoppas blocket över.

# 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 och else avgör vilket indenterat kodblock som körs baserat på om villkoret är True eller False.

Användande:

if condition:
    pass
else:
    pass

Komponenter

Beskrivning

condition

Ett uttryck eller en variabel som kontrolleras när satsen körs. Om den är Truekörs koden inuti if blocket; om den är Falsekörs koden inuti else blocket istället.

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

Strukturen if/elif/else väljer vilket indenterat kodblock som körs baserat på villkor:

  • if kör sitt block om villkoret är True.

  • elif kontrollerar ytterligare villkor endast om alla föregående villkor är FalseFlera elif påståenden kan användas.

  • else sitt block endast om inget av de föregående villkoren är True.

Användande:

if condition:
    pass
elif condition:
    pass
else:
    pass

Komponenter

Beskrivning

condition

Ett uttryck eller en variabel som kontrolleras när satsen körs. Det första villkoret, som är True avgör vilket block som körs; om inget är True, körs else blocket.

# 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 kör kod upprepade gånger så länge villkoret är True. Det kan också användas som ett “för alltid” genom att använda True som villkor, eller ett “vänta tills” genom att lägga till not till villkoret, som visas i exemplen nedan.

Användande:

while condition:
    pass

Komponenter

Beskrivning

condition

Ett uttryck eller en variabel som kontrolleras före varje iteration. Om den är Truefortsätter loopen; om den är Falsestoppas loopen.

# 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 avslutar en loop omedelbart. break kan användas för att avsluta loopar som annars skulle loopa för evigt.

# 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 avslutar ett pågående projekt.

Usage:
quit()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 är en platshållare för framtida kod och kan användas för att undvika fel i tomma loopar, villkor och funktioner.

if condition:
    pass

def function():
    pass