Ndjekja e linjës me dy sensorë drite. Konkursi ndërkombëtar i robotëve - Rregullat - Shembuj robotësh - Lego EV3 Robot Trajectory Lego ev3 Line Movement

Kështu e sheh një person rreshtin:

Kështu e sheh roboti:


Ne do ta përdorim këtë veçori gjatë projektimit dhe programimit të një roboti për kategorinë e konkurrencës "Trajektoria".

Ka shumë mënyra për të mësuar një robot të shohë një vijë dhe të lëvizë përgjatë saj. Ka programe komplekse dhe shumë të thjeshta.

Dua të flas për një mënyrë programimi që do ta zotërojnë edhe fëmijët e klasës 2-3. Në këtë moshë, është shumë më e lehtë për ta të montojnë struktura sipas udhëzimeve dhe programimi i një roboti është një detyrë e vështirë për ta. Por kjo metodë do t'i lejojë fëmijës të programojë robotin në çdo rrugë të pistës në 15-30 minuta (duke marrë parasysh verifikimin me faza dhe rregullimin e disa veçorive të trajektores).

Kjo metodë u testua në garat komunale dhe rajonale në robotikë në rajonin e Surgut dhe Khanty-Mansi Autonome Okrug-Yugra dhe solli shkollën tonë vendet e para. Aty u binda se kjo temë është shumë e rëndësishme për shumë ekipe.

Epo, le të fillojmë.

Kur përgatiteni për këtë lloj konkursi, programimi është vetëm një pjesë e zgjidhjes së problemit. Ju duhet të filloni duke projektuar një robot për një pistë specifike. Në artikullin tjetër, unë do t'ju tregoj se si ta bëni atë. Epo, meqenëse lëvizja përgjatë linjës është shumë e zakonshme, do të filloj me programimin.

Konsideroni versionin e robotit me dy sensorë drite, pasi është më i kuptueshëm për nxënësit e shkollave fillore.

Sensorët e dritës janë të lidhur me portat 2 dhe 3. Motorët në portet B dhe C.
Sensorët vendosen në skajet e vijës (provoni të eksperimentoni me vendosjen e sensorëve në distanca të ndryshme nga njëri-tjetri dhe në lartësi të ndryshme).
Një pikë e rëndësishme. Për funksionimin më të mirë të një qarku të tillë, është e dëshirueshme të zgjidhni një palë sensorë sipas parametrave. Përndryshe, do të jetë e nevojshme të futet një bllok për korrigjimin e vlerave të sensorëve.
Instalimi i sensorëve në shasi sipas skemës klasike (trekëndëshi), afërsisht si në figurë.

Programi do të përbëhet nga një numër i vogël blloqesh:


1. Dy blloqe sensori drite;
2. Katër blloqe “Matematika”;
3. Dy blloqe motorësh.

Roboti kontrollohet nga dy motorë. Fuqia e secilës është 100 njësi. Për skemën tonë, do të marrim vlerën mesatare të fuqisë së motorit të barabartë me 50. Kjo do të thotë, shpejtësia mesatare kur lëviz në një vijë të drejtë do të jetë e barabartë me 50 njësi. Kur devijoni nga lëvizja drejtvizore, fuqia e motorëve do të rritet ose ulet proporcionalisht, në varësi të këndit të devijimit.

Tani le të kuptojmë se si t'i lidhim të gjitha blloqet, të konfigurojmë programin dhe çfarë do të ndodhë në të.
Le të ekspozojmë dy sensorë drite dhe t'u caktojmë portën 2 dhe 3.
Marrim një bllok matematike dhe zgjedhim "Zbritja".
Le të lidhim sensorët e dritës nga daljet "Intensiteti" me gomat në bllokun e matematikës me hyrjet "A" dhe "B".
Nëse sensorët e robotëve janë instaluar në mënyrë simetrike nga qendra e linjës së pista, atëherë vlerat e të dy sensorëve do të jenë të barabarta. Pas zbritjes, marrim vlerën - 0.
Blloku tjetër i matematikës do të përdoret si koeficient dhe duhet të vendosni "Shumëzoni" në të.
Për të llogaritur koeficientin, duhet të matni nivelin e "të bardhës" dhe "të zezës" duke përdorur njësinë NXT.
Supozoni: e bardhë -70, e zezë -50.
Më pas, ne llogarisim: 70-50=20 (ndryshimi midis të bardhës dhe të zezës), 50/20=2,5 (vlerën mesatare të fuqisë kur lëvizim në vijë të drejtë në blloqet e matematikës në 50. Kjo vlerë plus fuqia e shtuar kur rregulloni lëvizjen duhet të jetë e barabartë me njëqind)
Provoni të vendosni vlerën në 2.5 në hyrjen "A" dhe më pas zgjidhni atë më saktë.
Lidhni daljen "Rezultat" të bllokut të mëparshëm matematikor "Zbritja" me hyrjen "B" të bllokut matematikor "Shumëzimi".
Më pas vjen një palë - një bllok matematike (Shtesë) dhe motori B.
Konfigurimi i bllokut të matematikës:
Hyrja "A" është vendosur në 50 (gjysma e fuqisë së motorit).
Dalja e bllokut "Rezultat" lidhet me një autobus me hyrjen "Fuqia" të motorit B.
Pas avullit është blloku i matematikës (Zbritja) dhe motori C.
Konfigurimi i bllokut të matematikës:
Hyrja "A" është vendosur në 50.
Hyrja "B" lidhet me autobus me daljen "Rezultati" i bllokut matematikor "Shumëzimi".
Dalja e bllokut "Rezultat" lidhet me një autobus me hyrjen "Fuqia" të motorit C.

Si rezultat i të gjitha këtyre veprimeve, ju do të merrni programin e mëposhtëm:

Meqenëse e gjithë kjo do të funksionojë në një cikël, ne shtojmë "Cikli", zgjedhim dhe i transferojmë të gjitha në "Cikli".

Tani le të përpiqemi të kuptojmë se si do të funksionojë programi dhe si ta konfigurojmë atë.


Ndërsa roboti është duke lëvizur në vijë të drejtë, vlerat e sensorëve janë të njëjta, që do të thotë se dalja e bllokut "Zbris" do të ketë vlerën 0. Dalja e bllokut "Shumëzimi" jep gjithashtu vlerën. 0. Kjo vlerë furnizohet paralelisht me çiftin e kontrollit të motorit. Meqenëse vlera 50 është vendosur në këto blloqe, shtimi ose zbritja e 0 nuk ndikon në fuqinë e motorëve. Të dy motorët funksionojnë me të njëjtën fuqi prej 50 dhe roboti rrotullohet në një vijë të drejtë.

Supozoni se pista bën një kthesë ose roboti devijon nga një vijë e drejtë. Çfarë do të ndodhë?

Figura tregon se ndriçimi i sensorit të lidhur me portën 2 (në tekstin e mëtejmë si sensorë 2 dhe 3) rritet, pasi lëviz në një fushë të bardhë dhe ndriçimi i sensorit 3 zvogëlohet. Supozoni se vlerat e këtyre sensorëve bëhen: sensor 2 - 55 njësi dhe sensor 3 - 45 njësi.
Blloku "Zbritje" do të përcaktojë ndryshimin midis vlerave të dy sensorëve (10) dhe do ta ushqejë atë në bllokun e korrigjimit (shumëzimi me një faktor (10 * 2.5 = 25)) dhe më pas në blloqet e kontrollit
motorët.
Në bllokun matematikor (Shtesë) të kontrollit të motorit B në vlerën mesatare të shpejtësisë 50
25 do të shtohet dhe një vlerë fuqie prej 75 do të aplikohet në motorin B.
Në bllokun matematikor (Zbritja) e motorit kontrollues C, 25 do të zbritet nga vlera mesatare e shpejtësisë prej 50 dhe një vlerë fuqie prej 25 do të zbatohet për motorin C.
Kështu, devijimi nga një vijë e drejtë do të korrigjohet.

Nëse pista kthehet fort anash dhe sensori 2 është në të bardhë dhe sensori 3 është i zi. Vlerat e ndriçimit të këtyre sensorëve bëhen: sensor 2 - 70 njësi dhe sensor 3 - 50 njësi.
Blloku "Zbritja" do të përcaktojë ndryshimin midis vlerave të dy sensorëve (20) dhe do ta ushqejë atë në bllokun e korrigjimit (20 * 2.5 = 50) dhe më pas në blloqet e kontrollit të motorit.
Tani në bllokun e matematikës (Shtesë) kontrolluese të motorit B, vlera e fuqisë 50 +50 =100 do të zbatohet për motorin B.
Në bllokun matematikor (Zbritja) e kontrollit të motorit C, një vlerë fuqie prej 50 - 50 = 0 do të aplikohet për motorin C.
Dhe roboti do të bëjë një kthesë të mprehtë.

Në fushat e bardha dhe të zeza, roboti duhet të lëvizë në një vijë të drejtë. Nëse kjo nuk ndodh, përpiquni të përputhni sensorët me të njëjtat vlera.

Tani le të krijojmë një bllok të ri dhe ta përdorim atë për të lëvizur robotin përgjatë çdo piste.
Zgjidhni ciklin, pastaj në menunë "Redakto", zgjidhni komandën "Krijo bllokun tim".

Në kutinë e dialogut "Block Builder", jepni një emër bllokut tonë, për shembull, "Shko", zgjidhni një ikonë për bllokun dhe klikoni "DONE".

Tani kemi një bllok që mund të përdoret në rastet kur duhet të lëvizim përgjatë vijës.

Në këtë mësim, ne do të vazhdojmë të eksplorojmë përdorimin e sensorit të ngjyrave. Materiali i paraqitur më poshtë është shumë i rëndësishëm për studimin e mëtejshëm të kursit të robotikës. Pasi të mësojmë se si t'i përdorim të gjithë sensorët Lego mindstorms EV3 në zgjidhjen e shumë problemeve praktike, ne do të ndërtojmë njohuritë e marra në këtë mësim.

6.1. Sensori i ngjyrave - Modaliteti i intensitetit të dritës së reflektuar

Pra, ne po fillojmë të studiojmë mënyrën tjetër të funksionimit të sensorit të ngjyrave, i cili quhet "Shkëlqimi i dritës së reflektuar". Në këtë modalitet, sensori i ngjyrave drejton një rreze drite të kuqe në një objekt ose sipërfaqe afër dhe mat sasinë e dritës së reflektuar. Objektet më të errëta do të thithin dritën, kështu që sensori do të lexojë një vlerë më të ulët se sipërfaqet më të lehta. Gama e vlerës së sensorit matet nga 0 (shumë e errët) për të 100 (shumë e ndritshme). Kjo mënyrë e funksionimit të sensorit të ngjyrave përdoret në shumë detyra në robotikë, për shembull, për të organizuar lëvizjen e robotit përgjatë një rruge të caktuar përgjatë një linje të zezë të vizatuar në një shtresë të bardhë. Kur përdorni këtë mënyrë, rekomandohet vendosja e sensorit në atë mënyrë që distanca prej tij në sipërfaqen në studim të jetë afërsisht 1 cm (Fig. 1).

Oriz. një

Le të kalojmë te ushtrimet praktike: sensori i ngjyrave është instaluar tashmë në robotin tonë dhe është drejtuar poshtë në sipërfaqen e veshjes mbi të cilën do të lëvizë roboti ynë. Distanca midis sensorit dhe dyshemesë është siç rekomandohet. Sensori i ngjyrave është i lidhur tashmë me portën "2" Tulla EV3. Le të ngarkojmë mjedisin e programimit, të lidhim robotin me mjedisin dhe të përdorim fushën e shiritit të ngjyrave që kemi bërë për të përfunduar detyrat në seksionin 5.4 të mësimit #5 për të marrë matje. Instaloni robotin në mënyrë që sensori i ngjyrave të vendoset mbi sipërfaqen e bardhë. "Faqja e harduerit" mjediset e programimit kalojnë në modalitet "Shiko portat" (Fig. 2 pos. 1). Në këtë mënyrë, ne mund të vëzhgojmë të gjitha lidhjet që kemi bërë. Në Oriz. 2 shfaqen portet e lidhura "B" dhe "C" dy motorë të mëdhenj, dhe në port "2" - sensor ngjyrash.

Oriz. 2

Për të zgjedhur opsionin për shfaqjen e leximeve të sensorit, klikoni në imazhin e sensorit dhe zgjidhni modalitetin e dëshiruar (Fig. 3)

Oriz. 3

Oriz. 2 pos. 2 ne mund të shohim se vlera e sensorit të ngjyrave që lexon mbi sipërfaqen e bardhë është 84 . Në rastin tuaj, mund të merrni një vlerë të ndryshme, sepse varet nga materiali i sipërfaqes dhe ndriçimi brenda dhomës: një pjesë e dritës, e reflektuar nga sipërfaqja, godet sensorin dhe ndikon në leximet e tij. Pasi e kemi instaluar robotin në atë mënyrë që sensori i ngjyrave të jetë i vendosur sipër shiritit të zi, ne rregullojmë leximet e tij (Fig. 4). Mundohuni të matni vetë vlerat e dritës së reflektuar mbi brezat e mbetur të ngjyrave. Çfarë vlerash keni marrë? Shkruani përgjigjen tuaj në komentet e këtij mësimi.

Oriz. 4

Le të zgjidhim tani problemet praktike.

Detyra numër 11:është e nevojshme të shkruhet një program për lëvizjen e robotit, i cili ndalon kur ai arrin vijën e zezë.

Zgjidhja:

Eksperimenti na tregoi se kur kaloni vijën e zezë, vlera e sensorit të ngjyrave në modalitet "Shkëlqimi i dritës së reflektuar" barazohet 6 . Pra, për të përmbushur Detyrat #11 roboti ynë duhet të lëvizë në një vijë të drejtë derisa vlera e dëshiruar e sensorit të ngjyrave të bëhet më e vogël 7 . Le të përdorim bllokun e programit tashmë të njohur për ne "Pritja" Paleta portokalli. Le të zgjedhim mënyrën e funksionimit të bllokut të programit që kërkohet nga gjendja e problemit "Pritje" (Fig. 5).

Oriz. 5

Ju gjithashtu duhet të konfiguroni parametrat e bllokut të programit "Pritja". Parametri "Lloji i krahasimit" (Fig. 6 pos. 1) mund të marrë vlerat e mëposhtme: "E barabartë"=0, "Jo i barabartë"=1, "Më shumë"=2, "Më shumë ose të barabartë"=3, "Më pak"=4, "Më pak ose e barabartë"=5. Në rastin tonë, ne vendosëm "Lloji i krahasimit" në kuptim "Më pak". Parametri "Pragu" vendosur të barabartë me 7 (Fig.6 pos. 2).

Oriz. 6

Sapo vlera e sensorit të ngjyrave të vendoset në më pak se 7 , çfarë ndodh kur sensori i ngjyrave është mbi vijën e zezë, do të na duhet të fikim motorët, duke ndaluar robotin. Problemi u zgjidh (Fig. 7).

Oriz. 7

Për të vazhduar studimet, do të na duhet të bëjmë një fushë të re, e cila është një rreth i zi me diametër rreth 1 metër, i aplikuar në një fushë të bardhë. Trashësia e vijës së rrethit është 2 - 2,5 cm Për bazën e fushës, mund të merrni një fletë letre me përmasa A0 (841x1189 mm), të ngjisni së bashku dy fletë letre me përmasa A1 (594x841 mm). Në këtë fushë, shënoni vijën e rrethit dhe lyejeni mbi të me bojë të zezë. Ju gjithashtu mund të shkarkoni paraqitjen e fushës, të bërë në formatin Adobe Illustrator, dhe më pas të porosisni printimin e saj në pëlhurën e banderolës në një shtypshkronjë. Madhësia e paraqitjes është 1250x1250 mm. (Mund ta shikoni paraqitjen e shkarkuar më poshtë duke e hapur në Adobe Acrobat Reader)

Kjo fushë do të jetë e dobishme për ne për zgjidhjen e disa detyrave klasike të kursit të robotikës.

Detyra numër 12:është e nevojshme të shkruhet një program për një robot që lëviz brenda një rrethi të kufizuar nga një rreth i zi sipas rregullit të mëposhtëm:

  • roboti lëviz përpara në një vijë të drejtë;
  • duke arritur vijën e zezë, roboti ndalon;
  • roboti lëviz prapa dy rrotullime të motorëve;
  • roboti kthehet në të djathtë me 90 gradë;
  • lëvizja e robotit përsëritet.

Njohuritë e marra në mësimet e mëparshme do t'ju ndihmojnë të krijoni një program që zgjidh vetë problemin 12.

Zgjidhja e problemit nr. 12

  1. Filloni drejt përpara (Fig. 8 pos. 1);
  2. Prisni që sensori i ngjyrave të kalojë vijën e zezë (Fig. 8 pos. 2);
  3. Lëvizni prapa 2 kthesa (Fig. 8 pos. 3);
  4. Ktheni djathtas 90 gradë (Fig. 8 pos. 4); vlera e këndit të rrotullimit llogaritet për robotin e montuar sipas udhëzimit small-robot-45544 (Fig. 8 pos. 5);
  5. Përsëritni komandat 1 - 4 në një lak të pafund (Fig. 8 pos. 6).

Oriz. tetë

Për funksionimin e sensorit të ngjyrave në modalitet "Shkëlqimi i dritës së reflektuar" do të kthehemi shumë herë kur kemi parasysh algoritmet për lëvizjen përgjatë vijës së zezë. Ndërkohë, le të analizojmë mënyrën e tretë të funksionimit të sensorit të ngjyrave.

6.2. Sensori i ngjyrave - Modaliteti i intensitetit të dritës së ambientit

Modaliteti i sensorit të ngjyrave "Shkëlqimi i dritës së ambientit" shumë e ngjashme me modalitetin "Shkëlqimi i dritës së reflektuar", vetëm në këtë rast sensori nuk lëshon dritë, por mat dritën natyrale të mjedisit. Vizualisht, kjo mënyrë e funksionimit të sensorit mund të përcaktohet nga një LED blu me shkëlqim të dobët. Leximet e sensorëve ndryshojnë nga 0 (mungesa e dritës) tek 100 (drita më e ndritshme). Gjatë zgjidhjes së problemeve praktike që kërkojnë matjen e dritës së ambientit, rekomandohet pozicionimi i sensorit në mënyrë që sensori të mbetet sa më i hapur dhe të mos pengohet nga pjesët dhe strukturat e tjera.

Le të bashkojmë sensorin e ngjyrave me robotin tonë në të njëjtën mënyrë që lidhëm sensorin e prekjes në Mësimin #4 (Fig. 9). Lidhni sensorin e ngjyrave me një kabllo në portë "2" Tulla EV3. Le të kalojmë në zgjidhjen e problemeve praktike.

Oriz. 9

Detyra numër 13:është e nevojshme të shkruhet një program që ndryshon shpejtësinë e robotit tonë në varësi të intensitetit të ndriçimit të jashtëm.

Për të zgjidhur këtë problem, ne duhet të mësojmë se si të marrim vlerën aktuale të sensorit. Dhe paleta e verdhë e blloqeve të programit, e cila quhet "Sensorë".

6.3. Paleta e verdhë - "Sensorë"

Paleta e verdhë e mjedisit të programimit Lego mindstorms EV3 përmban blloqe programimi që ju lejojnë të merrni leximet aktuale të sensorëve për përpunim të mëtejshëm në program. Për dallim nga, për shembull, blloku i programit "Pritja" Paleta portokalli, blloqet e programit të paletës së verdhë transferojnë menjëherë kontrollin në blloqet e programit të mëposhtëm.

Numri i blloqeve programuese në Paletën e Verdhë është i ndryshëm në versionet shtëpiake dhe edukative të mjedisit të programimit. Në versionin shtëpiak të mjedisit të programimit, nuk ka blloqe programimi për sensorë që nuk përfshihen në versionin shtëpiak të konstruktorit. Por, nëse është e nevojshme, ato mund të lidhen në mënyrë të pavarur.

Versioni edukativ i mjedisit të programimit përmban blloqe programimi për të gjithë sensorët që mund të përdoren me konstruktorin Lego mindstorms EV3.

Le të kthehemi te vendimi. Detyrat #13 dhe shikoni se si mund të merrni dhe përpunoni leximet e sensorëve me ngjyra. Siç e dimë tashmë: diapazoni i vlerave të sensorit të ngjyrave në modalitet "Shkëlqimi i dritës së ambientit"është brenda intervalit të 0 përpara 100 . Parametri që rregullon fuqinë e motorëve ka të njëjtin diapazon. Le të përpiqemi të rregullojmë fuqinë e motorëve në bllokun e programit duke lexuar sensorin e ngjyrave "Timoni".

Zgjidhja:


Oriz. 10

Le të ngarkojmë programin që rezulton në robot dhe ta ekzekutojmë atë për ekzekutim. A lëvizi roboti ngadalë? Le të ndezim elektrik dore LED dhe të përpiqemi ta sjellim atë në sensorin e ngjyrave në distanca të ndryshme. Çfarë po ndodh me robotin? Le ta mbyllim sensorin e ngjyrave me pëllëmbën e dorës - çfarë ndodhi në këtë rast? Shkruani përgjigjet e këtyre pyetjeve në komentet e mësimit.

Detyrë - Bonus

Ngarkoni në robot dhe ekzekutoni detyrën e treguar në figurën më poshtë. Përsëritni eksperimentet me elektrik dore LED. Ndani përshtypjet tuaja në komentet e mësimit.

Le të shqyrtojmë algoritmin më të thjeshtë për lëvizjen përgjatë një linje të zezë në një sensor me një ngjyrë në EV3.

Ky algoritëm është më i ngadalti, por më i qëndrueshëm.

Roboti nuk do të lëvizë rreptësisht përgjatë vijës së zezë, por përgjatë kufirit të tij, duke u kthyer ose majtas ose djathtas dhe gradualisht duke lëvizur përpara.

Algoritmi është shumë i thjeshtë: nëse sensori sheh të zezë, atëherë roboti kthehet në një drejtim, nëse i bardhë - në tjetrin.

Zbatimi në mjedisin Lego Mindstorms EV3

Në të dy blloqet e lëvizjes, zgjidhni modalitetin "aktivizo". Çelësi vendoset në sensorin e ngjyrave - matje - ngjyra. Në fund, mos harroni të ndryshoni "no color" në të bardhë. Gjithashtu, duhet të specifikoni saktë të gjitha portet.

Mos harroni të shtoni një lak, roboti nuk do të shkojë askund pa të.

Kontrollo. Për rezultate më të mira, provoni të ndryshoni cilësimet e drejtimit dhe fuqisë.

Lëvizja me dy sensorë:

Tashmë e dini algoritmin për lëvizjen e robotit përgjatë vijës së zezë duke përdorur një sensor. Sot do të shqyrtojmë lëvizjen përgjatë vijës duke përdorur dy sensorë ngjyrash.
Sensorët duhet të instalohen në atë mënyrë që vija e zezë të kalojë ndërmjet tyre.


Algoritmi do të jetë si më poshtë:
Nëse të dy sensorët shohin të bardhë, ne ecim përpara;
Nëse njëri nga sensorët sheh të bardhë dhe tjetri të zezë, ne kthehemi drejt së zezës;
Nëse të dy sensorët shohin të zezë, ne jemi në një kryqëzim (për shembull, ndaloni).

Për të zbatuar algoritmin, duhet të gjurmojmë leximet e të dy sensorëve dhe vetëm pas kësaj vendosim robotin të lëvizë. Për ta bërë këtë, ne do të përdorim çelësat e vendosur në një çelës tjetër. Kështu, së pari do të anketojmë sensorin e parë, dhe më pas, pavarësisht nga leximet e të parit, do të anketojmë sensorin e dytë, pas së cilës do të vendosim veprimin.
Lidhni sensorin e majtë në portën #1, sensorin e djathtë në portën #4.

Programi me komente:

Mos harroni se ne i ndezim motorët në modalitetin "Aktivizo" në mënyrë që ata të punojnë për aq kohë sa është e nevojshme bazuar në leximet e sensorëve. Gjithashtu, nevoja për një lak shpesh harrohet - pa të, programi do të përfundojë menjëherë.

http://studrobots.ru/

I njëjti program për modelin NXT:

Studioni programin e lëvizjes. Programoni robotin. Ngarko video testimi të modelit

15.01.2012, 18:51

Deri më tani, në artikujt rreth algoritmeve të përdorura gjatë lëvizjes përgjatë një linje, një metodë e tillë konsiderohej kur sensori i dritës, si të thuash, ndiqte kufirin e tij të majtë ose të djathtë: sapo roboti lëvizte në pjesën e bardhë të fushës, kontrolluesi e ktheu robotin në kufi, sensori filloi të lëvizë thellë në vijat e zeza - rregullatori e drejtoi atë përsëri.
Përkundër faktit se fotografia e mësipërme është për një kontrollues rele, parimi i përgjithshëm i lëvizjes së një proporcional (rregullatori P) do të jetë i njëjtë. Siç u përmend tashmë, shpejtësia mesatare e një lëvizjeje të tillë nuk është shumë e lartë, dhe u bënë disa përpjekje për ta rritur atë duke e ndërlikuar pak algoritmin: në një rast u përdor frenimi "i butë", në tjetrin, përveç kthesave, u prezantua lëvizja përpara.
Për të lejuar robotin të ecë përpara në disa zona, një seksion i ngushtë u nda në gamën e vlerave të prodhuara nga sensori i dritës, i cili mund të quhet me kusht "sensori është në kufirin e linjës".
Kjo qasje ka një pengesë të vogël - nëse roboti "ndjek" kufirin e majtë të linjës, atëherë në kthesën e djathtë nuk duket se përcakton menjëherë lakimin e trajektores dhe, si rezultat, shpenzon më shumë kohë duke kërkuar vijën. dhe duke u kthyer. Për më tepër, mund të thuhet me siguri se sa më e pjerrët të jetë kthesa, aq më shumë zgjat ky kërkim.
Figura e mëposhtme tregon se nëse sensori nuk do të ishte i vendosur në anën e majtë të kufirit, por në anën e djathtë, atëherë ai do të kishte zbuluar tashmë një lakim të trajektores dhe do të fillonte të bënte manovra kthese.

Prandaj, është mirë që roboti të pajiset me dy sensorë njëherësh, të cilët ndodhen në anët e kundërta të linjës dhe, në përputhje me rrethanat, do ta ndihmonin robotin të përgjigjet më shpejt ndaj një ndryshimi në drejtimin e lëvizjes.
Tani është e nevojshme të përcaktohet se si një ndryshim i tillë i dizajnit do të ndikojë në program. Për thjeshtësi, duhet të fillojmë përsëri me kontrolluesin më të thjeshtë të stafetës, dhe për këtë arsye, para së gjithash, ne jemi të interesuar për pozicionet e mundshme të sensorëve në lidhje me linjën:

Në fakt, mund të veçohet një gjendje më e pranueshme - në rrugë të vështira do të jetë kryqëzimi i një kryqëzimi ose një lloj trashjeje në rrugë.
Pozicionet e tjera të sensorëve nuk do të merren parasysh, sepse ato ose rrjedhin nga ato të paraqitura më sipër, ose këto janë pozicionet e robotit kur ai u largua nga linja dhe nuk do të jetë më në gjendje të kthehet në të duke përdorur informacionin nga sensorët. Si rezultat, të gjitha dispozitat e mësipërme mund të reduktohen në klasifikimin e mëposhtëm:
  • sensori i majtë, si dhe ai i djathtë, është mbi një sipërfaqe të lehtë
  • sensori i majtë mbi sipërfaqen e dritës, sensori i djathtë mbi errësirën
  • sensori i majtë mbi sipërfaqe të errët, sensori i djathtë mbi dritë
  • të dy sensorët janë mbi sipërfaqen e errët
Nëse në një moment të caktuar kohor programi në robot zbulon një nga këto pozicione, ai do të duhet të reagojë në përputhje me rrethanat:
    Nëse të dy sensorët janë mbi sipërfaqen e bardhë, atëherë kjo është një situatë normale në të cilën linja është midis sensorëve, kështu që roboti duhet të shkojë drejt. Nëse sensori i majtë është ende mbi sipërfaqen e dritës, dhe sensori i djathtë është tashmë mbi i errët, atëherë roboti e futi anën e tij të djathtë në vijë, që do të thotë se duhet të kthehet djathtas në mënyrë që vija të jetë përsëri midis sensorëve. Nëse sensori i majtë është mbi sipërfaqen e errët dhe ai i djathtë është ende sipër atë të lehtë, atëherë roboti duhet të kthehet në të majtë për t'u rreshtuar.Nëse të dy sensorët janë mbi sipërfaqen e errët, atëherë në rastin e përgjithshëm, roboti përsëri vazhdon drejt.

Diagrami i mësipërm tregon menjëherë se si duhet të ndryshojë saktësisht sjellja e motorëve në program.Tani, shkrimi i një programi nuk duhet të jetë i vështirë. Duhet të filloni duke zgjedhur se cili sensor do të anketohet i pari. Nuk ka shumë rëndësi, ndaj le të lihet. Është e nevojshme të përcaktohet nëse është mbi një sipërfaqe të lehtë apo të errët:
Ky veprim nuk ju lejon ende të thoni se në cilin drejtim duhet të shkojë roboti. Por ajo do t'i ndajë shtetet e listuara më sipër në dy grupe: (I, II) për degën e sipërme dhe (III, IV) për degën e poshtme. Secili prej grupeve tani ka dy gjendje, kështu që ju duhet të zgjidhni një prej tyre. Nëse shikoni nga afër dy gjendjet e para I dhe II, ato ndryshojnë në pozicionin e sensorit të duhur - në një rast është mbi një sipërfaqe të lehtë, në tjetrën - mbi një të errët. Kjo është ajo që do të përcaktojë zgjedhjen se çfarë veprimi duhet të ndërmerret:
Tani mund të futni blloqe që përcaktojnë sjelljen e motorëve sipas tabelave të mësipërme: dega e sipërme e gjendjes së mbivendosur përcakton kombinimin "të dy sensorët në dritë", e sipërmja - "majtas në dritë, djathtas në errësirë":
Dega e poshtme e gjendjes kryesore është përgjegjëse për një grup tjetër të shteteve III dhe IV. Këto dy gjendje ndryshojnë gjithashtu nga njëra-tjetra në nivelin e ndriçimit që merr sensori i duhur. Pra, do të përcaktojë zgjedhjen e secilit prej tyre:
Dy degët që rezultojnë janë të mbushura me blloqe lëvizëse. Dega e sipërme është përgjegjëse për gjendjen "majtas në errësirë, djathtas në dritë", dhe dega e poshtme është përgjegjëse për "të dy sensorët në errësirë".
Duhet të theksohet se ky dizajn përcakton vetëm se si të ndizni motorët në varësi të leximeve të sensorëve në një vend të caktuar në fushë, natyrisht, pas një momenti, programi duhet të kontrollojë nëse leximet kanë ndryshuar për të korrigjuar sjellja e motorëve në përputhje me rrethanat, dhe pas një momenti përsëri, përsëri, e kështu me radhë. .d. Prandaj, duhet të vendoset në një lak që do të sigurojë këtë kontroll të përsëritur:

Një program i tillë mjaft i thjeshtë do të sigurojë një shpejtësi mjaft të lartë të robotit që lëviz përgjatë vijës pa i kapërcyer kufijtë e tij, nëse vendosni saktë shpejtësinë maksimale kur lëvizni në gjendjet I dhe IV, dhe gjithashtu vendosni metodën optimale të frenimit në gjendjet II dhe II dhe III - sa më të pjerrëta të jenë kthesat në pistë, aq "më i fortë" duhet të jetë frenimi - shpejtësia duhet të bjerë më shpejt dhe anasjelltas - me kthesa të qetë, është mjaft e mundur të aplikoni frenim përmes fikjes së energjisë ose edhe përmes një frenimi të lehtë. rënie në shpejtësi.

Duhet thënë edhe disa fjalë të veçanta për vendosjen e sensorëve në robot. Natyrisht, të njëjtat rekomandime do të zbatohen për vendndodhjen e këtyre dy sensorëve në lidhje me rrotat si për një sensor, vetëm mesi i segmentit që lidh dy sensorët merret si kulm i trekëndëshit. Vetë distanca midis sensorëve duhet të zgjidhet gjithashtu nga karakteristikat e pistës: sa më afër të jenë sensorët me njëri-tjetrin, aq më shpesh roboti do të nivelizohet (kryejë kthesa relativisht të ngadalta), por nëse sensorët janë mjaft të gjerë. , atëherë ekziston rreziku i fluturimit jashtë pista, kështu që do t'ju duhet të kryeni kthesa më të ngushta dhe lëvizje më të ngadalta në drejt.



Kjo detyrë është klasike, ideologjikisht e thjeshtë, mund të zgjidhet shumë herë dhe çdo herë do të zbuloni diçka të re.

Ka shumë qasje për të zgjidhur problemin e linjës vijuese. Zgjedhja e njërit prej tyre varet nga dizajni specifik i robotit, nga numri i sensorëve, vendndodhja e tyre në lidhje me rrotat dhe njëri-tjetrin.

Në shembullin tonë, tre shembuj robotësh do të çmontohen bazuar në modelin kryesor të mësimit të Robot Educator.

Për të filluar, ne mbledhim modelin bazë të Robot Educator, për këtë ju mund të përdorni udhëzimet në softuerin MINDSTORMS EV3.

Gjithashtu, për shembuj, na duhen sensorë me ngjyra të lehta EV3. Këta sensorë të dritës, si askush tjetër, janë më të përshtatshëm për detyrën tonë, kur punojmë me ta, nuk duhet të shqetësohemi për intensitetin e dritës së ambientit. Për këtë sensor, në programe do të përdorim modalitetin e dritës së reflektuar, në të cilën vlerësohet sasia e dritës së reflektuar të ndriçimit të kuq të sensorit. Kufijtë e leximeve të sensorit janë 0 - 100 njësi, respektivisht për "pa reflektim" dhe "reflektim total".

Për shembull, ne do të analizojmë 3 shembuj të programeve për lëvizjen përgjatë një shtegu të zi të përshkruar në një sfond të barabartë dhe të lehtë:

· Një sensor, me rregullator P.

· Një sensor, me rregullator PK.

· Dy sensorë.

Shembull 1. Një sensor, me rregullator P.

Dizajn

Sensori i dritës është montuar në një rreze të vendosur në mënyrë të përshtatshme në model.


Algoritmi

Funksionimi i algoritmit bazohet në faktin se, në varësi të shkallës së mbivendosjes, rrezja e ndriçimit të sensorit me një vijë të zezë, leximet e kthyera nga sensori ndryshojnë në një gradient. Roboti mban pozicionin e sensorit të dritës në kufirin e vijës së zezë. Duke konvertuar të dhënat hyrëse nga sensori i dritës, sistemi i kontrollit gjeneron vlerën e shpejtësisë së rrotullimit të robotit.


Meqenëse në një trajektore reale sensori gjeneron vlera në të gjithë gamën e tij të funksionimit (0-100), vlera për të cilën përpiqet roboti është 50. Në këtë rast, vlerat e transmetuara në funksionin e rrotullimit formohen në intervalin. -50 - 50, por këto vlera nuk janë të mjaftueshme për një rrotullim të pjerrët të trajektores. Prandaj, diapazoni duhet të zgjerohet me një herë e gjysmë në -75 - 75.

Së fundi, në program, funksioni kalkulator është një kontrollues i thjeshtë proporcional. funksioni i të cilit ( (a-50)*1.5 ) në diapazonin e funksionimit të sensorit të dritës gjeneron vlerat e rrotullimit në përputhje me grafikun:

Një shembull i algoritmit

Shembulli 2. Një sensor, me kontrollues PK.

Ky shembull është përpiluar në të njëjtin dizajn.

Ju ndoshta keni vënë re se në shembullin e mëparshëm, roboti u lëkund shumë, gjë që nuk e lejoi atë të përshpejtohej sa duhet. Tani do të përpiqemi ta përmirësojmë pak këtë situatë.

Në kontrolluesin tonë proporcional, ne i shtojmë gjithashtu një kontrollues të thjeshtë kubi, i cili do t'i shtojë një kthesë funksionit të kontrolluesit. Kjo do të zvogëlojë lëkundjen e robotit pranë kufirit të dëshiruar të trajektores, si dhe do të bëjë goditje më të forta në një distancë të madhe prej tij.