Hnací ústrojí#
Zavedení#
Pohon řídí, jak se VR robot řídí a zatáčí. Pohon se může pohybovat vpřed nebo vzad, zatáčet doleva nebo doprava, otáčet se do směru a sledovat svou rotaci.
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.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ňů.turn_to_rotation— Otočí robota do určité rotace.stop— Zastaví pohyb robota.
Mutátory – Upravte nastavení hnacího ústrojí.
set_heading— Změní aktuální směr robota na nový směr.set_rotation— Změní aktuální rotaci robota na novou rotaci.set_timeout— Nastaví, jak dlouho se bude robot snažit dokončit pohyb.set_drive_velocity— Říká robotovi, jak rychle má jet.set_turn_velocity— Říká robotovi, jak rychle se má otáčet.
Gettery – Zkontrolujte stav hnacího ústrojí.
Akce#
drive#
drive pohybuje robotem vpřed nebo vzad navždy. Robot se bude pohybovat, dokud nedostane další akci, například otočení nebo zastavení.
Usage:
drivetrain.drive(direction)
Parametry |
Popis |
|---|---|
|
Směr pohybu robota: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
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:
drivetrain.drive_for(direction, distance, units, wait)
Parametry |
Popis |
|---|---|
|
Směr pohybu robota: |
|
Vzdálenost, kterou robot urazí. Může to být |
|
Volitelné. Jednotka vzdálenosti: |
|
Volitelné. |
def main():
# Drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# VR threads — Do not delete
vr_thread(main)
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:
drivetrain.turn(direction)
Parametry |
Popis |
|---|---|
|
Směr otáčení robota: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
turn_for#
turn_for otočí robota doleva nebo doprava o určitý počet stupňů. Otočení je relativní vzhledem k aktuální poloze robota. Projekt počká, dokud se robot nedokončí s otáčením, než se spustí další řádek kódu.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parametry |
Popis |
|---|---|
|
Směr otáčení robota: |
|
Počet stupňů, o které se robot otočí. Může to být |
|
Volitelné. Jednotka rotace: |
|
Volitelné. |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
Směr je směr, kterým je robot otočen, měřený ve stupních. turn_to_heading otočí robota do určitého směru od -359 do 359 stupňů. Robot se otočí nejkratším směrem, aby dosáhl cílového směru.
Výchozí směr robota je 0 stupňů.
Projekt počká, dokud se robot nedotočí, než se spustí další řádek kódu.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Parametry |
Popis |
|---|---|
|
Směr, kterým by se měl robot otočit, ve stupních. Může to být |
|
Volitelné. Jednotka rotace: |
|
Volitelné. |
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_rotation#
turn_to_rotation otočí robota do určité rotace.
Rotace udává, o kolik se robot otočil, měřeno ve stupních. Na začátku projektu je hodnota rotace nastavena na 0 stupňů. Rotaci lze také nastavit pomocí metody set_rotation.
Hodnoty rotace jsou absolutní. To znamená, že směr otáčení závisí na aktuální rotaci robota. Otočení doprava rotaci zvyšuje a otáčení doleva snižuje.
Například pokud robot začne na 0 stupních a otočíte se o 720 stupňů, otočí se dvakrát doprava. Pokud se poté otočíte o 360 stupňů, otočí se jednou doleva, protože 360 je menší než 720.
Projekt počká, dokud se robot nedotočí, než se spustí další řádek kódu.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Parametry |
Popis |
|---|---|
|
Hodnota rotace ve stupních, na kterou se robot otočí. Může to být |
|
Volitelné. Jednotka rotace: |
|
Volitelné. |
def main():
# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
stop#
stop zastaví pohyb robota.
Usage:
drivetrain.stop()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Mutátory#
set_heading#
Směr je směr, kterým je robot otočen, měřený ve stupních. set_heading změní aktuální směr robota na novou hodnotu směru.
Například pokud se robot otočil čelem doprava, nastavením směru na 0 stupňů se tato poloha směřující doprava stane novými 0 stupni. Robot se pak může na základě tohoto nového směru otáčet do jiných pozic.
Usage:
drivetrain.set_heading(heading, units)
Parametry |
Popis |
|---|---|
|
Hodnota směru ve stupních, kterou chcete nastavit pro robota. Může to být |
|
Volitelné. Jednotka záhlaví: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
Rotace udává, o kolik se robot otočil, měřeno ve stupních. Na začátku projektu je hodnota rotace nastavena na 0 stupňů. set_rotation změní aktuální rotaci robota na novou hodnotu.
Například pokud robot provedl dvě plné otáčky doprava, jeho hodnota rotace bude 720 stupňů. Nastavením rotace na 0 stupňů se tato hodnota resetuje ze 720 na 0 stupňů. Robot se pak může otáčet na základě této nové hodnoty.
Usage:
drivetrain.set_rotation(rotation, units)
Parametry |
Popis |
|---|---|
|
Hodnota rotace ve stupních, kterou chcete nastavit pro robota. Může to být |
|
Volitelné. Jednotka rotace: |
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout nastavuje, jak dlouho se robot bude 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:
drivetrain.set_timeout(value, units)
Parametry |
Popis |
|---|---|
|
Doba, po kterou se robot může pokusit dokončit pohyb. Může to být kladné celé číslo |
|
Volitelné. Časová jednotka: |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
set_drive_velocity říká robotovi, jak rychle má jet. Vyšší procento způsobí, že robot jede rychleji, a nižší procento způsobí, že robot jede pomaleji.
Každý projekt začíná s robotem, který se standardně pohybuje rychlostí 50 %.
Poznámka: Vyšší rychlost zrychluje pohyb robota, ale může být méně přesný. Nižší rychlost zpomaluje pohyb robota, ale může být přesnější.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parametry |
Popis |
|---|---|
|
Rychlost, s níž se má jet, od 0 % do 100 %. Může to být |
|
Volitelné. Jednotka rychlosti: |
def main():
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
set_turn_velocity říká robotovi, jak rychle se má otáčet. Vyšší procento způsobí, že se robot bude otáčet rychleji, a nižší procento způsobí, že se robot bude otáčet pomaleji.
Každý projekt začíná s robotem, který se standardně otáčí rychlostí 50 %.
Poznámka: Vyšší rychlost způsobí, že se robot otáčí rychleji, ale může být méně přesný. Nižší rychlost způsobí, že se robot otáčí pomaleji, ale může být přesnější.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parametry |
Popis |
|---|---|
|
Rychlost otáčení od 0 % do 100 %. Může to být |
|
Volitelné. Jednotka rychlosti: |
def main():
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Gettery#
heading#
Směr je směr, kterým je robot otočen, měřený ve stupních. heading vrací aktuální směr robota od 0 do 359,99 stupňů.
Výchozí směr robota je 0 stupňů.
Usage:
drivetrain.heading(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka záhlaví: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
Rotace udává, o kolik se robot otočil, měřeno ve stupních. Na začátku projektu je hodnota rotace nastavena na 0 stupňů. rotation vrací aktuální rotaci robota.
Otočení doprava zvětšuje rotaci a otočení doleva ji snižuje. Například provedení dvou celých otoček doprava vrátí rotaci o 720 stupňů.
Usage:
drivetrain.rotation(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka rotace: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done vrací hodnotu typu Boolean, zda robot dokončil pohyb. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu robota.
True— Robot dokončil pohyb.False— Robot se stále pohybuje.
Tato metoda spolupracuje s následujícími metodami Drivetrain, které mají parametr wait : drive_for, turn_for, turn_to_heading a turn_to_rotation.
Usage:
drivetrain.is_done()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
is_moving#
is_moving vrací booleovskou hodnotu, zda se robot pohybuje. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu robota.
True— Robot se pohybuje.False— Robot se nepohybuje.
Usage:
drivetrain.is_moving()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |