Cum se configurează smartphone-uri și PC-uri. Portal de informare
  • Acasă
  • Televizoare (Smart TV)
  • Mișcarea robotului de-a lungul unei traiectorii. Controlul mișcării robotului folosind un sistem de feedback negativ

Mișcarea robotului de-a lungul unei traiectorii. Controlul mișcării robotului folosind un sistem de feedback negativ

Cum să dansezi ca un robot?



Robotul sau robotizarea este un stil de street dance care a apărut în 1967. Dansul implică imitarea artistică a mișcărilor unui robot sau manechin, elemente ale cărora sunt populare în cluburile de noapte, pe scenă și pe stradă. Din articolul nostru veți învăța să dansați ca la lucrări.

Dansul a devenit popular datorită legendarului Michael Jackson. Robotizarea se bazează pe contracția musculară urmată de relaxare. Dansatori această direcție utilizați mișcări liniare și fixarea punctelor.

Tehnica de dans robot

  1. Înainte de a învăța să dansezi, alege muzica ritmică.
  2. Un robot este o mașină. Scapă de expresiile faciale, dă-ți chipului o privire rece, îndreptată la un moment dat.
  3. Strânge-ți corpul și întinde partea superioară a capului în sus, picioarele depărtate la lățimea umerilor, degetele de la picioare îndreptate spre părțile laterale, mâinile în jos.
  4. Luați în considerare mișcarea capului. Imaginează-ți că ești într-o poză și trebuie să te uiți la colțurile ei. Cu o mișcare lină, începeți să întoarceți capul în sus la dreapta, apoi fixați poziția, fixați în jos, fixați în stânga și terminați mișcarea ridicând capul în sus.
  5. Învățând să te oprești. Umple-ți plămânii cu aer inspirând adânc pe nas, iar când pieptul se ridică, îngheață și, după câteva secunde, expiră aerul. Repetați această mișcare de mai multe ori.
  6. Apoi, imaginați-vă că sunteți un balon care se umple cu aer. Urmând pasul 5 din instrucțiuni, conectați-vă mâinile. Imaginează-ți că ești o păpușă și ți se trag sforile. Schimbați poziția mâinilor, întorcându-vă corpul laturi diferite. Faceți mișcări încet și cu pauze. Termină mișcarea stând drept și strângându-ți mâinile, ca și cum ai fi așezat la un birou.
  7. Fără a elimina poziția mâinilor împreunate, întoarceți-vă la stânga și îndoiți-vă corpul. Puteți să vă balansați încet corpul la ritm, apoi să vă îndreptați brațele în lateral și să le îndoiți înapoi.
  8. Apoi, lucrează-ți pieptul. Fixează-ți capul pe loc și îndoiește-ți corpul în sus și în jos.
  9. Următoarea mișcare este o întoarcere. Când virați la dreapta, stați pe vârful piciorului stâng și îndoiți ușor genunchiul. Când virați la stânga, faceți același lucru cu piciorul drept. Rotiți umerii împreună cu picioarele.
  10. Să exersăm virajele pe jumătate de șezut. Îndoiți genunchii și răsuciți-vă corpul la stânga și la dreapta ca și cum ați fi într-un cerc care se învârte.
  11. Următorul element implică mișcarea brațelor și a corpului. Întoarce-te la stânga și imaginează-ți că vrei să ridici cutia. Folosind brațele drepte, apucați o cutie imaginară, întoarceți-vă drept, fixați poziția, apoi întoarceți-vă la stânga și puneți cutia în jos.
  12. Să facem un val. În această mișcare, plasticitatea și flexibilitatea corpului sunt importante. Începe valul cu mâna dreaptă, apoi angajați-vă umărul, miezul și terminați cu un val pe brațul stâng. De asemenea, exersați să faceți un val obișnuit folosind burta.
  13. Exersați mișcările descrise pe muzică de mai multe ori în fața unei oglinzi. Combinând elementele, obțineți un dans. După exersarea mișcărilor, le puteți aranja în ordine cronologică după gustul dvs. Vino cu propriile tale elemente de dans.

Notă pentru începători

  • Învață conexiunile de bază. Amintiți-vă că improvizația bună este o improvizație bine pregătită.
  • Acordați mai multă atenție lipirii ligamentelor. Trecerea de la o mișcare la alta ar trebui să arate armonioasă.
  • Înregistrați-vă activitățile pe video. Acest lucru vă va ajuta să evaluați mișcările din exterior și să învățați greșelile la care va trebui să lucrați.

Lecție de laborator Nr. 1 „Programare”

microcontroler NXT Brick"

Introducere

Robotica este o industrie în dezvoltare dinamică atât în ​​ceea ce privește utilizare aplicată deci in cercetarea stiintifica. A apărut în ultimii ani aspect nou bunuri - trusele robotizate vă permit să implementați proiecte de roboți cu diverse funcționalități, să vă testați planurile și să le utilizați în formare.

Unul dintre cele mai populare truse de robotică din lume este LEGO Mindstorms NXT. Dezvoltat împreună cu angajații Institutului de Tehnologie din Massachusetts, acesta este format dintr-un set mare de piese structurale (mai mult de 600 de piese), 3 servo-uri, un set de senzori și un microcomputer NXT Brick. Setul este de bază pentru multe evenimente de robotică din lume, inclusiv competițiile WRO (World Robotic Olympiad). Mediul furnizat cu kit-ul programare vizuală NXT-G, creat de National Instruments pe baza produsului său LabView.

Astfel, kitul NXT este un excelent teren de testare pentru implementarea unui set de lucrări de laborator pe baza acestuia atunci când studiați robotica.

Scopul lecției

Familiarizați-vă cu principalele capacități ale microcomputerului robotic NXT Brick, unitățile sale de control, sistemul de meniuri, familiarizați-vă cu mediul de programare vizuală NXT-G, efectuați programare funcții de bază: Afișează pe ecran, redă sunete.

Exercita

Explorați comenzile NXT Brick Explorați sistemul de meniu NXT Brick

Explorați scopul porturilor NXT Brick

Lansați mediul de programare NXT-G

Familiarizați-vă cu paleta de bază a instrumentelor NXT-G

Familiarizați-vă cu paleta extinsă de instrumente NXT-G Scrieți următoarele programe:

    • emite un singur fragment de sunet dintr-un fișier

      scoate un singur sunet de o anumită înălțime

    • emite o serie de sunete din fișiere o dată

      emite o serie de sunete de diferite tonuri o dată (programam melodia)

      produce o serie continuă de sunete de diferite tonuri (bloc „ciclu”)

      afișează o imagine dintr-un fișier

      afișează text pe o singură linie

      afișează textul pe trei rânduri Pregătiți un raport cu capturi de ecran ale programelor scrise.

Progresul lucrărilor

Aspect microcalculatorul NXT Brick este prezentat în Fig. 1. Alimentat de 6 baterii AA. Unitatea este echipată cu un afișaj LCD cu capacitatea de a afișa text și grafice. Pentru a naviga prin secțiunile meniului, utilizați tastele activate panoul frontal: portocaliu OK, gri închis - Anulare. Blocul poate reda sunete atât din fișiere pre-înregistrate, cât și din diferite tonuri. Conectarea la un computer se realizează prin interfață USB. Există un modul conexiune bluetooth, care vă permite să controlați blocul de la un computer și să conectați blocurile între ele. Caramida NXT are trei porturi pentru actuatoare, etichetate A, B și C (B și C sunt de obicei folosite pentru mișcare, A pentru un manipulator) și patru porturi pentru senzori, etichetate cu numere.

Orez. 1. Cărămidă NXT

Caramida NXT poate fi programată folosind mediul de programare vizuală NXT-G. Aspectul mediului cu o paletă standard de instrumente este prezentat în Fig. 2. Aici programul este construit din blocuri plasate pe grinzi LEGO. Este permisă utilizarea buclelor, salturile condiționate, interacțiunea cu senzorii, actuatoarele, controlul unui transceiver Bluetooth, ieșirea de afișare și redarea sunetelor.



Orez. 2. Interfață pentru mediul vizual de programare NXT-G

Pentru a include un bloc nou în program, trebuie să îl „trageți” cu mouse-ul din bara de instrumente pe fasciculul LEGO. Ordinea în care apar elementele va determina ordinea în care este executat programul.

    Fiecare bloc are un set de parametri care îi determină „comportamentul”. Deci, de exemplu, în blocul „Mișcare” puteți selecta direcția de mișcare, durata acesteia și puterea furnizată motoarelor.

Elevii trebuie să finalizeze sarcina de laborator și să pregătească un raport.

Lecția de laborator nr. 2 „Tehnici de bază pentru controlul mișcării unui robot mobil”

Scopul lecției

Stăpânește abilități practice în construirea unui robot mobil, stăpânește abilități practice de programare diverse tipuri mișcările robotului mobil.

Exercita

Pe baza schemei propuse, asamblați designul unui robot mobil Scrieți următoarele programe:

Progresul lucrărilor

Asamblați designul unui robot mobil. Designul final este prezentat în Figura 3. Acest design este un aspect tipic pentru roboții mobili. Două roți motrice asigură mișcarea, o roată pivotantă face posibile virajele. Robotul se rotește prin hrănire capacități diferite pe motoarele dreapta si stanga.


Orez. 3. Cărucior robot mobil cu roată rotativă

La asamblare, o atenție deosebită trebuie acordată unui astfel de concept precum „distribuția greutății”. Faptul este că sarcina principală dintr-un astfel de cărucior ar trebui să fie suportată de axa roților motoare. Cel mai greu element structural este caramida NXT. Dacă se pune prea multă greutate pe roata pivotantă, structura nu se va întoarce bine.



Orez. 4. Vedere de jos. Metoda de montare a motorului

Motoarele din acest cărucior sunt atașate la partea inferioară a microcalculatorului folosind grinzi drepte (Fig. 4).

O atenție deosebită trebuie acordată atenție designului roții pivotante (Fig. 5). Trebuie să se rotească liber atât în ​​jurul axei sale, cât și în jurul axei de fixare. Mai mult, structura trebuie să fie suficient de puternică. Orez. 5. Design roată rotativă

După asamblarea robotului mobil, trebuie să finalizați toate sarcinile și să pregătiți un raport.



Lecția de laborator nr. 3 „Studiul senzorilor de atingere Mindstroms NXT”

Scopul lecției

Familiarizați-vă cu senzorii kitului NXT, aflați cum să îi conectați, să-i diagnosticați și să stăpâniți abilitățile practice în programarea unui robot folosind senzori.

Exercita

Echipați robotul cu o bară de protecție bazată pe senzori tactili Scrieți următoarele programe:

    • Mișcare simplă până în momentul ciocnirii cu peretele, apoi deplasați-vă înapoi, viraj aleatoriu dreapta sau stânga, continuați să vă mișcați

Reinstalați robotul cu un senzor de distanță Scrieți următoarele programe:

    • Mișcare preliniară înainte, fie până în momentul ciocnirii cu un obstacol, fie când mai sunt mai puțin de 20 cm de obstacol, după care se deplasează înapoi, se rotește aleatoriu la dreapta sau la stânga, continuând deplasarea

Pregătiți un raport cu capturi de ecran ale programelor scrise

Setul LEGO Mindstorms NXT vine cu următorul set de senzori: doi senzori tactili, un senzor de distanță cu ultrasunete și un senzor de culoare. Toate au vedere standard prinderi


Orez. 6. Senzor tactil NXT

Senzorul tactil NXT este de fapt un buton. Putem urmări trei stări: „apăsat”, „eliberat”, „apăsat și eliberat”. În funcție de logica programului, este necesar să se analizeze una dintre aceste trei distanțe. Folosind un senzor tactil, puteți rezolva, de exemplu, sarcini precum un detector de coliziune, doi senzori pot ajuta la determinarea dimensiunii unui obiect etc.


Orez. 7. „Alb” pentru bara de protecție



Orez. 8. Bara de protecție

Din grinzile LEGO curbate, asamblați bara de protecție propriu-zisă. Montați-l pe robotul mobil.


Orez. 9. Robot mobil cu bara de protectie

Scrieți un program pentru un robot de protecție conform sarcinii de laborator.


Orez. 10. Senzor de distanta cu ultrasunete

Senzorul de distanță NXT utilizează o metodă cu ultrasunete pentru a determina distanța până la un obiect. Are emițător și microfon. Funcționează eficient la o distanță cuprinsă între 10 și 100 cm față de obiect.


Orez. 11. Robot mobil cu bara de protectie si senzor ultrasonic de distanta.

Suplimentați designul robotului cu un senzor de distanță ultrasonic și scrieți un program conform sarcinii de laborator.

Pe baza rezultatelor lucrării, este necesar să se elibereze un raport.

Lecția de laborator nr. 4 „Mișcarea unui robot mobil de-a lungul liniei negre”

Scopul lecției

Familiarizați-vă cu senzorul de lumină și culoare al kitului NXT, stăpâniți algoritmii de bază pentru deplasarea de-a lungul liniei negre.

Exercita

Pe baza schemei propuse, asamblați designul unui robot mobil (2 opțiuni: un robot pe o platformă pe șenile, un robot pe o platformă pe roți cu o roată rotativă)

Echipați robotul cu un senzor de culoare Scrieți următoarele programe:

    • Mișcarea de-a lungul liniei negre folosind „algoritmul clasic”

      Mișcarea de-a lungul liniei negre folosind controlerul P

      Deplasarea de-a lungul liniei negre folosind un controler PI

      Mișcarea de-a lungul liniei negre folosind un controler PID Pregătiți un raport cu capturi de ecran ale programelor scrise

Progresul lucrărilor

Pentru a face acest lucru veți avea nevoie de un senzor de culoare NXT. Senzorul de culoare poate funcționa în două moduri: senzor de culoare și senzor de lumină. Pentru a rezolva problema deplasării de-a lungul unei linii, modul senzor de lumină este mai potrivit. În acest caz, valoarea variază de la 0 la 255 și corespunde luminozității luminii reflectate de la obiectul iluminat. Pentru a vă deplasa de-a lungul unei linii negre, este indicat să o iluminați cu un LED roșu.


Orez. 12. Senzor de culoare NXT.

Scoateți senzorul de distanță și bara de protecție de pe robotul mobil și echipați-l cu un senzor de lumină. Senzorul este situat de-a lungul liniei centrale a robotului, ușor înaintea axei roții.

Programul „clasic” pentru ca robotul să se deplaseze de-a lungul liniei negre este prezentat în Fig. 13.

Rezolvă problema.



Orez. 13. Cel mai simplu algoritm „clasic” pentru deplasarea de-a lungul liniei negre.

Modificați programul pentru mișcarea liniei cu controler P, controler PI și controler PID.

Când ați terminat, pregătiți un raport.

Bibliografie

    Fundamentele mecatronicii: monografie / Yu M. Osipov [et al.] Agenția Federală pentru Educație, Tomsk universitate de stat sisteme de control și electronice radio. - Tomsk: TUSUR, 2007. - 162 p. (90 exemplare în biblioteca TUSUR)

    Yurevich E.I., Ignatova E.I. Principii de bază ale mecatronicii. Mecatronică, Automatizare, Control, Nr. 3, 2006. (5 exemplare în biblioteca TUSUR)

    Yurevich E.I. Bazele roboticii. Manual. – Sankt Petersburg: BHV-Petersburg, 2005.

    M. Shahinpur. Curs de robotica. Pe. din engleză – M.: Mir, 1990.

Unul dintre sarcini cheie Robotica mobilă înseamnă găsirea unei rute pentru mișcare și optimizarea acesteia. Deplasându-se în zona de lucru, robotul trebuie să-și evalueze constant împrejurimile, să-i determine poziția și poziția obiectelor din jurul acestuia. Există multe în diverse moduri, cu ajutorul căruia robotul își poate determina propria poziție și poate construi un traseu între punctele de destinație. Când vă deplasați pe stradă, se folosește tehnologia navigație prin satelit, iar obiectele din jur sunt detectate folosind camere sau telemetru. În cazul deplasării în interior, cu ajutorul camerelor și telemetrului, se construiește un model virtual al spațiului, conform căruia robotul este ghidat în viitor. Metodele de mai sus sunt de natură generală și aplicabile în situații arbitrare, dar din această cauză sunt foarte greu de implementat și nu sunt încă utilizate pe scară largă în viața de zi cu zi.


De obicei, sistemele robotizate autonome sunt proiectate pentru sarcini specifice. Această abordare ne permite să formalizăm cerințele pentru sistem și să le dezvoltăm pe toate algoritmi posibili reacții la modificările stării mediului.

De exemplu, una dintre sarcinile destul de strict formalizate poate fi mutarea obiectelor în interior spațiile de producție. De regulă, la transportul mărfurilor în depozite sau ateliere de producție, roboții parcurg mereu același traseu. În consecință, această rută este cunoscută dinainte și pentru aceasta poate fi dezvoltat un sistem de control al mișcării robotului.

Anterior atelier vehicule erau cărucioare care se mișcau pe șine. Odată cu creșterea științei și tehnologiei, acestea au fost înlocuite cu robocars - roboți mobili diferite tipuriși pentru diverse sarcini, iar șinele așezate de-a lungul atelierului au fost înlocuite cu o pânză de linii de ghidare trasate pe podea.


Roboții mobili care se deplasează în ateliere de-a lungul liniei, la fel ca roboții din lucrările anterioare de laborator, sunt echipați cu diverse dispozitive tactile pentru perceperea mediului: senzori IR, camere, senzori de securitate etc. Dar, spre deosebire de roboții discutați mai devreme, roboți adevărați nu functioneaza in conditii de laborator - de multe ori linia de ghidare poate fi deteriorata sau ascunsa in spatele unui obiect, unele trasee se pot intersecta sau pot fi intrerupte partial.


Traseul propriu-zis poate fi supus unor restricții, de exemplu: unele tronsoane ale traseului pot fi interzise pentru trafic, iar unele pot fi atinse numai după trecerea prin altele.

Devine evident că metodele de deplasare de-a lungul unei linii, care este o traiectorie închisă, nu sunt în întregime acceptabile într-un astfel de caz. Exemple de diverși algoritmi pentru deplasarea de-a lungul unei linii pot fi găsite în lucrări anterioare, dar putem concluziona imediat că niciuna dintre ele nu ține cont de intermitența traiectoriei de mișcare sau de prezența intersecțiilor pe aceasta.

Dacă, în timpul mișcării, programul de control al unui robot mobil nu este în măsură să determine prezența intersecției liniilor de ghidare, acest lucru poate duce la ambiguitate în luarea deciziilor.

La traversarea intersecției liniilor, sistemul de control al robotului mobil va primi date care indică faptul că linia de ghidare este situată atât la dreapta, cât și la stânga față de robot. În consecință, procesul de luare a deciziilor privind manevrele ulterioare va fi perturbat.



Pentru a recunoaște intersecțiile liniilor de ghidare, pot fi utilizate multe metode diferite, de exemplu, camerele sunt adesea folosite în astfel de scopuri. Dar procesarea imaginilor necesită multă performanță computer de bord robot, astfel încât astfel de soluții nu sunt întotdeauna aplicabile. Această lucrare discută o metodă pentru controlul unui robot mobil folosind informații provenite de la o serie de senzori IR. Folosind o serie de șapte senzori S1-S7, devine posibil să se determine locația intersecțiilor liniilor. Deoarece există destul de multe opțiuni pentru cele mai probabile intersecții, ar trebui să configurați programul de control al robotului la numărul maxim posibil de opțiuni acceptabile, determinate pe baza citirilor senzorilor IR.

Efectuarea de manevre în apropierea intersecțiilor

Când vă deplasați de-a lungul unui traseu care este o linie de intersectare, pe lângă urmărirea liniei, este necesar să selectați direcția de mișcare la fiecare dintre intersecții. Trecerea secvenței corecte de intersecții face posibilă parcurgerea unui anumit traseu în mod corect.

În cadrul acestei lucrări, se propune elaborarea unui program de parcurgere a unui traseu dat. Ca exemplu, luați în considerare traseul de bază prezentat în figură. Pentru a dezvolta un program de deplasare de-a lungul unui anumit traseu, este necesar să selectați puncte speciale pe acesta, care sunt intersecții ale traseului sau pauzele acestuia. Pentru ca robotul să ajungă la linia de sosire, trebuie să urmeze linia și să treacă patru puncte specificate.

Mișcarea de-a lungul unui traseu dat este determinată de o secvență algoritmică care specifică una dintre manevrele în fiecare punct cheie. În special, în exemplul de mai sus, la prima intersecție a traseului robotul continuă să se deplaseze în direcție dreaptă, la a doua se întoarce la stânga, iar la a treia se întoarce la dreapta și urmează până la linia de sosire.


Într-un mod similar, puteți dezvolta un program pentru deplasarea robotului pe oricare dintre rutele mai complexe. Pentru a face acest lucru, trebuie doar să setați secvența de mișcare a robotului prin intersecțiile rutei.

Programul de control se reduce la căutarea secvenţială pentru fiecare dintre punctele unei secvenţe date. Fiecare punct este descris prin propria sa funcție, cu ajutorul căreia este recunoscut, precum și prin viteza de trecere a acestei secțiuni, care este determinată în stadiul inițializării programului.


Textul programului este o secvență de apeluri de funcții secvențiale care specifică mișcarea necesară. Pentru a varia direcția de mișcare a robotului de-a lungul liniei, trebuie doar să schimbați ordinea apelării funcțiilor.

Funcțiile de mai sus pot fi împărțite în două tipuri principale:

1) Funcții care rotesc robotul la intersecțiile în formă de T și L.

2) Funcții cu care robotul se deplasează la cea mai apropiată intersecție fără nicio acțiune.

În primul caz, funcția constă din două operații separate - un apel la funcția de mișcare înainte și un apel la funcția de întoarcere într-o direcție dată.

Funcția l_node_l_turn este concepută pentru a face un viraj la stânga la cea mai apropiată intersecție la stânga. Funcția constă din alte două funcții: l_node_forward, care este responsabil pentru deplasarea la cea mai apropiată intersecție în formă de L cu o viraj la stânga și pivot_left, care este responsabil pentru virajul la stânga.

Funcția l_node_forward buclă nesfârșită caută punctul de intersecție al traiectoriilor folosind funcția l_node_detect. În timpul căutării, robotul urmează constant linia folosind funcția follow_line. După ce detectează un punct în care rutele se intersectează, robotul face un salt scurt înainte, limitat de cronometru, pentru a se deplasa ușor pentru a vira mai departe la stânga. Această mișcare Este extrem de important ca după manevră robotul să ajungă în centrul liniei de ghidare. O atenție deosebită trebuie acordată procesului de recunoaștere a punctelor de intersecție a rutei. Evident, pe măsură ce robotul se deplasează de-a lungul traseului, pot apărea diverse situații, dar cele mai multe dintre ele pot fi descrise prin semne formale, de exemplu, prin activarea senzorilor IR.


Să luăm în considerare procesul de deplasare a robotului printr-o secțiune a traseului cu viraj la stânga. Evident, pe măsură ce robotul se mișcă, unii dintre senzorii IR vor atinge linia neagră și va apărea una dintre situațiile ilustrate mai jos.


În figură, senzorii IR situati deasupra liniei negre sunt marcați cu negru, iar cei aflați deasupra zonei albe a suprafeței sunt marcați cu alb. În timp ce robotul se mișcă, puteți interoga fiecare dintre senzori și, căutând printre opțiuni, puteți determina poziția actuală a robotului.


Funcția de mai sus descrie procesul de recunoaștere a virajului în L la stânga. Conform algoritmului de mai sus, un astfel de punct de rută este înțeles ca secțiunea traiectoriei la care sunt declanșați senzorii IR nr. 1, nr. 2, nr. 3.

În acest fel, puteți recunoaște orice parte a traseului. La prima vedere, aceasta poate părea o sarcină destul de simplă, dar merită să acordați o atenție sporită acurateței recunoașterii poziției curente. Precizia programului poate fi afectată de calitatea suprafeței de lucru și de viteza robotului. Pentru a crește acuratețea programului, funcția l_node_detect implementează un mecanism de protecție împotriva false pozitive. Aceeași condiție este verificată de două ori după o întârziere programabilă.


Măsuri pentru îmbunătățirea preciziei muncii program de control sunt extrem de importante atunci când se dezvoltă un sistem de control. Neglijarea lor poate duce la operare incorectă algoritm și întregul sistem robotic în ansamblu.

Efectuarea de manevre complexe

În situații reale, roboții mobili se mișcă nu numai de-a lungul secțiunilor drepte ale unui traseu, ci și de-a lungul traiectoriilor curbe și, de asemenea, efectuează diverse manevre.


Cum mai mult sistem controlul conține descrieri ale unor astfel de manevre, cu cât robotul poate depăși rutele mai complexe. De exemplu, similar cu traseul prezentat mai jos în figură.


În general, programul de control este identic cu programul discutat în partea anterioară. La fel ca pentru orice alt program, este specificată secvența de trecere a nodurilor de traiectorie.

În comparație cu partea anterioară a lucrării, au fost adăugate două noi tipuri de mișcări - mișcarea de-a lungul unui arc circular și mișcarea de-a lungul unei diagonale, iar fiecare dintre aceste mișcări diferă în direcție.

Fiecare dintre aceste funcții constă dintr-o funcție de urmărire a rutei - diag_corner_forward, I_curve_branch_forward și o funcție de întoarcere în direcția dorită - pivot_left, pivot_right. Mișcarea robotului de-a lungul liniei în unghi este controlată cu ajutorul senzorilor IR nr. 1 și nr. 7, care stabilesc poziția robotului deasupra liniei. Dacă robotul este deasupra liniei, atunci este lansată funcția follow_line, cu ajutorul căreia robotul își urmărește propria poziție față de linie și se concentrează pe ea folosind senzorul IR nr. 4.

Urmărirea liniei are ca scop în primul rând deplasarea de-a lungul acesteia cu centrul robotului orientat deasupra liniei. Deoarece centrul robotului coincide cu senzorul IR #4, funcția follow_line caută să minimizeze abaterea senzorilor IR #3 și #5 față de linie.


Esența acest proces se rezumă la îndeplinirea mai multor condiții:

1) Dacă senzorul IR nr. 4 este deasupra liniei, atunci robotul conduce drept la viteză maximă.

2) Dacă unul dintre senzorii IR nr. 3 sau nr. 5 detectează o linie, atunci robotul se întoarce către sens opus la viteza minima.

În timp ce urmează linia, viteza de manevră a acesteia se modifică, în funcție de poziția robotului. Acest lucru se face pentru că în unele situații este necesar mișcări line robot astfel încât să nu se miște de pe linie, de exemplu la manevrarea între senzorii nr. 3 și nr. 5.

Dacă robotul se abate de la linie suficient de departe, este necesar să-și corecteze poziția cât mai repede posibil, astfel încât viteza sa de mișcare crește.

Funcția change_speed este responsabilă pentru modificarea vitezei robotului, care setează viteza de rotație a unităților ca procent din valoarea vitezei maxime.


Amintiți-vă că menținerea limitei de viteză este una dintre cele mai importante cele mai importante conditii, afectând mișcarea robotului de-a lungul unui traseu dat. Una dintre cele mai importante cerințe pentru un algoritm de control al robotului mobil este conformitatea viteza optima pentru acest tronson de traseu.


Respectarea limitei de viteză nu este doar o cerință de siguranță în trafic, este, în primul rând, o cerință care permite minimizarea erorilor în funcționarea programului de control al robotului. Merită să ne amintim că viteza de mișcare a robotului afectează semnificativ calitatea recunoașterii nodurilor rutei și orientarea robotului însuși în raport cu linia de ghidare.

Scopul principal al dezvoltatorului de sisteme robotizate este de a asigura o funcționare de înaltă calitate și fără probleme în timpul funcționării. Pentru aceasta, puteți sacrifica foarte mult - productivitate, intensitatea resurselor etc., inclusiv viteza.

Concluzie

Acest munca de laborator cea mai importantă dintre lucrările discutate mai devreme. Acest lucru se datorează nu numai complexității materialului prezentat, ci și problemelor importante ridicate, precum asigurarea acurateței și calității funcționării sistemelor robotizate.


Scopul acestei lucrări este de a demonstra că nu numai factori externi afectează calitatea muncii unui anumit robot. Robotul însuși, funcționând pe baza unui program de control, poate avea un impact semnificativ asupra procesului de finalizare a unei sarcini date.

Programele discutate în ambele părți demonstrează clar influența vitezei de mișcare asupra calității unei traiectorii date. Pentru a consolida rezultatele lucrării, puteți studia mișcarea robotului pe traseul prezentat mai jos, combinând toate manevrele posibile discutate mai devreme.


Pe lângă complexitatea traseului și viteza de deplasare, calitatea suprafeței pe care se efectuează mișcarea are un impact semnificativ asupra funcționării robotului. Este foarte posibil ca linia de-a lungul căreia trebuie să se miște robotul să fie deteriorată sau chiar vopsită.

Proiectantul unui sistem robotizat trebuie să asigure tuturor opțiuni posibile aplicarea dvs soluție de proiectare. Cu cât sunt luați în considerare mai mulți factori de influență în faza de proiectare, cu atât robotul va funcționa mai precis și mai eficient.

15.01.2012, 18:51

Până acum, în articolele despre algoritmii folosiți la deplasarea de-a lungul unei linii, era luată în considerare o metodă atunci când senzorul de lumină părea să-și monitorizeze marginea din stânga sau din dreapta: de îndată ce robotul s-a mutat în partea albă a câmpului, controlerul a returnat robotul. până la graniță, senzorul a început să se miște mai adânc în linia neagră - regulatorul l-a îndreptat înapoi.
În ciuda faptului că imaginea de mai sus este afișată pentru un regulator cu releu, principiul general de mișcare a 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 crește complicând ușor algoritmul: într-un caz, s-a folosit frânarea „soft”, în altul, pe lângă viraj, mișcarea înainte. a fost introdus.
Pentru a permite robotului să avanseze în unele zone, a fost alocată o zonă îngustă în intervalul de valori produse de senzorul de lumină, care ar putea fi numit în mod convențional „senzorul se află la limita liniei”.
Această abordare are un ușor dezavantaj - dacă robotul „urmează” limita din stânga a liniei, atunci pe viraje la dreapta nu detectează imediat curbura traiectoriei și, ca urmare, petrece mai mult timp căutând linia și rotind. Mai mult, putem spune cu încredere că, cu cât virajul este mai brusc, cu atât această căutare are loc mai mult.
Următoarea figură arată că dacă senzorul nu ar fi fost pe partea stângă a graniței, ci în dreapta, atunci ar fi detectat deja curbura traiectoriei și ar fi început să facă manevre de întoarcere.

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 schimbările în direcția de mișcare.
Acum trebuie să determinăm modul în care această modificare de design va afecta programul. Pentru simplitate, ar trebui să începem din nou cu cel mai simplu controler cu relee și, prin urmare, în primul rând, ne interesează posibilele poziții ale senzorilor în raport cu linia:

De fapt, poate fi identificată încă o condiție acceptabilă - pe trasee complexe va fi intersecția unei intersecții sau un fel de îngroșare pe potecă.
Alte poziții ale senzorilor nu vor fi luate în considerare, deoarece fie sunt derivate ale celor prezentate mai sus, fie acestea sunt pozițiile robotului când acesta a părăsit linia și nu se va mai putea întoarce 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, ca și cel din dreapta, este deasupra unei suprafețe luminoase
  • senzorul din stânga peste o suprafață luminoasă, senzorul din dreapta peste una întunecată
  • Senzor stânga pe suprafață întunecată, senzorul din dreapta peste suprafață luminoasă
  • ambii senzori sunt amplasați deasupra unei suprafețe î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, iar senzorul din dreapta este deja deasupra întunecat, atunci robotul și-a îndreptat partea dreaptă pe linie, ceea ce înseamnă că trebuie să se întoarcă spre dreapta, astfel încât linia să fie din nou între senzori, dacă senzorul din stânga este deasupra unei suprafețe întunecate, iar cel din dreapta este nemișcat deasupra unuia ușor, atunci pentru a alinia robotul trebuie să se întoarcă la stânga Dacă ambii senzori sunt deasupra unei suprafețe întunecate, atunci caz general, 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 unui program nu ar trebui să fie dificilă. Nu are de mare importanță, așa că lăsați-o. Este necesar să se determine dacă se află deasupra unei suprafețe deschise sau întunecate:
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 grup are acum două stări, așa că trebuie să alegeț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ă”, partea de sus - „stânga pe lumină, dreapta pe întuneric”:
Ramura inferioară a stării principale este responsabilă pentru un alt grup de afecțiuni III și IV. Cele două stări diferă între ele și prin nivelul de lumină pe care îl detectează senzorul potrivit. Aceasta înseamnă că 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 că acest design determină doar modul de pornire a motoarelor în funcție de citirile senzorilor dintr-un anumit loc din câmp, în mod firesc, după un moment, programul trebuie să verifice dacă citirile s-au modificat pentru a regla; comportamentul motoarelor în consecință, iar după un moment din nou, din nou etc. .d. Prin urmare, ar trebui plasat într-o buclă care va oferi această verificare repetată:

Atât de frumos program simplu va oferi o viteză destul de mare de mișcare a robotului de-a lungul liniei fără a zbura dincolo de limitele acestuia, dacă este configurat corect viteza maxima când se deplasează în stările I și IV și, de asemenea, setate cel mai bun mod frânare în stările II și III - cu cât virajele pe autostradă sunt mai abrupte, cu atât frânarea ar trebui să fie mai „dure” - viteza ar trebui redusă mai rapid și invers - cu viraje linte este foarte posibil să se aplice frânarea prin oprirea alimentării sau chiar prin reducerea totală a vitezei.

Câteva cuvinte separate ar trebui spuse și cu privire la amplasarea senzorilor pe robot. Evident, se vor aplica aceleași recomandări pentru amplasarea acestor doi senzori față de roți ca și pentru un senzor, doar vârful triunghiului este luat ca mijloc al segmentului care conectează cei doi senzori. Distanța dintre senzori în sine ar trebui, de asemenea, selectată din caracteristicile pistei: cu cât senzorii sunt 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ă faceți mai multe viraje „grele” și să reduceți viteza pe porțiuni drepte.



În a doua lecție, ne vom familiariza mai mult cu mediul de programare și vom studia în detaliu comenzile care stabilesc mișcarea căruciorului nostru robot, asamblate în prima lecție. Deci, să lansăm mediul de programare Lego mindstorms EV3, să încărcăm proiectul lessons.ev3 creat mai devreme și să îl adăugăm la proiect program nou- lecția-2-1. Puteți adăuga un program în două moduri:

  • Selectați echipa „Fișier” - „Adăugați program” (Ctrl+N).
  • Clic "+" pe fila de programe.

Palete de programare și blocuri de programe

Să ne îndreptăm acum atenția către secțiunea inferioară a mediului de programare. Din materialul primei lecții știm deja că iată comenzile pentru programarea robotului. Dezvoltatorii au folosit o tehnică originală și, după ce au grupat blocurile de program, au atribuit fiecărui grup propria culoare, denumind paletele grupurilor.

Paleta verde se numește: "Acţiune":

Această paletă conține blocuri software pentru controlul motoarelor, un bloc de afișare și un bloc de control pentru indicatorul de stare a modulului. Acum vom începe să studiem aceste blocuri de program.

Paleta verde - blocuri de acțiune

Primul bloc de programe din paleta verde este conceput pentru a controla motorul mediu, al doilea bloc este pentru a controla motorul mare. Deoarece parametrii acestor blocuri sunt identici, să luăm în considerare setarea folosind exemplul unui bloc - un motor mare.

Pentru setări corecte unitate de control pentru un motor mare trebuie să:

  1. Selectați portul la care este conectat motorul (A, B, C sau D) (Fig. 3 elementul 1)
  2. Selectați modul de funcționare a motorului (Fig. 3 elementul 2)
  3. Configurați parametrii modului selectat (Fig. 3 elementul 3)

Cum diferă modurile? Mod: "Porniți" porneste motorul cu parametrul dat "Putere" iar după aceea controlul este transferat la următorul bloc de program al programului. Motorul va continua să se rotească până când este oprit de următorul bloc "Motor mare" cu regimul "Opriți" sau blocul următor "Motor mare" nu va conține alți parametri de execuție. Modul „Activați pentru un număr de secunde” include un motor mare cu capacitatea instalată pentru numărul specificat de secunde și numai după ce timpul a expirat motorul se va opri și controlul din program va trece la următorul bloc de program. Motorul se va comporta similar în moduri „Porniți după numărul de grade”Şi „Activare după numărul de rotații”: numai după ce rotația setată a motorului a fost finalizată, acesta se va opri și controlul din program va trece la următorul bloc.

Parametrul de putere (în Fig. 3 puterea este setată la 75) poate lua valori de la -100 la 100. Valorile pozitive ale puterii setează motorul să se rotească în sensul acelor de ceasornic, valorile negative setează motorul să se rotească în sens invers acelor de ceasornic. La o valoare a puterii de 0, motorul nu se va roti, cu cât valoarea puterii este „mai mare”, cu atât motorul se rotește mai repede.

Parametrul de putere este specificat numai în valori întregi parametrii: secunde, grade, rotații pot lua valori cu o fracție zecimală. Dar rețineți că pasul minim de rotație a motorului este de un grad.

Mențiune specială trebuie făcută despre parametru „Frână la capăt”. Acest parametru, dacă este setat la "Frână" determină încetinirea motorului după executarea comenzii și, dacă este setat la „Depășire”, atunci motorul se va roti prin inerție până când se oprește.

Următoarele două blocuri de program "Director"și implementați controlul unei perechi de motoare mari. În mod implicit, motorul mare din stânga este conectat la port "ÎN", iar cea dreaptă - spre port "CU". Dar puteți modifica porturile de conectare în setările unității în conformitate cu cerințele designului dvs. ( Orez. 4 poz. 1).

Parametru "Director" (Orez. 4 poz. 2) poate lua valori de la -100 la 100. Valorile negative ale parametrului determină robotul să vireze la stânga, o valoare de 0 face ca robotul să se miște drept, iar valorile pozitive determină robotul să vireze la dreapta. Săgeata de deasupra parametrului numeric își schimbă orientarea în funcție de valoare, indicând astfel direcția de mișcare a robotului ( Orez. 5).

Bloc de program „Control independent al motorului” arată ca un bloc software "Director". De asemenea, controlează două motoare mari, dar în loc de "Director" apare oportunitatea management independent puterea fiecărui motor. Cu valoare egală a parametrului "Putere" pentru motorul din stânga și din dreapta, robotul se va mișca în linie dreaptă. Dacă alimentați un motor valoare negativă putere (de exemplu -50), iar pe al doilea - o valoare pozitivă (de exemplu 50), apoi robotul se va întoarce pe loc ( Orez. 6).

Prin urmare, modurile de funcționare ale acestor unități sunt similare cu cele ale unei unități de control cu ​​un singur motor descriere suplimentară nu necesita...

Mișcare în linie dreaptă, întoarceri, întoarcere și oprire

Deci, acum putem scrie un program pentru ca robotul să se deplaseze pe orice rută.

Problema 1

Ecran, sunet, indicator de stare modul

Bloc de program "Ecran" vă permite să afișați text sau informatii grafice pe ecranul LCD al cărămizii EV3. Ce ar putea însemna asta? aplicare practică? În primul rând, în etapa de programare și depanare a programului, puteți afișa citirile curente ale senzorului în timp ce robotul funcționează. În al doilea rând, puteți afișa numele etapelor intermediare ale execuției programului. Ei bine, în al treilea rând, cu ajutorul imagini grafice puteți „anima” ecranul robotului, de exemplu, folosind animația.

Bloc de program "Ecran" are patru moduri de operare: mod "Text" vă permite să afișați șir de text la ecran, mod "Forme" vă permite să afișați unul din patru forme geometrice(linie, cerc, dreptunghi, punct), mod "Imagine" poate afișa o singură imagine pe ecran. Puteți alege o imagine dintr-o colecție bogată de imagini sau puteți să o desenați pe propria dvs. folosind un editor de imagini. Modul „Fereastra de resetare a setărilor” Resetează ecranul EV3 Brick la ecranul cu informații standard afișat în timp ce programul rulează.

Să ne uităm la parametrii blocului de program "Ecran"în mod "Text" (Fig. 9 elementul 1). Șirul care urmează să fie afișat pe ecran este introdus într-un câmp special (Fig. 9 elementul 2). Din păcate, câmpul de introducere a textului vă permite doar să introduceți litere alfabet latin, numere și semne de punctuație. Dacă modul „Șterge ecranul” setat la valoare "Adevărat", ecranul va fi șters înainte de afișarea informațiilor. Prin urmare, dacă trebuie să combinați ieșirea curentă cu informațiile aflate deja pe ecran, atunci setați acest mod la "Minciună". Moduri "X"Şi "Y" determinați punctul de pe ecran de la care începe producția de informații. Ecranul EV3 Brick are 178 pixeli (puncte) lățime și 128 pixeli înălțime. Modul "X" poate lua valori de la 0 la 177, mod "Y" poate lua valori de la 0 la 127. Punctul din stânga sus are coordonatele (0, 0), dreapta jos (177, 127)

În timp ce configurați un bloc de program "Ecran" puteți activa modul previzualizare (Fig. 9 elementul 3)și evaluați vizual rezultatul setărilor de ieșire a informațiilor.

În modul „Forme” (Fig. 11 elementul 1) setările blocului de program variază în funcție de tipul figurii. Deci, atunci când afișați un cerc, va trebui să specificați coordonatele "X"Şi "Y" centrul cercului, precum și valoarea "Rază". Parametru „Umplere” (Fig. 11 elementul 2) este responsabil pentru faptul că fie conturul figurii va fi afișat, fie zona internă a figurii va fi umplută cu culoarea specificată în parametru „Culoare” (Fig. 11 elementul 3).

Pentru a afișa o linie dreaptă, trebuie să specificați coordonatele celor două puncte extreme între care se află linia dreaptă.

Pentru a afișa un dreptunghi, trebuie să specificați coordonatele "X"Şi "Y" stânga colțul de sus dreptunghi, precum și a acestuia "Lăţime"Şi "Înălţime".

Afișarea unui punct este cea mai ușoară cale! Indicați doar coordonatele sale "X"Şi „Y”.

Modul "Imagine", probabil cel mai interesant și mai folosit mod. Vă permite să afișați imagini pe ecran. Mediul de programare conține o bibliotecă imensă de imagini, sortate pe categorii. Pe lângă imaginile existente, puteți oricând să vă creați propriul desen și, inserându-l în proiect, să îl afișați pe ecran. ("Meniul principal al mediului de programare" - "Instrumente" - "Editor de imagini"). Când vă creați imaginea, puteți afișa și caractere din alfabetul rus.

După cum puteți vedea, mediul de programare acordă o mare importanță afișării informațiilor pe ecranul EV3 Main Brick. Să ne uităm la următorul bloc de program important "Sunet". Folosind acest bloc, putem scoate fișiere de sunet, tonuri de durată și frecvență arbitrară către difuzorul încorporat al blocului EV3, precum și note muzicale. Să ne uităm la setările blocului de program în modul „Ton de redare” (Fig. 15). În acest mod trebuie să setați "Frecvenţă" tonuri (Fig. 15 elementul 1), "Durată" sunet în câteva secunde (Fig. 15 elementul 2), precum și volumul sunetului (Fig. 15 elementul 3).

În modul „Reda notă”în loc de frecvența tonului, trebuie să selectați o notă tastatură virtualăși setați, de asemenea, durata și volumul sunetului (Fig. 16).

În modul „Reda fișierul” puteți alege unul dintre fișierele de sunet din bibliotecă (Fig. 17 elementul 1), sau prin conectarea unui microfon la computer folosind Editorul de sunet ("Meniul principal al mediului de programare" - "Instrumente" - "Editor de sunet") inregistreaza-ti pe al tau fișier de sunetși includeți-l în proiect.

Să ne uităm la parametru separat „Tip de redare” (Fig. 17 articolul 2), comun tuturor modurilor din blocul de program "Sunet". Dacă acest parametru setat la valoare „Așteptați finalizarea”, apoi controlul va fi transferat la următorul bloc de program numai după redare completă fișier de sunet sau de sunet. Dacă setați una dintre următoarele două valori, sunetul va începe redarea și controlul din program va trece la următorul bloc de program, doar sunetul sau fișierul de sunet va fi redat o dată sau va fi repetat până când este oprit de un alt bloc de program "Sunet".

Trebuie doar să-l întâlnim pe ultimul bloc de program paleta verde - bloc „Indicator de stare modul”. Există un indicator de culoare montat în jurul butoanelor de control al modulului EV3, care poate străluci în una dintre cele trei culori: verde, portocale sau roşu. Modul corespunzător este responsabil pentru pornirea și oprirea indicației de culoare (Fig. 18 elementul 1). Parametru "Culoare" stabilește designul de culoare al indicației (Fig. 18 elementul 2). Parametru "Impuls" responsabil pentru pornirea/dezactivarea modului de pâlpâire a indicației de culoare (Fig. 18 elementul 3). Cum poți folosi indicația de culoare? De exemplu, este posibil în timpul moduri diferite Robotul lucrează folosind semnale de culoare diferite. Acest lucru ne va ajuta să înțelegem dacă programul este executat așa cum am planificat.


Să punem în practică aceste cunoștințe și să ne colorăm puțin programul din Sarcina 1.

Problema 2

Încercați să rezolvați singur problema fără să vă uitați la soluție!

Cele mai bune articole pe această temă