Mukautettu ohjainkoodi VEXcode EXP:ssä

Ohjaimen käyttäminen voi helpottaa robotin ajamista ja liikuttamista tehtävän suorittamiseksi. Drive-ohjelman käytössä on kuitenkin rajoituksia, ja robottirakenteen tai käsillä olevan tehtävän mukaan saatat tarvita erilaisia ​​ohjaimia. Ohjaimen koodauksen avulla voit optimoida ohjaimen niin, että se sopii paremmin robottiisi ja käsillä olevaan tehtävään. On olemassa useita tapoja koodata ohjain VEXcode EXP:ssä. Jokaisella on etunsa ja rajoituksensa, ja jotkin menetelmät sopivat paremmin tiettyihin tilanteisiin halutun tuloksen mukaan.

Tämä artikkeli opastaa sinua kolmen eri vaihtoehdon läpi ohjaimen mukautettuun koodaukseen VEXcode EXP:ssä. Jokainen menetelmä kuvataan sen eduilla, rajoituksilla ja esimerkkikäyttötapauksella, joka auttaa sinua menetelmän valinnassa. Tätä artikkelia varten kaikki esitetyt koodiesimerkit luotiin Clawbotille. Samoja käsitteitä voitaisiin kuitenkin soveltaa lukuisiin muihin koontiversioihin, jotka löytyvät sivustosta builds.vex.com, ja mukautettuihin koontiversioihin.

Vaihtoehto 1: Painikkeiden määrittäminen laitekokoonpanossa

Tämä vaihtoehto on hyvä, kun käytät vakiorakennetta, kuten BaseBotia tai Clawbotia, ja haluat päästä nopeasti toimimaan.

Tämän vaihtoehdon avulla voit määrittää moottoreita, voimansiirron tai moottoriryhmiä ohjaimen painikkeille Laitekonfiguraatiossa. Lisätietoja painikkeiden määrittämisestä Device Configurationissa on tässä artikkelissa.

VEXcode EXP -laitteet -valikko, jossa näkyvät ohjainasetukset. Painikkeiden ohjauskaavio osoittaa, että kaksi ohjaussauvaa ohjaavat robottia säiliöajokonfiguraatiossa. Ylös- ja alas-painikkeet ohjaavat ArmMotorGroup-yksikköä ja R-akselin painikkeet ohjaavat ClawMotoria.

Yhteenveto vaihtoehdosta 1: Painikkeiden määrittäminen laitekokoonpanossa

Edut

Rajoitukset

Esimerkkitilanne

  • Nopea asennus ilman koodausta
  • Yksinkertaisin menetelmä
  • Helposti säädettävä
  • Voi määrittää yksittäisiä moottoreita, vakiovoimansiirron ja moottoriryhmiä painikkeille
  • Painikemääritykset on rajoitettu ohjaimen painikkeiden määrään
  • Voimansiirto ei saa ylittää 4 moottoria tai olla räätälöityjä (vain vakiokäyttöä tuetaan, ei H-käyttöä, holonomista tai muuta mukautettua voimansiirtoa)
  • Vakiokoontiversion, kuten BaseBotin, Clawbotin tai yksinkertaisen muunnelman manipulointi. Esimerkiksi BaseBot, jonka etuosassa on imuaukko, jota ohjaa moottoriryhmä.
  • Manipuloida, mitkä painikkeet vastaavat robotin eri käyttäytymistä nopeasti ilman paljon koodausta

Vaihtoehto 2: Forever Loopin käyttö

Jos käytät mukautettua koontiversiota tavallisen koontiversion sijaan tai haluat, että Ohjaimessasi on enemmän mukautuksia, tämä vaihtoehto on hyvä. Forever-silmukan käyttäminen on loistava johdatus mukautetun koodin luomiseen ohjaimellesi.

Tämä vaihtoehto asettaa kaikki ohjaimen ja siihen liittyvien painikkeiden ehdot Forever-silmukkaan. Tämä tarjoaa enemmän joustavuutta varsinkin mukautetuissa rakennesuunnitelmissa, mutta vaatii myös jonkin verran koodauskokemusta. Yksi huomioitavaa tätä vaihtoehtoa käytettäessä on kuitenkin projektin pituus ja monimutkaisuus. Mitä enemmän ehtoja lisätään, sitä pidemmäksi koodipino voi tulla. Tämä tarkoittaa, että useita lohkoja on suoritettava järjestyksessä, ja jos lohkoja on paljon, tämä voi hidastaa projektin suorittamista. Hitaampi projektin suorittaminen voi aiheuttaa viiveen Controller-painikkeiden painamisen ja robotin toiminnan näkemisen välillä.

Alla oleva esimerkki on yksi tapa, jolla voit käyttää Forever-silmukkaa mukautetun suunnittelun robotin kanssa (kuten mukautetun voimansiirron omaavan robotin kanssa) robotin ohjaamiseen ja kynsien ja käsien käsittelemiseen vuorovaikutuksessa esineiden kanssa.

VEXcode EXP -työtila, jossa on avattu vaihtoehdon 2 lohkoprojekti. Projektissa on pino lohkoja ja siinä on konfiguroituja laitteita. Laitteet-valikko avautuu sivulle ja siinä luetellaan seuraavat laitteet: ArmMotor portissa 3, ClawMotor portissa 4, Controller, LeftMotor portissa 6 ja RightMotor portissa 10. Lopuksi on pino lohkoja ohjaimen syötteen käsittelemiseksi. Pinossa lukee Käynnistyksen jälkeen aseta ArmMotor stopping to hold -tilaan ja aseta ClawMotor stopping to hold -tilaan. Loput pinosta on Forever-silmukassa. Siinä lukee Ikuisesti, aseta LeftMotor-nopeudeksi Controller 3 asento %, pyöritä LeftMotor-moottoria eteenpäin, aseta RightMotor-nopeudeksi Controller 2 asento % ja pyöritä RightMotor-moottoria eteenpäin. Seuraavaksi, jos ohjain ylös -painiketta painetaan, pyöritä ArmMotoria ylös, muuten, jos ohjain E alas -painiketta painetaan, pyöritä ArmMotoria alas, muuten pysäytä ArmMotor. Lopuksi, jos ohjainta A painetaan, pyöritä ClawMotoria auki, muuten, jos ohjainta B painetaan, pyöritä ClawMotoria kiinni ja pysäytä ClawMotor.

Lataa "Vaihtoehto 2" VEXcode EXP -projektitiedosto >

Vaihtoehto 2 -koodin selitys.

Koodipala

Selitys

Lähikuva vaihtoehdon 2 VEXcode EXP -projektin lohkojen pinosta. Kaksi lohkoa on korostettuna ja ne ovat pinon Forever-silmukan ulkopuolella. Ne lukevat "set ArmMotor stopping to hold" ja "set ClawMotor stopping to hold".

Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu.

Lähikuva vaihtoehdon 2 VEXcode EXP -projektin lohkojen pinosta. Pinon Forever-silmukan sisällä on korostettuna neljä lohkoa. He lukevat Ikuisesti, asettavat LeftMotor-nopeuden ohjaimen 3 asentoon %, pyörittävät LeftMotor-nopeutta eteenpäin, asettavat RightMotor-nopeuden ohjaimen 2 asentoon % ja pyörittävät RightMotor-nopeutta eteenpäin. EXP-ohjaimen kaavio, jossa sen painikkeet ja ohjaussauvat on merkitty. Näkymä on ohjaimen etuosasta. Vasemman joystickin akselit on merkitty numeroilla 3 ja 4. Vasemman joystickin keskimmäinen painike on merkitty L3:lla. Vasemman joystickin alla olevat kaksi pyöreää painiketta on merkitty ylös ja alas. Oikean joystickin akselit on merkitty numeroilla 1 ja 2. Oikean joystickin keskipainike on merkitty R3:lla. Oikean joystickin alla olevat kaksi pyöreää painiketta on merkitty kirjaimilla A ja B.

Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu.

Forever-silmukkaa käytetään jatkuvasti tarkistamaan, mitä painikkeita ohjaimessa painetaan.

[Set motor velocity] -lohkoja käytetään moottorin nopeuden asettamiseen nykyiseen Säätimen asentoon 2- ja 3-akselilla. Tämä vastaa auton käynnistämistä. Se ei välttämättä saa autoa liikkumaan, se vain asettaa sen.

Jokainen ohjaussauvan akseli palauttaa arvon välillä -100 - +100 ja palauttaa arvon nolla, kun se on keskitetty. Tämä tarkoittaa sitten sitä, että ohjaussauvan akselit ovat työnnettäessä -100 % - 100 %. Mitä kauemmas kohti 100 tai -100 akseleita työnnetään, sitä nopeammin moottori pyörii.

[Spin]-lohkoa käytetään sitten moottorin liikuttamiseen. Tämä vastaa auton kaasun painamista, kun suunta on asetettu. Näin jokaista moottoria voidaan ohjata yhdellä neljästä ohjainakselista.

Lähikuva vaihtoehdon 2 VEXcode EXP -projektin lohkojen pinosta. Pinon Forever-silmukan sisällä on korostettuna if, else if, else -lohko. Se lukee, jos ohjain ylös -painiketta painetaan, ArmMotor pyörii ylös, muuten, jos ohjain alas -painiketta painetaan, ArmMotor pyörii alas ja muuten ArmMotor pysäytetään.

Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu.

[If then else if then else] -lohkoa käytetään määrittämään tiettyjä toimintoja ohjaimen painikkeisiin, joita painetaan tai vapautetaan. Tässä koodin osassa asetetaan ehdot, jos painetaan ylös- tai alas-painikkeita. Jos näin on, tapahtuu tiettyjä käyttäytymismalleja, kuten käsivarren nostaminen ja laskeminen. Tilassa on myös toinen osa, jos kumpaakaan painiketta ei paineta, käsivarsi on asetettu pysähtymään.

Huomaa, että seuraava Claw-projektin koodiosa noudattaa samaa selitystä.

Yhteenveto vaihtoehdosta 2: Forever Loopin käyttö

Edut

Rajoitukset

Esimerkkitilanne

  • Voidaan asentaa räätälöityihin rakenteisiin, erityisesti voimansiirtoihin, joissa on yli 4 moottoria
  • Voi määrittää useita toimintoja yhdelle painikkeelle
  • Voi määrittää toimintoja ohjaimen eri akseleille (toisin kuin ainoat vaihtoehdot Left Arcade, Right Arcade, Split Arcade ja Tank Drive laitekokoonpanossa)
  • Vaatii jonkin verran koodaustietoa (ehdot, silmukat ja ohjaimen painikkeiden/joystickien tuntemus)
  • Mahdollisuus hitaampaan projektin suorittamiseen tai viive painikkeen vasteajassa. Koska kaikki komennot sisältyvät yhteen Forever-silmukkaan, koodin suorittaminen voi toimia hitaasti riippuen asetetuista ehdoista ja koodin pituudesta.
  • Ohjaimen käyttö räätälöidyn robotin kanssa, erityisesti epästandardin voimansiirron kanssa
  • Kun haluat määrittää yhdelle painikkeelle useita toimintoja. Esimerkiksi kun Ylös-painiketta painetaan, kynsi voi avautua, ajaa eteenpäin ja sitten sulkeutua kohteen ympärille.

Vaihtoehto 3: Tapahtumien käyttö

Jos haluat paljon räätälöintiä ohjaimellesi, Tapahtumien käyttö on sinulle paras vaihtoehto. Yksi painikkeen painallus voi laukaista useita robotin käyttäytymismalleja, kuten napin painalluksen avaamaan kynnen, nostamaan käsivarren ja ajamaan eteenpäin tietyn matkan. Jos yrität koodata useita toimintoja painiketta kohden Forever-silmukassa, projektin suorittaminen hidastuu dramaattisesti – tapahtumien avulla voit tehdä tämän tehokkaammin.

Tämä vaihtoehto käyttää Tapahtumia projektin kulun hajottamiseen. Tämä on samanlainen kuin Forever-silmukan käyttäminen, mutta mahdollistaa koodin järjestämisen, jotta painikkeen suorittaminen on nopeampi vasteaika. Nopeampi vasteaika tarkoittaa, että et näe viivettä Controller-painikkeiden painamisen ja robotin käyttäytymisen välillä. Tämä esimerkki näyttää samat käyttäytymiset kuin edellinen projekti, mutta tehty käyttämällä tapahtumia Forever Loopin sijaan.

VEXcode EXP -työtila, jossa on avattu Option 3 -lohkoprojekti. Projektissa on 11 pientä lohkopinoa ja siihen on konfiguroituja laitteita. Laitteet-valikko avautuu sivulle ja siinä luetellaan seuraavat laitteet: ArmMotor portissa 3, ClawMotor portissa 4, Controller, LeftMotor portissa 6 ja RightMotor portissa 10. Lopuksi on 11 pientä pinoa lohkoja, jotka käsittelevät ohjaimen syötettä. Ensimmäisessä pinossa lukee Käynnistyksen jälkeen aseta ArmMotor stopping arvoon pitää ja sitten ClawMotor stopping arvoon pitää. Toisessa pinossa lukee Kun ohjaimen akselia 3 muutetaan, aseta LeftMotor-nopeudeksi ohjaimen 3 asento % ja pyöritä sitten LeftMotoria eteenpäin. Kolmannessa pinossa lukee Kun ohjaimen akseli 2 muuttuu, aseta oikean moottorin nopeus ohjaimen 2 asentoon % ja pyöritä sitten oikeaa moottoria eteenpäin. Neljännessä pinossa lukee Kun ohjaimen yläpainiketta painetaan, ArmMotor pyörii ylös. Viidennessä pinossa lukee Kun ohjaimen yläpainike vapautetaan, ArmMotor pysäytetään. Kuudennessa pinossa lukee Kun ohjainpainiketta painetaan alas, pyöritä ArmMotoria alas. Seitsemännessä pinossa lukee Kun ohjainpainike vapautetaan, ArmMotor pysäytetään. Kahdeksannessa pinossa lukee Kun ohjaimen painiketta A painetaan, pyöritä kynsimoottoria auki. Yhdeksännessä pinossa lukee: Kun ohjaimen painike A vapautetaan, kynsimoottori pysäytetään. Kymmenennessä pinossa lukee Kun ohjaimen painiketta B painetaan, pyöritä kynsimoottoria kiinni. Yhdestoista ja viimeinen pino lukee: Kun ohjaimen painike B vapautetaan, kynsimoottori pysäytetään.

Lataa "Vaihtoehto 3" VEXcode EXP -projektitiedosto >

Vaihtoehto 3 -koodin selitys.

Koodipala

Selitys

Lähikuva yhdestä palikoiden pinosta Option 3 VEXcode EXP -projektissa. Pinossa lukee When started, set ArmMotor stopping to hold ja sitten ClawMotor stopping to hold.

Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu.

Lähikuva kahdesta palikoiden pinosta Option 3 VEXcode EXP -projektissa. Ensimmäisessä pinossa lukee Kun ohjaimen akselia 3 muutetaan, aseta vasemman moottorin nopeus ohjaimen 3 asentoon % ja pyöritä sitten vasenta moottoria eteenpäin. Toisessa pinossa lukee Kun ohjaimen akseli 2 muuttuu, aseta oikean moottorin nopeus ohjaimen 2 asentoon % ja pyöritä sitten oikeaa moottoria eteenpäin. EXP-ohjaimen kaavio, jossa sen painikkeet ja ohjaussauvat on merkitty. Näkymä on ohjaimen etuosasta. Vasemman joystickin akselit on merkitty numeroilla 3 ja 4. Vasemman joystickin keskimmäinen painike on merkitty L3:lla. Vasemman joystickin alla olevat kaksi pyöreää painiketta on merkitty ylös ja alas. Oikean joystickin akselit on merkitty numeroilla 1 ja 2. Oikean joystickin keskipainike on merkitty R3:lla. Oikean joystickin alla olevat kaksi pyöreää painiketta on merkitty kirjaimilla A ja B.

Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu.

{When controller axis} Tapahtumalohkoja käytetään tiettyjen toimintojen laukaisemiseen, kun yhtä ohjaimen neljästä akselista muutetaan ohjaussauvoja käyttämällä.

[Set motor velocity] -lohkoja käytetään moottorin nopeuden asettamiseen nykyiseen Säätimen asentoon A- ja D-akseleita pitkin. Tämä vastaa auton käynnistämistä. Se ei välttämättä saa autoa liikkumaan, se vain asettaa sen.

Jokainen ohjaussauvan akseli palauttaa arvon välillä -100 - +100 ja palauttaa arvon nolla, kun se on keskitetty. Tämä tarkoittaa sitten sitä, että ohjaussauvan akselit ovat työnnettäessä -100 % - 100 %. Mitä kauemmas kohti 100 tai -100 akseleita työnnetään, sitä nopeammin moottori pyörii.

[Spin]-lohkoa käytetään sitten moottorin liikuttamiseen. Tämä vastaa auton kaasun painamista, kun suunta on asetettu. Näin jokaista moottoria voidaan ohjata yhdellä neljästä ohjainakselista.

Lähikuva neljästä palikoiden pinosta Option 3 VEXcode EXP -projektissa. Ensimmäisessä pinossa lukee Kun ohjaimen yläpainiketta painetaan, ArmMotor pyörii ylös. Toisessa pinossa lukee Kun ohjaimen yläpainike vapautetaan, ArmMotor pysäytetään. Kolmannessa pinossa lukee Kun ohjainpainike alas painetaan, pyöritä ArmMotoria alas. Neljännessä pinossa lukee Kun ohjainpainike vapautetaan, ArmMotor pysäytetään.

Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu.

{When controller axis} Tapahtumalohkoja käytetään määrittämään tiettyjä toimintoja ohjaimen painikkeisiin, joita painetaan tai vapautetaan. Tässä koodin osassa asetetaan ehdot, jos painetaan ylös- tai alas-painikkeita. Jos näin on, tapahtuu tiettyjä käyttäytymismalleja, kuten käsivarren nostaminen, laskeminen tai pysähtyminen.

Huomaa, että Claw-projektin koodin viimeinen osa noudattaa samaa selitystä.

Yhteenveto vaihtoehdosta 3: Tapahtumien käyttö

Edut

Rajoitukset

Esimerkkitilanne

  • Voidaan asentaa räätälöityihin rakenteisiin, erityisesti voimansiirtoihin, joissa on yli 4 moottoria
  • Voi määrittää useita toimintoja yhdelle painikkeelle
  • Voi määrittää toimintoja ohjaimen eri akseleille (toisin kuin ainoat vaihtoehdot Left Arcade, Right Arcade, Split Arcade ja Tank Drive laitekokoonpanossa)
  • Nopeampi koodin suoritus ja siten painikkeiden reagointikyky (koska jokainen ehto kutsutaan erikseen eikä upotettu yhteen koodipinoon)
  • Vaatii eniten koodaustietoa valinnoista (ehdot, silmukat, tapahtumat ja ohjaimen painikkeiden/joystickien tuntemus)
  • Ohjaimen käyttö räätälöidyn robotin kanssa, erityisesti epästandardin voimansiirron kanssa
  • Kun haluat määrittää useita toimintoja yhdelle painikkeelle ilman viivettä. Esimerkiksi kun Ylös-painiketta painetaan, kynsi voi avautua, ajaa eteenpäin ja sitten sulkeutua kohteen ympärille.

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

Last Updated: