Pentru a vizualiza o prezentare cu imagini, lucrări de artă și diapozitive, descărcați fișierul și deschideți-l în PowerPoint pe calculatorul tau.
Conținut text al slide-urilor de prezentare:„Algoritm de mișcare de-a lungul liniei negre cu un senzor de culoare” Cercul despre „Robotică” Profesor lui Yezidi Akhmed Elievich La MBU DO „Shelkovskaya CTT” Pentru a studia algoritmul de mișcare de-a lungul liniei negre, se va folosi un robot Furtunile mintale Lego EV3 cu un senzor de culoare Senzor de culoare Senzorul de culoare detectează 7 culori și poate detecta absența culorii. Ca și în cazul NXT, acesta poate acționa ca un senzor de lumină.Roboți Competiție Câmp „Linia S” Pista „S” propusă vă va permite să faceți un alt test interesant al roboților creați pentru viteză și răspuns. Considera cel mai simplu algoritm mișcarea de-a lungul liniei negre pe un senzor de culoare de pe EV3. Acest algoritm este cel mai lent, dar cel mai stabil. Robotul nu se va deplasa strict de-a lungul liniei negre, ci de-a lungul graniței sale, rotind la stânga și la dreapta și îndreptându-se treptat înainte. algoritmul este foarte simplu: dacă senzorul vede negru, atunci robotul se întoarce într-o direcție, dacă alb - în cealaltă. Urmărirea liniilor în modul de luminozitate a luminii reflectate cu doi senzori Uneori, senzorul de culoare nu este suficient de eficient pentru a distinge între negru și culorile albe... Soluția la această problemă este utilizarea senzorului nu în modul de detectare a culorii, ci în modul de detectare a luminozității luminii reflectate. În acest mod, cunoscând valorile senzorului pe o suprafață întunecată și luminoasă, putem spune independent ce va fi considerat alb și ce va fi negru. Acum să definim valorile de luminozitate pe suprafețele albe și negre. Pentru a face acest lucru, în meniul EV3 Brick, găsiți fila Brick Applications. Acum vă aflați în Port Viewer și puteți vedea citirile curente ale tuturor senzorilor. Senzorii noștri ar trebui să lumineze roșu, ceea ce înseamnă că sunt în modul de luminozitate a luminii reflectate. Dacă strălucesc albastru - în fereastra de vizualizare porturi de pe portul dorit, apăsați butonul central și selectați modul COL-REFLECT Acum vom plasa robotul astfel încât ambii senzori să fie amplasați deasupra suprafeței albe. Ne uităm la numerele din porturile 1 și 4. În cazul nostru, valorile sunt 66 și, respectiv, 71. Acestea vor fi valorile de alb ale senzorilor. Acum vom plasa robotul astfel încât senzorii să fie amplasați deasupra suprafeței negre. Să ne uităm din nou la valorile portului 1 și 4, avem 5 și respectiv 6. Acestea sunt semnificațiile negrului. În continuare, vom modifica programul anterior. Și anume, vom schimba setările comutatoarelor. Atâta timp cât au instalat Senzor de culoare -> Măsurare -> Culoare. Trebuie să setăm Senzorul de culoare -> Comparație -> Intensitatea luminii reflectate Acum trebuie să setăm „tipul de comparație” și „valoarea pragului”. Valoarea pragului este valoarea unui anumit „gri”, valorile sub care vom considera negru și mai mult - alb. Pentru o primă aproximare, este convenabil să folosiți media dintre alb și negru pentru fiecare senzor. Astfel, valoarea de prag a primului senzor (portul # 1) va fi (66 + 5) /2=35,5. Să rotunjim până la 35. Valoarea prag a celui de-al doilea senzor (portul # 4): (71 + 6) / 2 = 38,5. Să rotunjim până la 38. Acum setăm aceste valori în fiecare comutator corespunzător.Atât, blocurile cu mișcări rămân la locul lor fără modificări, deoarece dacă punem semnul „<», то все, что сверху (под галочкой) будет считаться черным, а снизу (под крестиком) – белым, как и было в предыдущей программе.Старайтесь ставить датчики так, чтобы разница между белым и черным была как можно больше. Если разница меньше 30 - ставьте датчики ниже.
Это было краткое руководство по программированию робота Lego ev3, для движения по черной линии, с одним и двумя датчиками цвета
Pentru a face robotul să se miște fără probleme de-a lungul liniei negre, trebuie să-l forțezi să calculeze viteza de mișcare în sine.
O persoană vede o linie neagră și marginea ei clară. Senzorul de lumină funcționează puțin diferit.
Este această proprietate a senzorului de lumină - incapacitatea de a distinge clar între marginea de alb și negru - și o vom folosi pentru a calcula viteza de mișcare.
În primul rând, introducem conceptul de „punct ideal de traiectorie”.
Citirile senzorului de lumină variază de la 20 la 80, cel mai adesea pe alb citirile sunt de aproximativ 65, pe negru aproximativ 40.
Punctul ideal este un punct condiționat aproximativ în mijlocul culorilor alb și negru, după care robotul se va deplasa de-a lungul liniei negre.
Aici, în principiu, locația punctului este între alb și negru. Nu va fi posibil să-l întrebați exact pe alb sau negru din motive matematice, de ce - va fi clar mai târziu.
Din punct de vedere empiric, am calculat că punctul ideal poate fi calculat folosind următoarea formulă:
Robotul trebuie să se deplaseze strict de-a lungul punctului ideal. Dacă apare o abatere în orice direcție, robotul trebuie să revină în acest punct.
Să compunem descrierea matematică a problemei.
Datele inițiale.
Punct perfect.
Citirea curentă a senzorului de lumină.
Rezultat.
Puterea de rotație a motorului V.
Puterea de rotație a motorului C.
Soluţie.
Să luăm în considerare două situații. În primul rând: robotul a deviat de la linia neagră spre cea albă.
În acest caz, robotul trebuie să mărească puterea de rotație a motorului B și să scadă puterea motorului C.
Într-o situație în care robotul intră pe linia neagră, opusul este adevărat.
Cu cât robotul se abate mai mult de la punctul ideal, cu atât mai repede trebuie să se întoarcă la el.
Dar crearea unui astfel de regulator este o sarcină destul de dificilă și nu este întotdeauna necesară în ansamblu.
Prin urmare, am decis să ne limităm doar la controlerul P, care răspunde în mod adecvat la abaterile de la linia neagră.
În limbajul matematicii, se va scrie astfel:
unde Hb și Hc sunt puterile finale ale motoarelor B și, respectiv, C,
Hbase - o anumită putere de bază a motoarelor, care determină viteza robotului. Se selectează experimental, în funcție de designul robotului și de claritatea virajelor.
Itek - citiri curente ale senzorului de lumină.
I id - punct ideal calculat.
k - coeficientul de proporționalitate, este selectat experimental.
În a treia parte, ne vom uita la cum să programăm acest lucru în mediul NXT-G.
Să aruncăm o privire la cel mai simplu algoritm pentru deplasarea de-a lungul liniei negre pe un singur senzor de culoare de pe EV3.
Acest algoritm este cel mai lent, dar cel mai stabil.
Robotul se va mișca nu strict de-a lungul liniei negre, ci de-a lungul graniței acesteia, întorcându-se la stânga și la dreapta și mergând treptat înainte.
Algoritmul este foarte simplu: dacă senzorul vede negru, atunci robotul se întoarce într-o direcție, dacă alb - în cealaltă.
Implementare în mediul Lego Mindstorms EV3
În ambele blocuri de mișcare, selectați modul „activare”. Setăm comutatorul la senzorul de culoare - măsurare - culoare. În partea de jos, nu uitați să schimbați „fără culoare” în alb. De asemenea, este necesar să specificați corect toate porturile.
Nu uitați să adăugați un ciclu, robotul nu va merge nicăieri fără el.
Verifică. Pentru cele mai bune rezultate, încercați să schimbați setările de direcție și putere.
Mișcare cu doi senzori:
Știți deja algoritmul pentru mișcarea robotului de-a lungul liniei negre folosind un senzor. Astăzi vom lua în considerare mișcarea de-a lungul unei linii folosind doi senzori de culoare.
Senzorii trebuie instalați astfel încât linia neagră să fie între ei.
Algoritmul va fi după cum urmează:
Dacă ambii senzori văd alb, mergem înainte;
Dacă unul dintre senzori vede alb și celălalt negru, întoarceți-vă spre negru;
Dacă ambii senzori văd negru, suntem la o intersecție (de exemplu, ne vom opri).
Pentru a implementa algoritmul, trebuie să urmărim citirile ambilor senzori și abia apoi să setăm mișcarea robotului. Pentru a face acest lucru, vom folosi comutatoare imbricate într-un alt comutator. Astfel, vom interoga mai întâi primul senzor, iar apoi, indiferent de citirile primului, vom interoga cel de-al doilea senzor și apoi vom stabili acțiunea.
Să conectăm senzorul din stânga la portul # 1, cel din dreapta la portul # 4.
Program cu comentarii:
Nu uitați că pornim motoarele în modul „Pornit”, astfel încât să funcționeze atâta timp cât este necesar pe baza citirilor senzorilor. De asemenea, ei uită adesea de necesitatea unei bucle - fără ea, programul se va încheia imediat.
http://studrobots.ru/
Același program pentru modelul NXT:
Studiați programul de mișcare. Programați robotul. Redirecționați videoclipul de testare a modelului
Această sarcină este clasică, simplă conceptual, poate fi rezolvată de multe ori și de fiecare dată vei descoperi ceva nou pentru tine.
Există multe abordări pentru rezolvarea problemei de urmărire a liniei. Alegerea unuia dintre ele depinde de designul specific al robotului, de numărul de senzori, de locația lor față de roți și unul față de celălalt.
În exemplul nostru, vom analiza trei exemple de robot bazate pe modelul de formare de bază Robot Educator.
Pentru început, asamblam un model de bază al robotului de antrenament Robot Educator, pentru aceasta puteți folosi instrucțiunile din software-ul MINDSTORMS EV3.
De asemenea, pentru exemple avem nevoie de senzori EV3 pentru culoarea luminii. Acești senzori de lumină, ca nimeni alții, sunt cei mai potriviți pentru sarcina noastră, atunci când lucrăm cu ei, nu trebuie să ne facem griji cu privire la intensitatea luminii ambientale. Pentru acest senzor, în programe vom folosi modul de lumină reflectată, în care se estimează cantitatea de lumină reflectată a luminii de fundal roșie a senzorului. Limitele citirilor senzorului sunt 0 - 100 de unități, pentru „fără reflexie” și respectiv „reflexie totală”.
De exemplu, vom analiza 3 exemple de programe pentru deplasarea pe o traiectorie neagră, reprezentată pe un fundal plat și deschis:
· Un senzor, cu regulator P.
· Un senzor, cu controler PC.
· Doi senzori.
Exemplul 1. Un senzor, cu un controler P.
Proiecta
Senzorul de lumină este montat pe un fascicul amplasat convenabil pe model.
Algoritm
Funcționarea algoritmului se bazează pe faptul că, în funcție de gradul de suprapunere a fasciculului de iluminare de fundal al senzorului cu o linie neagră, citirile returnate de senzor variază cu un gradient. Robotul păstrează poziția senzorului de lumină pe marginea liniei negre. Prin conversia datelor de intrare de la senzorul de lumină, sistemul de control generează o valoare pentru viteza de rotație a robotului.
Deoarece pe o traiectorie reală senzorul generează valori în întregul său domeniu de lucru (0-100), atunci valoarea la care se străduiește robotul este 50. În acest caz, valorile funcțiilor de rotație transmise sunt formate în interval -50-50, dar aceste valori nu sunt suficiente pentru o viraj abruptă a traiectoriei. Prin urmare, intervalul ar trebui extins cu o dată și jumătate la -75 - 75.
Ca rezultat, în program, funcția calculatorului este un simplu controler proporțional. a cărui funcție ( (a-50) * 1,5 ) în domeniul de lucru al senzorului de lumină generează valorile de rotație în conformitate cu graficul:
Un exemplu despre cum funcționează algoritmul
Exemplul 2. Un senzor, cu un controler PC.
Acest exemplu se bazează pe aceeași construcție.
Poate ați observat că în exemplul precedent robotul s-a legănat excesiv, ceea ce nu i-a permis să accelereze suficient. Acum vom încerca să îmbunătățim puțin această situație.
La controlerul nostru proporțional, adăugăm și un controler cub simplu care va adăuga flexibilitate funcției controlerului. Acest lucru va reduce balansul robotului în apropierea limitei dorite a traiectoriei, precum și va face smucituri mai puternice la o distanță mare de acesta.
În această lecție, vom continua să explorăm utilizarea senzorului de culoare. Materialul de mai jos este foarte important pentru studiul în continuare al cursului de robotică. După ce vom învăța cum să folosim toți senzorii setului Lego mindstorms EV3, în rezolvarea multor probleme practice, ne vom baza pe cunoștințele acumulate în această lecție.
6.1. Senzor de culoare - Modul de intensitate a luminii reflectate
Deci, trecem la studiul următorului mod de funcționare al senzorului de culoare, care se numește „Strălucirea luminii reflectate”... În acest mod, un senzor de culoare direcționează un flux de lumină roșie către un obiect sau o suprafață din apropiere și măsoară cantitatea de lumină reflectată. Obiectele mai întunecate vor absorbi fluxul de lumină, astfel încât senzorul va afișa o valoare mai mică în comparație cu suprafețele mai ușoare. Intervalul de valori al senzorului este măsurat de la 0 (foarte întunecat) înainte 100 (foarte luminos). Acest mod de funcționare al senzorului de culoare este utilizat în multe sarcini din robotică, de exemplu, pentru a organiza mișcarea unui robot de-a lungul unui traseu dat de-a lungul unei linii negre desenate pe un strat alb. Când utilizați acest mod, se recomandă poziționarea senzorului în așa fel încât distanța de la acesta până la suprafața investigată să fie de aproximativ 1 cm (Fig. 1).
Orez. unu
Să trecem la exerciții practice: senzorul de culoare este deja instalat pe robotul nostru și este direcționat în jos spre suprafața stratului pe care se va mișca robotul nostru. Distanța dintre senzor și podea este cea recomandată. Senzorul de culoare este deja conectat la port "2" Caramida EV3. Să încărcăm mediul de programare, să conectăm robotul la mediu și să folosim câmpul cu dungi colorate, realizat de noi pentru a îndeplini sarcinile din Secțiunea 5.4 a Lecției nr. 5, pentru a face măsurători. Să instalăm robotul astfel încât senzorul de culoare să fie situat deasupra suprafeței albe. „Pagina de hardware” comutarea mediului de programare la modul „Vizualizare porturi” (Fig. 2 poz. 1)... În acest mod, putem observa toate conexiunile pe care le-am făcut. Pe Orez. 2 conexiunea port este afișată "B"și "C" două motoare mari și spre port "2" - senzor de culoare.
Orez. 2
Pentru a selecta opțiunea de afișare a citirilor senzorului, faceți clic pe imaginea senzorului și selectați modul dorit (Fig. 3)
Orez. 3
Pe Orez. 2 poz. 2 vedem că valoarea citirii senzorului de culoare deasupra suprafeței albe este 84 ... În cazul dvs., poate apărea o valoare diferită, deoarece depinde de materialul suprafeței și de iluminarea din interiorul camerei: o parte din iluminare, reflectată de suprafață, lovește senzorul și îi afectează citirile. După ce a instalat robotul în așa fel încât senzorul de culoare să fie situat deasupra dungii negre, reparăm citirile acestuia (Fig. 4)... Încercați să măsurați singur valorile luminii reflectate deasupra barelor de culoare rămase. Ce valori ai primit? Scrieți răspunsul dvs. în comentariile pentru această lecție.
Orez. 4
Să rezolvăm acum problemele practice.
Problema numărul 11: este necesar să scrieți un program pentru mișcarea robotului, care se oprește când ajunge la linia neagră.
Soluţie:
Experimentul efectuat ne-a arătat că la trecerea liniei negre, valoarea senzorului de culoare în modul „Strălucirea luminii reflectate” egală 6 ... Prin urmare, să performeze Problema numarul 11 robotul nostru ar trebui să se miște în linie dreaptă până când valoarea dorită a senzorului de culoare devine mai mică 7 ... Să folosim blocul de program deja familiar nouă "Așteptări" Paleta portocalie. Să alegem modul de funcționare al unității de program cerut de starea problemei „În așteptare” (Fig. 5).
Orez. 5
De asemenea, este necesar să configurați parametrii blocului de program "Așteptări"... Parametru „Tip de comparație” (Fig. 6 poz. 1) poate lua următoarele valori: „Egal”=0, "Nu este egal"=1, "Mai mult"=2, „Mai mult sau egal”=3, "Mai puțin"=4, „Mai puțin sau egal”= 5. În cazul nostru, setați „Tipul de comparație”În valoare "Mai puțin"... Parametru „Valoare prag” set egal 7 (Fig. 6 poz. 2).
Orez. 6
De îndată ce valoarea senzorului de culoare este mai mică de 7 , ce se întâmplă când senzorul de culoare este situat deasupra liniei negre, va trebui să oprim motoarele, oprind robotul. Problema rezolvata (Fig. 7).
Orez. 7
Pentru a continua studiile, va trebui să facem un nou câmp, care este un cerc negru cu un diametru de aproximativ 1 metru, desenat pe un câmp alb. Grosimea liniei cercului este de 2 - 2,5 cm.Pentru baza câmpului, puteți lua o coală de hârtie A0 (841x1189 mm), lipiți împreună două coli de hârtie A1 (594x841 mm). Pe acest câmp, marcați linia cercului și pictați peste ea cu cerneală neagră. De asemenea, puteți descărca un aspect al câmpului, realizat în format Adobe Illustrator, și apoi comandați să fie imprimat pe material banner într-o tipografie. Dimensiunea aspectului este de 1250x1250 mm. (Puteți vizualiza aspectul descărcat mai jos, deschizându-l în Adobe Acrobat Reader)
Acest domeniu ne va fi util pentru rezolvarea mai multor sarcini clasice ale cursului de robotică.
Problema numărul 12: este necesar să scrieți un program pentru un robot care se mișcă în interiorul unui cerc, marginit cu un cerc negru, conform următoarei reguli:
- robotul se deplasează înainte în linie dreaptă;
- ajungând la linia neagră, robotul se oprește;
- robotul se mișcă înapoi cu două rotații ale motorului;
- robotul se întoarce la dreapta cu 90 de grade;
- se repeta miscarea robotului.
Cunoștințele acumulate în lecțiile anterioare vă vor ajuta să creați în mod independent un program care rezolvă problema #12.
Soluție la problema numărul 12
- Începeți drept înainte (Fig. 8 poz. 1);
- Așteptați ca senzorul de culoare să treacă de linia neagră (Fig. 8 poz. 2);
- Deplasați-vă înapoi cu 2 ture (Fig. 8 poz. 3);
- Virați la dreapta 90 de grade (Fig. 8 poz. 4); unghiul de rotație este calculat pentru un robot asamblat conform instrucțiunii small-robot-45544 (Fig. 8 poz. 5);
- Repetați comenzile 1 - 4 într-o buclă nesfârșită (Fig. 8 poz. 6).
Orez. opt
La funcționarea senzorului de culoare în modul „Strălucirea luminii reflectate” vom reveni de mai multe ori când vom lua în considerare algoritmii de mișcare de-a lungul liniei negre. Deocamdată, să aruncăm o privire la al treilea mod al senzorului de culoare.
6.2. Senzor de culoare - Mod intensitate a luminii ambientale
Modul senzor de culoare „Luminozitatea luminii ambientale” foarte asemănător cu modul „Strălucirea luminii reflectate”, doar in acest caz senzorul nu emite lumina, ci masoara iluminarea cu lumina naturala a mediului. Vizual, acest mod de funcționare al senzorului poate fi identificat printr-un LED albastru slab luminos. Citirile senzorului variază de la 0 (fără lumină) înainte 100 (lumina cea mai strălucitoare). La rezolvarea problemelor practice care necesită măsurarea luminii ambientale, se recomandă poziționarea senzorului astfel încât senzorul să rămână cât mai deschis și să nu fie obstrucționat de alte părți și structuri.
Să atașăm senzorul de culoare la robotul nostru în același mod în care am atașat senzorul tactil în lecția #4 (Fig. 9)... Conectați senzorul de culoare cu un cablu la port "2" Caramida EV3. Să trecem la rezolvarea problemelor practice.
Orez. 9
Problema numărul 13: este necesar să scriem un program care să modifice viteza de mișcare a robotului nostru în funcție de intensitatea luminii exterioare.
Pentru a rezolva această problemă, trebuie să știm cum să obținem valoarea curentă a senzorului. Și paleta galbenă de blocuri de program, care este numită "Senzori".
6.3. Paleta galbenă - „Senzori”
Paleta galbenă a mediului de programare Lego mindstorms EV3 conține blocuri de program care vă permit să primiți citirile curente ale senzorilor pentru procesare ulterioară în program. Spre deosebire, de exemplu, de un bloc de program "Așteptări" Paleta portocalie, blocurile de program ale paletei Galben transferă imediat controlul către următoarele blocuri de program.
Numărul de blocuri de programare din Paleta Galbenă diferă în versiunea acasă și în versiunea educațională a mediului de programare. În versiunea de acasă a mediului de programare, nu există blocuri de program pentru senzori care nu sunt incluși în versiunea de acasă a constructorului. Dar, dacă este necesar, le puteți conecta singur.
Versiunea educațională a mediului de programare conține blocuri de programare pentru toți senzorii care pot fi utilizați cu Lego mindstorms EV3.
Să revenim la soluție Problema numarul 13și vedeți cum puteți obține și procesa citirile de la senzorul de culoare. După cum știm deja: intervalul de valori ale senzorului de culoare în modul „Luminozitatea luminii ambientale” variază de la 0 inainte de 100 ... Același domeniu pentru parametrul care reglează puterea motoarelor. Să încercăm să reglam puterea motoarelor din unitatea de program citind senzorul de culoare "Direcție".
Soluţie:
Orez. 10
Să încărcăm programul rezultat în robot și să-l rulăm pentru execuție. Robotul a mers încet? Să aprindem lanterna LED și să încercăm să o aducem la senzorul de culoare la distanțe diferite. Ce se întâmplă cu robotul? Acoperiți senzorul de culoare cu palma - ce s-a întâmplat în acest caz? Scrieți răspunsurile la aceste întrebări în comentariul lecției.
Sarcină - Bonus
Încărcați în robot și executați sarcina prezentată în figura de mai jos. Repetați experimentele cu lanterna LED. Împărtășește-ți impresiile în comentariile la lecție.