Egyéni vezérlőkód a VEXcode EXP-ben

A Controller használata megkönnyítheti a robot vezetését és mozgatását a feladat végrehajtásához. A Drive program használatának azonban vannak korlátai, és a robot felépítésétől vagy az adott feladattól függően eltérő vezérlőkre lehet szükség. A vezérlő kódolása lehetővé teszi a vezérlő optimalizálását, hogy jobban illeszkedjen robotjához és az adott feladathoz. Számos módja van a Vezérlő kódolásának VEXcode EXP-ben. Mindegyiknek megvannak a maga előnyei és korlátai, és egyes módszerek jobban megfelelnek bizonyos helyzetekben a kívánt eredménytől függően.

Ez a cikk végigvezeti Önt a VEXcode EXP vezérlő egyéni kódolásának három különböző lehetőségén. Mindegyik módszer leírása az előnyeivel, korlátaival, valamint egy példa használati esettel segíti a módszer kiválasztását. Ebben a cikkben az összes bemutatott kódpélda a Clawbothoz készült. Ugyanezek a koncepciók azonban alkalmazhatók a builds.vex.comwebhelyen található számos más buildre és egyéni buildre is.

1. lehetőség: Gombok hozzárendelése az eszközkonfigurációban

Ez a lehetőség nagyszerű, ha szabványos összeállítást használ, például BaseBotot vagy Clawbotot, és gyorsan szeretne elindulni.

Ezzel az opcióval motorokat, hajtásláncot vagy motorcsoportokat rendelhet a Vezérlő gombjaihoz az Eszközkonfigurációban. További információért arról, hogyan rendelhet gombokat a vezérlőhöz az Eszközkonfigurációban, meg ezt a cikket.

VEXcode EXP eszközök menü a megjelenített vezérlőopciókkal. A gombvezérlés ábrája azt mutatja, hogy a két joystick tartályhajtású konfigurációban hajtja a robotot. A Fel és Le gombok egy ArmMotorGroup-ot, az R tengely gombjai pedig egy ClawMotor-t vezérelnek.

Az 1. lehetőség összefoglalása: Gombok hozzárendelése az eszközkonfigurációban

Előnyök

Korlátozások

Példahelyzet

  • Gyors beállítás kódolás nélkül
  • A legegyszerűbb módszer
  • Könnyen állítható
  • Egyedi motorokat, szabványos hajtásláncot és motorcsoportokat rendelhet a gombokhoz
  • A gombok hozzárendelése a Vezérlő gombjainak számára korlátozódik
  • A hajtáslánc nem haladhatja meg a 4 motort, és nem lehet testreszabható (csak szabványos hajtás támogatott, H hajtás, holonomic vagy egyéb egyedi hajtáslánc nem)
  • Szabványos összeállítások, például BaseBot, Clawbot vagy ezen szabványos buildek egyszerű módosítása manipulálása. Például egy BaseBot, amelynek elejére egy szívónyílás van csatlakoztatva, amelyet egy motorcsoport vezérel.
  • Gyorsan, sok kódolás nélkül manipulálni, hogy mely gombok feleljenek meg a robot különböző viselkedéseinek

2. lehetőség: Forever Loop használata

Ha egyéni összeállítást használ a szabványos build helyett, vagy szeretné, hogy több testreszabási lehetőség legyen a Controllerben, ez a lehetőség jó választás. A Forever hurok használata nagyszerű bevezetés a Vezérlő egyedi kódjának létrehozásához.

Ez az opció a Vezérlőre és a hozzá tartozó gombokra vonatkozó összes feltételt egy Forever ciklusba helyezi. Ez nagyobb rugalmasságot biztosít, különösen az egyedi építési tervek esetében, de némi kódolási tapasztalatot is igényel. Ennek az opciónak a használatakor azonban figyelembe kell venni a projekt hossza és összetettsége. Minél több feltételt ad hozzá, annál hosszabbá válhat a kódverem. Ez azt jelenti, hogy több blokkot kell sorrendben végrehajtani, és ha sok a blokk, ez lelassíthatja a projekt végrehajtását. A projekt lassabb végrehajtása késést okozhat a Vezérlő gombjainak lenyomása és a robot viselkedésének megtekintése között.

Az alábbiakban bemutatott konkrét példa az egyik módja annak, hogy egy Forever hurkot egy egyedi tervezésű robottal (például egy egyedi hajtáslánccal rendelkező robottal) használjon a robot vezetésére, valamint a karom és a kar manipulálására, hogy interakcióba lépjen a tárgyakkal.

VEXcode EXP munkaterület a 2. opció blokkprojektjével megnyitva. A projekt egy blokkokból álló halomból és konfigurált eszközökből áll. Az Eszközök menü oldalt nyílik meg, és a következő eszközöket listázza: Karmotor a 3-as porton, Karmotor a 4-es porton, Vezérlő, Bal motor a 6-os porton és Jobb motor a 10-es porton. Végül ott van a blokkok halmaza a vezérlő bemenetének kezelésére. A verem tartalma a következő: Indításkor az ArmMotor leállítását tartsa, és a ClawMotor leállítását tartsa. A verem többi részét egy Forever ciklus tartalmazza. Örökké felirat jelenik meg, állítsd a LeftMotor sebességét a 3. vezérlő pozíciójának %-ára, forgasd a LeftMotort előre, állítsd a RightMotor sebességét a 2. vezérlő pozíciójának %-ára, majd forgasd a RightMotort előre. Ezután, ha a vezérlő fel gombját nyomjuk, akkor az ArmMotort pörgessük fel, egyébként, ha az E vezérlő le gombját nyomjuk le, akkor az ArmMotort pörgessük le, egyébként pedig állítsuk le az ArmMotort. Végül, ha az A vezérlőt megnyomjuk, akkor a Karommotor kinyit, egyébként, ha a B vezérlőt megnyomjuk, akkor a Karommotor bezár, egyébként pedig leállítja a Karommotort.

Töltse le az "Option 2" VEXcode EXP projektfájlt >

A 2. lehetőség kódjának magyarázata.

Kóddarab

Magyarázat

Közeli kép a blokkok halmáról a 2. opció VEXcode EXP projektjében. Két blokk van kiemelve, és a verem Forever ciklusán kívül esnek, a „set ArmMotor stopping to hold” és a „set ClawMotor stopping to hold” értékeket olvassák be.

Ehhez a kódpéldához Clawbotot használtak. Amikor a Vezérlő gombjait a kar felemelésére és leengedésére használjuk, amint a gombot elengedjük, a gravitáció hatására a kar visszaesik. Ha mind a kart, mind a karmot „tartásra” állítja, akkor a kar és a karom is a helyén marad még a vezérlő gombjainak elengedése után is.

Közeli kép a blokkok halmáról a 2. opció VEXcode EXP projektjében. Négy blokk van kiemelve a verem Forever ciklusában. Olvassák az Örökké szöveget, állítsák a LeftMotor sebességét a 3. vezérlő pozíciójának %-ára, forgatják a LeftMotort előre, állítsák a RightMotor sebességét a 2. vezérlő pozíciójának %-ára, és forgatják a RightMotort előre. Az EXP vezérlő diagramja a gombjaival és joystickjaival. A nézet a vezérlő elejéről készült. A bal oldali joystick tengelyeit 3-as és 4-es számmal jelöltük. A bal oldali joystick középső gombja L3 feliratú. A bal oldali joystick alatti két kerek gomb Fel és Le feliratú. A jobb oldali joystick tengelyei 1-es és 2-es számmal vannak jelölve. A jobb oldali joystick középső gombja R3 feliratú. A jobb oldali joystick alatti két kerek gomb A és B felirattal van ellátva.

Ehhez a kódpéldához Clawbotot használtak. Amikor a Vezérlő gombjait a kar felemelésére és leengedésére használjuk, amint a gombot elengedjük, a gravitáció hatására a kar visszaesik. Ha mind a kart, mind a karmot „tartásra” állítja, akkor a kar és a karom is a helyén marad még a vezérlő gombjainak elengedése után is.

Egy Forever hurkot használnak annak folyamatos ellenőrzésére, hogy melyik gombokat nyomják meg a Vezérlőn.

A [Set motor speed] (Motor sebességének beállítása) blokkokkal a motor sebességét a 2 és 3 tengely mentén a Vezérlő aktuális pozíciójára lehet beállítani. Ez egyenértékű egy autó hajtásba állításával. Ez nem feltétlenül mozgatja az autót, csak beállítja.

A joystick minden tengelye -100 és +100 közötti értéket ad vissza, középre állítva pedig nullát. Ez azt jelenti, hogy a joystick tengelyei, ha megnyomják, -100% és 100% közöttiek. Minél távolabb 100 vagy -100 felé tolják a tengelyeket, annál gyorsabban fog forogni a motor.

A [Spin] blokkot ezután a motor tényleges mozgatására használják. Ez megegyezik azzal, mintha az irány beállítása után megnyomnák a gázt az autón. Ez lehetővé teszi, hogy minden motort a négy Vezérlő tengely egyike vezéreljen.

Közeli kép a blokkok halmáról a 2. opció VEXcode EXP projektjében. Egy if, else if, else blokk van kiemelve a verem Forever ciklusán belül. Azt írja ki, hogy ha a Controller Up (Vezérlő fel) gombot megnyomták, akkor a KarMotor felpörög, egyébként, ha a Controller Down (Vezérlő le) gombot megnyomták, akkor a KarMotor lepörög, egyébként pedig leállítja a KarMotort.

Ehhez a kódpéldához Clawbotot használtak. Amikor a Vezérlő gombjait a kar felemelésére és leengedésére használjuk, amint a gombot elengedjük, a gravitáció hatására a kar visszaesik. Ha mind a kart, mind a karmot „tartásra” állítja, akkor a kar és a karom is a helyén marad még a vezérlő gombjainak elengedése után is.

Az [If then else if then else] blokk bizonyos viselkedések leképezésére szolgál a vezérlőn megnyomott vagy felengedett gombokhoz. Ebben a kódrészben a feltételek a Fel vagy Le gombok megnyomására vonatkoznak. Ha igen, bizonyos viselkedések történnek, mint például a kar felemelése és leengedése. A feltételnek van egy másik része is, ha egyik gombot sem nyomják meg, a kar be van állítva, hogy megálljon.

Vegye figyelembe, hogy a Claw projekt kódjának következő szakasza ugyanezt a magyarázatot követi.

A 2. lehetőség összefoglalása: Forever Loop használata

Előnyök

Korlátozások

Példahelyzet

  • Egyedi építmények, különösen 4-nél több motoros hajtásláncok befogadására alkalmas
  • Több viselkedést is hozzárendelhet egyetlen gombhoz
  • Viselkedéseket tud hozzárendelni a Vezérlő különböző tengelyeihez (ellentétben az eszközkonfigurációban a Left Arcade, Right Arcade, Split Arcade és Tank Drive egyetlen lehetőségével)
  • Bizonyos mennyiségű kódolási ismeretet igényel (feltételek, hurkok és a vezérlő gombjainak/joystickjainak ismerete)
  • Lehetséges a projekt lassabb végrehajtása, vagy a gomb válaszidejének késése. Mivel az összes parancs egyetlen Forever ciklusban található, a kód végrehajtása a beállított feltételektől és a kód hosszától függően lassan futhat.
  • A Vezérlő használata egyedi építésű robottal, különösen nem szabványos hajtáslánccal
  • Ha több viselkedést szeretne hozzárendelni egyetlen gombhoz. Például, ha megnyomja a Fel gombot, a Claw kinyithat, előrehajthat, majd bezárhat egy tárgy körül.

3. lehetőség: Események használata

Ha sok testreszabási lehetőséget szeretne a vezérlőjén, az Események használata a legjobb megoldás az Ön számára. Egy gombnyomás többféle robot viselkedést válthat ki, például egy gomb megnyomásával kinyithatja a karmot, felemelheti a kart, és előre hajthat egy meghatározott távolságot. Ha egy Forever cikluson belül gombonként több viselkedést próbál kódolni, a projekt végrehajtása drámaian lelassulna – az Events használatával ezt hatékonyabban teheti meg.

Ez a beállítás az Események funkciót használja a projektfolyam felosztására. Ez hasonló a Forever ciklus használatához, de lehetővé teszi a kód rendszerezettebbé tételét, így a gomb végrehajtása gyorsabb válaszidővel rendelkezik. A gyorsabb válaszidő azt jelenti, hogy nem lesz késés a Vezérlő gombjainak lenyomása és a robot viselkedése között. Ez a példa ugyanazt a viselkedést mutatja, mint az előző projekt, de a Forever Loop helyett az Events használatával készült.

VEXcode EXP munkaterület a 3. opció blokkprojektjével megnyitva. A projekt 11 kis blokkkötegből és konfigurált eszközökből áll. Az Eszközök menü oldalt nyílik meg, és a következő eszközöket listázza: Karmotor a 3-as porton, Karmotor a 4-es porton, Vezérlő, Bal motor a 6-os porton és Jobb motor a 10-es porton. Végül pedig ott van a 11 kis blokkhalom, amelyek a vezérlő bemenetét kezelik. Az első verem szövege: Indításkor a Karmotor leállítását állítsuk tartásra, majd a Karmotor leállítását állítsuk tartásra. A második verem a következőt írja ki: Amikor a 3. vezérlőtengely megváltozik, állítsa a LeftMotor sebességét a 3. vezérlő pozíciójának %-ára, majd forgassa előre a LeftMotort. A harmadik verem a következőt írja ki: Amikor a 2. vezérlő tengelye megváltozik, állítsa a jobb oldali motor sebességét a 2. vezérlő pozíciójának %-ára, majd forgassa előre a jobb oldali motort. A negyedik verem így szól: Amikor a vezérlő felfelé gombját lenyomjuk, forgassuk fel a Karmotort. Az ötödik verem a következőt írja ki: Amikor a vezérlő fel gombját elengedi, a KarMotor leáll. A hatodik verem így szól: Amikor a vezérlő lefelé mutató nyílgombot lenyomjuk, a KarMotor pörögjön lefelé. A hetedik verem felirata: Amikor a vezérlőgombot elengedjük, a KarMotor leáll. A nyolcadik verem felirata: Amikor a vezérlő A gombját megnyomják, a Karommotor kinyílik. A kilencedik verem felirata: Amikor a vezérlő A gombját elengedik, a Karommotor leáll. A tizedik verem felirata: Amikor a B vezérlőgombot megnyomjuk, a Karommotor bezárul. A tizenegyedik és egyben utolsó verem így szól: Amikor a B vezérlőgombot elengedjük, a Karommotor leáll.

Töltse le az "Option 3" VEXcode EXP projektfájlt >

A 3. lehetőség kódjának magyarázata.

Kóddarab

Magyarázat

Közeli kép egy blokkkötegről a 3. opció VEXcode EXP projektjében. A verem szövege: Indításkor az ArmMotor leállítását állítsa tartásra, majd a ClawMotor leállítását állítsa tartásra.

Ehhez a kódpéldához Clawbotot használtak. Amikor a Vezérlő gombjait a kar felemelésére és leengedésére használjuk, amint a gombot elengedjük, a gravitáció hatására a kar visszaesik. Ha mind a kart, mind a karmot „tartásra” állítja, akkor a kar és a karom is a helyén marad még a vezérlő gombjainak elengedése után is.

Két blokkhalom közeli képe a 3. opció VEXcode EXP projektjében. Az első verem a következőt írja ki: Amikor a 3. vezérlő tengelye megváltozik, állítsa a bal motor sebességét a 3. vezérlő pozíciójának %-ára, majd forgassa a bal motort előre. A második verem a következőt mutatja: Amikor a 2. vezérlő tengelye megváltozik, állítsa a jobb oldali motor sebességét a 2. vezérlő pozíciójának %-ára, majd forgassa előre a jobb oldali motort. Az EXP vezérlő diagramja a gombjaival és joystickjaival. A nézet a vezérlő elejéről készült. A bal oldali joystick tengelyeit 3-as és 4-es számmal jelöltük. A bal oldali joystick középső gombja L3 feliratú. A bal oldali joystick alatti két kerek gomb Fel és Le feliratú. A jobb oldali joystick tengelyei 1-es és 2-es számmal vannak jelölve. A jobb oldali joystick középső gombja R3 feliratú. A jobb oldali joystick alatti két kerek gomb A és B felirattal van ellátva.

Ehhez a kódpéldához Clawbotot használtak. Amikor a Vezérlő gombjait a kar felemelésére és leengedésére használjuk, amint a gombot elengedjük, a gravitáció hatására a kar visszaesik. A kar és a karom „tartásra” állítása biztosítja, hogy a kar és a karom is a helyén maradjon még a vezérlő gombjainak elengedése után is.

{When controller axis} Az eseményblokkok bizonyos viselkedések kiváltására szolgálnak, amikor a Vezérlő négy tengelyének egyikét megváltoztatják a joystickok segítségével.

A [Set motor speed] (Motor sebességének beállítása) blokkokkal a motor sebességét a Vezérlő aktuális helyzetére állíthatja be az A és D tengely mentén. Ez egyenértékű egy autó hajtásba állításával. Ez nem feltétlenül mozgatja az autót, csak beállítja.

A joystick minden tengelye -100 és +100 közötti értéket ad vissza, középre állítva pedig nullát. Ez azt jelenti, hogy a joystick tengelyei, ha megnyomják, -100% és 100% közöttiek. Minél távolabb 100 vagy -100 felé tolják a tengelyeket, annál gyorsabban fog forogni a motor.

A [Spin] blokkot ezután a motor tényleges mozgatására használják. Ez megegyezik azzal, mintha az irány beállítása után megnyomnák a gázt az autón. Ez lehetővé teszi, hogy minden motort a négy Vezérlő tengely egyike vezéreljen.

Négy blokkhalom közeli képe a 3. opció VEXcode EXP projektjében. Az első verem a következőt írja: Amikor a vezérlő felfelé gombját lenyomjuk, forgassuk fel a Karmotort. A második verem a következőt írja ki: Amikor a vezérlő fel gombját elengedi, a KarMotor leáll. A harmadik verem így szól: Ha a vezérlő lenyomva tartja a gombot, forgassa le a Karmotort. A negyedik verem a következőt írja ki: Amikor a vezérlőgombot elengedik, a KarMotor leáll.

Ehhez a kódpéldához Clawbotot használtak. Amikor a Vezérlő gombjait a kar felemelésére és leengedésére használjuk, amint a gombot elengedjük, a gravitáció hatására a kar visszaesik. Ha mind a kart, mind a karmot „tartásra” állítja, akkor a kar és a karom is a helyén marad még a vezérlő gombjainak elengedése után is.

{When controller axis} Az eseményblokkok bizonyos viselkedések leképezésére szolgálnak a vezérlőn megnyomott vagy elengedett gombokhoz. Ebben a kódrészben a feltételek a Fel vagy Le gombok megnyomására vonatkoznak. Ha igen, akkor bizonyos viselkedések történnek, például a kar felemelése, leengedése vagy megállása.

Vegye figyelembe, hogy a Claw projekt utolsó kódrészlete ugyanezt a magyarázatot követi.

A 3. lehetőség összefoglalása: Események használata

Előnyök

Korlátozások

Példahelyzet

  • Egyedi építmények, különösen 4-nél több motoros hajtásláncok befogadására alkalmas
  • Több viselkedést is hozzárendelhet egyetlen gombhoz
  • Viselkedéseket tud hozzárendelni a Vezérlő különböző tengelyeihez (ellentétben az eszközkonfiguráció egyetlen lehetőségével: Left Arcade, Right Arcade, Split Arcade és Tank Drive)
  • Gyorsabb kódvégrehajtás, és ezáltal a gombok reagálása (mivel minden feltétel külön-külön hívható meg, és nincsenek egyetlen kódkötegbe ágyazva)
  • Megköveteli a legtöbb kódolási ismeretet az opciókról (feltételek, hurkok, események és a vezérlő gombjainak/joystickjainak ismerete)
  • A Vezérlő használata egyedi építésű robottal, különösen nem szabványos hajtáslánccal
  • Ha több viselkedést szeretne egyetlen gombhoz rendelni késés nélkül. Például, ha megnyomja a Fel gombot, a Claw kinyithat, előrehajthat, majd bezárhat egy tárgy körül.

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

Last Updated: