Hnací ústrojí#

Zavedení#

Robot 123 má pohon dvou kol, který mu umožňuje jízdu a otáčení. Metody pohonu řídí, jak se robot pohybuje.

Pohonný systém dokáže měřit vzdálenost dvěma způsoby: v krocích a mm (milimetrech). Jeden krok je jeden čtvereček na poli 123.

Existuje mnoho způsobů, jak kódovat hnací ústrojí. Níže je uveden seznam všech metod kódování hnacího ústrojí:

Akce – Pohyb a otáčení robota.

  • drive — Pohybuje robota vpřed nebo vzad natrvalo.

  • drive_for — Pohybuje robotem vpřed nebo vzad o určitou vzdálenost.

  • drive_until — Pohybuje robota vpřed nebo vzad, dokud nezaznamená předmět, náraz nebo čáru.

  • turn — Otočí robota doleva nebo doprava natrvalo.

  • turn_for — Otočí robota doleva nebo doprava o určitý počet stupňů.

  • turn_to_heading — Otočí robota tak, aby směřoval v určitém směru, od -359 do 359 stupňů.

  • stop — Zastaví pohyb robota.

Mutátory – Upravte nastavení hnacího ústrojí.

  • set_timeout — Nastaví, jak dlouho se bude robot snažit dokončit pohyb.

  • set_heading — Změní aktuální směr robota na nový směr.

Gettery – Kontrola stavu pohybu.

  • is_stopped — Vrátí, zda se robot zastavil, jako booleovskou hodnotu.

  • get_heading — Vrátí aktuální směr robota od 0 do 359 stupňů.

Akce#

drive#

drive pohybuje robotem vpřed nebo vzad navždy. Robot se bude pohybovat, dokud mu nebude přidělena jiná akce, například otočení nebo zastavení.

Usage:
robot.drive(direction)

Parametry

Popis

direction

Směr pohybu robota: FORWARD nebo REVERSE.

# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()

drive_for#

drive_for pohybuje robotem vpřed nebo vzad o určitou vzdálenost. Projekt počká, dokud se robot nedokončí s pohybem, než se spustí další řádek kódu.

Usage:
robot.drive_for(direction, distance, unit)

Parametry

Popis

direction

Směr pohybu robota: FORWARD nebo REVERSE.

distance

Vzdálenost, kterou robot urazí. Může to být celé nebo desetinné číslo.

unit

Jednotka vzdálenosti: MM (milimetry) nebo STEPS (jeden čtvereček na poli 123).

# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)

drive_until#

drive_until pohybuje robotem vpřed nebo vzad, dokud nezaznamená předmět, náraz nebo čáru.

Usage:
robot.drive_until(direction)

Parametry

Popis

direction

Směr pohybu robota: FORWARD nebo REVERSE.

# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)

turn#

turn otáčí robota doleva nebo doprava navždy. Robot se bude otáčet, dokud nedostane další akci, například jízdu nebo zastavení.

Usage:
robot.turn(direction)

Parametry

Popis

direction

Směr otáčení robota: LEFT nebo RIGHT.

# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()

turn_for#

turn_for otočí robota doleva nebo doprava o určitý počet stupňů. Projekt počká, dokud se robot nedotočí, než se spustí další řádek kódu.

Usage:
robot.turn_for(direction, degrees)

Parametry

Popis

direction

Směr otáčení robota: LEFT nebo RIGHT.

degrees

Počet stupňů, o které se má otočit. Může to být celé nebo desetinné číslo.

# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)

turn_to_heading#

turn_to_heading otočí robota směrem k určitému směru od -359 do 359 stupňů. Robot se otočí nejkratším směrem k dosažení cílového směru.

Výchozí směr je 0 stupňů.

Projekt počká, dokud se robot nedotočí, než se spustí další řádek kódu.

Usage:
robot.turn_to_heading(heading)

Parametry

Popis

heading

Směr, kterým by se měl robot otočit, od -359 do 359 stupňů.

# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)

stop#

stop zastaví pohyb robota.

Usage:
robot.stop()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()

Mutátory#

set_timeout#

set_timeout nastavuje, po kolik sekund se bude robot snažit dokončit pohyb. Pokud robot nedokončí pohyb v tomto čase, přestane se snažit a přesune se na další řádek kódu. Tím se zabrání tomu, aby se robot zasekl na pohybu.

Usage:
robot.set_timeout(time, unit)

Parametry

Popis

time

Čas, který je potřeba pro pohyb. Může se jednat o celé nebo desetinné číslo.

unit

Časová jednotka: MSEC nebo SECONDS.

# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)

set_heading#

set_heading změní aktuální směr robota na novou hodnotu směru.

Například pokud se robot otočil čelem doprava, nastavení kurzu na 0 stupňů způsobí, že tato poloha směřující doprava bude novými 0 stupni.

Usage:
robot.set_heading(heading)

Parametry

Popis

heading

Hodnota směru ve stupních, která se má nastavit pro robota.

# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)

Gettery#

is_stopped#

is_stopped vrací hodnotu Boolean, která hlásí, zda se robot zastavil.

  • True — Robot je zastaven.

  • False — Robot se stále pohybuje.

Usage:
robot.is_stopped()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
    if robot.is_stopped():
        robot.led.glow(BLUE)
    else:
        robot.led.glow(GREEN)
    wait(0.05, SECONDS)

get_heading#

Funkce get_heading vrací směr, kterým se robot aktuálně nachází, jako celé číslo od 0 do 359 stupňů.

Výchozí směr robota je 0 stupňů.

Usage:
robot.get_heading()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())