Mișcare de-a lungul unei linii cu doi senzori de lumină. Știința Lego ev3 începe să urmeze linia neagră

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

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, asamblam modelul de bază al robotului educațional Robot Educator pentru aceasta puteți folosi instrucțiunile din software-ul MINDSTORMS EV3.

De asemenea, de exemplu, vom avea nevoie de senzori de culoare EV3. Acești senzori de lumină sunt ca nimeni alții în cel mai bun mod posibil potrivite 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, vom analiza 3 exemple de programe pentru deplasarea pe o traiectorie neagră, reprezentată pe un fundal plat și deschis:

· Un senzor, cu regulator P.

· Un senzor, cu 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.

Ca rezultat, î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.

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 programului

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 schimbat personal şi sfera afacerilor viata noastra. 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 de microprocesor EV3 este creierul constructorului LEGO Mindstorms.

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 forța robotul să efectueze o acțiune folosind program 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 - roșu și 2 m 17 cm - linie neagră.

    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 diametrul 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ă propriile 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/

Algoritmi pentru controlul unui robot LEGO mobil. Mișcarea liniei cu doi senzori de lumină

Profesor de educație suplimentară

Kazakov Lyubov Alexandrovna


Mișcarea de-a lungul liniei

  • Doi senzori de lumină
  • Controler proporțional (controler P)

Algoritm pentru deplasarea de-a lungul liniei negre fără un controler proporțional

  • Ambele motoare se rotesc cu aceeași putere
  • Dacă senzorul de lumină din dreapta lovește linia neagră, atunci puterea motorului din stânga (de exemplu B) scade sau se oprește
  • Dacă senzorul de lumină din stânga lovește linia neagră, atunci puterea altuia dintre motoare (de exemplu C) scade (revine la linie), scade sau se oprește
  • Dacă ambii senzori sunt pe alb sau negru, atunci mișcare rectilinie

Mișcarea este organizată prin modificarea puterii unuia dintre motoare


Exemplu de program pentru conducerea pe o linie neagră fără un controler P

Mișcarea este organizată prin modificarea unghiului de rotație


  • Un controler proporțional (P-controller) vă permite să reglați comportamentul robotului în funcție de cât de mult diferă comportamentul acestuia față de cel dorit.
  • Cu cât robotul se abate de la obiectiv, cu atât trebuie să depună mai mult efort pentru a reveni la el.

  • Controlerul P este folosit pentru a menține robotul într-o anumită stare:
  • Menținerea poziției manipulatorului Deplasarea de-a lungul unei linii (senzor de lumină) Deplasarea de-a lungul unui perete (senzor de distanță)
  • Ținând poziția manipulatorului
  • Mișcarea liniei (senzor de lumină)
  • Mișcarea de-a lungul peretelui (senzor de distanță)

Mișcarea liniei cu un singur senzor

  • Scopul este să se deplaseze de-a lungul graniței „alb-negru”.
  • O persoană poate distinge granița dintre alb și negru. Un robot nu poate.
  • Scopul robotului este în gri

Conducerea prin intersecții

Atunci când utilizați doi senzori de lumină, este posibil să organizați mișcarea pe trasee mai complexe



Algoritm de conducere de-a lungul unei autostrăzi cu intersecții

  • Ambii senzori sunt pe alb - robotul conduce drept (ambele motoare se rotesc cu aceeași putere)
  • Dacă senzorul de lumină din dreapta lovește linia neagră și cel din stânga lovește linia albă, atunci are loc o viraj la dreapta
  • Dacă senzorul de lumină din stânga lovește linia neagră și cel din dreapta lovește linia albă, atunci se întoarce la stânga
  • Dacă ambii senzori sunt negri, atunci apare o mișcare liniară. Puteți număra intersecțiile sau puteți efectua orice acțiune


Principiul de funcționare al regulatorului P

Poziția senzorului

O=O1-O2


Algoritm pentru deplasarea de-a lungul liniei negre cu un controler proporțional

HC = K*(C-T)

  • Ts - valori țintă (luați citiri de la senzorul de lumină pe alb și negru, calculați media)
  • T - valoarea curentă - obținută de la senzor
  • K - coeficient de sensibilitate. Cu cât mai mult, cu atât sensibilitatea este mai mare


În această lecție vom continua să explorăm utilizarea senzorului de culoare. Materialul prezentat mai jos este foarte important pentru continuarea studiului cursului de robotică. După ce vom învăța cum să folosim toți senzorii constructorului Lego mindstorms EV3, atunci când rezolvăm multe probleme practice, ne vom baza pe cunoștințele acumulate în această lecție.

6.1. Senzor de culoare - modul „Luminozitatea luminii reflectate”.

Deci, începem să studiem următorul mod de funcționare al senzorului de culoare, care se numește „Strălucirea luminii reflectate”. În acest mod, senzorul de culoare direcționează un flux de lumină roșie către un obiect sau o suprafață din apropiere și măsoară cantitatea de lumină reflectată. Obiectele mai întunecate vor absorbi fluxul de lumină, astfel încât senzorul va afișa o valoare mai mică în comparație cu suprafețele mai ușoare. Intervalul de valori al senzorului este măsurat de la 0 (foarte întunecat) să 100 (foarte luminos). Acest mod de funcționare al senzorului de culoare este utilizat în multe sarcini de robotică, de exemplu, pentru a organiza mișcarea unui robot de-a lungul unui traseu dat de-a lungul unei linii negre aplicate pe un strat alb. Când utilizați acest mod, se recomandă poziționarea senzorului astfel încât distanța de la acesta până la suprafața studiată să fie aproximativă 1 cm (Fig. 1).

Orez. 1

Să trecem la exerciții practice: senzorul de culoare este deja instalat pe robotul nostru și este direcționat în jos către suprafața stratului de acoperire de-a lungul căruia robotul nostru se va deplasa. Distanța dintre senzor și podea este cea recomandată. Senzorul de culoare este deja conectat la port "2" modul EV3. Să încărcăm mediul de programare, să conectăm robotul la mediu și, pentru a face măsurători, să folosim câmpul cu dungi colorate pe care l-am realizat pentru a finaliza sarcinile din Secțiunea 5.4 a Lecției nr. 5. Să instalăm robotul astfel încât senzorul de culoare să fie situat deasupra suprafeței albe. „Pagina de hardware” comută mediul de programare în modul „Vizualizare porturi” (Fig. 2 elementul 1). În acest mod putem observa toate conexiunile pe care le-am făcut. Pe Orez. 2 este afișată conexiunea la porturi "B"Şi "C" două motoare mari și spre port "2" - senzor de culoare.

Orez. 2

Pentru a selecta o opțiune pentru afișarea citirilor senzorului, faceți clic pe imaginea senzorului și selectați modul dorit (Fig. 3)

Orez. 3

Pe Orez. 2 poz. 2 vedem că valoarea citirii senzorului de culoare deasupra suprafeței albe este 84 . În cazul dvs., puteți obține o valoare diferită, deoarece depinde de materialul suprafeței și de iluminarea din interiorul camerei: o parte din iluminare, reflectată de suprafață, lovește senzorul și îi afectează citirile. După ce a instalat robotul astfel încât senzorul de culoare să fie situat deasupra dungii negre, înregistrăm citirile acestuia (Fig. 4). Încercați să măsurați singur valorile luminii reflectate deasupra benzilor de culoare rămase. Ce valori ai primit? Scrieți răspunsul dvs. în comentariile la această lecție.

Orez. 4

Să rezolvăm acum problemele practice.

Sarcina #11: Este necesar să scrieți un program pentru mișcarea unui robot care se oprește când ajunge la linia neagră.

Soluţie:

Experimentul ne-a arătat că la trecerea liniei negre, valoarea senzorului de culoare în modul „Strălucirea luminii reflectate” egală 6 . Deci, să performam Problemele nr. 11 robotul nostru trebuie să se miște în linie dreaptă până când valoarea dorită a senzorului de culoare devine mai mică 7 . Să folosim un bloc de program deja familiar nouă "Așteptarea" Paleta portocalie. Să selectăm modul de funcționare al blocului software cerut de condițiile problemei „În așteptare” (Fig. 5).

Orez. 5

De asemenea, este necesar să configurați parametrii blocului de program "Așteptarea". Parametru „Tip de comparație” (Fig. 6 elementul 1) poate lua următoarele valori: „egal”=0, „Nu este egal”=1, "Mai mult"=2, „Mai mare sau egal cu”=3, "Mai puțin"=4, „Mai mic sau egal cu”=5. În cazul nostru, să stabilim „Tipul de comparație”în sens "Mai puțin". Parametru „Valoare prag” set egal 7 (Fig.6 elementul 2).

Orez. 6

De îndată ce valoarea senzorului de culoare este setată la mai puțin 7 , ceea ce se va întâmpla este când senzorul de culoare este situat deasupra liniei negre, va trebui să oprim motoarele, oprind robotul. Problema rezolvata (Fig. 7).

Orez. 7

Pentru a continua lecțiile, va trebui să facem un câmp nou, care este un cerc negru cu un diametru de aproximativ 1 metru, aplicat pe un câmp alb. Grosimea liniei cercului este de 2 - 2,5 cm Pentru baza câmpului, puteți lua o foaie de hârtie de dimensiunea A0 (841x1189 mm), lipiți împreună două coli de hârtie de dimensiunea A1 (594x841 mm). În acest câmp, marcați o linie de cerc și pictați-o cu cerneală neagră. De asemenea, puteți descărca un aspect de câmp realizat în format Adobe Illustrator și apoi îl puteți comanda imprimat pe material banner la o tipografie. Dimensiunea aspectului este de 1250x1250 mm. (Puteți vizualiza aspectul descărcat mai jos, deschizându-l în Adobe Acrobat Reader)

Acest domeniu ne va fi util pentru rezolvarea mai multor probleme clasice la cursul de robotică.

Sarcina #12: este necesar să scrieți un program pentru un robot care se mișcă în interiorul unui cerc marginit cu un cerc negru conform următoarei reguli:

  • robotul se deplasează înainte în linie dreaptă;
  • la atingerea liniei negre, robotul se oprește;
  • robotul face înapoi cu două rotații ale motoarelor;
  • robotul se întoarce cu 90 de grade spre dreapta;
  • mișcarea robotului se repetă.

Cunoștințele acumulate în lecțiile anterioare vă vor ajuta să creați singur un program, Problemă decisivă №12.

Soluție la problema nr. 12

  1. Începeți mișcarea directă înainte (Fig. 8 elementul 1);
  2. Așteptați ca senzorul de culoare să treacă de linia neagră (Fig. 8 elementul 2);
  3. Deplasați-vă înapoi cu 2 ture (Fig. 8 elementul 3);
  4. Virați la dreapta 90 de grade (Fig. 8 elementul 4); valoarea unghiului de rotație este calculată pentru un robot asamblat conform instrucțiunilor small-robot-45544 (Fig. 8 elementul 5);
  5. Repetați comenzile 1 - 4 într-o buclă nesfârșită (Fig. 8 elementul 6).

Orez. 8

Pentru a opera senzorul de culoare în modul „Strălucirea luminii reflectate” Vom reveni de multe ori când vom lua în considerare algoritmi de deplasare de-a lungul liniei negre. Deocamdată, să ne uităm la al treilea mod de funcționare al senzorului de culoare.

6.2. Senzor de culoare - modul „Luminozitatea luminii ambientale”.

Modul de funcționare al senzorului de culoare „Luminozitatea luminii exterioare” foarte asemănător cu modul „Strălucirea luminii reflectate”, doar in acest caz senzorul nu emite lumina, ci masoara iluminarea cu lumina naturala mediu. Vizual, acest mod de funcționare al senzorului poate fi determinat de un LED albastru slab strălucitor. Citirile senzorului variază de la 0 (fără lumină) până când 100 (cea mai strălucitoare lumină). La rezolvarea problemelor practice care necesită măsurarea iluminării exterioare, se recomandă poziționarea senzorului astfel încât senzorul să rămână cât mai deschis și să nu fie blocat de alte părți și structuri.

Să atașăm senzorul de culoare la robotul nostru în același mod în care am atașat senzorul tactil în lecția #4 (Fig. 9). Conectați senzorul de culoare cu un cablu la port "2" modul EV3. Să trecem la rezolvarea problemelor practice.

Orez. 9

Sarcina #13: trebuie să scriem un program care să modifice viteza robotului nostru în funcție de intensitatea luminii exterioare.

Pentru a rezolva această problemă, trebuie să știm cum să obținem valoarea curentă a senzorului. Și paleta galbenă de blocuri de program, care este numită "Senzori".

6.3. Paleta galbenă - „Senzori”

Paleta galbenă a mediului de programare Lego mindstorms EV3 conține blocuri software care vă permit să obțineți citiri curente ale senzorului pentru procesarea ulterioară în program. Spre deosebire de, de exemplu, un bloc de program "Așteptarea"În paleta Portocaliu, blocurile de program din paleta Galben transferă imediat controlul către următoarele blocuri de program.

Numărul de blocuri de programe ale paletei Galben diferă în versiunea acasă și în versiunea educațională a mediului de programare. Versiunea de acasă a mediului de programare nu are blocuri software pentru senzori care nu sunt incluși în versiunea de acasă a designerului. Dar, dacă este necesar, le puteți conecta singur.

Versiunea educațională a mediului de programare conține blocuri de programare pentru toți senzorii care pot fi utilizați cu constructorul Lego mindstorms EV3.

Să revenim la soluție Problemele nr. 13și să vedem cum putem primi și procesa citirile senzorilor de culoare. După cum știm deja: intervalul de valori ale senzorului de culoare în mod „Luminozitatea luminii exterioare” se află în raza de 0 la 100 . Parametrul care reglează puterea motorului are același domeniu. Să încercăm să folosim citirea senzorului de culoare pentru a regla puterea motoarelor din blocul software "Director".

Soluţie:


Orez. 10

Să încărcăm programul rezultat în robot și să-l rulăm pentru execuție. Robotul a condus încet? Să aprindem lanterna LED și să încercăm să o aducem la senzorul de culoare la distanțe diferite. Ce se întâmplă cu robotul? Să acoperim senzorul de culoare cu palma - ce s-a întâmplat în acest caz? Scrieți răspunsurile la aceste întrebări în comentariile la lecție.

Provocare - Bonus

Încărcați-l în robot și executați sarcina prezentată în figura de mai jos. Repetați experimentele cu o lanternă LED. Împărtășește-ți impresiile în comentariile la lecție.

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 uneia ușoare, atunci pentru a alinia robotul trebuie să se întoarcă la stânga Dacă ambii senzori sunt deasupra unei suprafețe întunecate, atunci, în general, robotul continuă să se miște drept.

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 faptul 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 schimbat pentru a regla comportamentul motoarelor în consecință; și după o clipă din nou, din nou etc. 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 atunci când conduceț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 autostradă sunt mai abrupte, cu atât frânarea ar trebui să fie „mai grea” - viteza ar trebui redusă mai rapid și invers - cu viraje lin este foarte posibil să se aplice frânarea prin oprirea energiei sau chiar printr-o uşoară reducere 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.