Kretanje PID regulatora ev3 duž linije. Proporcionalni integralni diferencijalni PID kontroler u Lego Mindstorms Robotics

Robotika je novi interesantan pravac, koji će se, po svemu sudeći, dalje razvijati u okviru školskih kurseva informatike i tehnologije. Procvat robotike je najvećim dijelom posljedica činjenice da vam omogućava da odgovorite na pitanje: "Zašto zapravo učimo programirati?". Osim toga, u toku robotike možete se upoznati s elementarnim konceptima teorije automatskog upravljanja.

Ova stranica predstavlja simulatore za programiranje i Arduino ploče koje je razvio autor. Oni mogu pomoći u slučajevima kada iz nekog razloga nije moguće koristiti pravi hardver.

Trenažeri koriste HTML5 funkcije, tako da će raditi samo u modernim pretraživačima (najbolje je koristiti google chrome ili Mozilla Firefox).

Vijesti sada na Telegram kanalu

27. novembar 2015
Staza "klica" dodata je simulatorima ( M.V. Lazarev, Orekhovo-Zuevo).

13. oktobar 2015
Sada u simulatorima za LEGO robota možete učitati svoje staze (polja za robota). Kako uraditi? Vidi.
Dodati novi simulatori - LEGO roboti sa dva, tri, četiri senzora svjetlosti.

Jezik kontrole robota

Za upravljanje robotima u simulatorima koristi se jednostavan programski jezik koji je dobio radni naziv SiRoP (Jednostavno programiranje robota).

Upravljanje robotom sa senzorom svjetlosti

Senzor svjetla omogućava robotu da se kreće po površini stola, na primjer, da se kreće duž granice između bijele i crne oblasti (duž ivice crne linije). Fotodioda osvjetljava površinu, fotodetektor "hvata" reflektirane zrake i mjeri njihov intenzitet.

Najpopularniji zadatak ove vrste je kretanje duž linije. Uz pomoć simulatora možete proučavati različite zakone upravljanja - relejno, proporcionalno, pa čak i PID upravljanje (proporcionalno-integralno-derivativno).

Primjeri programa za robota sa svjetlosnim senzorom

Dok je 1 (ako je senzor > 128 (motor = 100 motor = 0) drugo (motor = 0 motor = 100) čekaj(10))

KP = 0,2 dok je 1 ( u = kP*(senzor-128) motor = 50 + u motor = 50 - u čekaj(20) )

Glavni ( dok je 1 ( dok je senzor > 128 ( motor = 100 motor = 100 čekaj(10) ) nazad() okreni() ) ) nazad ( motor = -100 motor = -100 čeka (260) ) okret ( motor = -50 motor = 50 čekaj(50)

Upravljanje robotom sa dva svjetlosna senzora

Dva senzora svjetlosti omogućavaju robotu da se bolje kreće i prati tanku liniju. Pomaknute su malo naprijed i razdvojene u strane. Što se tiče zadataka s jednim senzorom, pomoću ovog simulatora možete proučavati različite zakone upravljanja.

Primjeri programa za robota sa tri svjetlosna senzora

Kontrola robota sa četiri svjetlosna senzora

Četiri svjetlosna senzora omogućavaju robotu da bolje detektuje oštre zavoje. Za fino podešavanje se koriste unutrašnji senzori, za njih se koristi proporcionalna kontrola. Dva eksterna senzora su postavljena malo napred i odvojena sa strane. Koriste se kada je naglo skretanje. Faktor pojačanja za kontrolu prema očitanjima senzora vanjskog para bira se veći nego za unutrašnji par (vidi Sl. L.Yu. Ovsyanitskaya et al., Algoritmi i programi za kretanje Lego Mindstorms EV3 robota duž linije, M.: „Pero“, 2015.).

Primjeri programa za robota sa četiri svjetlosna senzora

Dok je 1 ( d0 = enkoder > 128 d1 = enkoder > 128 d2 = enkoder > 128 d3 = enkoder > 128 ako je d1 & !d2 ( motor = 100 motor = 0 ) ako! d1 & d2 ( motor = 0 motor = 100 ) ako je d1 == d2 ( motor = 100 motor = 100 ) ako je d0 & !d3 ( motor = 30 motor = 0 ) ako! d0 & d3 ( motor = 0 motor = 30 ) čekaj(10) )

K1 = 0,2 k2 = 0,4 dok je 1 ( u1 = senzor - senzor u2 = senzor - motor senzora = 50+k1*u1+k2*u2 motor = 50-k1*u1-k2*u2 čekaj(10) )

Upravljanje robotom sa senzorom udaljenosti (sonar)

Senzor udaljenosti (sonar) vam omogućava da odredite udaljenost do najbliže prepreke dok se robot kreće. Emituje ultrazvučni signal i prima reflektovani signal. Što je duže vrijeme između odaslanog i primljenog signala, to je rastojanje veće.

Koristeći senzor udaljenosti, robot se može programirati da se automatski kreće kroz labirint poznatog oblika, ali nepoznate veličine.

Jedan od osnovnih pokreta u legokonstrukciji je praćenje crne linije.

Opća teorija i konkretni primjeri kreiranja programa opisani su na web stranici wroboto.ru

Opisaću kako to implementiramo u EV3 okruženju, jer postoje razlike.

Prva stvar koju robot treba da zna je vrijednost “idealne tačke” koja se nalazi na granici crnog i bijelog.

Lokacija crvene tačke na slici upravo odgovara ovoj poziciji.

Idealna opcija proračuna je izmjeriti vrijednost crno-bijelog i uzeti aritmetičku sredinu.

Možete to učiniti ručno. Ali nedostaci su odmah vidljivi: čak i za kratko vrijeme, osvjetljenje se može promijeniti, a izračunata vrijednost će se pokazati netačnom.

Tako da možete natjerati robota da to uradi.

U toku eksperimenata ustanovili smo da nije potrebno mjeriti i crno i bijelo. Može se mjeriti samo bijelo. A vrijednost idealne tačke se izračunava kao vrijednost bijele boje podijeljena sa 1,2 (1,15), ovisno o širini crne linije i brzini robota.

Izračunata vrijednost mora biti upisana u varijablu da bi joj se kasnije pristupilo.

Proračun "idealne tačke"

Sljedeći parametar uključen u kretanje je brzina okretanja. Što je veći, to će robot oštrije reagirati na promjene u osvjetljenju. Ali previsoka vrijednost će uzrokovati ljuljanje robota. Vrijednost se odabire eksperimentalno pojedinačno za svaki dizajn robota.

Posljednji parametar je osnovna snaga motora. To utiče na brzinu robota. Povećanje brzine kretanja dovodi do povećanja vremena odziva robota na promjene u osvjetljenju, što može dovesti do napuštanja putanje. Vrijednost se također odabire eksperimentalno.

Radi praktičnosti, ovi parametri se također mogu zapisati u varijable.

Omjer upravljanja i bazna snaga

Logika kretanja duž crne linije je sljedeća: mjeri se odstupanje od idealne tačke. Što je veći, to bi robot snažniji trebao nastojati da mu se vrati.

Da bismo to učinili, izračunavamo dva broja - vrijednost snage svakog od motora B i C zasebno.

U formi formule to izgleda ovako:

Gdje je Isens vrijednost očitavanja svjetlosnog senzora.

Konačno, implementacija u EV3. Najprikladnije je izdati u obliku zasebnog bloka.

Implementacija algoritma

Ovo je algoritam koji je implementiran u robota za srednju kategoriju WRO 2015

Ovaj zadatak je klasičan, ideološki jednostavan, može se riješiti više puta, a svaki put ćete otkriti nešto novo.

Postoji mnogo pristupa za rješavanje problema koji slijedi. Izbor jednog od njih ovisi o specifičnom dizajnu robota, broju senzora, njihovoj lokaciji u odnosu na kotače i međusobno.

U našem primjeru, tri primjera robota će biti rastavljena na osnovu glavnog modela tutorijala Robot Educator.

Za početak sastavljamo osnovni model Robot Educator-a, za to možete koristiti upute u softveru MINDSTORMS EV3.

Također, na primjer, potrebni su nam EV3 senzori u boji svjetla. Ovi svjetlosni senzori, kao nijedan drugi, najbolje odgovaraju našem zadatku, pri radu s njima ne moramo brinuti o intenzitetu ambijentalnog svjetla. Za ovaj senzor, u programima ćemo koristiti režim reflektovanog svetla, u kojem se procenjuje količina reflektovanog svetla crvenog osvetljenja senzora. Granice očitavanja senzora su 0 - 100 jedinica, za "bez refleksije" i "potpunu refleksiju", respektivno.

Na primjer, analizirat ćemo 3 primjera programa za kretanje po crnoj stazi prikazanoj na ravnoj, svijetloj pozadini:

· Jedan senzor, sa P regulatorom.

· Jedan senzor, sa PK regulatorom.

· Dva senzora.

Primjer 1. Jedan senzor, sa P regulatorom.

Dizajn

Senzor svjetla je postavljen na snop koji je pogodno smješten na modelu.


Algoritam

Rad algoritma se zasniva na činjenici da, u zavisnosti od stepena preklapanja, snopa osvetljenja senzora sa crnom linijom, očitanja koja vraća senzor variraju u gradijentu. Robot zadržava poziciju svjetlosnog senzora na granici crne linije. Konvertovanjem ulaznih podataka sa senzora svetlosti, kontrolni sistem generiše vrednost brzine okretanja robota.


Budući da na stvarnoj putanji senzor generiše vrijednosti u cijelom svom radnom rasponu (0-100), vrijednost kojoj robot teži je 50. U ovom slučaju, vrijednosti koje se prenose na funkciju rotacije formiraju se u rasponu -50 - 50, ali ove vrijednosti nisu dovoljne za strmu rotaciju putanje. Stoga bi raspon trebao biti proširen za jedan i pol puta na -75 - 75.

Konačno, u programu, funkcija kalkulatora je jednostavan proporcionalni kontroler. čija funkcija ( (a-50)*1.5 ) u radnom rasponu svjetlosnog senzora generira vrijednosti rotacije u skladu sa grafikonom:

Primjer algoritma

Primjer 2. Jedan senzor, sa PK kontrolerom.

Ovaj primjer je sastavljen na istom dizajnu.

Vjerovatno ste primijetili da se u prethodnom primjeru robot previše ljuljao, što mu nije dozvoljavalo da dovoljno ubrza. Sada ćemo pokušati da malo popravimo ovu situaciju.

Našem proporcionalnom kontroleru dodajemo i jednostavan kockasti kontroler, koji će dodati zaokret funkciji kontrolera. To će smanjiti ljuljanje robota blizu željene granice putanje, kao i napraviti jače trzaje na velikoj udaljenosti od nje.

Proporcionalni kontroler je uređaj koji vrši kontrolno dejstvo u(t) na objekat proporcionalno njegovom linearnom odstupanju e(t) od datog stanja x0(t);

e(t)=x0(t)-x(t), gdje je x(t) stanje u datom trenutku;

u(t)=ke(t), gdje je k faktor pojačanja.
Odnosno, što robot više odstupa od zadanog kursa, to bi motori trebali aktivnije raditi, izravnavajući ga.

Hodanje u liniji s jednim svjetlosnim senzorom pomoću P kontrolera

Kretanje duž granice crnog i bijelog može se izgraditi i na P-regulatoru. Iako se spolja čini da je zadatak riješen samo uz pomoć relejnog kontrolera, jer u sistemu postoje samo dva stanja vidljiva ljudskom oku: crno i bijelo. Ali robot sve vidi drugačije, za njega ne postoji oštra granica između ovih boja. Možemo reći da je kratkovid i vidi gradijentni prijelaz nijansi sive.

To je ono što će pomoći da se napravi P-regulator.
Definirajući stanje rada kao očitavanja svjetlosnog senzora, naučit ćemo kako osigurati proporcionalni kontrolni učinak na motore prema sljedećem zakonu:
e=s1-siva, gdje je s1 trenutno očitavanje senzora, a siva je podešena vrijednost.

Koeficijent k (u ovom primjeru jednak 2) mora biti dovoljno mali (između 1 i 3). Takav kontroler efikasno radi samo za male uglove otklona, ​​pa se robot mora postaviti u smjeru kretanja tako da senzor bude na lijevoj strani crne linije. Lako je uočiti da je kretanje duž linije na P-regulatoru glatko. a u nekim područjima rada kreće se gotovo pravolinijski ili tačno ponavljajući zavoje linije.

Kalibracija senzora

Pogledajmo broj 48 koji se koristi u formuli. Ovo je aritmetički prosjek očitavanja svjetlosnog senzora na crno-bijelom, na primjer (40+56)/2=48. Međutim, očitanja senzora se često mijenjaju iz različitih razloga: drugačija površina, promjena općeg osvjetljenja u prostoriji, mala modifikacija strukture itd. Stoga ćemo robota ručno kalibrirati određivanjem očitavanja svjetlosnog senzora na bijeloj i crnoj boji.

Praćenje linije sa dva senzora svetlosti pomoću P kontrolera
Prilično je teško pravilno proći kroz raskrsnicu sa jednim svjetlosnim senzorom. Ako želite to učiniti dovoljno brzom brzinom, potrebna su vam najmanje dva senzora razmaknuta najmanje dvije širine linije (ili šire).
Postoje četiri stanja senzora prilikom kretanja:

  • oba na bijelom - pravo naprijed;
  • lijevo (s1) nije crno, desno (s2) na bijelom - pomaknite se ulijevo;
  • lijevo na bijelo, desno na crno - kretanje udesno;
  • oboje na crno - idite pravo.
To. ako su očitanja senzora jednaka (oba bijela ili oba crna), robot ide pravo. Prije pokretanja robota, automatski ćemo kalibrirati oba senzora. Tada će algoritam kretanja duž linije s P-kontrolerom izgledati ovako:

Koeficijent k može varirati u prilično širokom rasponu (od 1 do 20 ili više) ovisno o zakrivljenosti linije, upravljivosti robota i razlici između crnog i bijelog na terenu.
Važan uslov. Autokalibraciju treba izvršiti na jednobojnoj površini i po mogućnosti na osvjetljenju koje će zauzeti najveći dio putanje. Na primjer, ako se robot kreće duž crne linije na bijelom polju, tada je potrebno kalibrirati na bijelom. One. pozicija robota na startu bi trebala biti ovakva:


I još jedna napomena. Postoje senzori čija se očitanja razlikuju za 10-20%. Preporučljivo je da ih ne uparite s regulatorom s velikim koeficijentom, jer uz oštru promjenu ukupnog osvjetljenja, čak i na jednoličnom bijelom polju, odstupanja se mogu pokazati različitim, što će dovesti do neočekivanih posljedica.
Podijeli: