Kontrollues diferencial integral proporcional Lego ev3. Kontrollues proporcional integral diferencial PID në Robotikën Lego Mindstorms. Kontrollues proporcional. Kontroll robotik me dy sensorë drite

Kontrollues proporcional

Përshkrim

Në kontrollin automatik, veprimi i kontrollit u(t) është zakonisht një funksion i gabimit dinamik - devijimi e(t) i ndryshores së kontrolluar x(t) nga vlera e vendosur e tij x0(t):

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

Ky është parimi Polzunov-Watt i rregullimit me devijim, ose parimi i reagimit. Shprehja matematikore e varësisë funksionale të veprimit të dëshiruar të kontrollit u0(t) nga sasitë e matura nga kontrolluesi quhet ligji ose algoritmi i kontrollit të diskutuar më sipër.

Një kontrollues proporcional është një pajisje që ushtron një efekt kontrolli mbi një objekt në proporcion me devijimin e tij nga një gjendje e caktuar:

Këtu k është fitimi i kontrolluesit.

Gjendja e dhënë x0 zakonisht quhet pikë e caktuar, dhe devijimi prej saj e quhet mbetje. Më poshtë, për saktësi, do të shënojmë mbetjen me shkurtesën err (nga fjalë angleze"gabim" - gabim).

Kontrolli i motorit

Një luftëtar me përvojë nuk do të tundë shpatën siç bën një robot në një kontrollues stafetë. Duhet të krijojmë një algoritëm që do të mbajë motorin që mban shpatën në një pozicion rreptësisht të fiksuar (Fig. 7.1). Rregullatori P do të ndihmojë me këtë.

Le të jetë e 1 - leximet e sensorit të shpejtësisë 1 në motorin A - një ndryshore e rregullueshme. Vendosja x0 = 45, dhe pjesa e mbetur e = 45 - e 1. Pastaj veprimi i kontrollit në motor jepet me formulën

u = k ∙ (45 – e 1).

Këtu k është faktori i fitimit, për shembull 5, i cili do të përmirësojë reagimin e motorit edhe me devijime të vogla nga pika e caktuar.

1 Mos e ngatërroni emërtimin matematik të e-së së mbetur (nga gabimi) me leximet e koduesit e 1 (nga encoder), një ndryshore e paracaktuar e mjedisit Robolab.

Nëse ka një devijim në anën pozitive një hyrje negative e kontrollit do të aplikohet në motor, dhe anasjelltas. Ky kontroll mund të aplikohet në motor në një cikël me një vonesë të shkurtër prej 1-10 ms për të lehtësuar kontrolluesin (Fig. 7.8).

Oriz. 7.8. Algoritmi i kontrollit të motorit duke përdorur një kontrollues proporcional.

Nëse faktori i fitimit rritet nga 5 në 100, kontrolluesi ynë proporcional do të fillojë të veprojë si një stafetë, duke shkaktuar luhatje të forta për shkak të efektit të tejkalimit.

Gjuha RobotC nuk ka një shënim kaq të përshtatshëm për leximet e koduesit si në Robolab, kështu që programi duket pak më i gjatë:

int k=5, u; nMotorEncoder=0; ndërsa (e vërtetë)

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

Më tej, për të dhënë një "goditje me shpatë", mjafton të kesh një ndryshore në vend të numrit 45 dhe të ndryshosh vlerën e saj nga jashtë, për shembull, nga një detyrë paralele. Kjo mbulohet në seksionin mbi bateristët e robotëve në Kapitullin 8.

Tani le të ndërtojmë një rregullator që kontrollon jo vetëm pozicionin statik të motorit, por edhe shpejtësinë e lëvizjes së tij. Sipas logjikës së algoritmit, pika e caktuar, e cila deri më tani ka qenë konstante dhe nuk ka ndryshuar, duhet të fillojë të shkojë drejt rritjes ose uljes. Duke iu bindur rregullatorit, motori në mënyrë të pashmangshme do ta ndjekë atë. Mjeti më i thjeshtë për rritjen e vazhdueshme të vlerës së pikës së caktuar është një kohëmatës.

Kontrolluesi NXT ka katër kohëmatës të integruar, secili prej të cilëve mund të masë kohën në të dhjetat, të qindtat dhe të mijtët e sekondës. Le të zotërojmë kohëmatësin e parë, i cili kryen 10 "këshilla" në sekondë.

kov". Në Robolab është caktuar T1 ose Timer100ms1, dhe në RobotC është timer100.

Le ta bëjmë këndin e devijimit të motorit alfa, të specifikuar në shembullin e mëparshëm në 45, të varur nga leximet e kohëmatësit me koeficientin e përshpejtimit k 2:

alfa = k2 ∙ T1.

Veprimi i kontrollit do të mbetet i njëjtë me faktorin e amplifikimit k 1:

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

Shkurtimisht, në programin në gjuhën Robolab, veprimin e kontrollit do ta zbatojmë drejtpërdrejt në motor, pasi të kemi inicializuar më parë kohëmatësin.

Oriz. 7.9. Kontrolli i shpejtësisë së motorit është një rrotullim në sekondë.

Koeficienti k 2 = 36 përcakton që në një sekondë vlera alfa rritet në 360, që korrespondon me një rrotullim të plotë të motorit:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer (T1); ndërsa (e vërtetë)

alfa=timer100*k2; u=k1*(alfa-nMotorEncoder); motor=u;

Duke përdorur ndarjen e numrave të plotë, siç është adoptuar në gjuhën C (dhe në Robolab) për variablat e tipit numër të plotë, është e mundur të arrihet një ndryshim diskret në kënd, d.m.th. e rrit atë një herë në sekondë:

alfa = T 1 / 10 ∙ k 2.

Me një koeficient k 2 = 60, lëvizja e rrezes do të korrespondojë me lëvizjen e dorës së dytë në numrin e orës. Por kjo nuk mjafton

e dukshme. Për qartësi, mund të vendosni k2 = 30, atëherë shigjeta do të bëjë një revolucion të plotë në 12 "këpusha" prej 30 gradë secila. Kini kujdes me sekuencën e operacioneve të pjesëtimit dhe shumëzimit të numrave të plotë ndryshimi i renditjes së tyre ose "zvogëlimi" sigurisht që do të ndryshojë rezultatin (Fig. 7.10).

Oriz. 7.10. Imitim i përshpejtuar i lëvizjes së akrepave të orës.

Dhe së fundi, një shembull i një bateristi matematikor. Në vend që të lëvizë vazhdimisht përpara, gjilpëra do të lëkundet përpara dhe mbrapa nën kontrollin e rregullatorit P. Veprimi i pjesëtimit me një mbetje, e cila në C shënohet me shenjën %, do të ndihmojë në këtë. Pjesa e mbetur e një numri të plotë jo negativ të ndarë me 2 do të jetë gjithmonë 0 ose 1:

alfa = T 1% 2 ∙ k 2.

Duke e rritur devijimin me k 2 = 15 herë, marrim një pikë të caktuar alfa lëkundëse, e cila do ta detyrojë kontrolluesin të lëvizë motorin 5 herë në sekondë, ose 0º ose 15 gradë. Ndryshimet në program janë të vogla. Le të shohim një shembull në RobotC:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer (T1); ndërsa (e vërtetë)

alfa=timer100%2*k2; u=k1*(alfa-nMotorEncoder); motor=u;

Ky baterist prototip godet tryezën në intervale të rregullta. Gjëja kryesore është të filloni në pozicionin e duhur. Duke përdorur matematikën e numrave të plotë, mund të vendosni një model ritmik më kompleks, për shembull (Tabela 7.1):

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

qendër = S3.

Koeficienti përcaktohet në ciklin:

k 1 = c + (S 3 - qendër) / k 2.

Oriz. 7.36. Lëvizja përgjatë vijës në një kontrollues proporcional me një koeficient lundrues.

Ligji i kontrollit të fitimit që rezulton mund të zbatohet jo vetëm për komponentin proporcional, por edhe për çdo komponent tjetër, si dhe për veprimin e kontrollit në tërësi (Fig. 7.36).

kontrollues PID

Kontrolluesi proporcional-integral-derivative (PID) është një nga më të njohurit dhe përdoret në një numër të madh pajisjesh nga më të tipe te ndryshme, të cilat kërkojnë përgjigje të shpejtë dhe saktësi pozicionimi të sistemit. Siç sugjeron emri, ky rregullator përbëhet nga shuma e tre komponentëve dhe është paraqitur grafikisht në Fig. 7.37.

Oriz. 7.37. Qarku i kontrolluesit PID.

Ky është një diagram i thjeshtuar. Vlera e gabimit dinamik e (t) i jepet hyrjes së kontrolluesit dhe veprimi i kontrollit u (t) gjenerohet në dalje:

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

e (τ)d τ + k d ∙

de.

Komponenti proporcional, i paraqitur në diagram si një trekëndësh, është përgjegjës për pozicionimin e sistemit në një gjendje të caktuar. Në disa raste, mund të shkaktojë tejkalim me vetëlëkundje të mëvonshme. Kjo do të thotë, rregulluesi P mund ta "teprojë" dhe roboti do të fillojë të lëvizë nga njëra anë në tjetrën.

Komponenti integral grumbullon përvojë negative (përmbledh gabimet) dhe prodhon një efekt kompensues. Me devijime minimale, komponenti proporcional "dobësohet" dhe komponenti integral, për shkak të rritjes së shpejtë të tij nga përmbledhja, ndihmon për të "arritur" vlerën e kontrolluar në pikën e caktuar.

Komponenti diferencial (komponenti D) monitoron shkallën e ndryshimit në gjendjen e sistemit dhe parandalon tejkalimin e mundshëm. Në disa raste, komponenti D është i kundërt në shenjë me atë proporcional, dhe në të tjera përkon.

Ne tashmë jemi njohur me komponentin proporcional, ai diferencial është përshkruar në kapitullin e mëparshëm 6. Le të marrim atë integral. Ky komponent përcaktohet në mënyrë dinamike, i përmbledhur me vlerën e mëparshme:

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

Kuptimi fizik i sasisë e(t) × dt është se është

proporcionale me kohëzgjatjen e sistemit që është në gjendje gabimi. Meqenëse koeficienti k i është nxjerrë jashtë kllapave, mund të flasim për vlerën i si shuma e kohëzgjatjeve të gabimit. Kështu, ne gjejmë integralin me përmbledhje.

Le të shqyrtojmë përdorimin e një kontrolluesi PID duke përdorur shembullin e një roboti që balancon në dy rrota. Ky problem klasik mund të zgjidhet duke përdorur sensorë të ndryshëm në mënyra të ndryshme. Në shembullin e propozuar, përdoret një sensor drite dhe forma më e thjeshtë kontrollues PID. Megjithatë, arritja e stabilizimit të robotit do të kërkojë përdorimin e leximeve më të sakta të sensorëve.

Formati RAW

Të dhënat e sensorit hyjnë në kontrolluesin NXT në formë të papërpunuar dhe të papërpunuar. Të gjithë sensorët transmetojnë sistemi operativ një vlerë dixhitale nga 0 në 1023, e cila më pas përpunohet nga drejtuesi përkatës dhe reduktohet në një formë më të kuptueshme (distanca 0...255, ndriçimi 0...100, prekja 0 ose 1, etj.). Por të dhënat mund të merren drejtpërdrejt, duke anashkaluar shoferin. Ky format i papërpunuar zakonisht quhet RAW (nga anglishtja "raw"). Në disa raste, mund të përdoret për të arritur saktësi më të madhe. Për shembull, diapazoni i vlerave të sensorit të dritës mund të rritet me afërsisht 10 herë. Është kjo mundësi që përdoret më tej.

Ju mund të merrni të dhëna në formatin RAW si në Robolab ashtu edhe në RobotC. Për ta bërë këtë, sensori inicializohet në përputhje me rrethanat, dhe të dhënat lexohen prej tij duke përdorur një variabël të veçantë të paracaktuar.

Robot balancues

Dizajni i robotit Segway është paraqitur në Fig. 7.38: kontrollues i pozicionuar vertikalisht, rrota të vendosura afër dhe sensor drite me drejtim poshtë. Algoritmi do të jetë disi më i ndërlikuar.

Parimi i stabilizimit të një Segway në një pozicion të ekuilibruar është si më poshtë. Nëse roboti përkulet përpara, leximi në sensorin e dritës rritet për shkak të dritës së reflektuar. Në përgjigje të kësaj, gjenerohet një veprim kontrolli, duke e detyruar robotin të ecë përpara dhe në këtë mënyrë të marrë përsëri një pozicion vertikal.

Kur lëvizni prapa, leximet e sensorit ulen dhe roboti fillon të lëvizë prapa. Për gjithë këtë është përgjegjës përbërësi proporcional. Roli i komponentëve integralë dhe diferencialë luhet nga sigurimi kundër tejkalimit.

Oriz. 7.38. Balancimi i robotit Segway.

Në Fig. 7.39 tregon algoritmin në Robolab. Pjesa më e madhe e tij është e zënë nga inicializimi i variablave. Për të përmirësuar saktësinë, jo vetëm që të dhënat e sensorit lexohen në formatin RAW, por shumica e variablave deklarohen në format real float. Vetë algoritmi PID është në një lak.

Oriz. 7.39. Algoritmi i balancuesit bazohet në një kontrollues PID.

Duke ndjekur traditën e lëvizjes përgjatë vijës, ne përdorim variablin gri si pikë të caktuar - leximet mesatare të sensorit të dritës në pozicionin e ekuilibrit. Parametri i shkallës së re specifikon shkallëzimin e veprimit të kontrollit. Ky është në thelb një faktor zbutjeje sepse vlera e prodhuar nga rregullatori është shumë e lartë për motorët NXT. Do të ishte e mundur të shtohej brenda koeficientëve ekzistues, por për RobotC ky parametër do të jetë i ndryshëm, por koeficientët do të jenë të njëjtë.

Me koeficientët e dhënë, roboti stabilizohet mirë në një linoleum ose tavolinë të thjeshtë me ngjyrë të çelur. Kjo është, ai nuk ka nevojë Ngjyra e bardhë sipërfaqeve. Për të nisur, ju duhet të vendosni me saktësi Segway në pozicionin e ekuilibrit. Nëse roboti fillon me pak anim përpara ose prapa, ai menjëherë do të fillojë të lëvizë në drejtim të animit.

Një shembull i ngjashëm në RobotC është paksa i ndryshëm për një sërë arsyesh. Së pari, performanca e NXT me firmware-in e këtij mjedisi është afërsisht 1.4 herë më e lartë se ajo e Robolab, kështu që faktori i shkallës duhet të rritet. Së dyti, vlerat RAW transmetohen në rendin e duhur dhe do t'ju duhet të vendosni motorët të kthehen ose thjesht të aplikoni një veprim negativ të kontrollit:

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

float kp=25, ki=350, kd=0,3; shkallë float=14;

float dt=0,001; float p, i=0, d, u; ndërsa (e vërtetë)

err= gri-SensorRaw; //Shmangia me shenjën e kundërt p=kp*err;

i=i+ki*err*dt; d=kd*(gabim-gabim)/dt; gaboj=gabim; u=(p+i+d)/shkallë; motor=u; motor=u; pres1Msec(1);

Elementet e teorisë kontroll automatik në shkollë 1

Një detyrë e rëndësishme dhe interesante metodologjike është të "hedhë një urë" midis fushave të njohurive të një specialisti dhe një studenti, duke ndihmuar nxënësit e shkollave të shohin të ardhmen. specialiteti i ardhshëm, d.m.th. kryejnë udhëzime në karrierë dhe studentët shohin zbatueshmërinë praktike të njohurive të tyre profesionale. Për të arritur një efekt të ngjashëm, u zhvilluan metoda për llogaritjen e rregullatorëve duke përdorur aparate matematikore që nuk shkonin përtej fushëveprimit të kurrikulave shkollore në matematikë dhe fizikë. Në veçanti, në vend të ekuacionet diferenciale u përdorën ato të ndryshme, të cilat korrespondojnë mirë me natyrën diskrete të ndërveprimit midis objektit dhe kontrolluesit në kontrollin kompjuterik.

Le të shqyrtojmë, për shembull, problemin e ndërtimit të kontrolluesve proporcionalë (P) dhe derivateve proporcionale (PD) në problemin e kontrollit të lëvizjes së një roboti të lëvizshëm përgjatë një muri. Le të shënojmë me x t distancën midis robotit dhe murit, me θt - këndin e drejtimit të robotit, dhe me u t - veprimin e kontrollit në momentin me numrin serik t, përkatësisht, ku t = 0, 1, 2, ... - numrat e momenteve të ndryshimit

renium. Besohet se sondazhi i sensorëve dhe ndryshimet në madhësinë e veprimit të kontrollit kryhen në intervale të barabarta të kohës h. Për detyrat Kontrollet Lego Robotët NXT natyrshëm supozojnë se veprimi i kontrollit është ndryshimi shpejtësitë këndore rrotullimi i rrotave, proporcional me shpejtësinë e ndryshimit të këndit të drejtimit:

Duke supozuar se devijimet e kursit nga nominalja θt =0 janë të vogla, dhe shpejtësia mesatare e robotit është konstante: vt=v, dinamika e ndryshimeve në variablat e gjendjes së robotit mund të përshkruhet në një përafrim të parë me ekuacione lineare të gjendjes. :

ku g = h2vr / b.

Le të vendosim distancën e dëshiruar në mur x*> 0 dhe të përcaktojmë qëllimin e kontrollit (CT) nga relacioni

xt → x* si t→∞.

Tani natyrshëm Le të prezantojmë në nivel përmbajtësor konceptin e stabilitetit asimptotik si veti e zgjidhjeve të sistemit (4), duke siguruar arritjen e vlerës së synuar (5) në çdo kusht fillestar që ndryshon shumë pak nga ato të synuara. Është e lehtë të shihet se për u t = 0, zgjidhja e ekuacionit (4) është çdo vlerë konstante x t = x*. Por duke qenë se ekuacioni (4), që korrespondon me modelin e integratorit të dyfishtë (mbledhës të dyfishtë), nuk ka vetinë e stabilitetit asimptotik, qendra e kontrollit (5) nuk arrihet me kontroll të vazhdueshëm. Kjo demonstrohet lehtësisht në mënyrë analitike duke përmbledhur një numër të

Një nga lëvizjet themelore në ndërtimin e lehtë është ndjekja e vijës së zezë.

Teoria e përgjithshme dhe shembujt specifikë të krijimit të një programi përshkruhen në faqen e internetit wroboto.ru

Unë do të përshkruaj se si e zbatojmë këtë në mjedisin EV3, pasi ka dallime.

Gjëja e parë që roboti duhet të dijë është kuptimi i "pikës ideale" që ndodhet në kufirin e bardhë e zi.

Vendndodhja e pikës së kuqe në figurë korrespondon saktësisht me këtë pozicion.

Opsioni ideal i llogaritjes është matja e vlerave bardh e zi dhe marrja e mesatares aritmetike.

Ju mund ta bëni këtë me dorë. Por disavantazhet janë menjëherë të dukshme: edhe për një periudhë të shkurtër kohore, ndriçimi mund të ndryshojë dhe vlera e llogaritur do të jetë e pasaktë.

Pra, ju mund të merrni një robot për ta bërë atë.

Gjatë eksperimenteve, ne zbuluam se nuk është e nevojshme të matim të zezën dhe të bardhën. Vetëm e bardha mund të matet. Dhe vlera ideale e pikës llogaritet si vlera e bardhë e ndarë me 1.2 (1.15), në varësi të gjerësisë së vijës së zezë dhe shpejtësisë së robotit.

Vlera e llogaritur duhet të shkruhet në një variabël në mënyrë që të aksesohet më vonë.

Llogaritja e "pikës ideale"

Parametri tjetër i përfshirë në lëvizje është koeficienti i rrotullimit. Sa më i madh të jetë, aq më ashpër roboti reagon ndaj ndryshimeve në ndriçim. Por shumë rëndësi të madhe do të bëjë që roboti të lëkundet. Vlera zgjidhet eksperimentalisht individualisht për çdo dizajn robot.

Parametri i fundit është fuqia bazë e motorëve. Kjo ndikon në shpejtësinë e robotit. Një rritje në shpejtësinë e lëvizjes çon në një rritje të kohës së reagimit të robotit ndaj ndryshimeve në ndriçim, gjë që mund të çojë në largimin nga trajektorja. Vlera zgjidhet gjithashtu eksperimentalisht.

Për lehtësi, këto parametra mund të shkruhen edhe në variabla.

Raporti i kthesës dhe fuqia bazë

Logjika e lëvizjes përgjatë vijës së zezë është si më poshtë: matet devijimi nga pika ideale. Sa më i madh të jetë, aq më i fortë roboti duhet të përpiqet të kthehet tek ai.

Për ta bërë këtë, ne llogarisim dy numra - vlerën e fuqisë së secilit prej motorëve B dhe C veç e veç.

Në formën e formulës duket kështu:

Ku Isens është vlera e leximeve të sensorit të dritës.

Së fundi, zbatimi në EV3. Është më e përshtatshme për ta rregulluar atë në formën e një blloku të veçantë.

Zbatimi i algoritmit

Ky është pikërisht algoritmi që u zbatua në robot për kategoria e mesme ZRRUM 2015

Ky problem është klasik, ideologjikisht i thjeshtë, mund të zgjidhet shumë herë dhe çdo herë do të zbuloni diçka të re.

Ka shumë qasje për të zgjidhur problemin e linjës vijuese. Zgjedhja e njërit prej tyre varet nga dizajni specifik i robotit, nga numri i sensorëve, vendndodhja e tyre në lidhje me rrotat dhe njëri-tjetrin.

Në shembullin tonë, tre shembuj të një roboti do të analizohen bazuar në modelin kryesor arsimor të Robot Educator.

Për të filluar, ne mbledhim modelin bazë të robotit arsimor Robot Educator për këtë ju mund të përdorni udhëzimet në softuerin MINDSTORMS EV3.

Gjithashtu, për shembuj, do të na duhen sensorë me ngjyra të lehta EV3. Këta sensorë të dritës, si asnjë tjetër, janë më të përshtatshmet për detyrën tonë kur punojmë me ta, ne nuk duhet të shqetësohemi për intensitetin e dritës përreth. Për këtë sensor, në programe do të përdorim modalitetin e dritës së reflektuar, në të cilën vlerësohet sasia e dritës së reflektuar nga drita e kuqe e pasme e sensorit. Kufijtë e leximeve të sensorëve janë 0 - 100 njësi, përkatësisht për "pa reflektim" dhe "reflektim total".

Si shembull, ne do të analizojmë 3 shembuj të programeve për lëvizjen përgjatë një trajektoreje të zezë të përshkruar në një sfond të sheshtë dhe të lehtë:

· Një sensor, me rregullator P.

· Një sensor, me rregullator PC.

· Dy sensorë.

Shembull 1. Një sensor, me rregullator P.

Dizajn

Sensori i dritës është instaluar në një rreze të vendosur në mënyrë të përshtatshme në model.


Algoritmi

Funksionimi i algoritmit bazohet në faktin se, në varësi të shkallës së mbivendosjes së rrezes së ndriçimit të sensorit me një vijë të zezë, leximet e kthyera nga sensori ndryshojnë në mënyrë gradient. Roboti ruan pozicionin e sensorit të dritës në kufi vijë e zezë. Duke konvertuar të dhënat hyrëse nga sensori i dritës, sistemi i kontrollit gjeneron një vlerë për shpejtësinë e rrotullimit të robotit.


Meqenëse në një trajektore reale, sensori gjeneron vlera në të gjithë gamën e tij të funksionimit (0-100), zgjidhet 50 si vlera për të cilën përpiqet roboti, në këtë rast, krijohen vlerat e transmetuara në funksionet e rrotullimit diapazoni -50 - 50, por këto vlera nuk janë të mjaftueshme për një kthesë të pjerrët të trajektores. Prandaj, diapazoni duhet të zgjerohet një herë e gjysmë në -75 - 75.

Si rezultat, në program, funksioni kalkulator është një kontrollues i thjeshtë proporcional. Funksioni i të cilit ( (a-50)*1.5 ) në intervalin e funksionimit të sensorit të dritës gjeneron vlerat e rrotullimit në përputhje me grafikun:

Shembull se si funksionon algoritmi

Shembulli 2. Një sensor, me rregullator PK.

Ky shembull bazohet në të njëjtin ndërtim.

Ju ndoshta keni vënë re se në shembullin e mëparshëm roboti lëkundej tepër, gjë që nuk e lejoi atë të përshpejtohej mjaftueshëm. Tani do të përpiqemi ta përmirësojmë pak këtë situatë.

Në kontrolluesin tonë proporcional po shtojmë gjithashtu një kontrollues të thjeshtë kubi, i cili do të shtojë pak përkulje në funksionin e kontrolluesit. Kjo do të zvogëlojë lëkundjen e robotit pranë kufirit të dëshiruar të trajektores, si dhe do të bëjë goditje më të forta kur është larg tij.

Robotika është një fushë e re emocionuese që ka të ngjarë të zhvillohet më tej brenda kurseve shkollore në shkencën dhe teknologjinë kompjuterike. Lulëzimi në robotikë është kryesisht për shkak të faktit se na lejon t'i përgjigjemi pyetjes: "Pse ne në fakt mësojmë programim?" Përveç kësaj, në kursin e robotikës mund të njiheni me konceptet elementare të teorisë së kontrollit automatik.

Kjo faqe paraqet simulatorët e programimit dhe bordet Arduino të zhvilluara nga autori. Ata mund të ndihmojnë në rastet kur për ndonjë arsye nuk është e mundur të përdoret një pajisje e vërtetë.

Simulatorët përdorin aftësi HTML5, kështu që ata do të funksionojnë vetëm në shfletues modernë (është më mirë të përdorni Google Chrome ose Mozilla Firefox).

Lajme tani edhe ne kanalin Telegram

27 nëntor 2015
Trasta "embrion" është shtuar në simulatorë ( M.V. Lazarev, Orekhovo-Zuevo).

13 tetor 2015
Tani mund të ngarkoni gjurmët tuaja (fushat për robotin) në simuluesit e robotëve LEGO. Si ta bëjmë atë? Shiko.
Janë shtuar simulatorë të rinj - robotë LEGO me dy, tre, katër sensorë drite.

Gjuha e kontrollit të robotëve

Për të kontrolluar robotët në simulatorë, përdoret një gjuhë e thjeshtë programimi, e cila mori emrin e punës SiRoP (Programim i thjeshtë robotik).

Kontroll robotik me sensor drite

Sensori i dritës lejon robotin të lundrojë në sipërfaqen e tavolinës, për shembull, të lëvizë përgjatë kufirit midis zonave të bardha dhe të zeza (përgjatë skajit të vijës së zezë). Një fotodiodë ndriçon sipërfaqen, një fotodetektor "kap" rrezet e reflektuara dhe mat intensitetin e tyre.

Detyra më e njohur e këtij lloji është lëvizja përgjatë një linje. Duke përdorur simulatorin, mund të studioni ligje të ndryshme kontrolli - kontrollin rele, proporcional dhe madje edhe PID (proporcional-integral-derivativ).

Shembuj të programeve për një robot me një sensor drite

Ndërsa 1 (nëse sensor > 128 (motori = 100 motor = 0) ndryshe (motori = 0 motor = 100) prisni (10))

KP = 0,2 ndërsa 1 ( u = kP* (sensori-128) motori = 50 + u motori = 50 - u prisni(20) )

Kryesor ( ndërsa 1 ( ndërsa sensor > 128 ( motor = 100 motor = 100 pres (10) ) mbrapa () kthesë () ) mbrapa ( motor = -100 motor = -100 pres (260) ) kthesë ( motor = -50 motor = 50 pritje (50) )

Kontroll robotik me dy sensorë drite

Dy sensorë drite lejojnë që roboti të lundrojë dhe të ecë më mirë përgjatë një linje të hollë. Ata sillen pak përpara dhe përhapen në anët. Ashtu si me problemet me një sensor, ky simulator mund të përdoret për të studiuar ligje të ndryshme kontrolli.

Shembuj të programeve për një robot me tre sensorë drite

Kontroll robotik me katër sensorë drite

Katër sensorë drite lejojnë robotin të zbulojë më mirë kthesat e mprehta. Sensorët e brendshëm përdoren për rregullim të imët; Dy sensor i jashtëm barten pak përpara dhe përhapen në anët. Ato përdoren kur haset një kthesë e mprehtë. Fitimi për kontroll bazuar në leximet e sensorëve të çiftit të jashtëm zgjidhet më i madh se sa për çiftin e brendshëm (shih. L.Yu. Ovsyanitskaya et al., Algoritme dhe programe për lëvizjen e robotit Lego Mindstorms EV3 përgjatë linjës, M.: “Pero”, 2015).

Shembuj të programeve për një robot me katër sensorë drite

Ndërsa 1 ( d0 = sensor > 128 d1 = sensor > 128 d2 = sensor > 128 d3 = sensor > 128 nëse d1 & !d2 ( motor = 100 motor = 0 ) nëse! d1 & d2 ( motor = 0 motor = 100 ) nëse d1 == d2 ( motor = 100 motor = 100 ) nëse d0 & !d3 (motor = 30 motor = 0 ) nëse!d0 & d3 ( motor = 0 motor = 30 ) prisni(10) )

K1 = 0,2 k2 = 0,4 ndërsa 1 ( u1 = sensor - sensor u2 = sensor - motor sensor = 50+k1*u1+k2*u2 motor = 50-k1*u1-k2*u2 pres(10) )

Kontrolli i një roboti me një sensor të distancës (sonar)

Sensori i distancës (sonari) ju lejon të përcaktoni distancën deri në pengesën më të afërt ndërsa roboti është në lëvizje. Ai lëshon një sinjal tejzanor dhe merr sinjalin e reflektuar. Si më shumë kohë ndërmjet sinjaleve të emetuara dhe të marra, aq më e madhe është distanca.

Duke përdorur një sensor largësie, roboti mund të programohet që të lundrojë automatikisht në një labirint me formë të njohur, por madhësi të panjohur.

Detajet Autori: Konovalov Igor     Kontrolluesi proporcional është një përmirësim. Disavantazhi kryesor i stafetës është se nuk i intereson se si ndryshojnë vlerat aktuale nga vlera normale e sensorit. Ka vetëm dy gjendje - ose përpiquni të rrisni vlerat e sensorit me një numër të caktuar konstant nëse ato janë më pak se vlera normale, ose rrisni atë. Për shkak të kësaj, lëkundjet ndodhin me një amplitudë konstante, e cila është shumë joefikase.
    Është shumë më logjike të përcaktohet se sa "larg" janë leximet aktuale nga normalja dhe të ndryshohet amplituda në varësi të kësaj. Për ta bërë më të qartë, le të shohim një shembull. Shembulli, si në artikullin e mëparshëm, është i njëjtë: një robot nga Lego Mindstorms EV3 drejton një vijë të zezë duke përdorur një sensor me një ngjyrë në modalitetin e dritës.

Roboti përpiqet të lëvizë përgjatë kufirit midis të bardhës dhe të zezës, dhe aty sensori tregon afërsisht 50% të ndriçimit. Dhe sa më larg të jetë nga pozicioni normal, aq më shumë përpjekje bën roboti për t'u kthyer në 50%.
    Për të shkruar një program, ne do të përdorim termat "gabim" dhe "veprim kontrolli". Gabimi është ndryshimi midis leximit aktual të sensorit dhe atij normal. Në rastin tonë, nëse roboti tani sheh 20% të ndriçimit, atëherë gabimi është 20-50 = -30%. Shenja e gabimit tregon se në cilin drejtim roboti duhet të kthehet për të hequr qafe gabimin. Tani duhet t'u tregojmë motorëve se në cilin drejtim roboti duhet të rrotullohet, me çfarë shpejtësie dhe sa ashpër. Është e nevojshme të ushtrohet një efekt kontrolli mbi motorët, që do të thotë se sa shpejt duhet të kthehet në pozicionin e tij normal. Veprimi i kontrollit (UP) llogaritet si gabim (gabim) i shumëzuar me faktorin e proporcionalitetit (k). Ky koeficient përdoret për të rritur ose zvogëluar ndikimin e gabimit në veprimin e kontrollit. Hyrja e kontrollit dërgohet në timon, ku është vendosur shpejtësia mesatare e robotit.
    Si të rregulloni faktorin e proporcionalitetit? Zgjidhni vlerat në mënyrë eksperimentale për udhëtimin e trajektores mund të jetë, për shembull, nga 0.2 në 1.5, në varësi të shpejtësisë dhe modelit të robotit. Nëse koeficienti është shumë i madh, atëherë roboti do të lëkundet shumë nëse është i vogël, ai do të lëvizë pa probleme, por në një moment do të rrëshqasë kur kthehet për shkak të hyrjes së pamjaftueshme të kontrollit. Le të shkruajmë dy versione të programit - me variabla (për ata që i kanë studiuar tashmë) dhe pa.


    Por ky rregullator mund të forcohet edhe duke futur një komponent proporcional dhe integral, përshkrimi do të jetë në artikujt e mëposhtëm. Shihemi se shpejti!