Skip to main content

Ovladač: Průzkum pohonu tanku - C++

Ikona sady nástrojů pro učitele Sada nástrojů této aktivity

Použití ukázkového projektu Tank Control umožňuje studentům ovládat Clawbota pomocí ovladače. Studenti budou muset upravit parametry v instrukcíchLeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed = Controller1.Axis3.position(),arightMotorSpeed = Controller1.Axis2.position()pro řízení rychlosti každého z motorů Clawbota a umožnit Controlleru ovládat funkce motoru.

Další informace o kterékoli z instrukcí naleznete v nápovědě v sekciC++v kódu VEXcode V5.

Následuje nástin toho, co budou studenti v této aktivitě dělat:

  • Prozkoumejte ukázkový projekt Tank Control.

  • Pochopte použití struktury nekonečné smyčkywhile True.

  • Dokončete výzvu Robo-Slalom!

Ikona tipů pro učitele Tipy pro učitele

Pokud student používá VEXcode V5 poprvé, může si najít mnohove znalostní bázi VEX.

Požadované materiály:
Množství Potřebný materiál
1

VEX V5 Classroom Starter Kit (s aktuálním firmwarem)

1

VEXcode V5 (nejnovější verze, Windows, macOS)

1

Technický poznámkový blok

1

Příklad projektu řízení nádrže

2 nebo více

Předměty ve třídě, které mají být použity jako překážky

Tato aktivita vám poskytne nástroje pro programování vašeho ovladače.

Krok 1: Začněme programovat ovladač.

  • Otevřete vzorový projekt Tank Control.
  • Příklad Ikona projektu nádrže umístěné nad herním ovladačem s nápisem „Tank Control“ pod ním.

    Do svého technického sešitu si napište následující:

    Předpovězte, co bude Clawbot v tomto projektu dělat. Vysvětlete více než jen to, že projekt využívá řídicí jednotku.
    Jak joysticky pohybují robotem? Co dělá Clawbot?

    int main() {
      // Inicializace konfigurace robota. NEODSTRAŇUJTE!
      vexcodeInit();
      // Zahájit kód projektu.
      
      // Main Controller loop to set motors to controller axis positions
      while (true) {
        LeftMotor.setVelocity (Controller1.Axis3.position (), procenta);
        RightMotor.setVelocity (Controller1.Axis2.position (), procenta);
        LeftMotor.spin (forward);
        RightMotor.spin (forward);
    
        wait(5, msec);
      }
    
      return 0;
    }

 

Ikona sady nástrojů pro učitele Sada nástrojů pro učitele - odpovědí

  1. Tento projekt využije strukturu nekonečné smyčky while True k průběžné kontrole polohy levého a pravého joysticku. Když je levý (nebo pravý) joystick zatlačen nahoru, nastaví se rychlost, o kolik dopředu je joystick zatlačen. 
  2. Čím dále je joystick zatlačen dopředu, tím rychleji se nastaví rychlost a tím rychleji se budou pohybovat motory. Stejný princip funguje i pro zatlačení joysticku dozadu. Čím více je joystick zatlačen dozadu, tím rychleji se motory budou pohybovat v opačném směru.
  • Uložte, stáhněte a spusťte (C++) vzorový projekt Tank Control.
  • Pro pomoc se podívejte do sekcí knihovny VEX naC++nebo se podívejte na tutoriál ve VEXcode V5, který vysvětluje, jak stáhnout a spustit projekt.

    Panel nástrojů ve VEXcode V5 s návody vpravo, zvýrazněný červeným rámečkem. Zleva je na panelu nástrojů zobrazeno logo V5, ikona zeměkoule, pak Soubor, Upravit a Návody.

     

  • Zkontrolujte vysvětlení projektu ve svém technickém poznámkovém bloku a přidejte poznámky, které je podle potřeby opraví.

Krok 2: Ovladač: Ovládání nádrže

Ikona sady nástrojů pro učitele Nástroje pro učitele - Skutečné struktury nekonečných smyček while

Tento krok pojednává o důležitosti struktury nekonečné smyčky while True . Informace byste si měli projít jako třída. Chování můžete modelovat pomocí Clawbota a Controlleru, nebo pokud to čas dovolí, nechat studenty spustit program bez struktury nekonečné smyčky while True .

​Jaké jsou výhody používání nekonečné smyčky while True?

Zde je náš projekt bez nekonečné smyčky while True:

int main() {
  // Inicializace konfigurace robota. NEODSTRAŇUJTE!
  vexcodeInit();
  // Zahájit kód projektu.
  // Main Controller loop to set motors to controller axis postiions
  
  LeftMotor.setVelocity(Controller1.Axis3.position(), procenta);
  RightMotor.setVelocity(Controller1.Axis2.position(), procenta);
  LeftMotor.spin(vpřed);
  RightMotor.spin(vpřed);

}

Co si myslíte, že by se stalo, kdyby byl tento program spuštěn? Diskutujte jako skupina. Svou předpověď si zapište do technického poznámkového bloku.

Ikona sady nástrojů pro učitele Sada nástrojů pro učitele struktury

Bez nekonečné smyčky while True se hodnota rychlosti pro každý motor nastaví ihned po spuštění projektu a tato hodnota zůstává konstantní, dokud není projekt zastaven. Jinými slovy, pokud spustíte projekt bez pohybu kteréhokoli z joysticků, protože výchozí poloha joysticku na jeho ose je 0, rychlost obou motorů zůstane na 0, i když joystickem pohnete.

Podobně, řekněme, že pohnete levým joystickem nahoru co nejvíce podél osy 3 a podržíte ho tam. Pokud spustíte výše uvedený projekt, levý motor se bude pohybovat plnou rychlostí a zůstane na této rychlosti, i když budete pohybovat joystickem dolů podél osy 3. Je to proto, že Clawbot obdrží svou počáteční instrukci z Controlleru ihned po spuštění projektu; bez smyčky se však tato počáteční hodnota nemůže aktualizovat.

Nekonečná smyčka while True říká Clawbotovi, aby neustále aktualizoval rychlost a běžel po celou dobu trvání projektu. Jinými slovy, nekonečná smyčka while True v tomto projektu umožňuje měnit rychlost každého motoru pohybem joysticku podél osy 2 nebo 3 a Clawbot bude reagovat odpovídajícím způsobem, dokud projekt nezastavíte nebo Clawbota nevypnete.

Krok 3: Projděte si slalomový kurz!

Ikona sady nástrojů pro učitele Nástroje učitele Příprava aktivity

Rozdělte studenty do malých skupin po 2 nebo 4 studentech. Jeden student by měl být určen jako řidič – osoba, která bude pomocí ovladače manévrovat s Clawbotem.

Nechte studenty dokončit tento slalom tak, že pomocí ovladače budou pohybovat Clawbotem podél vnější strany každé „vlajky“. Dráha Clawbota mu musí zabránit v dotyku s jakoukoli vlajkou a umožnit mu překročit cílovou čáru. Vlajky mohou být jakýkoli učební materiál/předmět, který máte po ruce (guma, role lepicí pásky, krabička na kapesníky) a lze je umístit na místo před spuštěním Clawbota.

Pokud to čas dovolí, nechte studenty vyměnit role a dajte tak ostatním možnost řídit Clawbota. Dokonce byste to mohli proměnit v soutěž v rámci skupin nebo mezi skupinami tím, že uvidíte, jak rychle každý jezdec zvládne slalom.

Snowboardista závodí z kopce na zasněženém svahu a prochází řadou červených a modrých bran umístěných v klikatém vzoru.

Slalomy jsou kurzy, které musí účastník procházet kolem nastavených vlajek nebo značek. Lyžařské slalomy jsou oblíbeným zimním sportem a jsou součástí zimních olympijských her.

Nyní, když jeController spárovánaC++ projektje stažen, jste připraveni pohybovat svým Clawbotem pomocí Controlleru!

  • Sbírejte od učitele čtyři předměty ve třídě, které budete používat jako vlajky ve slalomu.
  • Spolupracujte na nastavení vlajek, aby řidič mohl podle slalomového diagramu navigovat Clawbota.
  • Stáhněte si projekt Příklad kontroly nádrže. Pokud máte nějaké dotazy ohledně stahování projektu, podívejte se na návod ke stažení a spuštění projektu.

Krok 4: Robo-Slalom

Ilustrace slalomové tratě na sněhu s nápisem „Start“ nahoře a cílovou čárou dole. Mezi tečkovanou klikatou cestou se proplétají střídavé modré a červené vlajky.

Pomocí ovladače přesuňte Clawbota na vnější stranu každé „vlajky“. Dráha robota musí zabránit tomu, aby se dotkl jakékoli vlajky, a umožnit mu překročit cílovou čáru.

  • Spusťte projekt a přesuňte Clawbota dopředu a dozadu a pomocí obou joysticků zahněte doleva a doprava.
  • Čas, jak dlouho trvá, než Clawbot dokončí kurz. Časy zdokumentujte v technickém poznámkovém bloku.
  • Jak rychle dokážete Clawbota dostat přes slalomový kurz?

Ikona motivační diskuse Motivace Diskuse - Reflexe aktivity

Otázka:Reagoval Clawbot na ovladač tak, jak jste očekávali?

A:Odpovědi se budou lišit; cílem této otázky je však podpořit kognitivní myšlení. Studenti začali tím, že před testováním chování předpovídali, zdokumentovali výsledky a začali se zamýšlet.

Otázka:Jaká je největší výzva při pohybu Clawbota vpřed nebo vzad v přímé linii?

A:I když se odpovědi mohou lišit, běžnou odpovědí by mělo být, že oba joysticky se musí pohybovat synchronně, aby se zajistilo, že se motory Clawbota pohybují stejným směrem a stejnou rychlostí.

Otázka:Jak vám použití nekonečné smyčkywhile Trueumožňuje nepřetržitě používat ovladač k pohybu Clawbota?

A:Bez nekonečné smyčkywhile Trueby Clawbot prováděl chování určené instrukcemi v projektu pouze jednou. Nekonečná smyčkawhile Trueříká Clawbotovi, aby neustále aktualizoval rychlost a běžel po celou dobu trvání projektu. Jinými slovy, nekonečná smyčkawhile Trueumožňuje používat ovladač k pohybu Clawbota donekonečna nebo dokud se nevybije baterie.