Egyéni vezérlőkód a VEXcode V5-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 a VEXcode V5-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 V5 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 Speedbot vagy Clawbot, é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 V5 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 Speedbot, Clawbot, vagy ezen szabványos buildek egyszerű módosítása manipulálása. Például egy Speedbot, 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 V5 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: Controller1, ClawMotor a 3-as porton, ArmMotor a 8-as porton, LeftMotor az 1-es porton és RightMotor a 10-es porton. A munkaterületen található 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 Controller1 3 pozíció %-ra, forgasd a LeftMotort előre, állítsd a RightMotor sebességét Controller1 2 pozíció %-ra, és forgasd a RightMotort előre. Ezután, ha a Controller1 Up gombot lenyomjuk, akkor az ArmMotort pörgessük fel, egyébként, ha a Controller1 Down gombot lenyomjuk, akkor az ArmMotort pörgessük le, egyébként pedig állítsuk le az ArmMotort. Végül, ha a Controller1 A gombot megnyomjuk, akkor a ClawMotor nyitva van, egyébként, ha a Controller1 B gombot megnyomjuk, akkor a ClawMotor zárva van, egyébként pedig leállítja a ClawMotort.

Töltse le az "Option 2" VEXcode V5 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 V5 projektben. 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 V5 projektben. Négy blokk van kiemelve a verem Forever ciklusában. Olvassák az Örökké értéket, állítsák a LeftMotor sebességét Controller1 3 pozíció %-ra, forgatják a LeftMotort előre, állítsák a RightMotor sebességét Controller1 2 pozíció %-ra, és forgatják a RightMotort előre.

 

V5 vezérlő a gombok elrendezésének megjelenítéséhez.

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 V5 projektben. Egy if, else if, else blokk van kiemelve a verem Forever ciklusán belül. Azt olvassa ki, hogy ha a Controller1 Up gombot lenyomják, akkor az ArmMotor felpörög, egyébként, ha a Controller1 Down gombot lenyomják, akkor az ArmMotor lepörög, egyébként pedig leállítja az ArmMotort.

 

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: Controller1, ClawMotor a 3-as porton, ArmMotor a 8-as porton, LeftMotor az 1-es porton és RightMotor a 10-es porton. A munkaterületen 11 kis blokkhalom található, 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 Controller1 3. tengelye megváltozik, állítsa a LeftMotor sebességét a Controller1 3. pozíciójának %-ára, majd forgassa előre a LeftMotort. A harmadik verem a következőt írja ki: Amikor a Controller1 2. tengelye megváltozik, állítsa a RightMotor sebességét a Controller1 2. pozíciójának %-ára, majd forgassa előre a RightMotort. A negyedik verem így szól: Amikor a Controller1 felfelé gombját lenyomjuk, az ArmMotor felpörög. Az ötödik verem a következőt írja ki: Amikor a Controller1 gombja felengedésre kerül, az ArmMotor leáll. A hatodik verem így szól: Amikor a Controller1 gombot lenyomjuk, a KarMotor pörög le. A hetedik verem a következőt írja ki: Amikor a Controller1 gombját elengedik, az ArmMotor leáll. A nyolcadik verem a következőt írja ki: Amikor a Controller1 A gombját megnyomják, a ClawMotor megpörög. A kilencedik verem a következőt írja ki: Amikor a Controller1 A gombja elengedésre kerül, a ClawMotor leáll. A tizedik verem így szól: Amikor a Controller1 B gombját lenyomják, a ClawMotor bezárul. A tizenegyedik és egyben utolsó verem a következőt írja ki: Amikor a Controller1 B gombja elengedésre kerül, a ClawMotor leáll.

Töltse le az "Option 3" VEXcode V5 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 V5 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 blokkköteg közeli képe a 3. opció VEXcode V5 projektjében. Az első verem a következőt írja ki: Amikor a Controller1 3. tengelye megváltozik, állítsa a LeftMotor sebességét a Controller1 3. pozíciójának %-ára, majd forgassa előre a LeftMotort. A második verem a következőt írja ki: Amikor a Controller1 2. tengelye megváltozik, állítsa a RightMotor sebességét a Controller1 2. pozíciójának %-ára, majd forgassa előre a RightMotort.

 

V5 vezérlő a gombok elrendezésének megjelenítéséhez.

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 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 V5 projektjében. Az első verem a következőt írja ki: Amikor a Controller1 felfelé gombját lenyomjuk, az ArmMotor felpörög. A második verem a következőt írja ki: Amikor a Controller1 felfelé gombja elengedésre kerül, az ArmMotor leáll. A harmadik verem így szól: Amikor a Controller1 gombot lenyomva tartjuk, a KarMotor pörög le. A negyedik verem a következőt írja ki: Amikor a Controller1 gombját elengedik, az ArmMotor 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óban a Left Arcade, Right Arcade, Split Arcade és Tank Drive egyetlen lehetőségével)
  • 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: