Pid valdiklio ev3 judėjimas išilgai linijos. Tarptautinės robotų varžybos – Taisyklės – Robotų pavyzdžiai – Trajektorijos robotas LEGO EV3 pagrindu. Robotas valdomas keturiais šviesos jutikliais

Ši problema yra klasikinė, idėjiškai paprasta, ją galima išspręsti daugybę kartų, ir kiekvieną kartą atrasite kažką naujo sau.

Yra daug būdų, kaip išspręsti šią problemą. Vieno iš jų pasirinkimas priklauso nuo konkrečios roboto konstrukcijos, nuo jutiklių skaičiaus, jų padėties ratų ir vienas kito atžvilgiu.

Mūsų pavyzdyje bus analizuojami trys roboto pavyzdžiai, remiantis pagrindiniu Robot Educator ugdymo modeliu.

Pirmiausia surenkame pagrindinį mokomojo roboto Robot Educator modelį, tam galite naudoti MINDSTORMS EV3 programinės įrangos instrukcijas.

Taip pat, pavyzdžiui, mums reikės EV3 šviesios spalvos jutiklių. Šie šviesos jutikliai, kaip niekas kitas, geriausiai tinka mūsų užduočiai dirbant su jais, nereikia jaudintis dėl supančios šviesos intensyvumo. Šiam jutikliui programose naudosime atspindėtos šviesos režimą, kuriame įvertinamas iš raudono jutiklio foninio apšvietimo atspindimos šviesos kiekis. Jutiklio rodmenų ribos yra 0–100 vienetų, atitinkamai „be atspindžio“ ir „visiško atspindžio“.

Kaip pavyzdį analizuosime 3 programų, skirtų judėti juoda trajektorija, pavaizduota lygiame šviesiame fone, pavyzdžius:

· Vienas jutiklis su P reguliatoriumi.

· Vienas jutiklis, su PC reguliatoriumi.

· Du jutikliai.

1 pavyzdys. Vienas jutiklis su P reguliatoriumi.

Dizainas

Šviesos jutiklis sumontuotas ant modelio patogiai išdėstyto pluošto.


Algoritmas

Algoritmo veikimas pagrįstas tuo, kad, priklausomai nuo jutiklio apšvietimo pluošto persidengimo su juoda linija laipsnio, jutiklio grąžinami rodmenys skiriasi gradientu. Robotas išlaiko šviesos jutiklio padėtį ant ribos juoda linija. Konvertuodama įvesties duomenis iš šviesos jutiklio, valdymo sistema sukuria roboto sukimosi greičio vertę.


Kadangi tikroje trajektorijoje jutiklis generuoja reikšmes visame savo veikimo diapazone (0-100), 50 pasirenkama kaip reikšmė, kurios robotas siekia. Tokiu atveju generuojamos reikšmės, perduodamos sukimosi funkcijoms diapazonas -50 - 50, tačiau šių verčių neužtenka staigiam posūkiui trajektorija. Todėl diapazonas turėtų būti padidintas pusantro karto iki -75 - 75.

Dėl to programoje skaičiuotuvo funkcija yra paprastas proporcingas valdiklis. kurios funkcija ( (a-50)*1,5 ) šviesos jutiklio veikimo diapazone generuoja sukimosi vertes pagal grafiką:

Algoritmo veikimo pavyzdys

2 pavyzdys. Vienas jutiklis su PK reguliatoriumi.

Šis pavyzdys pagrįstas ta pačia konstrukcija.

Tikriausiai pastebėjote, kad ankstesniame pavyzdyje robotas per daug siūbavo, o tai neleido jam pakankamai įsibėgėti. Dabar bandysime šiek tiek pagerinti šią situaciją.

Prie mūsų proporcinio valdiklio taip pat pridedame paprastą kubo valdiklį, kuris šiek tiek sulenks valdiklio funkciją. Tai sumažins roboto siūbavimą netoli norimos trajektorijos ribos, taip pat padarys stipresnius trūktelėjimus, kai bus toli nuo jo.

Proporcingas valdiklis

Aprašymas

Automatiniame valdyme valdymo veiksmas u(t) dažniausiai yra dinaminės paklaidos funkcija – valdomo kintamojo x(t) nuokrypis e(t) nuo nustatytos reikšmės x0(t):

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

Tai yra Polzunov-Watt reguliavimo nukrypimu arba grįžtamojo ryšio principas. Norimo valdymo veiksmo u0(t) funkcinės priklausomybės nuo valdiklio išmatuotų dydžių matematinė išraiška vadinama aukščiau aptartu dėsniu arba valdymo algoritmu.

Proporcinis valdiklis yra įtaisas, kuris valdo objektą proporcingai jo nuokrypiui nuo nurodytos būsenos:

Čia k yra valdiklio stiprinimas.

Duota būsena x0 paprastai vadinama kontroline verte, o nuokrypis nuo jos e vadinamas likutine. Toliau, siekiant apibrėžtumo, likutį žymėsime santrumpa err (iš Angliškas žodis„klaida“ – klaida).

Variklio valdymas

Patyręs karys nemūps kardu, kaip tai daro robotas ant relės valdiklio. Turime sugalvoti algoritmą, kuris laikytų kardą laikantį variklį griežtai fiksuotoje padėtyje (7.1 pav.). P reguliatorius padės tai padaryti.

Tegul e 1 - variklio A greičio jutiklio 1 rodmenys - yra reguliuojamas kintamasis. Nustatymas x0 = 45, o likutinė e = 45 – e 1. Tada variklio valdymo veiksmas pateikiamas pagal formulę

u = k ∙ (45 – e 1).

Čia k yra stiprinimo koeficientas, pavyzdžiui, 5, kuris padidins variklio atsaką net esant nedideliems nukrypimams nuo nustatytosios vertės.

1 Nepainiokite likutinės e (nuo klaidos) matematinės reikšmės su koduotuvo rodmenimis e 1 (iš kodavimo priemonės), iš anksto nustatyto Robolab aplinkos kintamojo.

Jei yra nukrypimas teigiama pusė varikliui bus pritaikytas neigiamas valdymo įėjimas ir atvirkščiai. Šis valdymas gali būti taikomas varikliui ciklo metu su trumpu 1-10 ms uždelsimu, kad būtų atleistas valdiklis (7.8 pav.).

Ryžiai. 7.8. Variklio valdymo algoritmas naudojant proporcingą valdiklį.

Jei stiprinimo koeficientas padidinamas nuo 5 iki 100, mūsų proporcingas valdiklis pradės veikti kaip relė, sukeldamas didelius svyravimus dėl viršijimo efekto.

RobotC kalba neturi tokio patogaus kodavimo įrenginio skaitymo žymėjimo kaip Robolab, todėl programa atrodo šiek tiek ilgiau:

int k=5, u; nMotorEncoder=0; kol (tiesa)

u=k*(45-nMotorEncoder); variklis=u;

Be to, norint atlikti „smūgį kardu“, vietoj skaičiaus 45 pakanka turėti kintamąjį ir pakeisti jo reikšmę iš išorės, pavyzdžiui, iš lygiagrečios užduoties. Tai aptariama 8 skyriaus skyriuje apie būgnininkus robotus.

Dabar sukurkime reguliatorių, kuris valdo ne tik statinę variklio padėtį, bet ir jo judėjimo greitį. Vadovaujantis algoritmo logika, kontrolinė vertė, kuri iki šiol buvo pastovi ir nekito, turėtų pradėti judėti didėjimo arba mažėjimo link. Paklusdamas reguliatoriui, variklis neišvengiamai seks jį. Paprasčiausias įrankis nuolatiniam nustatytosios vertės didinimui yra laikmatis.

NXT valdiklis turi keturis integruotus laikmačius, kurių kiekvienas gali matuoti laiką dešimtosiomis, šimtosiomis ir tūkstantosiomis sekundės dalimis. Įvaldykime pirmąjį laikmatį, kuris atlieka 10 „patarimų“ per sekundę.

kov". Robolab jis žymimas T1 arba Timer100ms1, o RobotC - timer100.

Padarykime variklio nuokrypio kampą alfa, nurodytą ankstesniame pavyzdyje 45, priklausomą nuo laikmačio rodmenų su pagreičio koeficientu k 2:

alfa = k2 ∙ T1.

Kontrolinis veiksmas išliks toks pat, kai stiprinimo koeficientas k 1:

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

Trumpai tariant, programoje Robolab kalba valdymo veiksmą taikysime tiesiai varikliui, prieš tai inicijavę laikmatį

Ryžiai. 7.9. Variklio greičio valdymas yra vienas apsisukimas per sekundę.

Koeficientas k 2 = 36 lemia, kad per sekundę alfa reikšmė padidėja iki 360, o tai atitinka vieną pilną variklio apsisukimą:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer (T1); kol (tiesa)

alfa=laikmatis100*k2; u=k1*(alfa-nMotorEncoder); variklis=u;

Naudojant sveikųjų skaičių skaidymą, kaip priimta C (ir Robolab) sveikojo tipo kintamiesiems, galima pasiekti diskrečių kampų pokyčius, t.y. padidina jį kartą per sekundę:

alfa = T 1 / 10 ∙ k 2.

Kai koeficientas k 2 = 60, spindulio judėjimas atitiks laikrodžio ciferblato antros rodyklės judėjimą. Bet to neužtenka

pastebimas. Aiškumo dėlei galite nustatyti k2 = 30, tada rodyklė padarys visą apsisukimą 12 „erkių“ po 30 laipsnių. Būkite atsargūs su sveikųjų skaičių dalybos ir daugybos veiksmų seka, pakeitus jų tvarką arba „sumažinus“ rezultatas tikrai pasikeis (7.10 pav.).

Ryžiai. 7.10. Pagreitintas laikrodžio rodyklės judesio imitavimas.

Ir pabaigai – matematinio būgnininko pavyzdys. Užuot nuolat judėjusi į priekį, adata svyruos pirmyn ir atgal, valdoma P reguliatoriaus. Tam padės padalijimo su liekana operacija, kuri C žymima % ženklu. Likusioji neneigiamo sveikojo skaičiaus dalis, padalyta iš 2, visada bus 0 arba 1:

alfa = T 1% 2 ∙ k 2.

Padidinus nuokrypį k 2 = 15 kartų, gauname svyruojančią kontrolinę vertę alfa, kuri privers valdiklį pajudinti variklį 5 kartus per sekundę, arba 0º, arba 15 laipsnių. Programos pakeitimai yra nedideli. Pažvelkime į pavyzdį RobotC:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer (T1); kol (tiesa)

alfa=laikmatis100%2*k2; u=k1*(alfa-nMotorEncoder); variklis=u;

Šis būgnininko prototipas reguliariai atsitrenkia į stalą. Svarbiausia pradėti nuo tinkamos padėties. Naudodami sveikųjų skaičių matematiką galite nustatyti sudėtingesnį ritminį modelį, pavyzdžiui (7.1 lentelė):

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

centras = S3.

Koeficientas nustatomas cikle:

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

Ryžiai. 7.36. Judėjimas išilgai linijos proporcingu valdikliu su slankiuoju koeficientu.

Gautas stiprinimo valdymo dėsnis gali būti taikomas ne tik proporciniam komponentui, bet ir bet kuriam kitam komponentui, taip pat valdymo veiksmui kaip visumai (7.36 pav.).

PID valdiklis

Proporcinis integralinis išvestinis (PID) valdiklis yra vienas populiariausių ir naudojamas daugelyje įrenginių. skirtingų tipų, kuriems reikalingas greitas atsakas ir sistemos padėties nustatymo tikslumas. Kaip rodo pavadinimas, šis reguliatorius susideda iš trijų komponentų sumos ir yra grafiškai pavaizduotas Fig. 7.37.

Ryžiai. 7.37. PID valdiklio grandinė.

Tai supaprastinta diagrama. Dinaminės paklaidos e (t) reikšmė pateikiama valdiklio įėjimui, o išėjime generuojamas valdymo veiksmas u (t):

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

e (τ)d τ + k d ∙

de.

Proporcingas komponentas, diagramoje parodytas kaip trikampis, yra atsakingas už sistemos padėtį tam tikroje būsenoje. Kai kuriais atvejais tai gali sukelti viršijimą ir vėlesnius savaiminius svyravimus. Tai yra, P reguliatorius gali „persistengti“ ir robotas pradės dreifuoti iš vienos pusės į kitą.

Integruotas komponentas kaupia neigiamą patirtį (subendrina klaidas) ir sukuria kompensacinį efektą. Esant minimaliems nuokrypiams, proporcinis komponentas „susilpnėja“, o integralus komponentas dėl spartaus jo padidėjimo sumuojant padeda „pasiekti“ valdomą vertę iki nustatyto taško.

Diferencialinis komponentas (D komponentas) stebi sistemos būsenos kitimo greitį ir apsaugo nuo galimo viršijimo. Kai kuriais atvejais D komponentas yra priešingas proporcingajam ženklui, o kitais - tas pats.

Su proporcinguoju komponentu jau esame susipažinę, diferencialinis aprašytas ankstesniame 6 skyriuje. Paimkime integralinį. Šis komponentas nustatomas dinamiškai, susumuojamas su ankstesne reikšme:

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

Fizinė dydžio e(t) × dt reikšmė yra ta, kad jis yra

proporcingas sistemos klaidos būsenos trukmei. Kadangi koeficientas k i išimamas iš skliaustų, apie i reikšmę galime kalbėti kaip apie klaidų trukmės sumą. Taigi integralą randame sumuodami.

Panagrinėkime PID valdiklio naudojimą, naudodami roboto, balansuojančio ant dviejų ratų, pavyzdį. Šią klasikinę problemą galima išspręsti naudojant skirtingus jutiklius įvairiais būdais. Siūlomame pavyzdyje naudojamas šviesos jutiklis ir paprasčiausia forma PID valdiklis. Tačiau norint pasiekti roboto stabilizavimą, reikės naudoti tikslesnius jutiklio rodmenis.

RAW formatu

Jutiklio duomenys į NXT valdiklį patenka neapdoroti, neapdoroti. Visi jutikliai perduoda operacinė sistema skaitmeninė reikšmė nuo 0 iki 1023, kurią vėliau apdoroja atitinkamas vairuotojas ir sumažina iki suprantamesnės formos (atstumas 0...255, apšvietimas 0...100, lietimas 0 arba 1 ir t. t.). Tačiau duomenis galima gauti tiesiogiai, apeinant vairuotoją. Šis neapdorotas formatas paprastai vadinamas RAW (iš anglų kalbos „raw“). Kai kuriais atvejais jis gali būti naudojamas siekiant didesnio tikslumo. Pavyzdžiui, šviesos jutiklio verčių diapazonas gali padidėti maždaug 10 kartų. Šia galimybe pasinaudojama ir toliau.

Galite gauti duomenis RAW formatu ir Robolab, ir RobotC. Norėdami tai padaryti, jutiklis atitinkamai inicijuojamas, o duomenys nuskaitomi iš jo naudojant specialų iš anksto nustatytą kintamąjį.

Balansuojantis robotas

Segway roboto konstrukcija parodyta fig. 7.38: vertikaliai išdėstytas valdiklis, glaudžiai išdėstyti ratai ir žemyn nukreiptas šviesos jutiklis. Algoritmas bus šiek tiek sudėtingesnis.

Segway stabilizavimo subalansuotoje padėtyje principas yra toks. Jei robotas pasilenkia į priekį, šviesos jutiklio rodmuo padidėja dėl atsispindėjusios šviesos. Atsakant į tai, sugeneruojamas valdymo veiksmas, verčiantis robotą judėti į priekį ir taip vėl užimti vertikalią padėtį.

Judant atgal, jutiklio rodmenys sumažėja ir robotas pradeda judėti atgal. Už visa tai atsakinga proporcinga dalis. Integralinių ir diferencialinių komponentų vaidmenį atlieka draudimas nuo viršijimo.

Ryžiai. 7.38. Balansuojantis Segway robotas.

Fig. 7.39 rodomas Robolab algoritmas. Didžiąją jo dalį užima kintamųjų inicijavimas. Siekiant pagerinti tikslumą, jutiklio duomenys ne tik nuskaitomi RAW formatu, bet ir dauguma kintamųjų deklaruojami tikruoju slankiuoju formatu. Pats PID algoritmas yra kilpoje.

Ryžiai. 7.39. Balansavimo algoritmas yra pagrįstas PID valdikliu.

Laikydamiesi tradicijos judėti išilgai linijos, kaip kontrolinį tašką naudojame pilką kintamąjį - šviesos jutiklio rodmenis pusiausvyros padėtyje. Naujasis mastelio parametras nurodo valdymo veiksmo mastelį. Tai iš esmės yra slopinimo koeficientas, nes reguliatoriaus sukurta vertė yra per didelė NXT varikliams. Jį būtų galima įtraukti į esamus koeficientus, bet RobotC šis parametras bus kitoks, bet koeficientai bus vienodi.

Su nurodytais koeficientais robotas gerai stabilizuojasi ant paprasto, šviesios spalvos linoleumo ar stalo. Tai yra, jam nereikia baltas paviršiai. Norėdami paleisti, turite tiksliai nustatyti Segway į pusiausvyros padėtį. Jei robotas pradeda šiek tiek pakreipti į priekį arba atgal, jis iš karto pradės judėti pakreipimo kryptimi.

Panašus RobotC pavyzdys šiek tiek skiriasi dėl kelių priežasčių. Pirma, NXT našumas su šios aplinkos programine įranga yra maždaug 1,4 karto didesnis nei Robolab, todėl mastelio koeficientas turėtų būti padidintas. Antra, RAW reikšmės perduodamos teisinga tvarka ir jums reikės nustatyti variklius, kad jie veiktų atgal arba tiesiog pritaikyti neigiamą valdymo veiksmą:

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

plūdė kp=25, ki=350, kd=0,3; plūdinė skalė=14;

plūdės dt=0,001; plūduriuoti p, i=0, d, u; kol (tiesa)

err= grey-SensorRaw; //Nukrypimas su priešingu ženklu p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; err=klysta; u=(p+i+d)/mastas; variklis=u; variklis=u; laukti1 msek(1);

Teorijos elementai automatinis valdymas mokykloje 1

Svarbi ir įdomi metodinė užduotis – „numesti tiltą“ tarp specialisto ir mokinio žinių sričių, padedant mokyklos mokiniams matyti ateitį. būsima specialybė, t.y. vykdo profesinį orientavimą, o studentai mato savo profesinių žinių praktinį pritaikymą. Norint pasiekti panašų efektą, buvo sukurti reguliatorių skaičiavimo metodai, naudojant matematinį aparatą, kuris neperžengė matematikos ir fizikos mokyklų programų ribų. Visų pirma, vietoj diferencialines lygtis naudojami skirtingieji, kurie gerai atitinka diskretišką objekto ir valdiklio sąveikos pobūdį valdant kompiuteriu.

Panagrinėkime, pavyzdžiui, proporcingų (P) ir proporcingų išvestinių (PD) valdiklių konstravimo problemą mobiliojo roboto judėjimo palei sieną valdymo užduotyje. Pažymime x t atstumą tarp roboto ir sienos, θt - roboto krypties kampą, o u t - valdymo veiksmą šiuo metu atitinkamai serijos numeriu t, kur t = 0, 1, 2, ... - pokyčių akimirkų skaičiai

renis. Manoma, kad jutiklių apklausa ir valdymo veiksmo dydžio pokyčiai atliekami vienodais laiko intervalais h. Atliekant Lego NXT robotų valdymo užduotis, natūralu manyti, kad valdymo veiksmas yra skirtumas kampiniai greičiai rato sukimasis, proporcingas kurso kampo kitimo greičiui:

Darant prielaidą, kad kurso nuokrypiai nuo vardinio θt =0 yra maži, o vidutinis roboto greitis pastovus: vt=v, roboto būsenos kintamųjų kitimo dinamiką pirmuoju aproksimavimu galima apibūdinti tiesinėmis būsenų lygtimis. :

kur g = h2vr / b.

Nustatykime norimą atstumą iki sienos x*> 0 ir pagal ryšį nustatykime valdymo tikslą (CT).

xt → x* kaip t→∞.

Dabar natūraliaiĮveskime esminiu lygmeniu asimptotinio stabilumo sampratą kaip sistemos (4) sprendimų savybę, užtikrinančią tikslinės reikšmės (5) pasiekimą bet kokiomis pradinėmis sąlygomis, kurios gana mažai skiriasi nuo tikslinių. Nesunku pastebėti, kad u t = 0 (4) lygties sprendimas yra bet kokia pastovi reikšmė x t = x*. Bet kadangi (4) lygtis, atitinkanti dvigubo integratoriaus (dvigubo sumatoriaus) modelį, neturi asimptotinio stabilumo savybės, valdymo centras (5) nepasiekiamas nuolatiniu valdymu. Tai lengvai parodoma analitiškai susumavus keletą

Vienas iš pagrindinių lengvos konstrukcijos judesių yra juodos linijos laikymasis.

Bendra teorija ir konkretūs programos kūrimo pavyzdžiai aprašyti svetainėje wroboto.ru

Aprašysiu, kaip tai įgyvendiname EV3 aplinkoje, nes yra skirtumų.

Pirmas dalykas, kurį robotas turi žinoti, yra „idealaus taško“, esančio ant juodos ir baltos spalvos ribos, reikšmė.

Raudono taško vieta paveikslėlyje tiksliai atitinka šią padėtį.

Idealus skaičiavimo variantas yra išmatuoti juodos ir baltos spalvos vertes ir paimti aritmetinį vidurkį.

Tai galite padaryti rankiniu būdu. Tačiau trūkumai matomi iš karto: net per trumpą laiką apšvietimas gali pasikeisti, o apskaičiuota vertė bus neteisinga.

Taigi, galite priversti tai padaryti robotą.

Eksperimentų metu išsiaiškinome, kad nebūtina matuoti tiek juodos, tiek baltos spalvos. Galima išmatuoti tik baltą. O ideali taško reikšmė apskaičiuojama baltą reikšmę padalijus iš 1,2 (1,15), priklausomai nuo juodos linijos pločio ir roboto greičio.

Apskaičiuota reikšmė turi būti įrašyta į kintamąjį, kad vėliau būtų galima ją pasiekti.

„Idealaus taško“ apskaičiavimas

Kitas judėjimo parametras yra sukimosi koeficientas. Kuo jis didesnis, tuo staigiau robotas reaguoja į apšvietimo pokyčius. Bet per daug puiki vertė sukels roboto klibėjimą. Vertė parenkama eksperimentiškai individualiai kiekvienam roboto dizainui.

Paskutinis parametras yra bazinė variklių galia. Tai turi įtakos roboto greičiui. Padidinus judėjimo greitį, pailgėja roboto reakcijos į apšvietimo pokyčius laikas, o tai gali lemti nukrypimą nuo trajektorijos. Vertė taip pat parenkama eksperimentiškai.

Patogumo dėlei šiuos parametrus taip pat galima įrašyti į kintamuosius.

Posūkio santykis ir pagrindinė galia

Judėjimo išilgai juodos linijos logika yra tokia: matuojamas nuokrypis nuo idealaus taško. Kuo jis didesnis, tuo stipresnis robotas turėtų stengtis į jį sugrįžti.

Norėdami tai padaryti, apskaičiuojame du skaičius - kiekvieno variklio B ir C galios vertę atskirai.

Pagal formulę tai atrodo taip:

Kur Isens yra šviesos jutiklio rodmenų vertė.

Galiausiai, įgyvendinimas EV3. Patogiausia jį išdėstyti atskiro bloko pavidalu.

Algoritmo įgyvendinimas

Būtent tokiam algoritmui buvo įdiegtas robotas vidurinė kategorija WRO 2015 m

Išsami informacija Autorius: Konovalov Igor     Proporcinis valdiklis yra patobulinimas. Pagrindinis relės trūkumas yra tai, kad jai nesvarbu, kaip srovės vertės skiriasi nuo normalios jutiklio vertės. Jis turi tik dvi būsenas - arba pabandykite padidinti jutiklio reikšmes tam tikru pastoviu skaičiumi, jei jos yra mažesnės už normalią vertę, arba padidinkite. Dėl šios priežasties svyravimai vyksta su pastovia amplitude, o tai yra labai neefektyvu.
    Daug logiškiau nustatyti, kiek dabartiniai rodmenys yra „toli“ nuo normalaus, ir priklausomai nuo to pakeisti amplitudę. Kad būtų aiškiau, pažvelkime į pavyzdį. Pavyzdys, kaip ir ankstesniame straipsnyje, yra tas pats: robotas iš Lego Mindstorms EV3 važiuoja juoda linija naudodamas vieną spalvos jutiklį šviesos režimu.

Robotas bando važiuoti baltos ir juodos spalvos riba, o ten jutiklis rodo maždaug 50% apšvietimo. Ir kuo toliau nuo įprastos padėties, tuo daugiau pastangų robotas deda, kad sugrįžtų į 50 proc.
    Norėdami parašyti programą, naudosime terminus „klaida“ ir „kontrolės veiksmas“. Klaida yra skirtumas tarp esamo jutiklio rodmens ir įprasto. Mūsų atveju, jei robotas dabar mato 20% apšvietimo, tai klaida yra 20-50 = -30%. Klaidos ženklas rodo, kuria kryptimi robotas turi pasukti, kad pašalintų klaidą. Dabar turime nurodyti varikliams, kuria kryptimi robotas turi suktis, kokiu greičiu ir kaip staigiai. Būtina valdyti variklius, o tai reiškia, kaip greitai jie turėtų grįžti į normalią padėtį. Valdymo veiksmas (UP) apskaičiuojamas paklaidą (klaidą) padauginus iš proporcingumo koeficiento (k). Šis koeficientas naudojamas siekiant padidinti arba sumažinti klaidos įtaką valdymo veiksmui. Valdymo įvestis siunčiama į vairą, kur nustatomas vidutinis roboto greitis.
    Kaip pakoreguoti proporcingumo koeficientą? Eksperimentiškai pasirinkite reikšmes važiuojant trajektorija, ji gali būti, pavyzdžiui, nuo 0,2 iki 1,5, priklausomai nuo roboto greičio ir konstrukcijos. Jei koeficientas per didelis, tai robotas labai klibės, jei mažas, važiuos sklandžiai, bet tam tikru momentu sukant nuslys dėl nepakankamo valdymo įvesties. Rašykime dvi programos versijas – su kintamaisiais (juos jau studijavusiems) ir be.


    Tačiau šis reguliatorius taip pat gali būti sustiprintas įvedant proporcingą ir neatskiriamą komponentą, kuris bus aprašytas tolesniuose straipsniuose. Iki pasimatymo!