Kontrole#

Ievads#

Vadība Python valodā ļauj norādīt robotam, kad gaidīt, kad atkārtot darbības, kā pieņemt lēmumus un kad beigt projektu.

Zemāk ir pieejamo vadības elementu saraksts, tostarp metodes un galvenie Python atslēgvārdi:

  • wait – Aptur projektu uz noteiktu laiku.

  • for – Atkārto kodu katram elementam secībā.

  • if – Izpilda kodu, ja nosacījums ir patiess.

  • if/else – Izpilda atšķirīgu kodu atkarībā no nosacījuma.

  • if/elif/else – Pārbauda vairākus nosacījumus pēc kārtas.

  • while – Atkārto kodu, kamēr nosacījums ir patiess.

  • break – Nekavējoties iziet no cikla.

  • quit – Beidz palaisto projektu.

  • pass – Vietturis, ko izmanto, ja darbība nav nepieciešama.

wait#

wait ietur noteiktu pauzi pirms pāriešanas uz nākamo koda rindu.

Usage:
wait(time, units)

Parametri

Apraksts

time

Gaidīšanas laiks, kas norādīts kā pozitīvs vesels skaitlis vai decimāldaļa.

units

Vienība, kas attēlo gaidīšanas laiku: MSEC (pēc noklusējuma) – milisekundes vai SECONDS

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

for#

for atkārto darbību kopu noteiktu reižu skaitu. for var izmantot, lai cikliski pārskatītu vienumus sarakstos, kortežos, vārdnīcās, kopās, virknēs vai noteiktu ciklu skaitu ar range.

Lietojums:

for value in expression_list:
    pass

Sastāvdaļas

Apraksts

value

Pagaidu mainīgais, kas saglabā pašreizējo elementu iterācijā.

expression_list

Elementu kopums, kas tiek cikliski apstrādāts (piemēram, saraksts, virkne, diapazons).

# 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 tiek palaists atkāpts koda bloks, ja nosacījums ir True.

Lietojums:

if condition:
    pass

Sastāvdaļas

Apraksts

condition

Izteiksme vai mainīgais, kas tiek pārbaudīts, izpildot priekšrakstu. Ja tas ir True, tiek izpildīts kods blokā if ; ja tas ir False, bloks tiek izlaists.

# 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 un else nosaka, kurš atkāptais koda bloks tiek palaists, pamatojoties uz to, vai nosacījums ir True vai False.

Lietojums:

if condition:
    pass
else:
    pass

Sastāvdaļas

Apraksts

condition

Izteiksme vai mainīgais, kas tiek pārbaudīts, izpildot priekšrakstu. Ja tas ir True, tiek izpildīts kods blokā if ; ja tas ir False, tā vietā tiek izpildīts kods blokā else.

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

if/elif/else struktūra atlasa, kurš atkāptais koda bloks tiks palaists, pamatojoties uz nosacījumiem:

  • if , palaiž savu bloku, ja nosacījums ir True.

  • elif pārbauda papildu nosacījumus tikai tad, ja visi iepriekšējie nosacījumi ir FalseVar izmantot vairākus elif apgalvojumus.

  • else palaiž savu bloku tikai tad, ja neviens no iepriekšējiem nosacījumiem nav True.

Lietojums:

if condition:
    pass
elif condition:
    pass
else:
    pass

Sastāvdaļas

Apraksts

condition

Izteiksme vai mainīgais, kas tiek pārbaudīts, kad izpildās priekšraksts. Pirmais nosacījums, kas ir True nosaka, kurš bloks tiks izpildīts; ja neviens nav True, tiks izpildīts bloks, kas ir else.

# 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 atkārtoti palaiž kodu, kamēr nosacījums ir TrueTo var izmantot arī kā “uz visiem laikiem”, izmantojot True kā nosacījumu, vai kā “gaidīt līdz”, pievienojot nosacījumam not , kā parādīts tālāk sniegtajos piemēros.

Lietojums:

while condition:
    pass

Sastāvdaļas

Apraksts

condition

Izteiksme vai mainīgais, kas tiek pārbaudīts pirms katras iterācijas. Ja tas ir True, cikls turpinās; ja tas ir False, cikls apstājas.

# 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 nekavējoties iziet no cikla. break var izmantot, lai izietu no cikliem, kas citādi veidotu mūžīgu ciklu.

# 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 beidz palaistu projektu.

Usage:
quit()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 daļa ir vietturis nākotnes kodam, un to var izmantot, lai izvairītos no kļūdām tukšos ciklos, nosacījumos un funkcijās.

if condition:
    pass

def function():
    pass