Kodu - Remondi ajalugu
Proportsionaalne integraalne diferentsiaalne PID-kontroller Lego Mindstorms Roboticsis. Proportsionaalne kontroller. Rahvusvahelised robotivõistlused - Reeglid - Robotite näited - Trajektoorirobot LEGO EV3 Proportsionaalse p programmi alusel

Robootika on uus huvitav suund, mis ilmselt areneb selle raames edasi koolikursused arvutiteadus ja tehnoloogia. Robootika buum on suuresti tingitud asjaolust, et see võimaldab meil vastata küsimusele: "Miks me tegelikult programmeerimist õpime?" Lisaks saab robootika käigus tutvuda teooria elementaarmõistetega.

automaatjuhtimine

Sellel lehel esitletakse autori poolt välja töötatud programmeerimissimulaatoreid ja Arduino tahvleid. Need võivad aidata juhtudel, kui mingil põhjusel pole võimalik päris riistvara kasutada. Simulaatorid kasutavad HTML5 võimalusi, nii et need töötavad ainult sees kaasaegsed brauserid(parim kasutada Google Chrome).

või Mozilla Firefox

Uudised
nüüd ka Telegrami kanalis 27. november 2015 Simulaatoritesse on lisatud lugu “embrüo” (

M.V. Lazarev
, Orekhovo-Zuevo).
Lisandunud on uued simulaatorid - kahe, kolme, nelja valgussensoriga LEGO robotid.

Roboti juhtimise keel

Robotite juhtimiseks simulaatorites kasutatakse lihtsat programmeerimiskeelt, mis sai töönime SiRoP (Lihtne robotite programmeerimine).

Valgusanduriga robotjuhtimine

Valgusandur võimaldab robotil navigeerida laua pinnal, näiteks liikuda mööda valge ja musta ala piiri (mööda musta joone serva). Fotodiood valgustab pinda, fotodetektor “peegeldab kinni” ja mõõdab nende intensiivsust.

Seda tüüpi kõige populaarsem ülesanne on mööda joont liikumine. Simulaatori abil saate uurida erinevaid juhtimisseadusi - relee-, proportsionaalne ja isegi PID-juhtimine (proportsionaalne-integraal-tuletis).

Näiteid programmidest valgussensoriga robotile

Kuigi 1 (kui andur > 128 (mootor = 100 mootor = 0), muidu (mootor = 0 mootor = 100) oodake (10))

KP = 0,2, samas kui 1 (u = kP*(sensor-128) mootor = 50 + u mootor = 50 - u ootama(20))

Peamine ( samas kui 1 ( samas kui andur > 128 ( mootor = 100 mootor = 100 oota(10) ) tagasi() turn() ) ) tagasi ( mootor = -100 mootor = -100 oota(260) ) pööre ( mootor = -50 mootor = 50 ootama(50))

Roboti juhtimine kahe valgusanduriga

Kaks valgussensorit võimaldavad robotil paremini navigeerida ja mööda õhukest joont sõita. Neid tuuakse veidi ettepoole ja laiutatakse külgedele. Nagu ühe anduri probleemide puhul, saab seda simulaatorit kasutada erinevate juhtimisseaduste uurimiseks.

Näited programmidest kolme valgusanduriga robotile

Nelja valgusanduriga robotjuhtimine

Neli valgussensorit võimaldavad robotil teravaid pöördeid paremini tuvastada. Peenreguleerimiseks kasutatakse siseandureid; nende jaoks kasutatakse proportsionaalset juhtimist. Kaks väline andur veidi ettepoole kantud ja külgedele levinud. Neid kasutatakse järsu pöörde korral. Välise paari andurite näitude põhjal kontrolli võimendus valitakse suuremaks kui sisemise paari puhul (vt. L.Yu. Ovsyanitskaya et al., Algoritmid ja programmid Lego Mindstorms EV3 roboti joonel liikumiseks, M.: "Pero", 2015).

Näiteid programmidest nelja valgusanduriga robotile

Kuigi 1 ( d0 = andur > 128 d1 = andur > 128 d2 = andur > 128 d3 = andur > 128, kui d1 & !d2 ( mootor = 100 mootor = 0 ), kui! d1 & d2 ( mootor = 0 mootor = 100 ) kui d1 == d2 ( mootor = 100 mootorit = 100 ) kui d0 & !d3 ( mootor = 30 mootor = 0 ) kui!d0 & d3 ( mootor = 0 mootor = 30 ) oota(10) )

K1 = 0,2 k2 = 0,4, samas kui 1 (u1 = andur - andur u2 = andur - anduri mootor = 50+k1*u1+k2*u2 mootor = 50-k1*u1-k2*u2 oota (10) )

Roboti juhtimine kaugusanduriga (sonar)

Kaugusandur (sonar) võimaldab roboti liikumise ajal määrata kaugust lähima takistuseni. See kiirgab ultraheli signaali ja võtab vastu peegeldunud signaali. Mida pikem on väljastatavate ja vastuvõetud signaalide vaheline aeg, seda suurem on vahemaa.

Distantsianduri abil saab robotit programmeerida automaatselt navigeerima teadaoleva kujuga, kuid tundmatu suurusega labürindis.

See probleem on klassikaline, ideoloogiliselt lihtne, seda saab mitu korda lahendada ja iga kord avastad midagi uut.

Järgmise joone probleemi lahendamiseks on palju lähenemisviise. Neist ühe valik sõltub roboti konkreetsest disainist, andurite arvust, nende asukohast rataste ja üksteise suhtes.

Meie näites analüüsitakse kolme roboti näidet Robot Educatori peamise haridusmudeli alusel.

Alustuseks paneme kokku õpperoboti Robot Educator põhimudeli, selleks saate kasutada juhiseid tarkvara MINDSTORMS EV3.

Samuti vajame näiteks EV3 valgusvärvi andureid. Need valgusandurid, nagu ükski teine, sobivad meie ülesandeks kõige paremini nendega töötades, me ei pea muretsema ümbritseva valguse intensiivsuse pärast. Selle anduri puhul kasutame programmides peegeldunud valguse režiimi, milles hinnatakse anduri punasest taustvalgusest peegelduva valguse hulka. Anduri näitude piirid on 0 - 100 ühikut, vastavalt "ei peegeldu" ja "täielik peegeldus".

Näitena analüüsime 3 näidet programmidest, mis võimaldavad liikuda mööda musta trajektoori, mis on kujutatud tasasel heledal taustal:

· Üks andur, P-regulaatoriga.

· Üks andur, PC regulaatoriga.

· Kaks andurit.

Näide 1. Üks andur, P-regulaatoriga.

Disain

Valgusandur on paigaldatud mudelil mugavalt paiknevale talale.


Algoritm

Algoritmi töö põhineb asjaolul, et sõltuvalt anduri valgusvihu musta joonega kattumise astmest varieeruvad anduri poolt tagastatavad näidud gradientselt. Robot hoiab valgusanduri asendit musta joone piiril. Valgusanduri sisendandmeid teisendades genereerib juhtsüsteem roboti pöördekiiruse väärtuse.


Kuna reaalsel trajektooril genereerib andur väärtusi kogu oma töövahemikus (0-100), siis valitakse väärtuseks, milleni robot püüdleb, 50. Sel juhul genereeritakse pöörlemisfunktsioonidele edastatavad väärtused vahemikus -50 - 50, kuid nendest väärtustest ei piisa trajektoori järsuks pööramiseks. Seetõttu tuleks vahemikku poolteist korda laiendada -75 - 75-ni.

Selle tulemusena on programmis kalkulaatori funktsioon lihtne proportsionaalne kontroller. mille funktsioon ( (a-50)*1,5 ) genereerib valgusanduri tööpiirkonnas pöörlemisväärtusi vastavalt graafikule:

Algoritmi toimimise näide

Näide 2. Üks andur, PK regulaatoriga.

See näide põhineb samal konstruktsioonil.

Tõenäoliselt märkasite, et eelmises näites kõikus robot liigselt, mis ei võimaldanud tal piisavalt kiirendada. Nüüd proovime seda olukorda veidi parandada.

Meie proportsionaalkontrollerile lisame ka lihtsa kuubikontrolleri, mis lisab kontrolleri funktsioonile mõningast paindumist. See vähendab roboti õõtsumist trajektoori soovitud piiri lähedal ning teeb sellest kaugel eemal olles tugevamaid tõmblusi.

Proportsionaalne kontroller on seade, mis teostab objektile juhtimistoimingu u(t) võrdeliselt selle lineaarse kõrvalekaldega e(t) antud olekust x0(t);

e(t)=x0(t)-x(t), kus x(t) on olek antud ajahetkel;

u(t)=ke(t), kus k on võimendustegur.
Ehk mida rohkem robot etteantud kursilt kõrvale kaldub, seda aktiivsemalt peavad mootorid selle tasandamiseks töötama.

Joone liikumine ühe valgusanduriga P-kontrolleri abil

Liikumise piki mustvalge piiri saab üles ehitada ka P-regulaatorile. Kuigi väliselt näib probleem olevat lahendatav ainult releekontrolleri abil, kuna süsteemil on inimsilmale nähtavad vaid kaks olekut: must ja valge. Kuid robot näeb kõike teisiti, sest nende värvide vahel pole teravat piiri. Võime öelda, et ta on lühinägelik ja näeb hallide varjundite gradiendi üleminekut.

See aitab luua P-regulaatori.
Defineerides tööoleku valgusanduri näitudena, õpime mootoritele proportsionaalset juhtimisefekti avaldama vastavalt järgmisele seadusele:
e=s1-grey, kus s1 on praeguse anduri näidud ja hall on seatud väärtus.

Koefitsient k (võrdne selles näites 2) peaks olema piisavalt väike (1 kuni 3). Selline regulaator töötab efektiivselt vaid väikeste läbipaindenurkade korral, seega tuleb robot paigutada liikumissuunas nii, et andur oleks musta joone vasakul pool. On lihtne märgata, et liikumine mööda joont P-regulaatoril on sujuv. ja mõnes töövaldkonnas liigub see peaaegu lineaarselt või täpselt joone kõverusi järgides.

Anduri kalibreerimine

Vaatame valemis kasutatud arvu 48. See on valgusanduri näidu aritmeetiline keskmine mustvalgelt, näiteks (40+56)/2=48. Andurite näidud muutuvad aga sageli tänu erinevatel põhjustel: erinev pind, ruumi üldvalgustuse muutus, disaini väike muudatus jne. Seetõttu kalibreerime robotit käsitsi, määrates valge ja musta valgusanduri näidud.

Joone liikumine kahe valgusanduriga P-kontrolleri abil
Ühe valgusanduriga on ristmikul üsna keeruline õigesti liigelda. Kui soovite seda teha piisavalt suure kiirusega, on teil vaja vähemalt kahte andurit, mis on paigutatud kahe joonelaiuse (või laiema) kaugusele.
Sõidu ajal on võimalik neli anduri olekut:

  • mõlemad valgel - liikudes otse;
  • vasak (s1) mitte mustal, parem (s2) valgel - liikumine vasakule;
  • vasak valgel, parem mustal - liikumine paremale;
  • mõlemad mustal - otse edasi.
See. võrdsete andurite näitudega (mõlemad valged või mõlemad mustad) sõidab robot otse. Enne roboti käivitamist kalibreerime mõlemad andurid automaatselt. Siis näeb P-regulaatoriga mööda joont liikumise algoritm välja järgmine:

Koefitsient k võib varieeruda üsna laias vahemikus (1 kuni 20 või rohkem) olenevalt joone kõverusest, roboti manööverdusvõimest ning musta ja valge erinevusest väljal.
Oluline tingimus. Automaatne kalibreerimine tuleks läbi viia ühevärvilisel pinnal ja eelistatavalt valgustuse juures, mis võtab enda alla tee suurima osa. Näiteks kui robot liigub mööda musta joont valgel väljal, siis tuleb see kalibreerida valgel väljal. Need. Roboti asukoht alguses peaks olema järgmine:


Ja veel üks märkus. On andureid, mille näidud erinevad 10-20%. Soovitav on neid mitte siduda suure koefitsiendiga regulaatoriga, kuna üldise valgustuse järsu muutumise korral võivad isegi ühtlasel valgel väljal kõrvalekalded olla erinevad, mis toob kaasa ootamatuid tagajärgi. Üksikasjad Autor: Konovalov Igor     Proportsionaalne kontroller on edasiminek. Relee peamine puudus on see, et see ei hooli sellest, kuidas praegused väärtused erinevad anduri normaalväärtusest. Sellel on ainult kaks olekut - kas proovige anduri väärtusi teatud konstantse arvu võrra suurendada, kui need on normaalväärtusest väiksemad, või suurendage seda. Seetõttu tekivad võnkumised konstantse amplituudiga, mis on väga ebaefektiivne.
    Palju loogilisem on kindlaks teha, kui kaugel on praegused näidud normaalsest, ja muuta sellest sõltuvalt amplituudi. Et see oleks selgem, vaatame näidet. Näide, nagu ka eelmises artiklis, on sama: Lego Mindstorms EV3 robot sõidab valgusrežiimis ühte värviandurit kasutades mööda musta joont.

Robot üritab sõita mööda valge ja musta piiri ning seal näitab andur ligikaudu 50% valgustusest. Ja mida kaugemal see tavaasendist on, seda rohkem pingutab robot, et 50% juurde naasta.
    Programmi kirjutamiseks kasutame mõisteid “viga” ja “kontrollitoiming”. Viga on erinevus praeguse anduri näidu ja tavalise vahel. Meie puhul, kui robot näeb nüüd 20% valgustusest, siis viga on 20-50 = -30%. Veamärk näitab, mis suunas peaks robot veast vabanemiseks pöörama. Nüüd tuleb öelda mootoritele, mis suunas, millise kiirusega ja kui järsult robotit keerata. Mootoreid on vaja kontrollida, mis tähendab, kui kiiresti peaks see oma tavaasendisse naasma. Juhttegevus (UP) arvutatakse vea (viga) korrutamisel proportsionaalsusteguriga (k). Seda koefitsienti kasutatakse vea mõju suurendamiseks või vähendamiseks juhtimistoimingule. Juhttoiming edastatakse juhtimine, kus on määratud roboti keskmine kiirus.
    Kuidas proportsionaalsustegurit reguleerida? Valige katseliselt väärtused trajektoori läbimiseks, see võib sõltuvalt roboti kiirusest ja konstruktsioonist olla näiteks 0,2 kuni 1,5. Kui koefitsient on liiga suur, siis robot kõigutab palju, kui on väike, siis sõidab sujuvalt, kuid mingil hetkel libiseb ebapiisava juhtimissisendi tõttu keerates maha. Kirjutame programmi kaks versiooni - muutujatega (neile, kes on neid juba õppinud) ja ilma.


    Kuid seda regulaatorit saab tugevdada ka proportsionaalse ja lahutamatu komponendi kasutuselevõtuga, seda kirjeldatakse järgmistes artiklites. Kohtumiseni!

Proportsionaalne kontroller

Kirjeldus

Automaatjuhtimise korral on juhtimistoiming u(t) tavaliselt dünaamilise vea funktsioon - juhitava muutuja x(t) kõrvalekalle e(t) seatud väärtusest x0(t):

e(t) = x0(t) – x(t).

See on kõrvalekaldega reguleerimise Polzunov-Watti põhimõte ehk tagasiside põhimõte. Soovitud juhtimistoimingu u0(t) funktsionaalse sõltuvuse matemaatilist väljendust kontrolleri poolt mõõdetud suurustest nimetatakse ülalpool käsitletud seaduseks või juhtimisalgoritmiks.

Proportsionaalne kontroller on seade, mis kontrollib objekti proportsionaalselt selle kõrvalekaldega antud olekust:

Siin k on kontrolleri võimendus.

Antud olekut x0 nimetatakse tavaliselt sättepunktiks ja kõrvalekallet sellest e jääkväärtuseks. Edaspidi tähistame täpsuse huvides jääki lühendiga err (alates Ingliskeelne sõna"viga" - viga).

Mootori juhtimine

Kogenud sõdalane ei löö mõõka nagu releekontrolleri robot. Peame välja mõtlema algoritmi, mis hoiab mõõka hoidvat mootorit rangelt fikseeritud asendis (joonis 7.1). P-regulaator aitab selles.

Olgu e 1 - mootori A kiirusanduri 1 näidud reguleeritav muutuja. Seadistus x0 = 45 ja jääk e = 45 – e 1. Seejärel antakse mootori juhtimine valemiga

u = k ∙ (45 – e 1).

Siin on k võimendustegur, näiteks 5, mis suurendab mootori reaktsiooni isegi väikeste kõrvalekallete korral seadeväärtusest.

1 Ärge ajage segi jääkväärtuse e (veast) matemaatilist tähistust kodeerija e 1 (kooderist) näitudega, mis on etteantud Robolabi keskkonnamuutuja.

Kui sees on kõrvalekalle positiivne pool mootorile rakendatakse negatiivset juhtjõudu ja vastupidi. Seda juhtimist saab rakendada mootorile tsüklina lühikese viivitusega 1-10 ms, et kontrollerit vabastada (joonis 7.8).

Riis. 7.8. Mootori juhtimise algoritm proportsionaalse kontrolleri abil.

Kui võimendustegurit suurendatakse 5-lt 100-le, hakkab meie proportsionaalne kontroller toimima releena, põhjustades ülelöögiefekti tõttu tugevaid kõikumisi.

RobotC keeles pole kodeerija lugemiseks nii mugavat tähistust kui Robolabis, seega näeb programm veidi pikem välja:

int k=5, u; nMotorEncoder=0; samas (tõsi)

u=k*(45-nMotorencoder); mootor=u;

Edasi piisab “mõõgaga löögi” andmiseks, kui numbri 45 asemel on muutuja ja muuta selle väärtust väljastpoolt, näiteks paralleelülesandest. Seda käsitletakse 8. peatüki robottrummareid käsitlevas jaotises.

Nüüd ehitame kontrolleri, mis juhib mitte ainult mootori staatilist asendit, vaid ka selle liikumiskiirust. Algoritmi loogikat järgides peaks seadeväärtus, mis seni on olnud konstantne ega ole muutunud, hakkama liikuma tõusu või languse suunas. Regulaatorit järgides järgib mootor seda paratamatult. Lihtsaim tööriist seadeväärtuse pidevaks suurendamiseks on taimer.

NXT kontrolleril on neli sisseehitatud taimerit, millest igaüks suudab mõõta aega sekundi kümnendikku, sajandikku ja tuhandikku. Käsitleme esimest taimerit, mis sooritab 10 "näpunäidet" sekundis.

kov". Robolabis on see tähistatud T1 või Timer100ms1 ja RobotC-s on see timer100.

Muudame mootori läbipaindenurga alfa, mis on määratud eelmises näites 45 juures, sõltuvaks kiirenduskoefitsiendiga k 2 taimeri näitudest:

alfa = k2 ∙ T1.

Juhtimine jääb samaks võimendusteguriga k 1:

u = k 1 ∙ (alfa – e 1).

Lühidalt, programmis Robolab keeles rakendame juhtimistoimingu otse mootorile, olles eelnevalt taimeri initsialiseerinud

Riis. 7.9. Mootori kiiruse reguleerimine on üks pööre sekundis.

Koefitsient k 2 = 36 määrab, et sekundiga tõuseb alfa väärtus 360-ni, mis vastab mootori ühele täispöördele:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer(T1); samas (tõsi)

alfa=taimer100*k2; u=k1*(alpha-nMotorEncoder); mootor=u;

Kasutades täisarvude jagamist, nagu C-s (ja Robolabis) täisarvu tüüpi muutujate jaoks vastu võetud, on võimalik saavutada diskreetseid nurgamuutusi, s.t. suurendab seda üks kord sekundis:

alfa = T 1 / 10 ∙ k 2.

Koefitsiendi k 2 = 60 korral vastab kiire liikumine kella sihverplaadi sekundiosuti liikumisele. Aga sellest ei piisa

märgatav. Selguse huvides saate määrata k2 = 30, siis teeb nool täispöörde 12 "tiks", igaüks 30 kraadi. Olge täisarvude jagamise ja korrutamise järjekorraga ettevaatlik;

Riis. 7.10. Kellaosuti liikumise kiirendatud jäljendamine.

Ja lõpuks näide matemaatilisest trummarist. Selle asemel, et pidevalt edasi liikuda, hakkab nõel P-regulaatori kontrolli all edasi-tagasi võnkuma. Sellele aitab kaasa jäägiga jagamine, mida C-s tähistatakse % märgiga. Mittenegatiivse täisarvu ülejäänud osa, mis on jagatud 2-ga, on alati 0 või 1:

alfa = T 1% 2 ∙ k 2.

Suurendades kõrvalekallet k 2 = 15 korda, saame võnkuva sättepunkti alfa, mis sunnib kontrollerit mootorit 5 korda sekundis liigutama, kas 0º või 15 kraadi. Muudatused programmis on väikesed. Vaatame näidet RobotC-s:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer(T1); samas (tõsi)

alfa=taimer100%2*k2; u=k1*(alpha-nMotorEncoder); mootor=u;

See trummari prototüüp lööb lauale regulaarsete ajavahemike järel. Peaasi on alustada õigest asendist. Täisarvude matemaatika abil saate määrata näiteks keerukama rütmimustri (tabel 7.1):

alfa = T 1% 5% 2 ∙ k 2.

keskpunkt = S3.

Koefitsient määratakse tsüklis:

k 1 = c + (S 3 – keskpunkt) / k 2.

Riis. 7.36. Liikumine piki joont ujuvkoefitsiendiga proportsionaalsel kontrolleril.

Saadud võimenduse juhtimise seadust saab rakendada mitte ainult proportsionaalsele komponendile, vaid ka mis tahes muule komponendile, aga ka juhtimistoimingule tervikuna (joonis 7.36).

PID kontroller

PID-kontroller on üks populaarsemaid ja seda kasutatakse paljudes seadmetes. erinevat tüüpi, mis nõuavad süsteemi kiiret reageerimist ja positsioneerimistäpsust. Nagu nimigi ütleb, koosneb see regulaator kolme komponendi summast ja on graafiliselt kujutatud joonisel fig. 7.37.

Riis. 7.37. PID kontrolleri ahel.

See on lihtsustatud diagramm. Dünaamilise vea väärtus e (t) edastatakse kontrolleri sisendisse ja väljundis genereeritakse juhtimistoiming u (t):

u (t) = p + i + d = k p ∙ e (t) + k i ∙ ò t

e (τ)d τ + k d ∙

de.

Proportsionaalne komponent, mis on diagrammil näidatud kolmnurgana, vastutab süsteemi positsioneerimise eest antud olekus. Mõnel juhul võib see põhjustada ülelöögi koos järgnevate isevõnkumistega. See tähendab, et P-regulaator võib "üle pingutada" ja robot hakkab küljelt küljele triivima.

Integreeritud komponent kogub negatiivseid kogemusi (summeerib vead) ja annab kompenseeriva efekti. Minimaalsete kõrvalekallete korral proportsionaalne komponent "nõrgeneb" ja integraalkomponent tänu selle kiirele suurenemisele summeerimise teel aitab "jõuda" kontrollitud väärtuseni seadepunkti.

Diferentsiaalkomponent (D-komponent) jälgib süsteemi oleku muutumise kiirust ja hoiab ära võimaliku ülelöögi. Mõnel juhul on D-komponent proportsionaalsele vastandmärgiga, mõnel juhul on see sama.

Proportsionaalkomponendiga oleme juba tuttavad, diferentsiaalkomponenti on kirjeldatud eelmises peatükis 6. Võtame ette integraalkomponendi. See komponent määratakse dünaamiliselt, liidetakse eelmise väärtusega:

i = i + ki × e(t) × dt.

Suuruse e(t) × dt füüsikaline tähendus on, et see on

võrdeline süsteemi veaseisundi kestusega. Kuna koefitsient k i on sulgudest välja võetud, saame rääkida väärtusest i kui vea kestuste summast. Seega leiame integraali liitmise teel.

Vaatleme PID-kontrolleri kasutamist kahel rattal balansseeriva roboti näitel. Seda klassikalist probleemi saab lahendada erinevate andurite abil mitmel erineval viisil. Kavandatud näites kasutatakse valgusandurit ja lihtsaim vorm PID kontroller. Kuid roboti stabiliseerimise saavutamiseks on vaja kasutada täpsemaid andurite näitu.

RAW-vormingus

Anduri andmed sisenevad NXT kontrollerisse töötlemata töötlemata kujul. Kõik andurid edastavad operatsioonisüsteemi digitaalne väärtus vahemikus 0 kuni 1023, mida seejärel töötleb vastav draiver ja taandab arusaadavamale kujule (kaugus 0...255, valgustus 0...100, puute 0 või 1 jne). Kuid andmeid saab vastu võtta otse, juhist mööda minnes. Seda toorvormingut nimetatakse tavaliselt RAW-ks (inglise keelest "raw"). Mõnel juhul saab seda kasutada suurema täpsuse saavutamiseks. Näiteks võib valgusanduri väärtuste vahemik suureneda ligikaudu 10 korda. Seda võimalust kasutatakse edasi.

Saate andmeid vastu võtta RAW-vormingus nii Robolabis kui ka RobotC-s. Selleks initsialiseeritakse andur vastavalt ja sealt loetakse andmeid spetsiaalse etteantud muutuja abil.

Tasakaalustav robot

Segway roboti disain on näidatud joonisel fig. 7.38: vertikaalselt paigutatud kontroller, tihedalt asetsevad rattad ja allapoole suunatud valgusandur. Algoritm on mõnevõrra keerulisem.

Segway tasakaalustatud asendis stabiliseerimise põhimõte on järgmine. Kui robot kaldub ette, suureneb valgusanduri näit peegeldunud valguse tõttu. Vastuseks sellele genereeritakse juhttoiming, mis sunnib robotit edasi liikuma ja seeläbi uuesti vertikaalasendisse asuma.

Tagurpidi liikudes sensori näidud vähenevad ja robot hakkab tagurpidi liikuma. Selle kõige eest vastutab proportsionaalne komponent. Integraalsete ja diferentsiaalkomponentide rolli mängib kindlustus ületamise vastu.

Riis. 7.38. Tasakaalustav Segway robot.

Joonisel fig. 7.39 näitab Robolabi algoritmi. Suurema osa sellest hõivab muutujate lähtestamine. Täpsuse parandamiseks ei loeta mitte ainult anduri andmeid RAW-vormingus, vaid enamik muutujaid deklareeritakse reaalses ujuvvormingus. PID-algoritm ise on tsüklis.

Riis. 7.39. Tasakaalustaja algoritm põhineb PID-kontrolleril.

Järgides joont mööda liikumise traditsiooni, kasutame sättepunktina halli muutujat - valgusanduri keskmisi näitu tasakaaluasendis. Uus skaala parameeter määrab juhttoimingu skaleerimise. See on sisuliselt sumbumistegur, kuna regulaatori tekitatud väärtus on NXT mootorite jaoks liiga kõrge. Olemasolevate koefitsientide sees oleks võimalik seda lisada, kuid RobotC jaoks on see parameeter erinev, kuid koefitsiendid on samad.

Antud koefitsientide juures stabiliseerub robot hästi tavalisel heledal linoleumil või töölaual. See tähendab, et ta ei vaja valge pinnad. Käivitamiseks peate Segway täpselt tasakaaluasendisse seadma. Kui robot käivitub mõningase kaldega ette või taha, hakkab see kohe liikuma kalde suunas.

Sarnane näide RobotC-s on mitmel põhjusel veidi erinev. Esiteks on NXT jõudlus selle keskkonna püsivaraga ligikaudu 1,4 korda kõrgem kui Robolabil, seega tuleks mastaabitegurit suurendada. Teiseks kantakse RAW-väärtused üle õiges järjekorras ja peate mootorid tagurdama või lihtsalt rakendama negatiivset juhtimistoimingut:

int gray=SensorRaw; int err, errold=0;

ujuki kp=25, ki=350, kd=0,3; ujukkaal=14;

ujuki dt = 0,001; ujuki p, i=0, d, u; samas (tõsi)

err= hall-SensorRaw; //Halve vastupidise märgiga p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; err=err; u=(p+i+d)/skaala; mootor=u; mootor=u; oota1 msek(1);

Automaatjuhtimise teooria elemendid koolis1

Oluliseks ja huvitavaks metoodiliseks ülesandeks on „silla viskamine“ spetsialisti ja üliõpilase teadmiste valdkondade vahele, aidates kooliõpilastel näha tuleviku eriala väljavaateid, s.o. läbi viia karjäärinõustamist ning õpilased näevad nende praktilist rakendatavust erialased teadmised. Sarnase efekti saavutamiseks töötati välja regulaatorite arvutamise meetodid, kasutades matemaatilisi tööriistu, mis ei lähe kaugemale kooliprogrammid matemaatikas ja füüsikas. Eelkõige selle asemel diferentsiaalvõrrandid kasutatakse erinevaid, mis vastavad hästi objekti ja kontrolleri interaktsiooni diskreetsele olemusele arvutijuhtimises.

Vaatleme näiteks proportsionaalse (P) ja proportsionaalse tuletise (PD) kontrollerite konstrueerimise probleemi mobiilse roboti piki seina liikumise juhtimise probleemis. Tähistame x t-ga roboti ja seina vahelist kaugust, θt-ga - roboti suunanurka ja u t-ga - juhtimistoimingut hetkel vastavalt seerianumbriga t, kus t = 0, 1, 2, ... - muutuste hetkede arvud

reenium. Arvatakse, et andurite küsitlemine ja juhtimistoimingu suuruse muutmine toimub võrdsete ajavahemike järel h. Lego NXT robotite juhtimisülesannete puhul on loomulik eeldada, et erinevus seisneb juhtimistoimingus nurkkiirused ratta pöörlemine, võrdeline kursinurga muutumise kiirusega:

Eeldades, et kursi kõrvalekalded nominaalväärtusest θt =0 on väikesed ja roboti keskmine kiirus on konstantne: vt=v , saab roboti olekumuutujate muutuste dünaamikat kirjeldada esimese lähendusega. lineaarvõrrandidütleb:

kus g = h2vr / b.

Määrame soovitud kauguse seinast x*> 0 ja määrame seose järgi kontrolleesmärgi (CT).

xt → x* kui t→∞.

Tutvustame nüüd loomulikult sisulisel tasandil asümptootilise stabiilsuse mõistet kui süsteemi (4) lahenduste omadust, tagades sihtväärtuse (5) saavutamise mis tahes algtingimustel, mis sihttingimustest üsna vähe erinevad. On lihtne näha, et u t = 0 korral on võrrandi (4) lahend mis tahes konstantne väärtus x t = x*. Kuid kuna võrrandil (4), mis vastab topeltintegraatori mudelile (topeltsummer), ei ole asümptootilise stabiilsuse omadust, on juhtimiskeskus (5) pidev juhtimine ei saavutata. Seda on lihtne analüütiliselt demonstreerida, võttes kokku mitmed



 


Loe:



Eelarvega arvelduste arvestus

Eelarvega arvelduste arvestus

Konto 68 raamatupidamises on mõeldud teabe kogumiseks kohustuslike maksete kohta eelarvesse, mis on maha arvatud nii ettevõtte kui ka...

Kodujuustust pannil valmistatud juustukoogid - kohevate juustukookide klassikalised retseptid Juustukoogid 500 g kodujuustust

Kodujuustust pannil valmistatud juustukoogid - kohevate juustukookide klassikalised retseptid Juustukoogid 500 g kodujuustust

Koostis: (4 portsjonit) 500 gr. kodujuust 1/2 kl jahu 1 muna 3 spl. l. suhkur 50 gr. rosinad (valikuline) näputäis soola söögisoodat...

Musta pärli salat ploomidega Musta pärli salat ploomidega

Salat

Head päeva kõigile neile, kes püüavad oma igapäevases toitumises vaheldust. Kui olete üksluistest roogadest väsinud ja soovite meeldida...

Lecho tomatipastaga retseptid

Lecho tomatipastaga retseptid

Väga maitsev letšo tomatipastaga, nagu Bulgaaria letšo, talveks valmistatud. Nii töötleme (ja sööme!) oma peres 1 koti paprikat. Ja keda ma tahaksin...

feed-image RSS