Sākums - Remonta vēsture
Proporcionālais integrētais diferenciālais PID kontrolieris Lego Mindstorms Robotics. Proporcionālais kontrolieris. Starptautiskās robotu sacensības — Noteikumi — Robotu piemēri — Trajektorijas robots, kura pamatā ir LEGO EV3 Proporcionālā p programma

Robotika ir jauns interesants virziens, kas, acīmredzot, attīstīsies arī turpmāk skolas kursi datorzinātnes un tehnoloģijas. Robotikas uzplaukums lielā mērā ir saistīts ar faktu, ka tā ļauj mums atbildēt uz jautājumu: "Kāpēc mēs patiesībā mācāmies programmēšanu?" Turklāt robotikas kursā var iepazīties ar elementāriem teorijas jēdzieniem.

automātiskā vadība

Šajā lapā ir parādīti autora izstrādātie programmēšanas simulatori un Arduino dēļi. Tie var palīdzēt gadījumos, kad kādu iemeslu dēļ nav iespējams izmantot īstu aparatūru. Simulatori izmanto HTML5 iespējas, tāpēc tie darbosies tikai modernās pārlūkprogrammas(vislabāk lietot Google Chrome).

vai Mozilla Firefox

Jaunumi
tagad arī Telegram kanālā 2015. gada 27. novembris Simulatoriem ir pievienots celiņš “embrijs” (

M.V. Lazarevs
, Orekhovo-Zuevo).
2015. gada 13. oktobris

Tagad LEGO robotu simulatoros jūs varat ielādēt savas trases (robotam paredzētos laukus). Kā to izdarīt? Skat.

Ir pievienoti jauni simulatori - LEGO roboti ar diviem, trīs, četriem gaismas sensoriem. Robotu vadības valoda (Vienkārša robotu programmēšana).

Robota vadība ar gaismas sensoru

Gaismas sensors ļauj robotam pārvietoties pa galda virsmu, piemēram, pārvietoties pa robežu starp balto un melno laukumu (gar melnās līnijas malu). Fotodiode apgaismo virsmu, fotodetektors “tver” atstarotos starus un mēra to intensitāti.

Populārākais šāda veida uzdevums ir pārvietošanās pa līniju. Izmantojot simulatoru, var izpētīt dažādus vadības likumus – releju, proporcionālo un pat PID vadību (proporcionālais-integrālais-atvasinājums).

Programmu piemēri robotam ar gaismas sensoru

Kamēr 1 (ja sensors > 128 (motors = 100 motors = 0), pretējā gadījumā (motors = 0 motors = 100), pagaidiet (10))

KP = 0,2, savukārt 1 ( u = kP* (sensors-128) motors = 50 + u motors = 50 - u gaidīt (20))

Galvenais (kamēr 1 (kamēr sensors > 128 (motors = 100 motors = 100 gaida(10) ) atpakaļ() pagrieziens() ) ) atpakaļ (motors = -100 motors = -100 gaida(260)) pagrieziens ( motors = -50 motors = 50 gaidīt (50))

Robota vadība ar diviem gaismas sensoriem

Divi gaismas sensori ļauj robotam labāk orientēties un braukt pa tievu līniju. Tie ir nedaudz izvirzīti uz priekšu un izkliedēti uz sāniem. Tāpat kā ar viena sensora uzdevumiem, arī šo simulatoru var izmantot dažādu kontroles likumu izpētei.

Programmu piemēri robotam ar trīs gaismas sensoriem

Robota vadība ar četriem gaismas sensoriem

Četri gaismas sensori ļauj robotam labāk noteikt asus pagriezienus. Precīzai regulēšanai tiek izmantoti iekšējie sensori, tiem tiek izmantota proporcionālā vadība. Divas ārējais sensors nedaudz nest uz priekšu un izplatīties uz sāniem. Tos izmanto, ja rodas straujš pagrieziens. Vadības pastiprinājums, pamatojoties uz ārējā pāra sensoru rādījumiem, ir izvēlēts lielāks nekā iekšējam pārim (sk. L.Yu. Ovsyanitskaya et al., Algoritmi un programmas Lego Mindstorms EV3 robota kustībai pa līniju, M.: “Pero”, 2015).

Programmu piemēri robotam ar četriem gaismas sensoriem

Kamēr 1 ( d0 = sensors > 128 d1 = sensors > 128 d2 = sensors > 128 d3 = sensors > 128 ja d1 & !d2 ( motors = 100 motors = 0 ), ja! d1 un d2 ( motors = 0 motors = 100 ) ja d1 == d2 (motors = 100 motors = 100) if d0 & !d3 (motors = 30 motors = 0) if!d0 & d3 (motors = 0 motors = 30) gaidiet (10) )

K1 = 0,2 k2 = 0,4, kamēr 1 (u1 = sensors - sensors u2 = sensors - sensora motors = 50+k1*u1+k2*u2 motors = 50-k1*u1-k2*u2 gaidiet (10))

Robota vadīšana ar attāluma sensoru (sonāru)

Attāluma sensors (sonārs) ļauj noteikt attālumu līdz tuvākajam šķērslim robota kustības laikā. Tas izstaro ultraskaņas signālu un saņem atstaroto signālu. Jo ilgāks laiks starp izstarotajiem un saņemtajiem signāliem, jo ​​lielāks attālums.

Izmantojot attāluma sensoru, robotu var ieprogrammēt, lai tas automātiski pārvietotos pa labirintu ar zināmu formu, bet nezināmu izmēru.

Šī problēma ir klasiska, idejiski vienkārša, to var atrisināt daudzas reizes, un katru reizi jūs atklāsiet kaut ko jaunu sev.

Ir daudzas pieejas, lai atrisinātu sekojošo problēmu. Viena no tām izvēle ir atkarīga no robota konkrētā dizaina, no sensoru skaita, to izvietojuma attiecībā pret riteņiem un vienam pret otru.

Mūsu piemērā tiks analizēti trīs robota piemēri, pamatojoties uz Robot Educator galveno izglītības modeli.

Sākumā mēs saliekam izglītojošā robota Robot Educator pamatmodeli, šim nolūkam varat izmantot instrukcijas programmatūra MINDSTORMS EV3.

Tāpat, piemēram, mums būs nepieciešami EV3 gaismas krāsu sensori. Šie gaismas sensori, kā neviens cits, ir vislabāk piemēroti mūsu uzdevumam, strādājot ar tiem, mums nav jāuztraucas par apkārtējās gaismas intensitāti. Šim sensoram programmās izmantosim atstarotās gaismas režīmu, kurā tiek novērtēts atstarotās gaismas daudzums no sensora sarkanā fona apgaismojuma. Sensoru rādījumu robežas ir attiecīgi 0 - 100 vienības “bez atstarošanas” un “pilnīga atstarošana”.

Kā piemēru mēs analizēsim 3 programmu piemērus, lai pārvietotos pa melnu trajektoriju, kas attēlota uz līdzena, gaiša fona:

· Viens sensors ar P regulatoru.

· Viens sensors, ar datora regulatoru.

· Divi sensori.

1. piemērs. Viens sensors ar P regulatoru.

Dizains

Gaismas sensors ir uzstādīts uz stara, kas ērti atrodas modelī.


Algoritms

Algoritma darbība ir balstīta uz to, ka atkarībā no sensora apgaismojuma kūļa pārklāšanās pakāpes ar melnu līniju sensora atgrieztie rādījumi mainās gradienti. Robots saglabā gaismas sensora pozīciju uz melnās līnijas robežas. Pārveidojot ievades datus no gaismas sensora, vadības sistēma ģenerē robota pagrieziena ātruma vērtību.


Tā kā uz reālas trajektorijas sensors ģenerē vērtības visā tā darbības diapazonā (0-100), kā vērtība, uz kuru robots tiecas, tiek izvēlēts 50. Šajā gadījumā tiek ģenerētas rotācijas funkcijām pārsūtītās vērtības diapazons -50 - 50, taču ar šīm vērtībām nepietiek, lai trajektorija būtu stāva. Tāpēc diapazons ir jāpaplašina pusotru reizi līdz -75 - 75.

Tā rezultātā programmā kalkulatora funkcija ir vienkāršs proporcionālais kontrolieris. kuras funkcija ( (a-50)*1,5 ) gaismas sensora darbības diapazonā ģenerē rotācijas vērtības saskaņā ar grafiku:

Algoritma darbības piemērs

2. piemērs. Viens sensors ar PK regulatoru.

Šis piemērs ir balstīts uz to pašu konstrukciju.

Jūs droši vien pamanījāt, ka iepriekšējā piemērā robots pārmērīgi šūpojās, kas neļāva tam pietiekami paātrināties. Tagad mēs mēģināsim šo situāciju nedaudz uzlabot.

Mūsu proporcionālajam kontrolierim mēs pievienojam arī vienkāršu kuba kontrolieri, kas kontroliera funkcijai pievienos nelielu izliekumu. Tas samazinās robota šūpošanos vēlamās trajektorijas robežas tuvumā, kā arī radīs spēcīgākus grūdienus, atrodoties tālu no tā.

Proporcionālais kontrolieris ir ierīce, kas objektam veic vadības darbību u(t) proporcionāli tā lineārajai novirzei e(t) no dotā stāvokļa x0(t);

e(t)=x0(t)-x(t), kur x(t) ir stāvoklis noteiktā laikā;

u(t)=ke(t), kur k ir pastiprinājuma koeficients.
Tas ir, jo tālāk robots novirzās no dotā kursa, jo aktīvāk jāstrādā motoriem, lai to nolīdzinātu.

Līnijas kustība ar vienu gaismas sensoru, izmantojot P-kontrolieri

Kustību pa melnbalto robežu var veidot arī uz P-regulatora. Lai gan ārēji problēma šķiet atrisināma tikai ar releja kontroliera palīdzību, jo sistēmai ir tikai divi cilvēka acij redzami stāvokļi: melns un balts. Bet robots redz visu savādāk, jo starp šīm krāsām nav asas robežas. Var teikt, ka viņš ir tuvredzīgs un redz pelēko toņu gradientu pāreju.

Tas palīdzēs izveidot P-regulatoru.
Definējot darba stāvokli kā gaismas sensora rādījumus, mēs iemācīsimies iedarbināt motoriem proporcionālu vadības efektu saskaņā ar šādu likumu:
e=s1-grey, kur s1 ir pašreizējie sensora rādījumi un pelēks ir iestatītā vērtība.

Koeficients k (vienāds ar šajā piemērā 2) jābūt pietiekami mazam (no 1 līdz 3). Šāds regulators efektīvi darbojas tikai pie maziem novirzes leņķiem, tāpēc robots ir jānovieto kustības virzienā tā, lai sensors atrastos melnās līnijas kreisajā pusē. Ir viegli pamanīt, ka kustība pa līniju uz P-regulatora ir vienmērīga. un dažās darba jomās tas pārvietojas gandrīz taisni vai precīzi sekojot līnijas līkumiem.

Sensora kalibrēšana

Apskatīsim formulā izmantoto skaitli 48. Tas ir vidējais aritmētiskais gaismas sensora rādījums melnbaltā krāsā, piemēram (40+56)/2=48. Tomēr sensoru rādījumi bieži mainās sakarā ar dažādu iemeslu dēļ: cita virsma, telpas kopējā apgaismojuma izmaiņas, neliela dizaina pārveidošana utt. Tāpēc mēs manuāli kalibrēsim robotu, nosakot gaismas sensora rādījumus baltā un melnā krāsā.

Līnijas kustība ar diviem gaismas sensoriem, izmantojot P-kontrolieri
Ir diezgan grūti pareizi orientēties krustojumā ar vienu gaismas sensoru. Ja vēlaties to izdarīt pietiekami lielā ātrumā, jums ir nepieciešami vismaz divi sensori, kas novietoti divu līniju platuma (vai plašākā) attālumā.
Braucot, ir iespējami četri sensoru stāvokļi:

  • abi uz balta - virzās taisni;
  • pa kreisi (s1) nav uz melna, pa labi (s2) uz balta - kustība pa kreisi;
  • pa kreisi uz balta, pa labi uz melna - kustība pa labi;
  • gan uz melna - taisni uz priekšu.
Tas. ar vienādiem sensora rādījumiem (abi balti vai abi melni) robots brauc taisni. Pirms robota palaišanas mēs automātiski kalibrēsim abus sensorus. Tad algoritms pārvietošanai pa līniju ar P-regulatoru izskatīsies šādi:

Koeficients k var mainīties diezgan plašā diapazonā (no 1 līdz 20 vai vairāk) atkarībā no līnijas izliekuma, robota manevrēšanas spējas un atšķirības starp melno un balto krāsu uz lauka.
Svarīgs nosacījums. Automātiskā kalibrēšana jāveic uz vienas krāsas virsmas un vēlams apgaismojumā, kas aizņems lielāko ceļa daļu. Piemēram, ja robots pārvietojas pa melnu līniju uz balta lauka, tad tas ir jākalibrē uz balta lauka. Tie. Robota pozīcijai sākumā jābūt šādai:


Un vēl viena piezīme. Ir sensori, kuru rādījumi atšķiras par 10-20%. Nav ieteicams tos savienot pārī ar regulatoru ar lielu koeficientu, jo ar krasām vispārējā apgaismojuma izmaiņām pat vienmērīgā baltā laukā novirzes var izrādīties atšķirīgas, kas radīs negaidītas sekas. Sīkāka informācija Autors: Konovalovs Igors     Proporcionālais kontrolieris ir uzlabojums. Galvenais releja trūkums ir tas, ka tam ir vienalga, cik daudz strāvas vērtības atšķiras no sensora normālās vērtības. Tam ir tikai divi stāvokļi - vai nu mēģiniet palielināt sensora vērtības par noteiktu nemainīgu skaitli, ja tās ir mazākas par normālo vērtību, vai arī palieliniet to. Šī iemesla dēļ svārstības notiek ar nemainīgu amplitūdu, kas ir ļoti neefektīva.
    Daudz loģiskāk ir noteikt, cik “tālu” pašreizējie rādījumi ir no normas, un atkarībā no tā mainīt amplitūdu. Lai padarītu to skaidrāku, apskatīsim piemēru. Piemērs, tāpat kā iepriekšējā rakstā, ir tāds pats: robots no Lego Mindstorms EV3 brauc pa melnu līniju, izmantojot vienu krāsu sensoru gaismas režīmā.

Robots mēģina braukt pa robežu starp balto un melno, un tur sensors rāda aptuveni 50% no apgaismojuma. Un jo tālāk tas atrodas no parastās pozīcijas, jo vairāk piepūles robots pieliek, lai atgrieztos pie 50%.
    Lai uzrakstītu programmu, mēs izmantosim terminus “kļūda” un “kontroles darbība”. Kļūda ir atšķirība starp pašreizējo sensora rādījumu un parasto. Mūsu gadījumā, ja robots tagad redz 20% no apgaismojuma, tad kļūda ir 20-50 = -30%. Kļūdas zīme norāda, kurā virzienā robotam jāgriežas, lai atbrīvotos no kļūdas. Tagad mums ir jāpasaka motoriem, uz kuru pusi jāgriež robots, ar kādu ātrumu un cik strauji. Ir nepieciešams iedarbināt motoru kontroles efektu, kas nozīmē, cik ātri tam jāatgriežas normālā stāvoklī. Kontroles darbību (UP) aprēķina, kļūdu (kļūdu) reizinot ar proporcionalitātes koeficientu (k). Šo koeficientu izmanto, lai palielinātu vai samazinātu kļūdas ietekmi uz vadības darbību. Vadības darbība tiek piegādāta stūrēšana, kur ir iestatīts robota vidējais ātrums.
    Kā pielāgot proporcionalitātes koeficientu? Eksperimentāli izvēlieties vērtības, lai pārvietotos pa trajektoriju, tas var būt, piemēram, no 0,2 līdz 1,5 atkarībā no robota ātruma un konstrukcijas. Ja koeficients ir pārāk liels, tad robots ļoti ļodzīsies, ja mazs, brauks raiti, bet kādā brīdī griežoties noslīdēs nepietiekamas vadības ievades dēļ. Rakstīsim divas programmas versijas – ar mainīgajiem (tiem, kas tos jau ir apguvuši) un bez.


    Bet šo regulatoru var arī stiprināt, ieviešot proporcionālu un neatņemamu komponentu, apraksts būs turpmākajos pantos. Uz drīzu tikšanos!

Proporcionālais kontrolieris

Apraksts

Automātiskajā vadībā vadības darbība u(t) parasti ir dinamiskās kļūdas funkcija - vadāmā mainīgā x(t) novirze e(t) no tā iestatītās vērtības x0(t):

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

Tas ir Polzunova-Vata princips regulēšanai ar novirzi jeb atgriezeniskās saites princips. Vēlamās vadības darbības u0(t) funkcionālās atkarības matemātisko izteiksmi no kontrollera mērītajiem lielumiem sauc par likumu jeb vadības algoritmu, par ko tika runāts iepriekš.

Proporcionālais kontrolieris ir ierīce, kas iedarbojas uz objektu proporcionāli tā novirzei no noteiktā stāvokļa:

Šeit k ir kontrollera pastiprinājums.

Doto stāvokli x0 parasti sauc par uzdoto vērtību, un novirzi no tā e sauc par atlikumu. Turpmāk skaidrības labad atlikumu apzīmēsim ar saīsinājumu err (no Angļu vārds"kļūda" - kļūda).

Motora vadība

Pieredzējis karotājs nevicinās zobenu, kā to dara robots uz releja kontrollera. Mums ir jāizdomā algoritms, kas noturēs motoru, kas tur zobenu stingri fiksētā stāvoklī (7.1. att.). P-regulators palīdzēs šajā jautājumā.

Ļaujiet e 1 - ātruma sensora 1 rādījumi motoram A - ir regulējams mainīgais. Iestatījums x0 = 45, un atlikušais e = 45 – e 1. Tad vadības darbību uz motoru nosaka pēc formulas

u = k ∙ (45 – e 1).

Šeit k ir pastiprinājuma koeficients, piemēram, 5, kas uzlabos motora reakciju pat ar nelielām novirzēm no iestatītās vērtības.

1 Nejauciet atlikušā e (no kļūdas) matemātisko apzīmējumu ar kodētāja e 1 (no kodētāja) rādījumiem, kas ir iepriekš definēts Robolab vides mainīgais.

Ja ir novirze pozitīvā puse motoram tiks piemērota negatīva vadības ievade un otrādi. Šo vadību var pielietot motoram ciklā ar nelielu aizkavi 1-10 ms, lai atslogotu kontrolieri (7.8. att.).

Rīsi. 7.8. Motora vadības algoritms, izmantojot proporcionālo kontrolieri.

Ja pastiprinājuma koeficients tiek palielināts no 5 līdz 100, mūsu proporcionālais kontrolieris sāks darboties kā relejs, izraisot spēcīgas svārstības pārsnieguma efekta dēļ.

RobotC valodai nav tik ērta apzīmējuma kodētāja rādījumiem kā Robolab, tāpēc programma izskatās nedaudz garāka:

int k=5, u; nMotorEncoder=0; kamēr (patiess)

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

Turklāt, lai veiktu “triecienu ar zobenu”, pietiek ar mainīgo skaitļa 45 vietā un mainīt tā vērtību no ārpuses, piemēram, no paralēla uzdevuma. Tas ir apskatīts 8. nodaļas sadaļā par bundziniekiem-robotiem.

Tagad izveidosim kontrolieri, kas kontrolē ne tikai motora statisko stāvokli, bet arī tā kustības ātrumu. Sekojot algoritma loģikai, uzdotajai vērtībai, kas līdz šim ir bijusi nemainīga un nav mainījusies, jāsāk virzīties uz pieaugumu vai samazinājumu. Paklausot regulatoram, motors tam neizbēgami sekos. Vienkāršākais rīks uzdotās vērtības nepārtrauktai palielināšanai ir taimeris.

NXT kontrollerim ir četri iebūvēti taimeri, no kuriem katrs var mērīt laiku sekundes desmitdaļās, simtdaļās un tūkstošdaļās. Apgūsim pirmo taimeri, kas izpilda 10 “padomi” sekundē.

kov". Robolab tas ir apzīmēts ar T1 vai Timer100ms1, un RobotC tas ir timer100.

Padarīsim motora novirzes leņķi alfa, kas norādīts iepriekšējā piemērā pie 45, atkarīgu no taimera rādījumiem ar paātrinājuma koeficientu k 2:

alfa = k2 ∙ T1.

Vadības darbība paliks tāda pati ar pastiprinājuma koeficientu k 1:

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

Īsumā, programmā Robolab valodā mēs pielietosim vadības darbību tieši motoram, iepriekš inicializējot taimeri.

Rīsi. 7.9. Motora ātruma kontrole ir viens apgrieziens sekundē.

Koeficients k 2 = 36 nosaka, ka sekundē alfa vērtība palielinās līdz 360, kas atbilst vienam pilnam dzinēja apgriezienam:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer(T1); kamēr (patiess)

alfa=taimeris100*k2; u=k1*(alfa-nMotorEncoder); motors=u;

Izmantojot veselu skaitļu dalīšanu, kā tas pieņemts C valodā (un Robolab) vesela skaitļa tipa mainīgajiem, ir iespējams panākt diskrētas leņķa izmaiņas, t.i. palielina to reizi sekundē:

alfa = T 1 / 10 ∙ k 2.

Ar koeficientu k 2 = 60 stara kustība atbildīs sekunžu rādītāja kustībai uz pulksteņa ciparnīcas. Bet ar to nepietiek

pamanāms. Skaidrības labad varat iestatīt k2 = 30, tad bultiņa veiks pilnu apgriezienu 12 “ērcēs” pa 30 grādiem katrā. Esiet uzmanīgi ar veselu skaitļu dalīšanas un reizināšanas darbību secību, mainot to secību vai “samazinot”, rezultāts noteikti mainīsies (7.10. att.).

Rīsi. 7.10. Paātrināta pulksteņa rādītāja kustības imitācija.

Un visbeidzot matemātiskā bundzinieka piemērs. Tā vietā, lai nepārtraukti virzītos uz priekšu, adata svārstās uz priekšu un atpakaļ P-regulatora kontrolē. Tam palīdzēs dalīšanas darbība ar atlikumu, kas C apzīmēta ar % zīmi. Nenegatīva vesela skaitļa atlikums, kas dalīts ar 2, vienmēr būs 0 vai 1:

alfa = T 1% 2 ∙ k 2.

Palielinot novirzi par k 2 = 15 reizes, mēs iegūstam svārstību uzdoto vērtību alfa, kas liks regulatoram pārvietot motoru 5 reizes sekundē, vai nu par 0º, vai par 15 grādiem. Izmaiņas programmā ir nelielas. Apskatīsim piemēru RobotC:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer(T1); kamēr (patiess)

alfa=taimeris100%2*k2; u=k1*(alfa-nMotorEncoder); motors=u;

Šis bundzinieka prototips ar regulāriem intervāliem sit pie galda. Galvenais ir sākt pareizā stāvoklī. Izmantojot veselu skaitļu matemātiku, varat iestatīt, piemēram, sarežģītāku ritmisko modeli (7.1. tabula):

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

centrs = S3.

Koeficients tiek noteikts ciklā:

k 1 = c + (S 3 — centrs) / k 2.

Rīsi. 7.36. Kustība pa līniju uz proporcionāla kontrollera ar peldošu koeficientu.

Iegūto pastiprinājuma kontroles likumu var attiecināt ne tikai uz proporcionālo komponenti, bet arī uz jebkuru citu komponenti, kā arī uz vadības darbību kopumā (7.36. att.).

PID kontrolieris

Proporcionālā integrālā atvasinājuma (PID) kontrolieris ir viens no populārākajiem un tiek izmantots daudzās ierīcēs. dažādi veidi, kas prasa ātru sistēmas reakciju un pozicionēšanas precizitāti. Kā norāda nosaukums, šis regulators sastāv no trīs komponentu summas un ir grafiski attēlots attēlā. 7.37.

Rīsi. 7.37. PID regulatora ķēde.

Šī ir vienkāršota diagramma. Dinamiskās kļūdas vērtība e (t) tiek ievadīta kontrollera ieejā, un izejā tiek ģenerēta vadības darbība u (t):

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

e (τ)d τ + k d ∙

de.

Proporcionālais komponents, kas diagrammā parādīts kā trīsstūris, ir atbildīgs par sistēmas pozicionēšanu noteiktā stāvoklī. Dažos gadījumos tas var izraisīt pārtēriņu ar sekojošām pašsvārstībām. Tas ir, P-regulators var “pārspīlēt”, un robots sāks dreifēt no vienas puses uz otru.

Neatņemamā sastāvdaļa uzkrāj negatīvo pieredzi (summējot kļūdas) un rada kompensējošu efektu. Ar minimālām novirzēm proporcionālā komponente “novājinās”, un integrālā komponente, pateicoties tā straujajam pieaugumam, summējot, palīdz “sasniegt” kontrolēto vērtību līdz iestatītajam punktam.

Diferenciālais komponents (D-komponents) uzrauga sistēmas stāvokļa izmaiņu ātrumu un novērš iespējamo pārtēriņu. Dažos gadījumos D-komponents pēc zīmes ir pretējs proporcionālajam, bet citos tas ir vienāds.

Ar proporcionālo komponenti mēs jau esam pazīstami, diferenciālā ir aprakstīta iepriekšējā 6. nodaļā. Ņemsim par integrālo. Šo komponentu nosaka dinamiski, summējot ar iepriekšējo vērtību:

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

Daudzuma e(t) × dt fiziskā nozīme ir tāda, ka tā ir

proporcionāls sistēmas darbības ilgumam kļūdas stāvoklī. Tā kā koeficients k i ir izņemts no iekavām, mēs varam runāt par vērtību i kā kļūdu ilgumu summu. Tādējādi mēs atrodam integrāli, summējot.

Apsvērsim PID kontroliera izmantošanu, izmantojot piemēru ar robotu, kas balansē uz diviem riteņiem. Šo klasisko problēmu var atrisināt, izmantojot dažādus sensorus dažādos veidos. Ierosinātajā piemērā tiek izmantots gaismas sensors un vienkāršākā forma PID kontrolieris. Tomēr, lai panāktu robota stabilizāciju, būs jāizmanto precīzāki sensora rādījumi.

RAW formātā

Sensora dati tiek ievadīti NXT kontrollerī neapstrādātā, neapstrādātā veidā. Visi sensori pārraida operētājsistēma digitālā vērtība no 0 līdz 1023, ko pēc tam apstrādā attiecīgais draiveris un samazina līdz saprotamākai formai (attālums 0...255, apgaismojums 0...100, pieskāriens 0 vai 1 utt.). Bet datus var saņemt tieši, apejot vadītāju. Šo neapstrādāto formātu parasti sauc par RAW (no angļu valodas “raw”). Dažos gadījumos to var izmantot, lai sasniegtu lielāku precizitāti. Piemēram, gaismas sensora vērtību diapazons var palielināties aptuveni 10 reizes. Tieši šī iespēja tiek izmantota tālāk.

Jūs varat saņemt datus RAW formātā gan Robolab, gan RobotC. Lai to izdarītu, sensors tiek attiecīgi inicializēts, un dati tiek nolasīti no tā, izmantojot īpašu iepriekš definētu mainīgo.

Balansēšanas robots

Segway robota dizains ir parādīts attēlā. 7.38: vertikāli novietots kontrolieris, cieši novietoti riteņi un uz leju vērsts gaismas sensors. Algoritms būs nedaudz sarežģītāks.

Segway stabilizēšanas princips līdzsvarotā stāvoklī ir šāds. Ja robots noliecas uz priekšu, gaismas sensora rādījums palielinās atstarotās gaismas dēļ. Atbildot uz to, tiek ģenerēta vadības darbība, liekot robotam virzīties uz priekšu un tādējādi atkal ieņemt vertikālu stāvokli.

Virzoties atpakaļ, sensora rādījumi samazinās un robots sāk kustēties atpakaļ. Par to visu atbild proporcionālā sastāvdaļa. Integrālo un diferenciālo komponentu lomu spēlē apdrošināšana pret pārsniegšanu.

Rīsi. 7.38. Līdzsvarojošs Segway robots.

Attēlā 7.39 parāda Robolab algoritmu. Lielāko daļu no tā aizņem mainīgo lielumu inicializācija. Lai uzlabotu precizitāti, sensora dati tiek nolasīti ne tikai RAW formātā, bet lielākā daļa mainīgo tiek deklarēti reālā peldošā formātā. Pats PID algoritms ir cilpā.

Rīsi. 7.39. Balansētāja algoritms ir balstīts uz PID kontrolieri.

Ievērojot tradīciju pārvietoties pa līniju, kā uzdoto vērtību izmantojam pelēko mainīgo - gaismas sensora vidējos rādījumus līdzsvara stāvoklī. Jaunais mēroga parametrs norāda vadības darbības mērogošanu. Tas būtībā ir vājināšanas koeficients, jo regulatora radītā vērtība ir pārāk augsta NXT motoriem. To varētu pievienot esošo koeficientu iekšpusē, bet RobotC šis parametrs būs atšķirīgs, bet koeficienti būs vienādi.

Ar dotajiem koeficientiem robots labi stabilizējas uz vienkārša, gaišas krāsas linoleja vai rakstāmgalda. Tas ir, viņam nevajag balts virsmas. Lai palaistu, jums ir precīzi jāiestata Segway līdzsvara stāvoklī. Ja robots sāk ar nelielu slīpumu uz priekšu vai atpakaļ, tas nekavējoties sāks kustēties slīpuma virzienā.

Līdzīgs piemērs RobotC ir nedaudz atšķirīgs vairāku iemeslu dēļ. Pirmkārt, NXT veiktspēja ar šīs vides programmaparatūru ir aptuveni 1,4 reizes augstāka nekā Robolab, tāpēc ir jāpalielina mēroga koeficients. Otrkārt, RAW vērtības tiek pārsūtītas uz pareizā secībā un jums būs jāiestata motori atpakaļgaitā vai vienkārši jāpiemēro negatīva vadības darbība:

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

pludiņš kp=25, ki=350, kd=0,3; pludiņa skala=14;

peldēt dt=0,001; peldēt p, i=0, d, u; kamēr (patiess)

err= pelēks-SensorRaw; //Novirze ar pretēju zīmi p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; err=err; u=(p+i+d)/mērogs; motors=u; motors=u; gaidīt 1 msek (1);

Automātiskās vadības teorijas elementi skolā1

Svarīgs un interesants metodiskais uzdevums ir “izmest tiltu” starp speciālista un studenta zināšanu jomām, palīdzot skolas audzēkņiem saskatīt nākotnes specialitātes perspektīvas, t.i. veic karjeras orientāciju, un skolēni redz to praktisko pielietojamību profesionālās zināšanas. Lai panāktu līdzīgu efektu, tika izstrādātas regulatoru aprēķināšanas metodes, izmantojot matemātiskos rīkus, kas nepārsniedz skolu programmas matemātikā un fizikā. Jo īpaši tā vietā diferenciālvienādojumi tiek izmantotas atšķirības, kas labi atbilst objekta un kontrollera mijiedarbības diskrētajam raksturam datorvadībā.

Apskatīsim, piemēram, proporcionālo (P) un proporcionālo atvasinājumu (PD) kontrolieru konstruēšanas problēmu mobilā robota kustības pa sienu vadīšanas uzdevumā. Apzīmēsim ar x t attālumu starp robotu un sienu, ar θt - robota virziena leņķi un ar u t - attiecīgi ar kārtas numuru t vadības darbību momentā, kur t = 0, 1, 2, ... - pārmaiņu momentu skaitļi

rēnijs. Tiek uzskatīts, ka sensoru aptauja un vadības darbības lieluma izmaiņas tiek veiktas vienādos laika intervālos h. Lego NXT robotu vadības uzdevumiem ir dabiski pieņemt, ka atšķirība ir vadības darbība leņķiskie ātrumi riteņa rotācija, proporcionāla kursa leņķa maiņas ātrumam:

Pieņemot, ka kursa novirzes no nominālā θt =0 ir nelielas un robota vidējais ātrums ir nemainīgs: vt=v, robota stāvokļa mainīgo izmaiņu dinamiku var aprakstīt ar pirmo tuvinājumu. lineārie vienādojumi norāda:

kur g = h2vr / b.

Iestatīsim vēlamo attālumu līdz sienai x*> 0 un pēc attiecības noteiksim kontroles mērķi (CT).

xt → x* kā t→∞.

Tagad, protams, substantīvā līmenī ieviesīsim asimptotiskās stabilitātes jēdzienu kā sistēmas (4) risinājumu īpašību, nodrošinot mērķa vērtības (5) sasniegšanu jebkuros sākotnējos apstākļos, kas diezgan maz atšķiras no mērķa. Ir viegli redzēt, ka u t = 0 (4) vienādojuma risinājums ir jebkura konstanta vērtība x t = x*. Bet, tā kā vienādojumam (4), kas atbilst dubultā integratora (dubultā summatora) modelim, nepiemīt asimptotiskas stabilitātes īpašība, vadības centrs (5) plkst. pastāvīga vadība nav sasniegts. To var viegli analītiski parādīt, summējot vairākus



 


Lasīt:



Kā pagatavot liellopa mēli mājās

Kā pagatavot liellopa mēli mājās

Kulinārijas nozare piedāvā lielu skaitu delikateses, kas spēj apmierināt jebkura cilvēka gastronomiskās vajadzības. Starp tiem...

Cepeškrāsnī cepts lasis

Cepeškrāsnī cepts lasis

Krāsnī cepts lasis ir skaists svētku ēdiens. Ja vēlaties uzzināt, kā to garšīgi pagatavot, tad izlasiet noslēpumus un skatieties garšīgu...

Kāpēc sapnī redzēt peles?

Kāpēc sapnī redzēt peles?

saskaņā ar dzīvnieku sapņu grāmatu htonisks simbols, kas nozīmē tumsas spēkus, nemitīgu kustību, bezjēdzīgu uztraukumu, satricinājumu. Kristietībā...

Sapņo staigāt pa jūru. Kāpēc tu sapņo par jūru? Sapņa interpretācija par peldēšanu jūrā. Nelīdzena jūra sapnī

Sapņo staigāt pa jūru.  Kāpēc tu sapņo par jūru?  Sapņa interpretācija par peldēšanu jūrā.  Nelīdzena jūra sapnī

Ja sapnī mēs redzam ūdeni, vai tas būtu ūdenskritums, upe, strauts vai ezers, tas vienmēr ir kaut kādā veidā saistīts ar mūsu zemapziņu. Jo šis ūdens ir tīrs...

plūsmas attēls RSS