Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2

Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2

Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2

Prin urmare, este bine să echipați imediat robotul cu doi senzori, care sunt situați pe părțile opuse ale liniei și, în consecință, să ajute robotul să reacționeze mai rapid la schimbarea direcției de mișcare.






Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Acum trebuie să stabiliți modul în care o astfel de schimbare de design va afecta programul. Pentru simplitate, este din nou necesar să începeți cu cel mai simplu controler de relee și, prin urmare, în primul rând, posibilele poziții ale senzorilor față de linie sunt de interes:
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
De fapt, putem distinge o stare mai acceptabilă - pe rute complexe aceasta va fi intersecția intersecției sau o îngroșare pe cale.
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Alte poziții ale senzorilor nu vor fi luate în considerare, deoarece fie ele sunt derivate din cele prezentate mai sus, fie acestea sunt pozițiile robotului când acesta se află în afara liniei și nu mai poate reveni la acesta utilizând informațiile senzorului. În consecință, toate dispozițiile enumerate pot fi reduse la următoarea clasificare:
  • senzorul stâng, precum și cel drept - deasupra suprafeței luminoase
  • senzor stâng deasupra suprafeței luminoase, senzor drept deasupra întunericului
  • senzorul stâng deasupra suprafeței întunecate, senzorul drept de deasupra luminii
  • Ambii senzori sunt situați deasupra unei suprafețe întunecate
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Dacă, la un moment dat, programul pe robot detectează una dintre aceste poziții, trebuie să răspundă în mod corespunzător:
  • Dacă ambii senzori sunt deasupra suprafeței albe, atunci aceasta este situația normală în care linia este localizată între senzori, astfel încât robotul trebuie să meargă drept.
  • În cazul în care senzorul este lăsat în continuare pe o suprafață de lumină și senzor chiar deasupra deja întuneric, înseamnă că robotul a condus partea sa dreaptă pe linie, ceea ce înseamnă că el trebuie să se îndrepte spre dreapta, linia a fost între senzorii din nou.
  • Dacă senzorul din stânga este deasupra suprafeței întunecate, iar cel din dreapta este deasupra celei ușoare, atunci pentru aliniere, robotul trebuie să fie rotit spre stânga.
  • Dacă ambii senzori sunt deasupra unei suprafețe întunecate, atunci, în general, robotul continuă să se miște drept.






Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Diagrama de mai sus arată imediat modul în care programul trebuie să schimbe comportamentul motoarelor.Acum, scrierea unui program nu ar trebui să fie o problemă mare.Aceasta începe cu selectarea senzorului care va fi interogat mai întâi. Nu contează cu adevărat, așa că lăsați-l să rămână. Este necesar să se determine dacă este deasupra sau deasupra suprafeței întunecate:
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Această acțiune nu ne permite încă să spunem în ce mod trebuie să meargă robotul. Dar va împărți statele menționate mai sus în două grupe: (I, II) pentru ramura superioară și (III, IV) pentru cel inferior. În fiecare dintre grupuri există două state, deci trebuie să alegeți una dintre ele. Dacă vă uitați atent la primele două stări I și II, ele diferă în poziția senzorului drept - într-un caz este deasupra suprafeței luminoase, în cealaltă - deasupra celei întunecate. Aceasta determină alegerea, ce acțiune trebuie luată:
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Acum este posibil să se insera blocuri care definește comportamentul motoarelor în conformitate cu tabelele de mai sus: starea imbricate ramura superioară determinarea secvenței „sunt ambele pe un senzor de lumină,“ de sus - „stânga pe lumina, pe intuneric dreapta“:
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Ramura inferioară a stării de bază este responsabilă pentru un alt grup de state III și IV. Aceste două stări diferă, de asemenea, unul de celălalt în nivelul de iluminare pe care detectorul drept detectează. Deci, el va determina alegerea fiecăruia dintre ele:
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Cele două ramuri rezultate sunt umplute cu blocuri de mișcare. Ramura superioară este responsabilă pentru starea "stânga pe întuneric, la dreapta" și cea inferioară pentru "ambii senzori pe întuneric".
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Trebuie remarcat faptul că acest design specifică doar modul de a încorpora motoare, în funcție de citirile senzorilor într-o locație specifică a câmpului, desigur, într-un moment programul trebuie să verifice dacă elementele de probă pentru a corecta în mod corespunzător comportamentul motoarelor, și o clipă mai târziu, din nou, de asemenea, și așa nu au schimbat .D. Prin urmare, trebuie să fie plasat în buclă, care va oferi o verificare repetitive:
Algoritm de avansare avansat pentru robotul de linie »de la lego nxt 2
Acest lucru este destul de un program simplu va oferi destul de mare viteza de miscare robotizate de-a lungul liniei, fără de plecare dincolo, dacă reglați corect viteza maximă atunci când conduceți în stările I și IV, precum și pentru a specifica cel mai bun mod de a frâna în statele II și III - mai abruptă se transformă pe pista , de „mai greu“ ar trebui să fie de frânare - viteza ar trebui să fie evacuate mai rapid, și vice-versa - cu un viraj buna este posibil să se aplice energia de frânare prin oprirea sau chiar printr-o resetare de viteză mică.





Articole similare

Trimiteți-le prietenilor: