Egyéni vezérlőkód a VEXcode IQ-ban

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 IQ-ban. 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 IQ 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 IQ 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. Az E tengely gombjai 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.

A VEXcode IQ 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: IQ 2nd gen Brain, ClawMotor a 4-es porton, ArmMotor a 10-es porton, Controller, LeftMotor az 1-es porton és RightMotor a 6-os 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 az A vezérlő % pozíciójába, forgasd a LeftMotort előre, állítsd a RightMotor sebességét a D vezérlő % pozíciójába, és forgasd a RightMotort előre. Ezután, ha az E vezérlő felfelé nyomva van, akkor az ArmMotort pörgesd fel, egyébként, ha az E vezérlő lefelé nyomva van, akkor az ArmMotort pörgesd le, egyébként pedig állítsd le. Végül, ha az F vezérlő felfelé nyomva van, akkor a Karommotor kinyit, egyébként, ha az F vezérlő lefelé nyomva van, akkor a Karommotor bezár, egyébként pedig leállítja a Karommotort.

Töltse le az "Option 2" VEXcode IQ (2. generációs) projektfájlt >

megjegyzés: Ha 1. generációs Clawbotot használ, a kar motorját meg kell fordítani az Eszközkonfigurációban, hogy a fenti projektnek megfelelően működjön.

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

Kóddarab

Magyarázat

Közeli kép a 2. opció VEXcode IQ projektjének blokkhalmazáról. 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 2. opció VEXcode IQ projektjének blokkhalmazáról. Négy blokk van kiemelve a verem Forever ciklusában. Örökké feliratot olvasnak, a LeftMotor sebességét az A vezérlő % pozíciójára állítják, a LeftMotort előre forgatják, a RightMotor sebességét a D vezérlő % pozíciójára állítják, majd előre forgatják a RightMotort. Az IQ (2. generációs) vezérlő diagramja a gombjaival és joystickjaival. A nézet a vezérlő elejéről készült. A bal oldali joystick tengelyeit A és B jelöli. A bal oldali joystick középső gombja L3 jelölésű. A bal oldali joystick alatti két kerek gomb E Up és E Down feliratú. A jobb oldali joystick tengelyeit C és D jelöli. A jobb oldali joystick középső gombját R3 jelöli. A jobb oldali joystick alatti két kerek gomb F Fel és F Le feliratú.

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 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.

Közeli kép a 2. opció VEXcode IQ projektjének blokkhalmazáról. Egy if, else if, else blokk van kiemelve a verem Forever ciklusán belül. Azt írja ki, hogy ha az E vezérlő felfelé nyomva van, akkor az ArmMotor felpörög, egyébként, ha az E vezérlő lefelé nyomva van, 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 az E Fel vagy E 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 az F fel gombot, a karom kinyílhat, 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.

A VEXcode IQ 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: IQ 2nd gen Brain, ClawMotor a 4-es porton, ArmMotor a 10-es porton, Controller, LeftMotor az 1-es porton és RightMotor a 6-os 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 vezérlő A tengelye megváltozik, állítsa a LeftMotor sebességét az A vezérlő pozíciójának %-ára, majd forgassa előre a LeftMotort. A harmadik verem így néz ki: Amikor a D vezérlő megváltozik, állítsa a RightMotor sebességét a D vezérlő pozíciójának %-ára, majd forgassa előre a RightMotort. A negyedik verem így szól: Amikor a vezérlő E gombját lenyomjuk, a KarMotor forogjon felfelé. Az ötödik verem a következőt írja ki: Amikor a vezérlő E gombját felengedik, a KarMotor leáll. A hatodik verem így szól: Amikor a vezérlő E gombját lenyomjuk, a KarMotor pörög le. A hetedik verem felirata: Amikor a vezérlő E gombját elengedik, a KarMotor leáll. A nyolcadik verem felirata: Amikor a vezérlő F gombját lenyomjuk, a karommotor kinyílik. A kilencedik verem felirata: Amikor a vezérlő F gombja felengedésre kerül, a karommotor leáll. A tizedik verem felirata: Amikor a vezérlő F gombját lenyomjuk, a karommotor bezárul. A tizenegyedik és egyben utolsó verem a következőt írja ki: Amikor a vezérlő F gombját elengedik, a karommotor leáll.

Töltse le az "Option 3" VEXcode IQ (2. generációs) projektfájlt >

megjegyzés: ha 1. generációs Clawbotot használ, a kar motorját meg kell fordítani az Eszközkonfigurációban, hogy a fenti projektnek megfelelően működjön.

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 IQ 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 IQ projektjében. Az első verem a következőt írja ki: Amikor a vezérlő A tengelye megváltozik, állítsa a bal motor sebességét a vezérlő A pozíciójára (%), majd forgassa a bal motort előre. A második verem a következőt írja ki: Amikor a vezérlő D tengelye megváltozik, állítsa a jobb oldali motor sebességét a D vezérlő pozíciójának %-ára, majd forgassa a jobb oldali motort előre. Az IQ (2. generációs) vezérlő diagramja a gombjaival és joystickjaival. A nézet a vezérlő elejéről készült. A bal oldali joystick tengelyeit A és B jelöli. A bal oldali joystick középső gombja L3 jelölésű. A bal oldali joystick alatti két kerek gomb E Up és E Down feliratú. A jobb oldali joystick tengelyeit C és D jelöli. A jobb oldali joystick középső gombját R3 jelöli. A jobb oldali joystick alatti két kerek gomb F Fel és F Le feliratú.

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 egymásra rakott blokk közeli képe a 3. opció VEXcode IQ projektjében. Az első verem a következőt mutatja: Amikor a vezérlő E gombját lenyomjuk, forgassuk fel a Karmotort. A második verem a következőt írja ki: Amikor a vezérlő E gombját felengedik, a KarMotor leáll. A harmadik verem így szól: Amikor a vezérlő E gombját lenyomjuk, a KarMotor pörög le. A negyedik verem a következőt írja ki: Amikor a vezérlő E gombját 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 az E Fel vagy E 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)
  • Ha 1. generációs VEX IQ Brain-t használ, a túl sok esemény egy projektben azt eredményezheti, hogy a projekt nem fut, az agy feldolgozási korlátai miatt.
  • 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 az F fel gombot, a karom kinyílhat, 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: