Mișcare de-a lungul unei linii cu doi senzori de lumină. Competiție internațională de roboți - Reguli - Exemple de roboți - Mișcarea liniei robotului cu traiectorie LEGO EV3 cu un senzor ev3

Una dintre mișcările de bază în construcția ușoară este urmărirea liniei negre.

Teoria generală și exemple concrete Crearea programului este descrisă pe site-ul web wroboto.ru

Voi descrie cum implementăm acest lucru în mediul EV3, deoarece există diferențe.

Primul lucru pe care robotul trebuie să-l cunoască este semnificația „punctului ideal” situat la granița alb-negru.

Locația punctului roșu din figură corespunde exact acestei poziții.

Opțiunea ideală de calcul este măsurarea valorilor alb-negru și luarea mediei aritmetice.

Puteți face acest lucru manual. Dar dezavantajele sunt vizibile imediat: chiar și într-o perioadă scurtă de timp, iluminarea se poate schimba, iar valoarea calculată va fi incorectă.

Deci, puteți obține un robot care să o facă.

În timpul experimentelor, am aflat că nu este necesar să se măsoare atât alb, cât și negru. Numai albul poate fi măsurat. Iar valoarea ideală a punctului este calculată ca valoarea albă împărțită la 1,2 (1,15), în funcție de lățimea liniei negre și de viteza robotului.

Valoarea calculată trebuie scrisă într-o variabilă pentru a o accesa mai târziu.

Calculul „punctului ideal”

Următorul parametru implicat în mișcare este coeficientul de rotație. Cu cât este mai mare, cu atât robotul reacționează mai puternic la schimbările de iluminare. Dar prea mult mare valoare va face robotul să se clătinească. Valoarea este selectată experimental individual pentru fiecare proiect de robot.

Ultimul parametru este puterea de bază a motoarelor. Afectează viteza robotului. Creșterea vitezei de mișcare duce la o creștere a timpului de răspuns al robotului la schimbările de iluminare, ceea ce poate duce la îndepărtarea de la traiectorie. Valoarea este selectată și experimental.

Pentru comoditate, acești parametri pot fi, de asemenea, scriși în variabile.

Raportul de rotație și puterea de bază

Logica deplasării de-a lungul liniei negre este următoarea: se măsoară abaterea de la punctul ideal. Cu cât este mai mare, cu atât robotul ar trebui să se străduiască să revină la el mai puternic.

Pentru a face acest lucru, calculăm două numere - valoarea puterii fiecăruia dintre motoarele B și C separat.

Sub formă de formulă arată astfel:

Unde Isens este valoarea citirilor senzorului de lumină.

În sfârșit, implementarea în EV3. Cel mai convenabil este să-l aranjați sub forma unui bloc separat.

Implementarea algoritmului

Acesta este exact algoritmul care a fost implementat în robot pentru categoria mijlocie WRO 2015

Textul lucrării este postat fără imagini și formule.
Versiune completă munca este disponibilă în fila „Fișiere de lucru” în format PDF

Lego Mindstorms EV3

Etapa pregătitoare

Crearea și calibrarea programelor

Concluzie

Literatură

1.Introducere.

Robotica este una dintre cele mai importante domenii ale progresului științific și tehnologic, în care problemele mecanicii și noile tehnologii intră în contact cu problemele inteligenței artificiale.

Pentru ultimii ani progrese în robotică și sisteme automatizate a schimbat sfera personală și de afaceri din viața noastră. Roboții sunt utilizați pe scară largă în transporturi, explorarea pământului și spațiului, chirurgie, industria militară, cercetarea de laborator, securitatea și producția de masă de bunuri industriale și de larg consum. Multe dispozitive care iau decizii pe baza datelor primite de la senzori pot fi considerate și roboți – precum, de exemplu, lifturile, fără de care viața noastră este deja de neconceput.

Designerul Mindstorms EV3 ne invită să pătrundem în lumea fascinantă a roboților și să ne scufundăm în mediul complex al tehnologiei informației.

Scop: Învățați să programați robotul să se miște în linie dreaptă.

    Familiarizați-vă cu designerul Mindstorms EV3 și cu mediul său de programare.

    Scrieți programe pentru ca robotul să se miște în linie dreaptă la 30 cm, 1 m 30 cm și 2 m 17 cm.

    Constructor Mindstorms EV3.

Piese de construcție - 601 buc., servomotor - 3 buc., senzor de culoare, senzor de mișcare tactil, senzor infraroșu și senzor tactil. Unitatea cu microprocesor EV3 este creierul Constructor LEGO Furtunile mintale.

Un servomotor mare este responsabil pentru mișcarea robotului, care este conectat la microcomputerul EV3 și face robotul să se miște: mergeți înainte și înapoi, întoarceți și conduceți pe o anumită cale. Acest servomotor are un senzor de rotație încorporat, care vă permite să controlați foarte precis mișcarea și viteza robotului.

Puteți face robotul să efectueze o acțiune folosind programul de calculator EV3. Programul constă din diferite blocuri de control. Vom lucra cu blocul de mișcare.

Blocul de mișcare controlează motoarele robotului, îl pornește, îl oprește și îl face să funcționeze în conformitate cu sarcinile atribuite. Puteți programa mișcarea la un anumit număr de rotații sau grade.

    Etapa pregătitoare.

    Crearea unui domeniu tehnic.

Să aplicăm marcaje pe zona de lucru a robotului, folosind bandă electrică și o riglă pentru a crea trei linii lungi de 30 cm - linie verde, 1 m 15 cm - linii roșii și 2 m 17 cm - linii negre.

    Calcule necesare:

Diametrul roții robotului este de 5 cm 7 mm = 5,7 cm.

O rotație a roții robotului este egală cu lungimea unui cerc cu un diametru de 5,7 cm Găsim circumferința folosind formula

Unde r este raza roții, d este diametrul, π = 3,14

l = 5,7 * 3,14 = 17,898 = 17,9.

Aceste. Pentru o rotație a roții, robotul parcurge 17,9 cm.

Să calculăm numărul de rotații necesare pentru a conduce:

N = 30: 17,9 = 1,68.

    1 m 30 cm = 130 cm

N = 130: 17,9 = 7,26.

    2 m 17 cm = 217 cm.

N = 217: 17,9 = 12,12.

    Crearea si calibrarea programului.

Vom crea programul folosind următorul algoritm:

Algoritm:

    Selectați un bloc de mișcare în programul Mindstorms EV3.

    Porniți ambele motoare în direcția dată.

    Așteptați ca citirea senzorului de rotație al unuia dintre motoare să se schimbe la valoarea specificată.

    Opriți motoarele.

Încărcăm programul terminat în unitatea de control al robotului. Așezăm robotul pe teren și apăsăm butonul de pornire. EV3 traversează câmpul și se oprește la sfârșitul unei anumite linii. Dar pentru a obține un finisaj precis, trebuie să efectuați calibrarea, deoarece mișcarea este influențată de factori externi.

    Terenul este instalat pe birourile studenților, astfel încât este posibilă o ușoară deformare a suprafeței.

    Suprafața câmpului este netedă, astfel încât este posibilă o aderență slabă a roților robotului la câmp.

    În calcularea numărului de rotații, a trebuit să rotunjim numerele și, prin urmare, schimbând sutimile în rotații, am obținut rezultatul dorit.

5. Concluzie.

Capacitatea de a programa un robot să se miște în linie dreaptă va fi utilă pentru crearea unor programe mai complexe. De regulă, în specificatii tehnice concursuri de robotică, sunt indicate toate dimensiunile mișcării. Sunt necesare pentru ca programul să nu fie supraîncărcat cu condiții logice, bucle și alte blocuri de control complexe.

La următoarea etapă de cunoaștere a robotului Lego Mindstorms EV3, va trebui să înveți cum să programezi virajele la un anumit unghi, mișcarea în cerc și spiralele.

Lucrul cu designerul este foarte interesant. Aflând mai multe despre capacitățile sale, puteți rezolva orice problemă tehnică. Și, în viitor, poate, creați-vă propria dvs modele interesante Robot Lego Mindstorms EV3.

Literatură.

    Koposov D. G. „Primul pas în robotică pentru clasele 5-6.” - M.: Binom. Laboratorul de cunoștințe, 2012 - 286 p.

    Filippov S. A. „Robotica pentru copii și părinți” - „Știință” 2010

    Resurse de internet

    http://lego. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/belivskaya/

    http://www. lego com/educatie/

Această problemă este clasică, simplă ideologic, poate fi rezolvată de multe ori și de fiecare dată vei descoperi ceva nou pentru tine.

Există multe abordări pentru a rezolva problema următoarei linii. 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 de celălalt.

În exemplul nostru, trei exemple de robot vor fi analizate pe baza modelului educațional principal al Robot Educator.

Pentru început, să colectăm model de bază robot educațional Robot Educator, pentru aceasta puteți folosi instrucțiunile din software MINDSTORMS EV3.

De asemenea, de exemplu, vom avea nevoie de senzori de culoare EV3. Acești senzori de lumină, ca nimeni alții, sunt cei mai potriviti pentru sarcina noastră atunci când lucrăm cu ei, nu trebuie să ne facem griji cu privire la intensitatea luminii din jur. Pentru acest senzor, în programe vom folosi modul de lumină reflectată, în care este estimată cantitatea de lumină reflectată din lumina de fundal roșie a senzorului. Limitele citirilor senzorului sunt 0 - 100 de unități, pentru „fără reflexie” și respectiv „reflexie totală”.

Ca exemplu, ne vom uita la 3 exemple de programe pentru deplasare traiectorie neagră reprezentat pe un fundal plat, deschis:

· Un senzor, cu regulator P.

· Un senzor, cu regulator PC.

· Doi senzori.

Exemplul 1. Un senzor, cu regulator P.

Proiecta

Senzorul de lumină este instalat 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 al senzorului cu o linie neagră, citirile returnate de senzor variază gradient. Robotul menține 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 interval de funcționare (0-100), 50 este selectat ca valoare la care se străduiește robotul. În acest caz, sunt generate valorile transmise funcțiilor de rotație intervalul -50 - 50, dar aceste valori nu sunt suficiente pentru o viraj abruptă a traiectoriei. Prin urmare, intervalul ar trebui extins de o dată și jumătate la -75 - 75.

Drept urmare, în program, funcția calculatorului este un simplu controler proporțional. Funcția căreia ( (a-50)*1,5 ) în domeniul de funcționare al senzorului de lumină generează valori de rotație în conformitate cu graficul:

Exemplu de funcționare a algoritmului

Exemplul 2. Un senzor, cu regulator PK.

Acest exemplu se bazează pe aceeași construcție.

Probabil 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, de asemenea, un controler cub simplu, care va adăuga o îndoire funcției controlerului. Acest lucru va reduce balansul robotului în apropierea limitei dorite a traiectoriei, precum și va face smucituri mai puternice atunci când este departe de acesta.

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 granița ei clară. Senzorul de lumină funcționează puțin diferit.

Această proprietate a senzorului de lumină - incapacitatea de a distinge clar între alb și negru - o vom folosi pentru a calcula viteza de mișcare.

Mai întâi, să 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 convențional aproximativ în mijlocul culorilor alb și negru, după care robotul se va deplasa de-a lungul liniei negre.

Aici locația punctului este fundamentală - între alb și negru. Nu va fi posibil să-l setați exact pe alb sau negru din motive matematice de ce va deveni 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ă există o abatere în orice direcție, robotul trebuie să se întoarcă în acel punct.

Să compunem descriere matematică sarcini.

Datele inițiale.

Punct ideal.

Citirile curente ale 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 linia albă.

În acest caz, robotul trebuie să mărească puterea de rotație a motorului B și să reducă 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 întregime.

Prin urmare, am decis să ne limităm doar la regulatorul P, care răspunde în mod adecvat la abaterile de la linia neagră.

În limbajul matematic se va scrie astfel:

unde Hb și Hc sunt puterile finale ale motoarelor B și, respectiv, C,

Baza – 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ă.

Iid – punct ideal calculat.

k – coeficient de proporționalitate, selectat experimental.

În cea de-a treia parte ne vom uita la cum să programăm acest lucru în mediul NXT-G.

Iată cum vede o persoană linia:

Iată cum vede robotul:


Vom folosi această caracteristică atunci când proiectăm și programăm un robot pentru categoria de competiție „Traiectorie”.

Există multe moduri de a învăța un robot să vadă o linie și să se deplaseze de-a lungul ei. Există programe complexe și foarte simple.

Vreau să vorbesc despre o metodă de programare pe care și copiii din clasele 2-3 o pot stăpâni. La această vârstă, le este mult mai ușor să asambleze structuri conform instrucțiunilor, iar programarea unui robot este o sarcină dificilă pentru ei. Dar această metodă va permite copilului să programeze robotul pe orice traseu al pistei în 15-30 de minute (ținând cont de testarea pas cu pas și ajustarea unor caracteristici ale traiectoriei).

Această metodă a fost testată la competițiile municipale și regionale de robotică din regiunea Surgut și Khanty-Mansi Autonomous Okrug-Yugra și a adus școlii noastre primele locuri. Acolo m-am convins că acest subiect este foarte relevant pentru multe echipe.

Ei bine, să începem.

Când vă pregătiți pentru acest tip de competiție, programarea este doar o parte a soluției sarcinii. Trebuie să începeți prin a proiecta un robot pentru o anumită rută. În următorul articol vă voi spune cum să faceți acest lucru. Ei bine, deoarece mișcarea de-a lungul unei linii are loc foarte des, voi începe cu programarea.

Să luăm în considerare opțiunea unui robot cu doi senzori de lumină, deoarece este mai de înțeles de elevii din școala primară.

Senzorii de lumină sunt conectați la porturile 2 și 3. Motoare către porturile B și C.
Senzorii sunt plasați la marginile liniei (încercați să experimentați cu plasarea senzorilor la distanțe diferite unul față de celălalt și la înălțimi diferite).
Punct important. Pentru munca mai buna Pentru o astfel de schemă, este recomandabil să selectați o pereche de senzori în funcție de parametri. În caz contrar, va fi necesară introducerea unui bloc pentru reglarea valorilor senzorului.
Instalarea senzorilor pe șasiu după modelul clasic (triunghi), aproximativ ca în figură.

Programul va consta dintr-un număr mic de blocuri:


1. Două unități de senzor de lumină;
2. Patru blocuri de „Matematică”;
3. Două blocuri motoare.

Două motoare sunt folosite pentru a controla robotul. Puterea fiecăruia este de 100 de unități. Pentru schema noastră, vom lua valoarea medie a puterii motorului egală cu 50. Adică, viteza medie atunci când vă deplasați în linie dreaptă va fi egală cu 50 de unități. Daca devii de la mișcare rectilinie Puterea motoarelor va crește sau scădea proporțional, în funcție de unghiul de deviere.

Acum să ne dăm seama cum să conectăm toate blocurile, să configuram programul și ce se va întâmpla în el.
Să instalăm doi senzori de lumină și să le atribuim porturile 2 și 3.
Luați blocul de matematică și selectați „Scădere”.
Să conectăm senzorii de lumină de la ieșirile „Intensitate” prin autobuze la blocul de matematică la intrările „A” și „B”.
Dacă senzorii robotului sunt instalați simetric față de centrul liniei de cale, atunci valorile ambilor senzori vor fi egale. După scădere obținem valoarea – 0.
Următorul bloc de matematică va fi folosit ca coeficient și trebuie să setați „Multiplicarea” în el.
Pentru a calcula coeficientul, trebuie să măsurați nivelurile „alb” și „negru” folosind blocul NXT.
Să presupunem: alb -70, negru -50.
Apoi, calculăm: 70-50 = 20 (diferența dintre alb și negru), 50/20 = 2,5 (setăm valoarea medie a puterii atunci când ne mișcăm în linie dreaptă în blocurile de matematică la 50. Această valoare plus puterea adăugată atunci când reglați mișcarea ar trebui să fie egală cu 100)
Încercați să setați valoarea la 2,5 la intrarea „A”, apoi selectați-o mai precis.
La intrarea „B” a blocului de matematică „Înmulțire”, conectați ieșirea „Rezultat” a blocului de matematică anterior „Scădere”.
Urmează o pereche - un bloc de matematică (Adăugare) și motorul B.
Configurarea unui bloc de matematică:
Intrarea „A” este setată la 50 (jumătate din puterea motorului).
Ieșirea blocului „Rezultat” este conectată printr-o magistrală la intrarea „Putere” a motorului B.
Următoarea pereche este un bloc matematic (Scădere) și motorul C.
Configurarea unui bloc de matematică:
Intrarea „A” este setată la 50.
Intrarea „B” este conectată printr-o magistrală la ieșirea „Rezultat” a blocului de matematică „Multiplicare”.
Ieșirea blocului „Rezultat” este conectată printr-o magistrală la intrarea „Putere” a motorului C.

În urma tuturor acestor acțiuni, veți obține următorul program:

Deoarece toate acestea vor funcționa într-un ciclu, adăugăm „Cicl”, îl selectăm și îl mutam pe „Cicl”.

Acum să încercăm să ne dăm seama cum va funcționa programul și cum să îl configuram.


În timp ce robotul se mișcă în linie dreaptă, valorile senzorului coincid, ceea ce înseamnă că ieșirea blocului „Scădere” va fi 0. Ieșirea blocului „Multiplicare” dă, de asemenea, valoarea 0. Această valoare este furnizată. în paralel cu perechea de control motor. Deoarece aceste blocuri sunt setate la 50, adăugarea sau scăderea 0 nu afectează puterea motoarelor. Ambele motoare funcționează la aceeași putere de 50, iar robotul se rostogolește în linie dreaptă.

Să presupunem că pista face o întoarcere sau robotul se abate de la o linie dreaptă. Ce se va întâmpla?

Figura arată că iluminarea senzorului conectat la portul 2 (denumit în continuare senzori 2 și 3) crește, pe măsură ce se deplasează pe câmpul alb, iar iluminarea senzorului 3 scade. Să presupunem că valorile acestor senzori devin: senzorul 2 – 55 de unități și senzorul 3 – 45 de unități.
Blocul „Scădere” va determina diferența dintre valorile a doi senzori (10) și o va alimenta blocul de corecție (înmulțirea cu un coeficient (10*2,5=25)) și apoi blocurile de control
motoare.
În blocul de matematică (Adăugarea) a controlului motorului B la valoarea medie a vitezei de 50
25 va fi adăugat și o valoare de putere de 75 va fi furnizată motorului B.
În blocul de matematică (Scădere) pentru controlul motorului C, 25 va fi scăzut din valoarea medie a vitezei de 50 și o valoare a puterii de 25 va fi furnizată motorului C.
În acest fel, abaterea de la linia dreaptă va fi corectată.

Dacă pista se întoarce brusc în lateral, senzorul 2 se dovedește a fi alb, iar senzorul 3 este negru. Valorile de iluminare ale acestor senzori devin: senzorul 2 - 70 de unități și senzorul 3 - 50 de unități.
Blocul „Scădere” va determina diferența dintre valorile a doi senzori (20) și o va alimenta blocul de corecție (20*2,5=50) și apoi la unitățile de control al motorului.
Acum, în blocul de matematică (Adăugare) al controlului motorului B, motorului B va fi furnizată o valoare a puterii de 50 +50 =100.
În blocul de matematică (Scădere) al controlului motorului C, motorului C va fi furnizată o valoare a puterii de 50 – 50 = 0.
Și robotul va face o întoarcere bruscă.

Pe câmpurile albe și negre, robotul trebuie să conducă în linie dreaptă. Dacă acest lucru nu se întâmplă, încercați să selectați senzori cu aceleași valori.

Acum să creăm un nou bloc și să-l folosim pentru a muta robotul pe orice rută.
Selectați ciclul, apoi în meniul „Editare” selectați comanda „Creați blocul meu”.

În caseta de dialog „Block Designer”, dați un nume blocului nostru, de exemplu, „Go”, selectați o pictogramă pentru bloc și faceți clic pe „DONE”.

Acum avem un bloc care poate fi folosit în cazurile în care trebuie să ne mișcăm de-a lungul unei linii.