Međunarodno natjecanje robota - Pravila - Uzorci robota - Lego EV3 robot na putu. Lego EV3. Kretanje crne linije Kretanje crte s volanom u ev3

15.01.2012, 18:51

Do sada, u člancima o algoritmima koji se koriste pri kretanju duž linije, takva se metoda razmatrala kada je svjetlosni senzor, takoreći, pratio njegovu lijevu ili desnu granicu: čim se robot pomakne na bijeli dio polja, kontroler je vratio robota na granicu, senzor se počeo kretati duboko u crne linije - regulator ga je ispravio natrag.
Unatoč činjenici da je gornja slika za relejni regulator, opći princip kretanja proporcionalnog (P-regulatora) bit će isti. Kao što je već spomenuto, prosječna brzina takvog kretanja nije jako visoka, a nekoliko je pokušaja da se poveća laganim kompliciranjem algoritma: u jednom slučaju korišteno je "meko" kočenje, u drugom, osim zavoja, uvedeno je kretanje naprijed.
Kako bi se robotu omogućilo da se kreće naprijed u nekim područjima, dodijeljen je uski dio u rasponu vrijednosti ​​proizvedenih svjetlosnim senzorom, što bi se uvjetno moglo nazvati "senzor je na granici linije".
Ovaj pristup ima mali nedostatak - ako robot "prati" lijevu granicu linije, tada se čini da u desnom zavoju ne određuje odmah zakrivljenost putanje i, kao rezultat toga, provodi više vremena u potrazi za crtom i okretanje. Štoviše, može se s povjerenjem reći da što je zavoj strmiji, to potraga traje dulje.
Sljedeća slika pokazuje da ako se senzor ne nalazi na lijevoj strani granice, već na desnoj strani, tada bi već otkrio zakrivljenost putanje i počeo bi izvoditi manevre skretanja.

Stoga je dobra ideja opremiti robota s dva senzora odjednom, koji su smješteni na suprotnim stranama linije i, sukladno tome, pomogli bi robotu da brže reagira na promjenu smjera kretanja.
Sada je potrebno utvrditi kako će takva promjena dizajna utjecati na program. Radi jednostavnosti, opet bismo trebali početi s najjednostavnijim relejnim regulatorom, pa nas prije svega zanimaju mogući položaji senzora u odnosu na liniju:

Naime, može se izdvojiti još jedno prihvatljivo stanje - na teškim rutama to će biti raskrižje raskrižja ili neka vrsta zadebljanja na stazi.
Ostali položaji senzora neće se uzeti u obzir, jer su ili izvedeni iz gore prikazanih, ili su to položaji robota kada je napustio liniju i više se neće moći vratiti na nju koristeći informacije sa senzora. Kao rezultat toga, sve gore navedene odredbe mogu se svesti na sljedeću klasifikaciju:
  • lijevi senzor, kao i desni, nalazi se iznad svjetlosne površine
  • lijevi senzor iznad svjetle površine, desni senzor iznad tamne
  • lijevi senzor iznad tamne površine, desni senzor iznad svjetla
  • oba senzora su iznad tamne površine
Ako u određenom trenutku program na robotu otkrije jednu od ovih pozicija, morat će reagirati u skladu s tim:
    Ako su oba senzora iznad bijele površine, onda je ovo normalna situacija u kojoj je linija između senzora, pa robot mora ići ravno. Ako je lijevi senzor još uvijek iznad svjetlosne površine, a desni senzor je već iznad tamni, onda je robot zabio desnom stranom na crtu, što znači da se treba okrenuti udesno da linija opet bude između senzora. Ako je lijevi senzor iznad tamne površine, a desni je još uvijek iznad svijetli, onda se robot treba okrenuti ulijevo kako bi se poravnao.Ako su oba senzora iznad tamne površine, onda u općem slučaju robot opet nastavlja ravno.

Gornji dijagram odmah pokazuje kako bi se točno ponašanje motora trebalo promijeniti u programu. Sada pisanje programa ne bi trebalo biti teško. Trebali biste početi odabirom koji će senzor biti prvi ispitan. Nije bitno, pa neka se ostavi. Potrebno je utvrditi je li na svijetloj ili tamnoj površini:
Ova radnja vam još ne dopušta da kažete u kojem smjeru bi robot trebao ići. Ali to će podijeliti gore navedene države u dvije skupine: (I, II) za gornju granu i (III, IV) za donju. Svaka od grupa sada ima dva stanja, pa morate odabrati jedno od njih. Ako pažljivo pogledate prva dva stanja I i II, razlikuju se po položaju desnog senzora - u jednom slučaju je iznad svijetle površine, u drugom - iznad tamne. Ovo će odrediti izbor akcije koju treba poduzeti:
Sada možete umetnuti blokove koji definiraju ponašanje motora prema gornjim tablicama: gornja grana ugniježđenog stanja definira kombinaciju "oba senzora na svjetlu", gornja - "lijevo na svjetlu, desno na mraku":
Donja grana glavnog stanja odgovorna je za drugu skupinu stanja III i IV. Ova dva stanja također se međusobno razlikuju po razini osvjetljenja koju hvata desni senzor. Dakle, to će odrediti izbor svakog od njih:
Dobivene dvije grane ispunjene su blokovima kretanja. Gornja grana je odgovorna za stanje "lijevo na mraku, desno na svijetlo", a donja za "oba senzora na mraku".
Treba napomenuti da ovaj dizajn samo određuje kako uključiti motore ovisno o očitanjima senzora na određenom mjestu u polju, naravno, nakon trenutka, program mora provjeriti jesu li se očitanja promijenila kako bi ispravio ponašanje motora u skladu s tim, i nakon trenutka opet, opet, i tako dalje. .d. Stoga bi ga trebalo staviti u petlju koja će osigurati ovu ponovljenu provjeru:

Takav prilično jednostavan program omogućit će prilično veliku brzinu robota koji se kreće duž linije bez prekoračenja njezinih granica, ako ispravno postavite maksimalnu brzinu prilikom kretanja u stanjima I i IV, a također postavite optimalnu metodu kočenja u stanjima II i III - što su zavoji na stazi strmiji, kočenje bi trebalo biti "teže" - brzina bi trebala padati brže, i obrnuto - s glatkim zavojima, sasvim je moguće primijeniti kočenje kroz isključivanje energije ili čak kroz blagi pad brzine.

Nekoliko odvojenih riječi treba reći i o postavljanju senzora na robota. Očigledno je da će se za položaj ova dva senzora u odnosu na kotače primijeniti iste preporuke kao i za jedan senzor, samo se sredina segmenta koji povezuje dva senzora uzima kao vrh trokuta. Samu udaljenost između senzora također treba odabrati prema karakteristikama staze: što su senzori bliže jedan drugom, to će se robot češće izravnati (izvoditi relativno spore okrete), ali ako su senzori dovoljno razmaknuti , tada postoji opasnost od izlijetanja sa staze, pa ćete na ravnima morati izvoditi čvršće zavoje i sporije kretanje.



Kako bi se robot glatko kretao duž crne linije, morate ga natjerati da izračuna samu brzinu kretanja.

Osoba vidi crnu liniju i njezinu jasnu granicu. Senzor svjetla radi malo drugačije.

Upravo to svojstvo svjetlosnog senzora – nemogućnost jasnog razlikovanja granice između bijele i crne – koristit ćemo za izračunavanje brzine kretanja.

Najprije uvedemo pojam “Idealna točka putanje”.

Očitavanja svjetlosnog senzora kreću se od 20 do 80, najčešće na bijeloj, očitanja su oko 65, na crnoj oko 40.

Idealna točka je uvjetna točka otprilike u sredini bijele i crne boje, nakon koje će se robot kretati duž crne linije.

Ovdje je mjesto točke temeljno - između bijele i crne. Neće ga biti moguće postaviti točno na bijelo ili crno iz matematičkih razloga, zašto - bit će jasno kasnije.

Empirijski smo izračunali da se idealna točka može izračunati pomoću sljedeće formule:

Robot se mora kretati strogo duž idealne točke. Ako dođe do odstupanja u bilo kojem smjeru, robot se mora vratiti u tu točku.

Skladajmo matematički opis problema.

Početni podaci.

Savršena točka.

Trenutna očitanja svjetlosnog senzora.

Proizlaziti.

Snaga motora B.

Snaga rotacije motora C.

Odluka.

Razmotrimo dvije situacije. Prvo: robot je odstupio od crne linije prema bijeloj.

U tom slučaju robot mora povećati snagu rotacije motora B i smanjiti snagu motora C.

U situaciji kada robot zabije u crnu liniju, točno je suprotno.

Što robot više odstupa od idealne točke, brže se mora vratiti u nju.

Ali stvaranje takvog regulatora je prilično težak zadatak i nije uvijek potreban u cijelosti.

Stoga smo se odlučili ograničiti na P-regulator koji adekvatno reagira na odstupanja od crne linije.

Jezikom matematike ovo bi bilo napisano kao:

gdje su Hb i Hc ukupne snage motora B i C, redom,

Hbase - određena bazna snaga motora, koja određuje brzinu robota. Odabire se eksperimentalno, ovisno o dizajnu robota i oštrini zavoja.

Itech - trenutna očitanja svjetlosnog senzora.

Id - izračunata idealna točka.

k je koeficijent proporcionalnosti, odabran eksperimentalno.

U trećem dijelu ćemo pogledati kako to programirati u okruženju NXT-G.

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

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

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

Prva stvar koju robot treba znati je vrijednost "idealne točke" koja se nalazi na granici crnog i bijelog.

Položaj crvene točke na slici upravo odgovara ovom položaju.

Idealna opcija izračuna je izmjeriti vrijednost crno-bijele 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 netočnom.

Dakle, možete natjerati robota da to učini.

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

Izračunata vrijednost mora biti zapisana u varijablu kako bi joj se kasnije pristupilo.

Izračun "idealne toč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. Utječe na brzinu robota. Povećanje brzine kretanja dovodi do povećanja vremena odziva robota na promjene u osvjetljenju, što može dovesti do odlaska s putanje. Vrijednost se također odabire eksperimentalno.

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

Omjer upravljanja i bazna snaga

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

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

U obliku formule to izgleda ovako:

Gdje je Isens vrijednost očitanja 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


Za prikaz prezentacije sa slikama, dizajnom i slajdovima, preuzmite njegovu datoteku i otvorite je u PowerPointu na vašem računalu.
Tekstualni sadržaj slajdova prezentacije:
“Algoritam za kretanje duž crne linije s jednim senzorom boje” Krug o “Robotici” Nastavnik prije Yezidova Ahmeda Elijeviča U MBU DO “Shelkovskaya CTT” Za proučavanje algoritma za kretanje duž crne linije, Lego Mindstorms EV3 robot s jednim senzorom boje koristit će se Senzor boja Senzor boja razlikuje 7 boja i može otkriti odsutnost boje. Kao i u NXT-u, može raditi kao svjetlosni senzor Line S Robot Competition Field Predložena staza u obliku slova "S" omogućit će vam da provedete još jedan zanimljiv test stvorenih robota na brzinu i reakciju. Razmotrimo najjednostavniji algoritam za kretanje duž crne linije na jednom senzoru boje na EV3. Ovaj algoritam je najsporiji, ali najstabilniji. Robot se neće kretati strogo duž crne linije, već duž njezine granice, okrećući se lijevo i desno i postupno se kreće naprijed Algoritam je vrlo jednostavan: ako senzor vidi crno, robot se okreće u jednom smjeru, ako vidi bijelo - u drugom smjeru. Praćenje linije u načinu reflektiranog svjetla s dva senzora Ponekad senzor boje možda neće moći dobro razlikovati crno-bijelo. Rješenje ovog problema je korištenje senzora ne u načinu detekcije boje, već u načinu detekcije svjetline reflektirane svjetlosti. U ovom načinu rada, znajući vrijednosti senzora na tamnoj i svijetloj površini, možemo samostalno reći što će se smatrati bijelim, a što crnim. Sada odredimo vrijednosti svjetline na bijeloj i crnoj površini. Da biste to učinili, u izborniku EV3 Brick nalazimo karticu "Brick Applications". Sada ste u prozoru prikaza porta i možete vidjeti očitanja svih senzora u trenutnom trenutku. naši senzori trebaju svijetliti crveno, što znači da su u načinu detekcije reflektirane svjetlosti. Ako svijetle plavo, u prozoru za prikaz porta na željenom portu pritisnite središnju tipku i odaberite način rada COL-REFLECT Sada ćemo robota postaviti tako da se oba senzora nalaze iznad bijele površine. Gledamo brojeve u portovima 1 i 4. U našem slučaju, vrijednosti su 66, odnosno 71. To će biti bijele vrijednosti senzora. Sada postavimo robota tako da se senzori nalaze iznad crne površine. Opet, pogledajmo vrijednosti portova 1 i 4. Imamo 5 i 6. Ovo su značenja crne. Zatim ćemo izmijeniti prethodni program. Naime, mijenjamo postavke prekidača. Sve dok imaju instaliran senzor boje -> mjerenje -> boja. Moramo postaviti Senzor boja -> Usporedba -> Intenzitet reflektiranog svjetla Sada moramo postaviti "vrstu usporedbe" i "vrijednost praga". Vrijednost praga je vrijednost neke "sive", vrijednosti ispod kojih ćemo smatrati crnom, a više - bijelom. Za prvu aproksimaciju, prikladno je koristiti prosječnu vrijednost između bijele i crne boje svakog senzora. Dakle, vrijednost praga prvog senzora (priključak #1) bit će (66+5)/2=35,5. Zaokružite na 35. Vrijednost praga drugog senzora (port #4): (71+6)/2 = 38,5. Zaokružimo na 38. Sada postavljamo ove vrijednosti u svaki prekidač, odnosno. To je sve, blokovi s pokretima ostaju na svojim mjestima nepromijenjeni, jer ako stavimo znak " u "vrstu usporedbe"<», то все, что сверху (под галочкой) будет считаться черным, а снизу (под крестиком) – белым, как и было в предыдущей программе.Старайтесь ставить датчики так, чтобы разница между белым и черным была как можно больше. Если разница меньше 30 - ставьте датчики ниже. Это было краткое руководство по программированию робота Lego ev3, для движения по черной линии, с одним и двумя датчиками цвета

Upravljački algoritmi za mobilni LEGO robot. Praćenje linije s dva svjetlosna senzora

Učiteljica dodatnog obrazovanja

Kazakova Lyubov Aleksandrovna


Kretanje linije

  • Dva svjetlosna senzora
  • Proporcionalni regulator (P regulator)

Algoritam za kretanje duž crne linije bez proporcionalnog regulatora

  • Oba motora se vrte istom snagom
  • Ako desni senzor svjetla pogodi crnu liniju, tada se snaga lijevog motora (na primjer B) smanjuje ili zaustavlja
  • Ako lijevi svjetlosni senzor udari u crnu liniju, tada se snaga drugog motora (na primjer, C) smanjuje (vraća se na liniju), smanjuje se ili zaustavlja
  • Ako su oba senzora na bijeloj ili crnoj boji, postoji pravocrtno kretanje

Kretanje je organizirano promjenom snage jednog od motora


Primjer programa za kretanje po crnoj liniji bez P-kontrolera

Kretanje je organizirano promjenom kuta rotacije


  • Proporcionalni kontroler (P-controller) omogućuje podešavanje ponašanja robota, ovisno o tome koliko se njegovo ponašanje razlikuje od željenog.
  • Što robot više odstupa od cilja, to je veća sila potrebna da se vrati do njega.

  • P-kontroler se koristi za održavanje robota u određenom stanju:
  • Zadržite položaj manipulatora Kretanje duž linije (senzor svjetla) Kretanje duž zida (senzor udaljenosti)
  • Zadržavanje položaja manipulatora
  • Kretanje linije (senzor svjetla)
  • Kretanje duž zida (senzor udaljenosti)

Praćenje linije s jednim senzorom

  • Cilj je kretanje uz granicu "bijelo-crno"
  • Osoba može razlikovati granicu bijele i crne boje. Robot ne može.
  • Meta za robota je na sivoj boji

Prijelazi

Pri korištenju dva svjetlosna senzora moguće je organizirati promet na težim rutama



Algoritam za vožnju autocestom s raskrižjima

  • Oba senzora na bijelom - robot vozi ravno (oba motora se vrte istom snagom)
  • Ako desni senzor svjetla pogodi crnu liniju, a lijevi na bijelu liniju, onda skreće udesno
  • Ako lijevi senzor svjetla udari u crnu liniju, a desni u bijelu liniju, onda skreće lijevo
  • Ako su oba senzora crna, tada dolazi do pravocrtnog kretanja. Možete brojati raskrižja ili izvoditi neku vrstu radnje


Princip rada P-regulatora

Položaj senzora

O=O1-O2


Algoritam za kretanje duž crne linije s proporcionalnim regulatorom

SW \u003d K * (C-T)

  • C - ciljne vrijednosti (uzmite očitanja sa svjetlosnog senzora na bijeloj i crnoj boji, izračunajte prosjek)
  • T - trenutna vrijednost - primljena od senzora
  • K je koeficijent osjetljivosti. Što više, to je veća osjetljivost.