Dom - Hodnik
Lego ev3 kreće se po liniji. Počnite u znanosti. Senzor boja - način rada "Svjetlina ambijentalnog svjetla".

Ovako osoba vidi liniju:

Ovako to vidi robot:


Koristit ćemo ovu značajku pri dizajniranju i programiranju robota za natjecateljsku kategoriju "Putanja".

Postoji mnogo načina kako naučiti robota da vidi liniju i kreće se po njoj. Postoje složeni programi i vrlo jednostavni.

Želim govoriti o metodi programiranja koju čak i djeca u 2.-3. razredu mogu savladati. U ovoj dobi puno im je lakše sastavljati konstrukcije prema uputama, a za njih je programiranje robota težak zadatak. Ali ova će metoda omogućiti djetetu da programira robota na bilo koju rutu staze u 15-30 minuta (uzimajući u obzir postupno testiranje i prilagodbu nekih značajki putanje).

Ova metoda testirana je na općinskim i regionalnim natjecanjima iz robotike u regiji Surgut i Khanty-Mansi Autonomnom Okrug-Yugra i donijela je našoj školi prva mjesta. Tamo sam se uvjerio da je ova tema vrlo relevantna za mnoge timove.

Pa, počnimo.

Kod priprema za ovu vrstu natjecanja programiranje je samo dio rješenja zadatka. Morate započeti s dizajniranjem robota za određenu rutu. U sljedećem članku ću vam reći kako to učiniti. Pa, budući da se kretanje po liniji događa vrlo često, počet ću s programiranjem.

Razmotrimo opciju robota s dva svjetlosna senzora, jer je razumljivija učenicima osnovnih škola.

Svjetlosni senzori spojeni su na priključke 2 i 3. Motori na priključke B i C.
Senzori su smješteni na rubovima linije (pokušajte eksperimentirati s postavljanjem senzora na različitim udaljenostima jedan od drugog i na različitim visinama).
Važna točka. Za bolji rad Za takvu shemu preporučljivo je odabrati par senzora prema parametrima. U suprotnom će biti potrebno uvesti blok za podešavanje vrijednosti senzora.
Ugradnja senzora na šasiju prema klasična shema(trokut), otprilike kao na slici.

Program će se sastojati od malog broja blokova:


1. Dvije jedinice svjetlosnog senzora;
2. Četiri bloka “Matematika”;
3. Dva motorna bloka.

Za upravljanje robotom koriste se dva motora. Snaga svake je 100 jedinica. Za našu shemu uzet ćemo prosječnu vrijednost snage motora jednaku 50. To jest, prosječna brzina pri kretanju u ravnoj liniji bit će jednaka 50 jedinica. Kod odstupanja od pravocrtnog gibanja, snaga motora će se proporcionalno povećati ili smanjiti, ovisno o kutu odstupanja.

Sada shvatimo kako spojiti sve blokove, konfigurirati program i što će se dogoditi u njemu.
Postavimo dva svjetlosna senzora i dodijelimo im priključke 2 i 3.
Uzmite matematički blok i odaberite "Oduzimanje".
Spojimo svjetlosne senzore s izlaza "Intenzitet" sabirnicama na matematički blok na ulaze "A" i "B".
Ako su senzori robota postavljeni simetrično od središta linije staze, tada će vrijednosti oba senzora biti jednake. Nakon oduzimanja dobivamo vrijednost – 0.
Sljedeći blok matematike koristit će se kao koeficijent iu njemu morate postaviti "Množenje".
Da biste izračunali koeficijent, trebate izmjeriti razine "bijelog" i "crnog" pomoću bloka NXT.
Pretpostavimo: bijelo -70, crno -50.
Zatim izračunavamo: 70-50 = 20 (razlika između bijele i crne), 50/20 = 2,5 (postavljamo prosječnu vrijednost snage pri kretanju u ravnoj liniji u matematičkim blokovima na 50. Ova vrijednost plus dodana snaga pri podešavanju kretanja treba biti jednak 100)
Pokušajte postaviti vrijednost na 2,5 na ulazu "A", a zatim je odaberite točnije.
Na ulaz “B” matematičkog bloka “Množenje” spojite izlaz “Rezultat” prethodnog matematičkog bloka “Oduzimanje”.
Slijedi par - matematički blok (zbrajanje) i motor B.
Postavljanje matematičkog bloka:
Ulaz “A” postavljen je na 50 (polovica snage motora).
Izlaz bloka "Rezultat" povezan je sabirnicom na ulaz "Snaga" motora B.
Sljedeći par je matematički blok (oduzimanje) i motor C.
Postavljanje matematičkog bloka:
Ulaz “A” postavljen je na 50.
Ulaz “B” je sabirnicom povezan s izlazom “Rezultat” matematičkog bloka “Množenje”.
Izlaz bloka "Rezultat" povezan je sabirnicom na ulaz "Snaga" motora C.

Kao rezultat svih ovih radnji dobit ćete sljedeći program:

Budući da će sve ovo raditi u ciklusu, dodamo “Ciklus”, označimo ga i sve premjestimo u “Ciklus”.

Sada pokušajmo shvatiti kako će program raditi i kako ga konfigurirati.


Dok se robot kreće pravocrtno, vrijednosti senzora se poklapaju, što znači da će izlaz bloka “Oduzimanje” biti vrijednost 0. Izlaz bloka “Množenje” također daje vrijednost 0. Ova se vrijednost dovodi paralelno s parom za upravljanje motorom. Budući da su ovi blokovi postavljeni na 50, dodavanje ili oduzimanje 0 ne utječe na snagu motora. Oba motora rade istom snagom od 50, a robot se kotrlja pravocrtno.

Pretpostavimo da staza skrene ili da robot skrene s ravne linije. Što će se dogoditi?

Na slici je vidljivo da osvjetljenje senzora spojenog na priključak 2 (u daljnjem tekstu senzori 2 i 3) raste, dok se kreće na bijelo polje, a osvjetljenje senzora 3 opada. Pretpostavimo da vrijednosti ovih senzora postanu: senzor 2 – 55 jedinica, a senzor 3 – 45 jedinica.
Blok "Oduzimanje" će odrediti razliku između vrijednosti dvaju senzora (10) i unijeti je u blok korekcije (množenje s koeficijentom (10*2,5=25)), a zatim u upravljačke blokove
motori.
U matematičkom bloku (Dodatak) motoričke kontrole B do prosječne vrijednosti brzine 50
25 će se dodati i vrijednost snage od 75 će se dostaviti motoru B.
U matematičkom bloku (Oduzimanje) za upravljanje motorom C, 25 će se oduzeti od prosječne vrijednosti brzine od 50 i vrijednost snage od 25 bit će dostavljena motoru C.
Na taj način će se ispraviti odstupanje od ravne linije.

Ako staza naglo skrene u stranu, senzor 2 je bijel, a senzor 3 crn. Vrijednosti osvjetljenja ovih senzora postaju: senzor 2 - 70 jedinica, a senzor 3 - 50 jedinica.
Blok "Oduzimanje" će odrediti razliku između vrijednosti dvaju senzora (20) i unijeti je u blok korekcije (20*2,5=50), a zatim u upravljačke jedinice motora.
Sada u matematičkom (Addition) bloku kontrole motora B, vrijednost snage od 50 +50 =100 bit će dostavljena motoru B.
U matematičkom bloku (Oduzimanje) upravljanja motorom C, vrijednost snage od 50 – 50 = 0 bit će dostavljena motoru C.
I robot će napraviti nagli zaokret.

Na bijelim i crnim poljima robot mora voziti pravocrtno. Ako se to ne dogodi, pokušajte odabrati senzore s istim vrijednostima.

Kreirajmo sada novi blok i upotrijebimo ga za pomicanje robota bilo kojom rutom.
Odaberite ciklus, zatim u izborniku "Uredi" odaberite naredbu "Kreiraj moj blok".

U dijaloškom okviru “Block Designer” dajte naziv našem bloku, na primjer, “Go”, odaberite ikonu za blok i kliknite “DONE”.

Sada imamo blok koji se može koristiti u slučajevima kada se trebamo kretati duž linije.

Jedno od osnovnih kretanja u laganoj konstrukciji je praćenje crne linije.

Opća teorija i konkretni primjeri Izrada programa opisana je na web stranici wroboto.ru

Opisat ću kako to implementiramo u EV3 okruženju, budući da postoje razlike.

Prvo što robot treba znati je značenje "idealne točke" koja se nalazi na granici crnog i bijelog.

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

Idealna opcija izračuna je izmjeriti crno-bijele vrijednosti i uzeti aritmetički prosjek.

To možete učiniti ručno. Ali nedostaci su odmah vidljivi: čak iu kratkom vremenskom razdoblju, osvjetljenje se može promijeniti, a izračunata vrijednost bit će netočna.

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

Tijekom pokusa smo otkrili da nije potrebno mjeriti i crno i bijelo. Samo se bijelo može mjeriti. A idealna vrijednost boda 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 koeficijent rotacije. Što je veći, robot oštrije reagira na promjene u osvjetljenju. Ali previše veliki značaj uzrokovat će klimanje 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 odgovora robota na promjene u osvjetljenju, što može dovesti do odstupanja od putanje. Vrijednost se također odabire eksperimentalno.

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

Omjer okretaja i osnovna snaga

Logika kretanja po crnoj liniji je sljedeća: mjeri se odstupanje od idealne točke. Što je veći, to bi robot trebao snažnije nastojati da se vrati u njega.

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 urediti ga u obliku zasebnog bloka.

Implementacija algoritma

To je upravo algoritam koji je implementiran u robotu za srednju kategoriju WRO 2015



Kako bi se robot glatko kretao duž crne linije, morate ga prisiliti da sam izračuna 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 bijele i crne boje - koristit ćemo za izračunavanje brzine kretanja.

Prvo, predstavimo koncept "idealne točke putanje".

Očitanja svjetlosnog senzora kreću se od 20 do 80, najčešće su na bijelom očitanja oko 65, na crnom 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 položaj točke temeljan - između bijele i crne. Neće se moći točno postaviti na bijelo ili crno iz matematičkih razloga, a zašto će biti 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 postoji odstupanje u bilo kojem smjeru, robot se mora vratiti na tu točku.

Sastavljajmo matematički opis problema.

Početni podaci.

Idealna točka.

Trenutna očitanja svjetlosnog senzora.

Proizlaziti.

Snaga rotacije motora V.

Snaga rotacije motora C.

Riješenje.

Razmotrimo dvije situacije. Prvo: robot je skrenuo od crne prema bijeloj liniji.

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

U situaciji kada robot uđe u crnu liniju, vrijedi suprotno.

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

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

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

Na matematičkom jeziku to će biti napisano ovako:

gdje su Hb i Hc konačne snage motora B odnosno C,

Baza – određena osnovna snaga motora koja određuje brzinu robota. Odabire se eksperimentalno, ovisno o dizajnu robota i oštrini zavoja.

Itek – trenutna očitanja svjetlosnog senzora.

Iid – izračunata idealna točka.

k – koeficijent proporcionalnosti, odabran eksperimentalno.

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

Algoritmi za upravljanje mobilnim LEGO robotom. Kretanje linije s dva svjetlosna senzora

Učitelj dopunskog obrazovanja

Kazakova Ljubov Aleksandrovna


Kretanje po liniji

  • Dva svjetlosna senzora
  • Proporcionalni regulator (P-regulator)

Algoritam za kretanje po crnoj liniji bez proporcionalnog regulatora

  • Oba motora vrte se istom snagom
  • Ako desni senzor svjetla pogodi crnu crtu, tada se snaga lijevog motora (na primjer B) smanjuje ili prestaje
  • Ako lijevi senzor svjetla pogodi crnu crtu, tada se snaga drugog motora (na primjer C) smanjuje (vraća se na liniju), smanjuje ili prestaje
  • Ako su oba senzora na bijeloj ili crnoj boji, dolazi do linearnog gibanja

Kretanje se organizira promjenom snage jednog od motora


Primjer programa za vožnju po crnoj liniji bez P-kontrolera

Kretanje se organizira promjenom kuta rotacije


  • Proporcionalni regulator (P-kontroler) 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 više truda treba uložiti da bi se na njega vratio.

  • P-kontroler se koristi za održavanje robota u određenom stanju:
  • Zadržavanje položaja manipulatora Kretanje po liniji (senzor svjetla) Kretanje uz zid (senzor udaljenosti)
  • Zadržavanje položaja manipulatora
  • Kretanje linije (senzor svjetla)
  • Kretanje po zidu (senzor udaljenosti)

Kretanje linije s jednim senzorom

  • Cilj je kretanje po granici “bijelo-crno”.
  • Osoba može razlikovati granicu između bijele i crne. Robot ne može.
  • Cilj za robota je u sivoj boji

Vožnja kroz raskrižja

Koristeći dva svjetlosna senzora, moguće je organizirati kretanje duž složenijih ruta



Algoritam za vožnju autocestom s raskrižjima

  • Oba senzora su na bijelom - robot vozi ravno (oba motora se vrte istom snagom)
  • Ako desni senzor svjetla udari u crnu liniju, a lijevi u bijelu liniju, dolazi do skretanja udesno
  • Ako lijevi senzor svjetla udari u crnu liniju, a desni u bijelu liniju, tada se skreće ulijevo
  • Ako su oba senzora crna, dolazi do linearnog gibanja. Možete brojati raskrižja ili izvoditi bilo koje radnje


Princip rada P-regulator

Položaj senzora

O=O1-O2


Algoritam kretanja po crnoj liniji s proporcionalnim regulatorom

HC = K*(C-T)

  • Ts - ciljne vrijednosti (uzmite očitanja sa senzora svjetla na bijeloj i crnoj boji, izračunajte prosjek)
  • T - vrijednost struje - dobiva se od senzora
  • K - koeficijent osjetljivosti. Što ih je više, to je veća osjetljivost


15.01.2012, 18:51

Do sada se u člancima o algoritmima koji se koriste pri kretanju po liniji razmatrala metoda kada se činilo da senzor svjetla nadzire njezinu lijevu ili desnu granicu: čim se robot pomakne u bijeli dio polja, kontroler vraća robota do granice, senzor se počeo pomicati dublje u crnu liniju - regulator ga je ispravio natrag.
Unatoč činjenici da je gornja slika prikazana za relejni regulator, opći princip kretanja proporcionalnog (P-regulator) bit će isti. Kao što je već spomenuto, prosječna brzina takvog kretanja nije velika, a nekoliko puta se pokušalo povećati laganim kompliciranjem algoritma: u jednom slučaju korišteno je "meko" kočenje, u drugom, uz zavoje, kretanje naprijed je uveden.
Kako bi se omogućilo robotu da se pomakne naprijed u nekim područjima, dodijeljeno je usko područje u rasponu vrijednosti koje proizvodi svjetlosni senzor, što bi se konvencionalno moglo nazvati "senzor je na granici crte".
Ovaj pristup ima mali nedostatak - ako robot "slijedi" lijevu granicu crte, tada na desnim skretanjima ne otkriva odmah zakrivljenost putanje i, kao rezultat toga, provodi više vremena u potrazi za crtom i okretanju. Štoviše, možemo sa sigurnošću reći da što je zaokret oštriji, to se potraga duže odvija.
Sljedeća slika pokazuje da senzor nije na lijevoj strani granice, već na desnoj, tada bi već detektirao zakrivljenost putanje i počeo bi skretati manevre.

Stoga je dobra ideja opremiti robota s dva senzora odjednom, koji se nalaze na suprotnim stranama linije i, sukladno tome, pomogli bi robotu da brže reagira na promjene u smjeru kretanja.
Sada moramo odrediti kako će ova promjena dizajna utjecati na program. Radi jednostavnosti, opet bismo trebali početi s najjednostavnijim relejnim regulatorom i stoga nas prije svega zanimaju mogući položaji senzora u odnosu na vod:

Zapravo, može se identificirati još jedan prihvatljiv uvjet - na složenim rutama to će biti raskrižje raskrižja ili neka vrsta zadebljanja na stazi.
Drugi položaji senzora neće biti uzeti u obzir, jer su ili derivati ​​onih prikazanih gore, 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 je, kao i desni, iznad svijetle površine
  • lijevi senzor preko svijetle površine, desni senzor preko tamne
  • lijevi senzor preko tamne površine, desni senzor preko svijetle površine
  • oba senzora nalaze se iznad tamne površine
Ako u određenom trenutku program na robotu otkrije jedan od ovih položaja, morat će reagirati u skladu s tim:
    Ako su oba senzora iznad bijele površine, onda je to normalna situacija u kojoj je linija između senzora, tako da robot treba ići ravno. Ako je lijevi senzor još uvijek iznad svijetle površine, a desni senzor je već iznad tamna, tada je robot svojom desnom stranom zabio na crtu, što znači da treba skrenuti udesno tako da je linija opet između senzora. Ako je lijevi senzor iznad tamne površine, a desni je još iznad svijetle, tada se robot treba okrenuti ulijevo da bi se poravnao. Ako su oba senzora iznad tamne površine, opći slučaj, robot se ponovno nastavlja kretati ravno.

Gornji dijagram odmah pokazuje kako bi se točno trebalo promijeniti ponašanje motora u programu. Sada pisanje programa ne bi trebalo biti teško. Trebali biste započeti odabirom senzora koji će se prvi ispitivati. Nema veze, pa neka ostane. Potrebno je utvrditi nalazi li se iznad svijetle ili tamne površine:
Ova vam radnja još ne dopušta da kažete u kojem smjeru robot treba ići. Ali će podijeliti gore navedena stanja u dvije skupine: (I, II) za gornju granu i (III, IV) za donju. Svaka 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. To je ono što će odrediti odabir 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. Ta se dva stanja međusobno razlikuju i po razini svjetlosti koju detektira desni senzor. To znači da će odrediti izbor svakog od njih:
Rezultirajuće dvije grane ispunjene su blokovima kretanja. Gornja grana je odgovorna za stanje "lijevo na mraku, desno na svijetlo", a donja grana je odgovorna za "oba senzora na mraku".
Treba napomenuti da ovaj dizajn on samo određuje kako će se motori uključiti 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 prilagodio ponašanje motora prema tome, i nakon trenutka opet, opet, itd. Stoga ga treba postaviti u petlju koja će omogućiti ovu ponovljenu provjeru:

Tako lijepa jednostavan program omogućit će prilično veliku brzinu kretanja robota duž linije bez letenja izvan njezinih granica, ako je ispravno konfiguriran maksimalna brzina kada se kreće u stanjima I i IV, a također i set najbolji način kočenje u stanjima II i III - što su zavoji na autocesti strmiji, to bi kočenje trebalo biti "žešće" - trebalo bi brže smanjivati ​​brzinu i obrnuto - kod glatkih zavoja sasvim je moguće kočiti isključivanjem struje ili čak potpunim smanjenjem brzine.

Nekoliko posebnih riječi treba reći io postavljanju senzora na robotu. Očito, vrijedit će iste preporuke za položaj ova dva senzora u odnosu na kotače kao i za jedan senzor, samo se vrh trokuta uzima kao sredina segmenta koji povezuje dva senzora. Samu udaljenost između senzora također treba odabrati prema karakteristikama staze: što su senzori bliže jedan drugome, robot će se češće izravnavati (izvoditi relativno spore okrete), ali ako su senzori dovoljno razmaknuti , tada postoji opasnost od izletanja sa staze, pa ćete morati više „teško“ skretati i smanjiti brzinu na ravnim dionicama.



 


Čitati:



Kuhano janjeće meso. Kuhana janjetina. Beshbarmak u laganom kuhalu

Kuhano janjeće meso.  Kuhana janjetina.  Beshbarmak u laganom kuhalu

Janjetinu (leđni dio, prsa, plećku) oprati, staviti u tepsiju i preliti kipućom vodom da samo prekrije meso, tepsiju poklopiti...

Ukusan instant recept: piletina s rižom u laganom kuhalu Pirjajte piletinu s rižom u sporom kuhalu

Ukusan instant recept: piletina s rižom u laganom kuhalu Pirjajte piletinu s rižom u sporom kuhalu

Duet jelo je ono što multicookers obično nazivaju kada se dva jela kuhaju istovremeno u uređaju. Odnosno, u zdjeli se kuha prilog, primjerice riža, a u...

"Bujni" omlet u pećnici: recept s mlijekom i šampinjonima

Korak po korak recepti za pripremu klasičnog omleta u pećnici s mlijekom, opcije s brašnom, povrćem, voćem, mesom, jabukama, mljevenim mesom, sirom...

Osvijetlite stan u smjeru kazaljke na satu ili suprotno od njega

Osvijetlite stan u smjeru kazaljke na satu ili suprotno od njega

Najdetaljniji opis: kako očistiti stan molitvom za svetu vodu - za naše čitatelje i pretplatnike. Kako očistiti stan pomoću...

feed-image RSS