Concurs internațional de roboți - Reguli - Exemple de roboți - Robot de traiectorie Lego EV3. Începeți în știință Robot pentru deplasarea pe linia de instrucțiuni ev3

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

Lego Mindstorms EV3

Etapa pregătitoare

Crearea și calibrarea unui program

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.

In spate anul trecut progresele în robotică și sisteme automatizate au schimbat domeniile personale și de afaceri ale vieții noastre. Roboții sunt utilizați pe scară largă în transporturi, în cercetarea Pământului și în spațiu, în chirurgie, în industria militară, în realizarea cercetare de laborator, în domeniul securității, în producția de masă de bunuri industriale și bunuri de larg consum. Multe dispozitive care iau decizii pe baza datelor primite de la senzori pot fi considerate și roboți - cum ar fi, de exemplu, lifturile, fără de care viața noastră este deja de neconceput.

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

Obiectiv: Să înveți cum să programezi un robot să se miște în linie dreaptă.

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

    Scrieți programe pentru mișcarea robotului în linie dreaptă pe 30 cm, 1 m 30 cm și 2 m 17 cm.

    Constructor Mindstorms EV3.

Piese de designer - 601 piese, servomotor - 3 piese, senzor de culoare, senzor de mișcare, senzor infraroșu și senzor tactil. Unitatea de microprocesor EV3 este creierul Constructor LEGO Furtunile mintale.

Un servomotor mare este responsabil pentru mișcarea robotului, care se conectează la cărămida EV3 și îl face pe robot să se miște: mergeți înainte și înapoi, întoarceți-vă și conduceți de-a lungul unei anumite traiectorii. Acest servomotor are un senzor de rotație încorporat, care vă permite să controlați foarte precis mișcarea robotului și viteza acestuia.

Puteți determina un robot să efectueze o acțiune folosind software-ul 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, îl face să funcționeze în conformitate cu sarcinile. Puteți programa mișcarea la un anumit număr de rotații sau grade.

    Etapa pregătitoare.

    Crearea unui domeniu tehnic.

Vom marca câmpul de lucru al robotului, folosind bandă electrică și o riglă, vom crea trei linii lungi de 30 cm - o linie verde, 1 m 15 cm - roșu și 2 m 17 cm - linii negre.

    Calcule necesare:

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

O rotație a roții robotului este egală cu circumferința unui cerc cu diametrul de 5,7 cm Circumferința se găsește prin formula

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

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

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

Calculați numărul de rotații necesare pentru a trece:

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

    1m 30cm = 130cm

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

    2 m 17 cm = 217 cm.

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

    Crearea si calibrarea programului.

Vom crea un program conform următorului algoritm:

Algoritm:

    Selectați un bloc de mișcare în software-ul Mindstorms EV3.

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

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

    Opriți motoarele.

Programul terminat este încărcat în unitatea de control al robotului. Punem robotul pe teren si apasam butonul de start. EV3 traversează un câmp și se oprește la sfârșitul unei linii date. Dar pentru a obține un finisaj precis, trebuie să vă calibrați, deoarece factorii externi influențează mișcarea.

    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ă, așa că nu este exclusă aderența 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 de rotație, 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ă, toate dimensiunile mișcării sunt indicate în termenii de referință pentru competițiile de robotică. Sunt necesare pentru ca programul să nu fie supraîncărcat cu condiții logice, bucle și alte blocuri de control complexe.

În următoarea etapă de cunoaștere a robotului Lego Mindstorms EV3, veți învăța cum să programați viraje la un anumit unghi, mișcare în cerc, spirale.

Este foarte interesant să lucrezi cu designerul. Afând mai multe despre capacitățile sale, puteți rezolva orice probleme tehnice. Și în viitor, poate, creați-vă propriile modele interesante ale robotului 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/

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

Teoria generală și exemplele specifice de creare a unui program sunt descrise pe site-ul 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 valoarea „punctului ideal” situat la granița alb-negru.

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

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

O poți face manual. Dar contra sunt imediat vizibile: chiar și pentru o perioadă scurtă de timp, iluminarea se poate schimba, iar valoarea calculată se va dovedi a fi incorectă.

Deci poți face un robot să o facă.

În cursul experimentelor, am constatat că nu este necesar să se măsoare atât alb, cât și negru. Numai albul poate fi măsurat. Iar valoarea punctului ideal este calculată ca valoarea albului î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 raportul de viraj. Cu cât este mai mare, cu atât robotul reacționează mai puternic la schimbările de iluminare. Dar o valoare prea mare 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. O creștere a 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 de asemenea selectată experimental.

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

Raportul de direcț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ă emitați sub forma unui bloc separat.

Implementarea algoritmului

Acesta este algoritmul care a fost implementat în robot pentru categoria de mijloc WRO 2015

Pentru a face robotul să se miște fără probleme de-a lungul liniei negre, trebuie să-l faceți 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 marginea de alb și negru - o vom folosi pentru a calcula viteza de mișcare.

În primul rând, să introducem noțiunea „Punctul ideal al traiectoriei”.

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, locația punctului este fundamentală - între alb și negru. Nu va funcționa să-l setaț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 oricare direcție, robotul trebuie să se întoarcă în acel punct.

Hai să compunem descrierea matematică a problemei.

Datele inițiale.

Punct perfect.

Citirile curente ale senzorului de lumină.

Rezultat.

Puterea motorului B.

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 conduce 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 la un regulator P care răspunde în mod adecvat la abaterile de la linia neagră.

În limbajul matematicii, aceasta ar fi scrisă astfel:

unde Hb și Hc sunt puterile totale 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.

Itech - citiri curente ale senzorului de lumină.

I id - punct ideal calculat.

k este coeficientul 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.

15.01.2012, 18:51

Până acum, în articolele despre algoritmii utilizați la deplasarea de-a lungul unei linii, o astfel de metodă era luată în considerare atunci când senzorul de lumină, așa cum spune, își urmărea marginea din stânga sau din dreapta: de îndată ce robotul se deplasa în partea albă a câmpului, Controlerul a returnat robotul la graniță, senzorul a început să se miște adânc în liniile negre - regulatorul l-a îndreptat înapoi.
În ciuda faptului că imaginea de mai sus este pentru un controler cu releu, principiul general al mișcării unui regulator proporțional (P-regulator) va fi același. După cum s-a menționat deja, viteza medie a unei astfel de mișcări nu este foarte mare și s-au făcut mai multe încercări de a o mări, complicând ușor algoritmul: într-un caz, s-a folosit frânarea „soft”, în celălalt, pe lângă viraj, înainte. a fost introdusă mișcarea.
Pentru a permite robotului să avanseze în unele zone, a fost alocată o secțiune îngustă în intervalul de valori produse de senzorul de lumină, care ar putea fi numit condiționat „senzorul se află la marginea liniei”.
Această abordare are mic defect- în cazul în care robotul „urmează” marginea din stânga a liniei, atunci la viraje din dreapta nu pare să determine imediat curbura traiectoriei și, ca urmare, petrece mai mult timp căutând linia și rotind. Mai mult decât atât, este sigur să spunem că, cu cât virajul este mai abrupt, cu atât această căutare durează mai mult.
Următoarea figură arată că dacă senzorul ar fi fost situat nu pe partea stângă a graniței, ci pe partea dreaptă, atunci ar fi detectat deja o curbură a traiectoriei și ar fi început să facă manevre de viraj.

Prin urmare, este o idee bună să echipați robotul cu doi senzori simultan, care sunt amplasați pe părți opuse ale liniei și, în consecință, ar ajuta robotul să răspundă mai rapid la o schimbare a direcției de mișcare.
Acum este necesar să se determine modul în care o astfel de modificare a designului va afecta programul. Pentru simplitate, ar trebui să începem din nou cu cel mai simplu controler de releu și, prin urmare, în primul rând, ne interesează posibilele poziții ale senzorilor în raport cu linia:

De fapt, poate fi evidențiată încă o stare acceptabilă - pe traseele dificile va fi intersecția unei intersecții sau un fel de îngroșare a căii.
Alte poziții ale senzorilor nu vor fi luate în considerare, deoarece fie sunt derivate din cele arătate mai sus, fie acestea sunt pozițiile robotului când a părăsit linia și nu va mai putea reveni la ea folosind informațiile de la senzori. Ca urmare, toate prevederile de mai sus pot fi reduse la următoarea clasificare:
  • senzorul din stânga, precum și cel din dreapta, se află deasupra unei suprafețe luminoase
  • Senzor stânga deasupra suprafeței luminoase, senzorul din dreapta deasupra întunericului
  • Senzor stânga deasupra suprafeței întunecate, senzorul din dreapta deasupra luminii
  • ambii senzori sunt deasupra suprafeței întunecate
Dacă la un moment dat programul robotului detectează una dintre aceste poziții, acesta va trebui să reacționeze în consecință:
    Dacă ambii senzori sunt deasupra suprafeței albe, atunci aceasta este o situație normală în care linia este între senzori, așa că robotul ar trebui să meargă drept.Dacă senzorul din stânga este încă deasupra suprafeței luminii și senzorul din dreapta este deja deasupra întunecat, apoi robotul a condus-o partea dreapta spre linie, ceea ce înseamnă că trebuie să se întoarcă spre dreapta, astfel încât linia să fie din nou între senzori. , robotul continuă să se miște drept din nou.

Diagrama de mai sus arată imediat cum trebuie să se schimbe exact comportamentul motoarelor în program. Acum, scrierea programului nu ar trebui să fie dificilă. Ar trebui să începeți prin a alege care senzor va fi interogat primul. Nu are de mare importanta, așa că lăsați-o. Este necesar să se determine dacă se află pe o suprafață deschisă sau întunecată:
Această acțiune nu vă permite încă să spuneți în ce direcție ar trebui să meargă robotul. Dar va împărți stările enumerate mai sus în două grupe: (I, II) pentru ramura superioară și (III, IV) pentru cea inferioară. Fiecare dintre grupuri are acum două stări, așa că trebuie să selectați una dintre ele. Dacă te uiți cu atenție la primele două stări I și II, ele diferă în poziția senzorului drept - într-un caz este deasupra unei suprafețe luminoase, în celălalt - deasupra uneia întunecate. Acesta este ceea ce va determina alegerea acțiunii de luat:
Acum puteți introduce blocuri care definesc comportamentul motoarelor conform tabelelor de mai sus: ramura superioară a stării imbricate definește combinația „ambele senzori pe lumină”, cea de sus - „stânga pe lumină, dreapta pe întuneric”:
Ramura inferioară a stării principale este responsabilă pentru un alt grup de state III și IV. Aceste două stări diferă una de cealaltă în ceea ce privește nivelul de iluminare captat de senzorul potrivit. Deci, va determina alegerea fiecăruia dintre ele:
Cele două ramuri rezultate sunt umplute cu blocuri de mișcare. Ramura superioară este responsabilă pentru starea „stânga pe întuneric, dreapta pe lumină”, iar ramura inferioară este responsabilă pentru „ambele senzori pe întuneric”.
Trebuie remarcat faptul că acest design determină doar modul de pornire a motoarelor în funcție de citirile senzorilor dintr-un anumit loc din câmp, desigur, după un moment, programul trebuie să verifice dacă citirile s-au modificat pentru a corecta comportamentul motoarelor în consecință și după un moment din nou, din nou și așa mai departe. Prin urmare, ar trebui plasat într-o buclă care va oferi această verificare repetată:

Un astfel de program destul de simplu va oferi o viteză destul de mare a robotului care se deplasează de-a lungul liniei fără a-i depăși limitele, dacă setați corect viteza maximă atunci când vă deplasați în stările I și IV și, de asemenea, setați metoda optimă de frânare în stările II și III - cu cât virajele pe pistă sunt mai abrupte, cu atât frânarea ar trebui să fie mai „dure” - viteza ar trebui să scadă mai repede și invers - cu viraje lin, este foarte posibil să se aplice frânarea prin oprirea energiei sau chiar printr-un scădere ușoară a vitezei.

Câteva cuvinte separate ar trebui spuse și despre amplasarea senzorilor pe robot. Evident, aceleași recomandări se vor aplica și pentru locația acestor doi senzori față de roți ca și pentru un senzor, doar mijlocul segmentului care leagă cei doi senzori este luat ca vârf al triunghiului. Distanța dintre senzori ar trebui, de asemenea, aleasă din caracteristicile pistei: cu cât senzorii sunt amplasați mai aproape unul de celălalt, cu atât robotul se va nivela mai des (efectuează viraje relativ lente), dar dacă senzorii sunt distanțați suficient de largi. , atunci există riscul de a zbura în afara pistei, așa că va trebui să efectuați viraj mai strâns și mișcare mai lentă pe drepte.



Să luăm în considerare cel mai simplu algoritm pentru deplasarea de-a lungul unei linii negre pe un singur senzor de culoare 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 acesteia, întorcându-se fie la stânga, fie la dreapta și mergând treptat înainte.

Algoritmul este foarte simplu: dacă senzorul vede negru, atunci robotul se întoarce într-o direcție, dacă vede alb - în cealaltă.

Implementare în mediul Lego Mindstorms EV3

În ambele blocuri de mișcare, selectați modul „activare”. Comutatorul este setat la senzorul de culoare - măsurare - culoare. În partea de jos, nu uitați să schimbați „fără culoare” în alb. De asemenea, trebuie să specificați corect toate porturile.

Nu uitați să adăugați o buclă, robotul nu va merge nicăieri fără ea.

Verifica. Pentru cele mai bune rezultate, încercați să schimbați setările de direcție și putere.

Mișcare cu doi senzori:

Cunoașteți deja algoritmul pentru deplasarea robotului de-a lungul liniei negre folosind un senzor. Astăzi vom lua în considerare mișcarea de-a lungul liniei folosind doi senzori de culoare.
Senzorii trebuie instalați astfel încât linia neagră să treacă între ei.


Algoritmul va fi următorul:
Dacă ambii senzori văd culoare alba- a merge inainte;
Dacă unul dintre senzori vede alb și celălalt negru, ne întoarcem spre negru;
Dacă ambii senzori văd negru, suntem la o intersecție (de exemplu, oprire).

Pentru a implementa algoritmul, trebuie să urmărim citirile ambilor senzori și numai după aceea setăm robotul să se miște. Pentru a face acest lucru, vom folosi comutatoare imbricate într-un alt comutator. Astfel, vom sonda mai întâi primul senzor, iar apoi, indiferent de citirile primului, vom sonda cel de-al doilea senzor, după care vom seta acțiunea.
Conectați senzorul din stânga la portul #1, senzorul din dreapta la portul #4.

Program cu comentarii:

Nu uitați că pornim motoarele în modul „Activare”, astfel încât să funcționeze atâta timp cât este necesar pe baza citirilor senzorilor. De asemenea, necesitatea unei bucle este adesea uitată - 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. Încărcați videoclipul de testare a modelului

Articole similare

2023 videointerfons.ru. Handyman - Aparate de uz casnic. Iluminat. Prelucrarea metalelor. Cutite. Electricitate.