Vlastní kód ovladače ve VEXcode IQ

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 IQ. 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 IQ. 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 IQ 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 osy E 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 IQ 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í: IQ 2. generace Brain, ClawMotor na portu 4, ArmMotor na portu 10, Controller, LeftMotor na portu 1 a RightMotor na portu 6. 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 A v %, roztočte levý motor dopředu, nastavte rychlost pravého motoru na pozici ovladače D v % a roztočte pravý motor dopředu. Dále, pokud je stisknuto tlačítko ovladače E nahoru, otočte ArmMotor nahoru, jinak, pokud je stisknuto tlačítko ovladače E dolů, otočte ArmMotor dolů, jinak ArmMotor zastavte. Nakonec, pokud je stisknuto tlačítko ovladače F nahoru, otočte ClawMotor k otevření, jinak, pokud je stisknuto tlačítko ovladače F dolů, otočte ClawMotor k zavření a v opačném případě ClawMotor zastavte.

Stáhněte si soubor projektu "Option 2" VEXcode IQ (2. generace) >

Poznámka: Pokud používáte Clawbota 1. generace, bude nutné v konfiguraci zařízení obrátit motor ramene, aby fungoval tak, jak bylo zamýšleno ve výše uvedeném projektu.

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

Kus kódu

Vysvětlení

Detailní záběr na vrstvu bloků v projektu Option 2 VEXcode IQ. 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 IQ. 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 A v %, roztočí levý motor dopředu, nastaví rychlost pravého motoru na pozici ovladače D v % a roztočí pravý motor dopředu. Schéma ovladače IQ (2. generace) s označenými tlačítky a joysticky. Pohled je z přední strany ovladače. Osy levého joysticku jsou označeny jako A a B. Prostřední tlačítko levého joysticku je označeno L3. Dvě kulatá tlačítka pod levým joystickem jsou označena E nahoru a E dolů. Osy pravého joysticku jsou označeny jako C a D. Prostřední tlačítko pravého joysticku je označeno R3. Dvě kulatá tlačítka pod pravým joystickem jsou označena F nahoru a F dolů.

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 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 na vrstvu bloků v projektu Option 2 VEXcode IQ. 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če E nahoru, tak se ArmMotor otočí nahoru, jinak pokud je stisknuto tlačítko ovladače E dolů, tak se ArmMotor otočí dolů a ArmMotor se 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 E Up nebo E Down. 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 F Up, 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 IQ 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í: IQ 2. generace Brain, ClawMotor na portu 4, ArmMotor na portu 10, Controller, LeftMotor na portu 1 a RightMotor na portu 6. 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í osa řídicí jednotky A, nastavte rychlost levého motoru na pozici řídicí jednotky A v % a poté otočte levý motor dopředu. Třetí zásobník zní: Když se změní ovladač D, nastavte rychlost pravého motoru na polohu ovladače D v % a poté otočte pravý motor dopředu. Čtvrtý zásobník zobrazuje zprávu: Když stisknete tlačítko E na ovladači nahoru, otočte ArmMotor nahoru. Pátý zásobník zobrazuje stav „Po uvolnění tlačítka E na ovladači nahoru se zastaví ArmMotor“. Šestý zásobník zobrazuje zprávu „Když stisknete tlačítko E na ovladači, otočte ArmMotor dolů“. Sedmý zásobník zobrazuje stav „Když tlačítko E na ovladači uvolníte, zastavte ArmMotor“. Osmý zásobník zobrazuje stav „Když stisknete tlačítko F na ovladači, roztočení ClawMotoru se otevře“. Devátý zásobník zobrazuje stav „Po uvolnění tlačítka F na ovladači nahoru se ClawMotor zastaví“. Desátý zásobník zobrazuje zprávu „Když stisknete tlačítko F na ovladači, zavře se ClawMotor“. Jedenáctý a poslední zásobník zobrazuje stav „Po uvolnění tlačítka F na ovladači se zastaví ClawMotor“.

Stáhněte si soubor projektu "Option 3" VEXcode IQ (2. generace) >

Poznámka: Pokud používáte Clawbota 1. generace, bude nutné v konfiguraci zařízení obrátit motor ramene, aby fungoval tak, jak bylo zamýšleno ve výše uvedeném projektu.

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

Kus kódu

Vysvětlení

Detailní záběr na jednu vrstvu bloků v projektu Option 3 VEXcode IQ. 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 IQ. První zásobník čte: Když se změní osa řídicí jednotky A, nastavte rychlost levého motoru na pozici řídicí jednotky A v % a poté otočte levým motorem dopředu. Druhý zásobník přečte: Když se změní osa řídicí jednotky D, nastavte rychlost pravého motoru na polohu řídicí jednotky D v % a poté otočte pravý motor dopředu. Schéma ovladače IQ (2. generace) s označenými tlačítky a joysticky. Pohled je z přední strany ovladače. Osy levého joysticku jsou označeny jako A a B. Prostřední tlačítko levého joysticku je označeno L3. Dvě kulatá tlačítka pod levým joystickem jsou označena E nahoru a E dolů. Osy pravého joysticku jsou označeny jako C a D. Prostřední tlačítko pravého joysticku je označeno R3. Dvě kulatá tlačítka pod pravým joystickem jsou označena F nahoru a F dolů.

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 IQ. První zásobník zobrazuje zprávu: Když stisknete tlačítko E na ovladači, otočte ArmMotor nahoru. Druhý zásobník zobrazuje stav „Po uvolnění tlačítka E na ovladači nahoru se zastaví ArmMotor“. Třetí zásobník zobrazuje zprávu „Po stisknutí tlačítka E na ovladači se otočí ArmMotor dolů“. Čtvrtý zásobník zobrazuje stav „Když je tlačítko E na ovladači uvolněno, zastaví se 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 E Up nebo E Down. 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)
  • Pokud používáte 1. generaci VEX IQ Brain, příliš mnoho událostí v projektu může vést k tomu, že projekt nebude spuštěn kvůli omezením zpracování mozku.
  • 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 F Up, 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: