Vlastní kód ovladače ve VEXcode EXP

Použití ovladače může usnadnit řízení a přesun robota, aby dokončil úkol. Používání programu Drive však má svá omezení a v závislosti na stavbě vašeho robota nebo aktuální úloze můžete chtít různé ovládací prvky. Kódování ovladače vám umožňuje optimalizovat ovladač tak, aby lépe vyhovoval vašemu robotovi a danému úkolu. Existuje několik způsobů, jak kódovat ovladač ve VEXcode EXP. Každá má své výhody a omezení a některé metody jsou pro určité situace vhodnější v závislosti na požadovaném výsledku.

Tento článek vás provede třemi různými možnostmi vlastního kódování ovladače ve VEXcode EXP. Každá metoda bude popsána s jejími výhodami, omezeními a příkladem použití, který vám pomůže při výběru metody. Pro účely tohoto článku byly všechny ukázky kódu vytvořeny pro Clawbot. Stejné koncepty by však mohly být aplikovány na řadu dalších sestavení, která se nacházejí na builds.vex.com, a na vlastní sestavení.

Možnost 1: Přiřazení tlačítek v konfiguraci zařízení

Tato možnost je skvělá, když používáte standardní sestavení, jako je BaseBot nebo Clawbot, a chcete se rychle zprovoznit.

Tato možnost vám umožňuje přiřadit motory, hnací ústrojí nebo skupiny motorů tlačítkům na ovladači v konfiguraci zařízení. Další informace o tom, jak přiřadit tlačítka k ovladači v konfiguraci zařízení, naleznete v tomto článku.

Nabídka Zařízení VEXcode EXP se zobrazenými možnostmi řídicí jednotky. Schéma ovládání tlačítky ukazuje, že dva joysticky řídí robota v konfiguraci pohonu tanku. Tlačítka Nahoru a Dolů ovládají skupinu ArmMotorGroup a tlačítka osy R ovládají ClawMotor.

Shrnutí možnosti 1: Přiřazení tlačítek v konfiguraci zařízení

Výhody

Omezení

Příklad situace

  • Rychlé nastavení bez nutnosti kódování
  • Nejjednodušší metoda
  • Snadno nastavitelné
  • Tlačítkům lze přiřadit jednotlivé motory, standardní hnací ústrojí a skupiny motorů
  • Přiřazení tlačítek je omezeno počtem tlačítek na ovladači
  • Hnací ústrojí nesmí překročit 4 motory ani nemůže být přizpůsobeno (podporován je pouze standardní pohon, nikoli pohon H, holonomický nebo jiný vlastní pohon)
  • Manipulace se standardním sestavením, jako je BaseBot, Clawbot, nebo jednoduchá úprava těchto standardních sestavení. Například BaseBot se sáním připojeným vpředu ovládaným motorovou skupinou.
  • Rychlá manipulace s tlačítky, která odpovídají různému chování robota, bez velkého kódování

Možnost 2: Použití Forever Loop

Pokud místo standardního sestavení používáte vlastní sestavení nebo chcete mít v ovladači možnost více přizpůsobení, je tato možnost dobrá. Použití smyčky Forever je skvělý úvod k vytvoření vlastního kódu pro váš ovladač.

Tato možnost umístí všechny podmínky pro ovladač a jeho přidružená tlačítka do smyčky Forever. To poskytuje větší flexibilitu, zejména u vlastních návrhů sestavení, ale také vyžaduje určité zkušenosti s kódováním. Jednou z úvah při použití této možnosti je však délka a složitost vašeho projektu. Čím více podmínek je přidáno, tím delší může být zásobník kódů. To znamená, že musí být provedeno více bloků v daném pořadí, a když je bloků mnoho, může to zpomalit provádění projektu. Pomalejší provádění projektu může způsobit prodlevu mezi stisknutím tlačítek ovladače a sledováním chování robota.

Konkrétní příklad zobrazený níže je jedním ze způsobů, jak můžete použít smyčku Forever s robotem na zakázku (jako je robot s vlastním pohonem) k řízení robota a manipulaci s pařátem a paží za účelem interakce s předměty.

Pracovní prostor VEXcode EXP s otevřeným projektem bloků Option 2. Projekt má vrstvu bloků a nakonfigurovaná zařízení. Nabídka Zařízení se otevře na boku a obsahuje následující zařízení: ArmMotor na portu 3, ClawMotor na portu 4, Controller, LeftMotor na portu 6 a RightMotor na portu 10. Nakonec je tu zásobník bloků pro zpracování vstupu z regulátoru. Zásobník přečte: Při spuštění nastavte zastavení ArmMotor na pozastavení a zastavení ClawMotor na pozastavení. Zbytek zásobníku je obsažen ve smyčce Forever. Zobrazí se Navždy, nastavte rychlost levého motoru na pozici ovladače 3 %, roztočte levý motor dopředu, nastavte rychlost pravého motoru na pozici ovladače 2 % a roztočte pravý motor dopředu. Dále, pokud je stisknuto tlačítko Ovladače nahoru, otočte ArmMotor nahoru, jinak, pokud je stisknuto tlačítko Ovladače dolů, otočte ArmMotor dolů, jinak ArmMotor zastavte. Nakonec, pokud je stisknut ovladač A, otočte ClawMotor otevře, jinak, pokud je stisknut ovladač B, otočte ClawMotor zavře a v opačném případě ClawMotor zastavte.

Stáhněte si soubor projektu VEXcode EXP "Option 2" >

Vysvětlení kódu možnosti 2.

Kus kódu

Vysvětlení

Detailní záběr na vrstvu bloků v projektu Option 2 VEXcode EXP. Dva bloky jsou zvýrazněny a nacházejí se mimo smyčku Forever v zásobníku. Čtou, zda je pro ArmMotor zastavení nastaveno na podržení, a zda je pro ClawMotor zastavení nastaveno na podržení.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

Detailní záběr na vrstvu bloků v projektu Option 2 VEXcode EXP. Uvnitř smyčky Forever zásobníku jsou zvýrazněny čtyři bloky. Přečtou si Navždy, nastaví rychlost levého motoru na pozici ovladače 3 %, roztočí levý motor dopředu, nastaví rychlost pravého motoru na pozici ovladače 2 % a roztočí pravý motor dopředu. Schéma ovladače EXP s označenými tlačítky a joysticky. Pohled je z přední strany ovladače. Osy levého joysticku jsou označeny jako 3 a 4. Prostřední tlačítko levého joysticku je označeno L3. Dvě kulatá tlačítka pod levým joystickem jsou označena Nahoru a Dolů. Osy pravého joysticku jsou označeny jako 1 a 2. Prostřední tlačítko pravého joysticku je označeno R3. Dvě kulatá tlačítka pod pravým joystickem jsou označena A a B.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

Smyčka Forever se používá pro nepřetržitou kontrolu, která tlačítka jsou na ovladači stisknuta.

Bloky [Set motor velocity] se používají k nastavení rychlosti motoru na aktuální pozici ovladače podél 2 a 3 os. To je ekvivalent k uvedení auta do jízdy. To nemusí nutně nutit auto do pohybu, jen to nastavuje.

Každá osa joysticku vrací hodnotu mezi -100 až +100 a při vystředění vrací hodnotu nula. To pak znamená, že osy joysticku, když jsou zatlačeny, se rovnají -100 % až 100 %. Čím dále směrem k 100 nebo -100 jsou osy posunuty, tím rychleji se motor bude točit.

Blok [Spin] se pak používá ke skutečnému pohybu motoru. To je ekvivalentní sešlápnutí plynu na autě, jakmile byl nastaven směr. To umožňuje, aby byl každý motor řízen jednou ze čtyř os ovladače.

Detailní záběr na vrstvu bloků v projektu Option 2 VEXcode EXP. Blok if, else if, else je zvýrazněn uvnitř smyčky Forever v zásobníku. Zobrazí se, že pokud je stisknuto tlačítko Ovladač nahoru, tak se ArmMotor otočí nahoru, jinak, pokud je stisknuto tlačítko Ovladač dolů, tak se ArmMotor otočí dolů a jinak se ArmMotor zastaví.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

Blok [If then else if then else] se používá k mapování určitého chování na tlačítka, která jsou stisknuta nebo uvolněna na ovladači. V této části kódu jsou nastaveny podmínky, zda jsou stisknuta tlačítka Nahoru nebo Dolů. Pokud ano, dojde k určitému chování, jako je zvedání a spouštění paže. Existuje také druhá část podmínky, pokud není stisknuto žádné tlačítko, rameno se zastaví.

Všimněte si, že následující část kódu v projektu pro Claw má stejné vysvětlení.

Shrnutí možnosti 2: Použití Forever Loop

Výhody

Omezení

Příklad situace

  • Může pojmout zakázkové sestavení, zejména hnací ústrojí s více než 4 motory
  • Jednomu tlačítku lze přiřadit více chování
  • Může přiřadit chování různým osám na ovladači (oproti jediným možnostem Levá arkáda, Pravá arkáda, Dělená arkáda a Tankový pohon v konfiguraci zařízení)
  • Vyžaduje určité znalosti kódování (podmínky, smyčky a znalost tlačítek/joysticků na ovladači)
  • Potenciál pro pomalejší provádění projektu nebo zpoždění v době odezvy tlačítka. Vzhledem k tomu, že všechny příkazy jsou obsaženy v jedné smyčce Forever, může provádění kódu probíhat pomalu v závislosti na nastavených podmínkách a délce kódu.
  • Použití ovladače s robotem vyrobeným na zakázku, zejména s nestandardním hnacím ústrojím
  • Když chcete jednomu tlačítku přiřadit více chování. Například, když je stisknuto tlačítko Nahoru, dráp se může otevřít, jet vpřed a pak se zavřít kolem předmětu.

Možnost 3: Použití událostí

Pokud chcete svůj ovladač hodně přizpůsobit, je pro vás použití událostí nejlepší volbou. Jedním stisknutím tlačítka lze spustit několik chování robota, jako je stisknutí tlačítka pro otevření drápu, zvednutí paže a jízda vpřed na nastavenou vzdálenost. Pokus o kódování více chování na tlačítko v rámci smyčky Forever by způsobil dramatické zpomalení provádění projektu – použití Events vám to umožní efektivněji.

Tato možnost používá Události k rozdělení toku projektu. Je to podobné jako při použití smyčky Forever, ale umožňuje to, aby byl kód organizovanější, takže spouštění tlačítka má rychlejší dobu odezvy. Rychlejší doba odezvy znamená, že neuvidíte prodlevu mezi stisknutím tlačítek ovladače a sledováním chování robota. Tento příklad ukazuje stejné chování jako předchozí projekt, ale provede se pomocí Events namísto Forever Loop.

Pracovní prostor VEXcode EXP s otevřeným projektem bloků Option 3. Projekt má 11 malých hromádek bloků a nakonfigurovaná zařízení. Nabídka Zařízení se otevře na boku a obsahuje následující zařízení: ArmMotor na portu 3, ClawMotor na portu 4, Controller, LeftMotor na portu 6 a RightMotor na portu 10. Nakonec je tu 11 malých hromádek bloků, které zpracovávají vstupy z Controlleru. První zásobník přečte „Při spuštění nastavte zastavení ArmMotor na pozastavení a poté nastavte zastavení ClawMotor na pozastavení“. Druhý zásobník zní: Když se změní poloha osy řídicí jednotky 3, nastavte rychlost levého motoru na pozici řídicí jednotky 3 % a poté otočte levým motorem dopředu. Třetí zásobník zní: Když se změní poloha osy řídicí jednotky 2, nastavte rychlost pravého motoru na polohu řídicí jednotky 2 v % a poté otočte pravý motor dopředu. Čtvrtý zásobník zobrazuje zprávu „Když stisknete tlačítko Controller Up, otočte ArmMotor nahoru“. Pátý zásobník zobrazuje stav „Když je tlačítko Controller Up uvolněno, zastaví se ArmMotor“. Šestý zásobník zobrazuje zprávu „Když stisknete tlačítko ovladače, otočte ArmMotor dolů“. Sedmý zásobník zobrazuje stav „Když je tlačítko Controller Down uvolněno, zastaví se ArmMotor“. Osmý zásobník zobrazuje zprávu „Když stisknete tlačítko A na ovladači, roztočení ClawMotoru se otevře“. Devátý zásobník zobrazuje zprávu „Po uvolnění tlačítka A na ovladači se zastaví ClawMotor“. Desátý zásobník zobrazuje zprávu „Po stisknutí tlačítka B na ovladači se zavře otočný ClawMotor“. Jedenáctý a poslední zásobník zobrazuje zprávu „Po uvolnění tlačítka B na ovladači se ClawMotor zastaví“.

Stáhněte si soubor projektu VEXcode EXP "Option 3" >

Vysvětlení kódu možnosti 3.

Kus kódu

Vysvětlení

Detailní záběr na jednu hromádku bloků v projektu Option 3 VEXcode EXP. Zásobník přečte: Při spuštění nastavte zastavení ArmMotor na pozastavení a poté nastavte zastavení ClawMotor na pozastavení.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

Detailní záběr dvou hromádek bloků v projektu Option 3 VEXcode EXP. První zásobník zní: Když se změní poloha osy řídicí jednotky 3, nastavte rychlost levého motoru na pozici řídicí jednotky 3 % a poté otočte levým motorem dopředu. Druhý zásobník zní: Když se změní poloha osy řídicí jednotky 2, nastavte rychlost pravého motoru na polohu řídicí jednotky 2 v % a poté otočte pravý motor dopředu. Schéma ovladače EXP s označenými tlačítky a joysticky. Pohled je z přední strany ovladače. Osy levého joysticku jsou označeny jako 3 a 4. Prostřední tlačítko levého joysticku je označeno L3. Dvě kulatá tlačítka pod levým joystickem jsou označena Nahoru a Dolů. Osy pravého joysticku jsou označeny jako 1 a 2. Prostřední tlačítko pravého joysticku je označeno R3. Dvě kulatá tlačítka pod pravým joystickem jsou označena A a B.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

{When controller axis} Bloky událostí se používají ke spuštění určitého chování, když se jedna ze čtyř os na ovladači změní pomocí joysticků.

Bloky [Set motor velocity] se používají k nastavení rychlosti motoru na aktuální pozici ovladače podél os A a D. To je ekvivalent k uvedení auta do jízdy. To nemusí nutně nutit auto do pohybu, jen to nastavuje.

Každá osa joysticku vrací hodnotu mezi -100 až +100 a při vystředění vrací hodnotu nula. To pak znamená, že osy joysticku, když jsou zatlačeny, se rovnají -100 % až 100 %. Čím dále směrem k 100 nebo -100 jsou osy posunuty, tím rychleji se motor bude točit.

Blok [Spin] se pak používá ke skutečnému pohybu motoru. To je ekvivalentní sešlápnutí plynu na autě, jakmile byl nastaven směr. To umožňuje, aby byl každý motor řízen jednou ze čtyř os ovladače.

Detailní záběr čtyř hromádek bloků v projektu Option 3 VEXcode EXP. První zásobník zobrazuje zprávu „Když stisknete tlačítko Controller Up, otočte ArmMotor nahoru“. Druhý zásobník zobrazuje stav „Když je tlačítko Controller Up uvolněno, ArmMotor se zastaví“. Třetí zásobník zobrazuje zprávu „Po stisknutí tlačítka ovladače se otočí ArmMotor dolů“. Čtvrtý zásobník zobrazuje stav „Po uvolnění tlačítka ovladače se zastaví ArmMotor“.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

{When controller axis} Bloky událostí se používají k mapování určitého chování na tlačítka, která jsou stisknuta nebo uvolněna na ovladači. V této části kódu jsou nastaveny podmínky, zda jsou stisknuta tlačítka Nahoru nebo Dolů. Pokud ano, dojde k určitému chování, jako je zvednutí, spuštění nebo zastavení paže.

Všimněte si, že poslední část kódu v projektu pro Claw má stejné vysvětlení.

Shrnutí možnosti 3: Použití událostí

Výhody

Omezení

Příklad situace

  • Může pojmout zakázkové sestavení, zejména hnací ústrojí s více než 4 motory
  • Jednomu tlačítku lze přiřadit více chování
  • Může přiřadit chování různým osám na ovladači (oproti jediným možnostem Levá arkáda, Pravá arkáda, Dělená arkáda a Tankový pohon v konfiguraci zařízení)
  • Rychlejší provádění kódu, a tím i odezva tlačítka (protože každá podmínka je volána samostatně a není vložena do jednoho balíčku kódu)
  • Vyžaduje maximální znalost kódování možností (podmínky, smyčky, události a znalost tlačítek/joysticků na ovladači)
  • Použití ovladače s robotem vyrobeným na zakázku, zejména s nestandardním hnacím ústrojím
  • Když chcete jednomu tlačítku přiřadit více chování bez zpoždění. Například, když je stisknuto tlačítko Nahoru, dráp se může otevřít, jet vpřed a pak se zavřít kolem předmětu.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: