Vadnice za Blocks

Koda po meri za Controller v VEXcode IQ

Uporaba Controller-ja lahko olajša vožnjo in premikanje robota pri opravljanju naloge. Vendar ima program Drive določene omejitve, in glede na zgradbo robota ali nalogo, ki jo je treba opraviti, boste morda želeli drugačne kontrole. Programiranje Controller-ja vam omogoča, da ga optimizirate tako, da bo bolje ustrezal vašemu robotu in nalogi. V VEXcode IQ obstaja več načinov programiranja Controller-ja. Vsak ima svoje prednosti in omejitve, nekateri pa so za določene situacije primernejši glede na želeni rezultat.

Ta članek vas vodi skozi tri različne možnosti za programiranje Controller-ja po meri v VEXcode IQ. Vsaka metoda je opisana s svojimi prednostmi, omejitvami in primerom uporabe, ki vam bodo pomagali pri izbiri. Za namene tega članka so bili vsi prikazani primeri kode ustvarjeni za Clawbot. Iste koncepte pa je mogoče uporabiti tudi za številne druge zgradbe, ki jih najdete na builds.vex.com, ter za zgradbe po meri.

Možnost 1: Dodelitev gumbov v konfiguraciji naprave

Ta možnost je odlična, kadar uporabljate standardno zgradbo, kot je BaseBot ali Clawbot, in želite hitro začeti z delom.

Ta možnost vam omogoča, da v konfiguraciji naprave dodelite motorje, pogonski sistem ali skupine motorjev gumbom na Controller-ju. Za več informacij o dodelitvi gumbov Controller-ju v konfiguraciji naprave si oglejte ta članek.

VEXcode IQ Devices menu with the Controller options shown. The diagram of button controls shows that the two joysticks drive the robot in a tank drive configuration. The E axis buttons control an ArmMotorGroup, and the R axis buttons control a ClawMotor.

Povzetek možnosti 1: Dodelitev gumbov v konfiguraciji naprave

Prednosti

Omejitve

Primer situacije

  • Hitra nastavitev brez potrebe po programiranju

  • Najenostavnejša metoda

  • Enostavno prilagodljiva

  • Možnost dodelitve posameznih motorjev, standardnega pogonskega sistema in skupin motorjev gumbom

  • Dodelitve gumbov so omejene s številom gumbov na Controller-ju

  • Pogonski sistem ne sme presegati 4 motorjev in ga ni mogoče prilagoditi (podprt je samo standardni pogon, ne pa H-pogon, holonomni ali drugi pogonski sistemi po meri)

  • Upravljanje standardne zgradbe, kot je BaseBot, Clawbot ali preprosta priredba teh standardnih zgradb. Na primer BaseBot z vstopnim mehanizmom, pritrjenim na sprednji del in krmiljenim s skupino motorjev.

  • Hitro spreminjanje, kateri gumbi ustrezajo različnim vedenjem robota, brez obsežnega programiranja


Možnost 2: Uporaba zanke Forever

Če namesto standardne zgradbe uporabljate zgradbo po meri ali želite večjo možnost prilagajanja Controller-ja, je ta možnost dobra izbira. Uporaba zanke Forever je odličen uvod v ustvarjanje kode po meri za Controller.

Ta možnost postavi vse pogoje za Controller in z njim povezane gumbe v zanko Forever. To zagotavlja večjo prilagodljivost, zlasti pri zgradbi po meri, zahteva pa tudi določene izkušnje s programiranjem. Ena od stvari, ki jo je treba upoštevati pri tej možnosti, je dolžina in kompleksnost projekta. Več pogojev kot dodamo, daljši bo lahko sklop kode. To pomeni, da je treba več blokov izvršiti zaporedoma, kar pri večjem številu blokov lahko upočasni izvajanje projekta. Počasnejše izvajanje projekta lahko povzroči zamik med pritiskom gumbov na Controller-ju in opaznim odzivom robota.

Spodaj prikazani primer je eden od načinov, kako lahko z zanko Forever in robotom z zgradbo po meri (npr. robotom z nestandardnim pogonskim sistemom) vozite robota ter upravljate klješče in roko za interakcijo s predmeti.

VEXcode IQ Workspace with the Option 2 blocks project opened. The project has a stack of blocks and it has configured devices. The Devices menu is opened to the side and lists the following devices: IQ 2nd gen Brain, ClawMotor on port 4, ArmMotor on port 10, Controller, LeftMotor on port 1, and RightMotor on port 6. Lastly there is the stack of blocks to handle the controller input. The stack reads When started, set ArmMotor stopping to hold and set ClawMotor stopping to hold. The rest of the stack is contained in a Forever loop. It reads Forever, set LeftMotor velocity to Controller A position %, spin LeftMotor forward, set RightMotor velocity to Controller D position %, and spin RightMotor forward. Next, if Controller E Up pressed then spin ArmMotor up, else if Controller E Down pressed then spin ArmMotor down, else stop ArmMotor. Lastly, if Controller F Up pressed then spin ClawMotor open, else if Controller F Down pressed then spin ClawMotor close, and else stop ClawMotor.

Prenesite projektno datoteko VEXcode IQ (2. generacija) »Možnost 2« >

Opomba: Če uporabljate Clawbot 1. generacije, bo treba motor roke obrniti v konfiguraciji naprave, da bo projekt deloval tako, kot je predvideno.

Razlaga kode za možnost 2.

Del kode

Razlaga

Close up of the stack of blocks in the Option 2 VEXcode IQ project. Two blocks are highlighted and are outside of the stack's Forever loop, they read set ArmMotor stopping to hold and set ClawMotor stopping to hold.

Za ta primer kode je bil uporabljen Clawbot. Ko se gumbi na Controller-ju uporabljajo za dvigovanje in spuščanje roke, se ta takoj po sprostitvi gumba zaradi gravitacije spusti nazaj. Nastavitev zaustavitvenega načina za roko in klješče na »hold« zagotavlja, da oba ostaneta na mestu tudi po sprostitvi gumbov na Controller-ju.

Close up of the stack of blocks in the Option 2 VEXcode IQ project. Four blocks are highlighted inside the stack's Forever loop. They read Forever, set LeftMotor velocity to Controller A position %, spin LeftMotor forward, set RightMotor velocity to Controller D position %, and spin RightMotor forward. Diagram of the IQ (2nd Gen) Controller with its buttons and joysticks labeled. The view is from the front of the controller. The left joystick's axes are labeled as A and B. The left joystick's center button is labeled L3. The two round buttons below the left joystick are labeled E Up and E Down. The right joystick's axes are labeled as C and D. The right joystick's center button is labeled R3. The two round buttons below the right joystick are labeled F Up and F Down.

Za ta primer kode je bil uporabljen Clawbot. Ko se gumbi na Controller-ju uporabljajo za dvigovanje in spuščanje roke, se ta takoj po sprostitvi gumba zaradi gravitacije spusti nazaj. Nastavitev zaustavitvenega načina za roko in klješče na »hold« zagotavlja, da oba ostaneta na mestu tudi po sprostitvi gumbov na Controller-ju.

Zanka Forever se uporablja za neprekinjeno preverjanje, kateri gumbi so pritisnuti na Controller-ju.

Bloki [Set motor velocity] se uporabljajo za nastavitev hitrosti motorja na trenutni položaj Controller-ja vzdolž osi A in D. To je enakovredno preklopa avtomobila v vožnjo. S tem se avto ne premakne, ampak se le nastavi.

Vsaka os palice vrača vrednost med -100 in +100 ter vrne vrednost nič, ko je v sredinskem položaju. To pomeni, da osi palice, ko so potisnjene, ustrezajo vrednostim od -100 % do 100 %. Čim bolj je os potisnjena proti 100 ali -100, tem hitreje se bo vrtel motor.

Blok [Spin] se nato uporablja za dejansko premikanje motorja. To je enakovredno pritisku na pedal za plin, ko je smer že nastavljena. To omogoča, da je vsak motor krmiljan z eno od štirih osi Controller-ja.

Close up of the stack of blocks in the Option 2 VEXcode IQ project. An if, else if, else block is highlighted inside the stack's Forever loop. It reads if Controller E Up pressed then spin ArmMotor up, else if Controller E Down pressed then spin ArmMotor down, and else stop ArmMotor.

Za ta primer kode je bil uporabljen Clawbot. Ko se gumbi na Controller-ju uporabljajo za dvigovanje in spuščanje roke, se ta takoj po sprostitvi gumba zaradi gravitacije spusti nazaj. Nastavitev zaustavitvenega načina za roko in klješče na »hold« zagotavlja, da oba ostaneta na mestu tudi po sprostitvi gumbov na Controller-ju.

Blok [If then else if then else] se uporablja za dodelitev določenih vedenj pritisku ali sprostitvi gumbov na Controller-ju. V tem delu kode so nastavljeni pogoji za gumba E Up in E Down. Ob pritisku pride do določenih vedenj, kot sta dvigovanje in spuščanje roke. Prisoten je tudi del else: če noben gumb ni pritisnjen, se roka ustavi.

Upoštevajte, da naslednji del kode v projektu za klješče sledi enaki razlagi.

Povzetek možnosti 2: Uporaba zanke Forever

Prednosti

Omejitve

Primer situacije

  • Primerna za zgradbe po meri, zlasti za pogonske sisteme z več kot 4 motorji

  • Možnost dodelitve več vedenj enemu samemu gumbu

  • Možnost dodelitve vedenj različnim osem na Controller-ju (za razliko od edino razpoložljivih možnosti Left Arcade, Right Arcade, Split Arcade in Tank Drive v konfiguraciji naprave)

  • Zahteva določeno znanje programiranja (pogojni stavki, zanke in poznavanje gumbov/palice na Controller-ju)

  • Možno počasnejše izvajanje projekta ali zamik pri odzivu gumbov. Ker so vse ukaze vsebovane znotraj ene same zanke Forever, je izvajanje kode lahko počasno glede na nastavljene pogoje in dolžino kode.

  • Uporaba Controller-ja z robotom po meri, zlasti z nestandardnim pogonskim sistemom

  • Kadar želite enemu gumbu dodeliti več vedenj. Na primer, ob pritisku gumba F Up se klješče odprejo, robot vozi naprej in se nato zapre okoli predmeta.


Možnost 3: Uporaba dogodkov

Če želite Controller zelo prilagoditi, je uporaba dogodkov najboljša možnost za vas. En pritisk gumba lahko sproži več vedenj robota hkrati, na primer pritisk gumba za odpiranje klešč, dvigovanje roke in vožnjo naprej za določeno razdaljo. Programiranje več vedenj na gumb znotraj zanke Forever bi močno upočasnilo izvajanje projekta – uporaba dogodkov vam to omogoča učinkoviteje.

Ta možnost uporablja dogodke za razporeditev poteka projekta. To je podobno uporabi zanke Forever, a omogoča bolj organizirano kodo, tako da je odzivni čas ob pritisku gumba hitrejši. Hitrejši odzivni čas pomeni, da ne bo prišlo do zamika med pritiskom gumbov na Controller-ju in opaznim odzivom robota. Ta primer prikazuje enaka vedenja kot prejšnji projekt, a z dogodki namesto zanke Forever.

VEXcode IQ Workspace with the Option 3 blocks project opened. The project has 11 small stacks of blocks and it has configured devices. The Devices menu is opened to the side and lists the following devices: IQ 2nd gen Brain, ClawMotor on port 4, ArmMotor on port 10, Controller, LeftMotor on port 1, and RightMotor on port 6. Lastly there are the 11 small stacks of blocks that handle Controller input. The first stack reads When started, set ArmMotor stopping to hold and then set ClawMotor stopping to hold. The second stack reads When controller axis A is changed, set LeftMotor velocity to Controller A position % and then spin LeftMotor forward. The third stack reads When Controller D is changed, set RightMotor velocity to Controller D position % and then spin RightMotor forward. The fourth stack reads When Controller button E Up pressed, spin ArmMotor up. The fifth stack reads When Controller button E Up released, stop ArmMotor. The sixth stack reads When Controller button E Down pressed, spin ArmMotor down. The seventh stack reads When Controller button E Down released, stop ArmMotor. The eighth stack reads When Controller button F Up pressed, spin ClawMotor open. The ninth stack reads When Controller button F Up released, stop ClawMotor. The tenth stack reads When Controller Button F Down pressed, spin ClawMotor close. The eleventh and final stack reads When Controller button F Down released, stop ClawMotor.

Prenesite projektno datoteko VEXcode IQ (2. generacija) »Možnost 3« >

Opomba: Če uporabljate Clawbot 1. generacije, bo treba motor roke obrniti v konfiguraciji naprave, da bo projekt deloval tako, kot je predvideno.

Razlaga kode za možnost 3.

Del kode

Razlaga

Close up of one stack of blocks in the Option 3 VEXcode IQ project. The stack reads When started, set ArmMotor stopping to hold and then set ClawMotor stopping to hold.

Za ta primer kode je bil uporabljen Clawbot. Ko se gumbi na Controller-ju uporabljajo za dvigovanje in spuščanje roke, se ta takoj po sprostitvi gumba zaradi gravitacije spusti nazaj. Nastavitev zaustavitvenega načina za roko in klješče na »hold« zagotavlja, da oba ostaneta na mestu tudi po sprostitvi gumbov na Controller-ju.

Close up of two stacks of blocks in the Option 3 VEXcode IQ project. The first stack reads When Controller axis A is changed, set Left Motor velocity to Controller A position % and then spin LeftMotor forward. The second stack reads When Controller axis D is changed, set RightMotor velocity to Controller D position % and then spin RightMotor forward. Diagram of the IQ (2nd Gen) Controller with its buttons and joysticks labeled. The view is from the front of the controller. The left joystick's axes are labeled as A and B. The left joystick's center button is labeled L3. The two round buttons below the left joystick are labeled E Up and E Down. The right joystick's axes are labeled as C and D. The right joystick's center button is labeled R3. The two round buttons below the right joystick are labeled F Up and F Down.

Za ta primer kode je bil uporabljen Clawbot. Ko se gumbi na Controller-ju uporabljajo za dvigovanje in spuščanje roke, se ta takoj po sprostitvi gumba zaradi gravitacije spusti nazaj. Nastavitev zaustavitvenega načina za roko in klješče na »hold« zagotavlja, da oba ostaneta na mestu tudi po sprostitvi gumbov na Controller-ju.

Bloki za dogodke {When controller axis} se uporabljajo za sprožitev določenih vedenj, ko se ena od štirih osi na Controller-ju spremeni z uporabo palice.

Bloki [Set motor velocity] se uporabljajo za nastavitev hitrosti motorja na trenutni položaj Controller-ja vzdolž osi A in D. To je enakovredno preklopa avtomobila v vožnjo. S tem se avto ne premakne, ampak se le nastavi.

Vsaka os palice vrača vrednost med -100 in +100 ter vrne vrednost nič, ko je v sredinskem položaju. To pomeni, da osi palice, ko so potisnjene, ustrezajo vrednostim od -100 % do 100 %. Čim bolj je os potisnjena proti 100 ali -100, tem hitreje se bo vrtel motor.

Blok [Spin] se nato uporablja za dejansko premikanje motorja. To je enakovredno pritisku na pedal za plin, ko je smer že nastavljena. To omogoča, da je vsak motor krmiljan z eno od štirih osi Controller-ja.

Close up of four stacks of blocks in the Option 3 VEXcode IQ project. The first stack reads When Controller button E Up pressed, spin ArmMotor up. The second stack reads When Controller button E Up released, stop ArmMotor. The third stack reads When Controller button E Down pressed, spin ArmMotor down. The fourth stack reads When Controller button E Down released, stop ArmMotor.

Za ta primer kode je bil uporabljen Clawbot. Ko se gumbi na Controller-ju uporabljajo za dvigovanje in spuščanje roke, se ta takoj po sprostitvi gumba zaradi gravitacije spusti nazaj. Nastavitev zaustavitvenega načina za roko in klješče na »hold« zagotavlja, da oba ostaneta na mestu tudi po sprostitvi gumbov na Controller-ju.

Bloki za dogodke {When controller axis} se uporabljajo za dodelitev določenih vedenj pritisku ali sprostitvi gumbov na Controller-ju. V tem delu kode so nastavljeni pogoji za gumba E Up in E Down. Ob pritisku pride do določenih vedenj, kot so dvigovanje, spuščanje ali zaustavitev roke.

Upoštevajte, da zadnji del kode v projektu za klješče sledi enaki razlagi.

Povzetek možnosti 3: Uporaba dogodkov

Prednosti

Omejitve

Primer situacije

  • Primerna za zgradbe po meri, zlasti za pogonske sisteme z več kot 4 motorji

  • Možnost dodelitve več vedenj enemu samemu gumbu

  • Možnost dodelitve vedenj različnim osem na Controller-ju (za razliko od edino razpoložljivih možnosti Left Arcade, Right Arcade, Split Arcade in Tank Drive v konfiguraciji naprave)

  • Hitrejše izvajanje kode in s tem hitrejša odzivnost gumbov (saj se vsak pogoj kliče ločeno in ni vgrajen v en sam sklop kode)

  • Zahteva največ znanja programiranja od vseh možnosti (pogojni stavki, zanke, dogodki in poznavanje gumbov/palice na Controller-ju)

  • Pri uporabi Brain-a VEX IQ 1. generacije lahko preveč dogodkov v projektu povzroči, da se projekt ne zažene, kar je posledica omejitev procesorske zmogljivosti Brain-a.

  • Uporaba Controller-ja z robotom po meri, zlasti z nestandardnim pogonskim sistemom

  • Kadar želite enemu gumbu dodeliti več vedenj brez zamika. Na primer, ob pritisku gumba F Up se klješče odprejo, robot vozi naprej in se nato zapre okoli predmeta.

Spletna trgovina

Potrebujete dodatne dele?

Originalni VEX deli, razširitveni seti in kompleti — vse za vaš naslednji robotski projekt na trgovina.robotech.si.

Pripravil RoboTech STEM Center
Stopite v stik

Imate
vprašanje?

Pišite nam — odgovorimo v najkrajšem možnem času.

Vaši podatki so varni in zaupni.