Kustība pa līniju ar diviem gaismas sensoriem. Starptautiskās robotu sacensības - Noteikumi - Robotu piemēri - Trajektorijas robots, kura pamatā ir LEGO EV3 Lego ev3 līnijas kustība

Līniju redz cilvēks:

Lūk, kā robots to redz:


Šo funkciju izmantosim, projektējot un programmējot robotu sacensību kategorijai “Trajektorija”.

Ir daudzi veidi, kā iemācīt robotam redzēt līniju un pārvietoties pa to. Ir sarežģītas programmas un ļoti vienkāršas.

Es gribu runāt par programmēšanas metodi, kuru var apgūt pat 2.-3.klases bērni. Šajā vecumā viņiem ir daudz vieglāk salikt konstrukcijas pēc instrukcijām, un robota programmēšana ir priekš viņiem grūts uzdevums. Bet šī metode ļaus bērnam ieprogrammēt robotu jebkuram trases maršrutam 15-30 minūtēs (ņemot vērā soli pa solim testēšanu un dažu trajektorijas iezīmju pielāgošanu).

Šī metode tika pārbaudīta pašvaldību un reģionālajās robotikas sacensībās Surgutas reģionā un Hantimansi autonomajā apgabalā-Jugrā un atnesa mūsu skolai pirmās vietas. Tur pārliecinājos, ka šī tēma ir ļoti aktuāla daudzām komandām.

Nu, sāksim.

Gatavojoties šāda veida sacensībām, programmēšana ir tikai daļa no uzdevuma risinājuma. Jums jāsāk ar robota projektēšanu konkrētam maršrutam. Nākamajā rakstā es jums pastāstīšu, kā to izdarīt. Tā kā kustība pa līniju notiek ļoti bieži, es sākšu ar programmēšanu.

Apsvērsim variantu par robotu ar diviem gaismas sensoriem, jo ​​tas ir saprotamāks sākumskolas skolēniem.

Gaismas sensori ir savienoti ar 2. un 3. portiem. Motori uz pieslēgvietām B un C.
Sensori ir novietoti līnijas malās (mēģiniet eksperimentēt, novietojot sensorus dažādos attālumos vienu no otra un dažādos augstumos).
Svarīgs punkts. Priekš labāks darbsŠādai shēmai ir ieteicams izvēlēties sensoru pāri atbilstoši parametriem. Pretējā gadījumā būs jāievieš bloks sensoru vērtību regulēšanai.
Sensoru uzstādīšana uz šasijas saskaņā ar klasiskā shēma(trijstūris), aptuveni kā attēlā.

Programma sastāvēs no neliela skaita bloku:


1. Divas gaismas sensoru vienības;
2. “Matemātikas” četri bloki;
3. Divi motora bloki.

Robota vadīšanai tiek izmantoti divi motori. Katra jauda ir 100 vienības. Mūsu ķēdei mēs ņemsim vidējo motora jaudas vērtību, kas vienāda ar 50. Tas ir, Vidējais ātrums pārvietojoties taisnā līnijā, tas būs vienāds ar 50 vienībām. Atkāpjoties no taisnas kustības, motoru jauda proporcionāli palielināsies vai samazināsies atkarībā no novirzes leņķa.

Tagad izdomāsim, kā savienot visus blokus, konfigurēt programmu un kas tajā notiks.
Uzstādīsim divus gaismas sensorus un piešķirsim tiem 2. un 3. portu.
Paņemiet matemātikas bloku un atlasiet “Atņemšana”.
Savienosim gaismas sensorus no "Intensity" izejām ar autobusiem uz matemātikas bloku pie ieejām "A" un "B".
Ja robota sensori ir uzstādīti simetriski no trases līnijas centra, tad abu sensoru vērtības būs vienādas. Pēc atņemšanas iegūstam vērtību – 0.
Nākamais matemātikas bloks tiks izmantots kā koeficients, un tajā jāiestata “Reizināšana”.
Lai aprēķinātu koeficientu, jums ir jāizmēra “baltais” un “melnais” līmenis, izmantojot NXT bloku.
Pieņemsim: balts -70, melns -50.
Tālāk mēs aprēķinām: 70-50 = 20 (starpība starp balto un melno), 50/20 = 2,5 (vidējo jaudas vērtību, pārvietojoties pa taisnu līniju matemātikas blokos, iestatām uz 50. Šī vērtība plus pievienotā jauda regulējot, kustībai jābūt vienādai ar 100)
Mēģiniet iestatīt vērtību uz 2,5 ievadē “A” un pēc tam atlasiet to precīzāk.
Matemātikas bloka “Reizināšana” ieejai “B” pievienojiet iepriekšējā matemātikas bloka “Atņemšana” izeju “Rezultāts”.
Tālāk nāk pāris - matemātikas bloks (pieskaitījums) un motors B.
Matemātikas bloka iestatīšana:
Ievade “A” ir iestatīta uz 50 (puse no motora jaudas).
Bloka “Rezultāts” izeja ir savienota ar kopni ar motora B ieeju “Jauda”.
Nākamais pāris ir matemātikas bloks (atņemšana) un motors C.
Matemātikas bloka iestatīšana:
Ievade “A” ir iestatīta uz 50.
Ieeja “B” ar kopni ir savienota ar matemātikas bloka “Reizināšana” izvadi “Rezultāts”.
Bloka “Rezultāts” izeja ir savienota ar kopni ar motora C ieeju “Jauda”.

Visu šo darbību rezultātā jūs iegūsit šādu programmu:

Tā kā tas viss darbosies ciklā, pievienojam “Cikls”, atlasām to un pārvietojam visu uz “Cikls”.

Tagad mēģināsim izdomāt, kā programma darbosies un kā to konfigurēt.


Kamēr robots pārvietojas pa taisnu līniju, sensoru vērtības sakrīt, kas nozīmē, ka bloka “Atņemšana” izvade būs 0. Bloka “Reizināšana” izvade arī dod vērtību 0. Šī vērtība tiek piegādāta paralēli motora vadības pārim. Tā kā šie bloki ir iestatīti uz 50, 0 pievienošana vai atņemšana neietekmē motoru jaudu. Abi motori darbojas ar tādu pašu jaudu 50, un robots ripo taisnā līnijā.

Pieņemsim, ka trase veic pagriezienu vai robots novirzās no taisnes. Kas notiks?

Attēlā redzams, ka 2. portam pievienotā sensora (turpmāk tekstā 2. un 3. sensors) apgaismojums palielinās, pārvietojoties uz balto lauku, un samazinās sensora 3 apgaismojums. Pieņemsim, ka šo sensoru vērtības kļūst: sensors 2 – 55 vienības un sensors 3 – 45 vienības.
Bloks “Atņemšana” noteiks atšķirību starp divu sensoru vērtībām (10) un ievadīs to korekcijas blokā (reizinot ar koeficientu (10*2,5=25)) un pēc tam vadības blokos.
motori.
Matemātikas blokā (Pievienojums) motora vadības ierīcei B līdz vidējā ātruma vērtībai 50
Tiks pievienoti 25, un motoram B tiks piegādāta jaudas vērtība 75.
Matemātikas blokā (Atņemšana) motora C vadīšanai no vidējā ātruma vērtības 50 tiks atņemts 25, un motoram C tiks piegādāta jaudas vērtība 25.
Tādā veidā tiks koriģēta novirze no taisnes.

Ja trase strauji pagriežas uz sāniem, sensors 2 ir balts, bet sensors 3 ir melns. Šo sensoru apgaismojuma vērtības kļūst: sensors 2 - 70 vienības un sensors 3 - 50 vienības.
Bloks “Atņemšana” noteiks atšķirību starp divu sensoru vērtībām (20) un ievadīs to korekcijas blokā (20*2,5=50) un pēc tam motora vadības blokos.
Tagad motora B vadības matemātikas (papildinājuma) blokā motoram B tiks piegādāta jaudas vērtība 50 +50 =100.
Motora C vadības matemātikas blokā (Atņemšana) motoram C tiks piegādāta jaudas vērtība 50 – 50 = 0.
Un robots veiks asu pagriezienu.

Uz baltiem un melniem laukiem robotam jābrauc taisnā līnijā. Ja tas nenotiek, mēģiniet atlasīt sensorus ar vienādām vērtībām.

Tagad izveidosim jaunu bloku un izmantosim to, lai pārvietotu robotu pa jebkuru maršrutu.
Atlasiet ciklu, pēc tam izvēlnē “Rediģēt” atlasiet komandu “Izveidot manu bloku”.

Dialoglodziņā “Block Designer” piešķiriet mūsu blokam nosaukumu, piemēram, “Go”, atlasiet bloka ikonu un noklikšķiniet uz “GATAVS”.

Tagad mums ir bloks, ko var izmantot gadījumos, kad mums ir jāpārvietojas pa līniju.

Šajā nodarbībā mēs turpināsim izpētīt krāsu sensora izmantošanu. Tālāk sniegtais materiāls ir ļoti svarīgs robotikas kursa tālākai apguvei. Pēc tam, kad iemācīsimies izmantot visus Lego mindstorms EV3 konstruktora sensorus, risinot daudzas praktiskas problēmas, paļausimies uz šajā nodarbībā iegūtajām zināšanām.

6.1. Krāsu sensors - režīms "Atspoguļotās gaismas spilgtums".

Tātad, mēs sākam pētīt nākamo krāsu sensora darbības režīmu, ko sauc "Atstarotās gaismas spilgtums". Šajā režīmā krāsu sensors novirza sarkanās gaismas plūsmu uz tuvumā esošu objektu vai virsmu un mēra atstarotās gaismas daudzumu. Tumšāki objekti absorbēs gaismas plūsmu, tāpēc sensors rādīs mazāku vērtību salīdzinājumā ar gaišākām virsmām. Sensora vērtību diapazons tiek mērīts no 0 (ļoti tumšs) pirms tam 100 (ļoti spilgti). Šis krāsu sensora darbības režīms tiek izmantots daudzos robotikas uzdevumos, piemēram, lai organizētu robota kustību pa noteiktu maršrutu pa melnu līniju, kas uzdrukāta uz balta pārklājuma. Izmantojot šo režīmu, ieteicams sensoru novietot tā, lai attālums no tā līdz pētāmajai virsmai būtu aptuveni 1 cm (1. att.).

Rīsi. 1

Pāriesim pie praktiskās nodarbības: Krāsu sensors jau ir uzstādīts uz mūsu robota un ir vērsts uz leju uz pārklājuma virsmu, pa kuru pārvietosies mūsu robots. Attālums starp sensoru un grīdu ir tāds, kā ieteikts. Krāsu sensors jau ir pievienots pieslēgvietai "2" EV3 modulis. Ielādēsim programmēšanas vidi, savienosim robotu ar vidi un, lai veiktu mērījumus, izmantosim lauku ar krāsainām svītrām, ko izveidojām, lai izpildītu 5.nodarbības 5.4.sadaļas uzdevumus. Uzstādīsim robotu tā, lai krāsu sensors atrastos virs baltās virsmas. "Aparatūras lapa" pārslēdziet programmēšanas vidi režīmā "Skatīt pieslēgvietas" (2. att. 1. pozīcija). Šajā režīmā mēs varam novērot visus mūsu izveidotos savienojumus. Ieslēgts Rīsi. 2 tiek parādīts savienojums ar portiem "B" Un "C" divi lieli motori, un uz ostu "2" - krāsu sensors.

Rīsi. 2

Lai izvēlētos sensora rādījumu parādīšanas opciju, noklikšķiniet uz sensora attēla un izvēlieties vajadzīgo režīmu (3. att.)

Rīsi. 3

Ieslēgts Rīsi. 2 poz. 2 mēs redzam, ka krāsu sensora rādījuma vērtība virs baltās virsmas ir 84 . Jūsu gadījumā jūs varat iegūt atšķirīgu vērtību, jo tas ir atkarīgs no virsmas materiāla un apgaismojuma telpā: daļa no apgaismojuma, kas atstarojas no virsmas, skar sensoru un ietekmē tā rādījumus. Uzstādot robotu tā, lai krāsu sensors atrastos virs melnās svītras, mēs reģistrējam tā rādījumus (4. att.). Mēģiniet pats izmērīt atstarotās gaismas vērtības virs atlikušajām krāsu joslām. Kādas vērtības jūs ieguvāt? Uzraksti savu atbildi šīs nodarbības komentāros.

Rīsi. 4

Tagad risināsim praktiskas problēmas.

11. uzdevums: Ir nepieciešams uzrakstīt programmu robota kustībai, kas apstājas, sasniedzot melno līniju.

Risinājums:

Eksperiments mums parādīja, ka, šķērsojot melno līniju, krāsu sensora vērtība režīmā "Atstarotās gaismas spilgtums" vienāds 6 . Tātad, uzstāties Problēmas Nr.11 mūsu robotam jāpārvietojas taisnā līnijā, līdz vēlamā krāsu sensora vērtība kļūst mazāka 7 . Izmantosim mums jau pazīstamu programmu bloku "Gaidības" Apelsīnu palete. Ļaujiet mums izvēlēties programmatūras bloka darbības režīmu, kas nepieciešams problēmas apstākļiem "Gaida" (5. att.).

Rīsi. 5

Ir nepieciešams arī konfigurēt programmas bloka parametrus "Gaidības". Parametrs "Salīdzinājuma veids" (6. att. 1. poz.) var ņemt šādas vērtības: "vienāds"=0, "Nav vienāds"=1, "Vairāk"=2, "Vairāk vai vienāds"=3, "Mazāk"=4, "Mazāk vai vienāds"=5. Mūsu gadījumā iestatīsim "Salīdzinājuma veids" nozīmē "Mazāk". Parametrs "Sliekšņa vērtība" iestatīt vienādi 7 (6. att. 2. vienums).

Rīsi. 6

Tiklīdz krāsu sensora vērtība ir iestatīta uz mazāku 7 , kas notiks, ja krāsu sensors atrodas virs melnās līnijas, mums būs jāizslēdz motori, apturot robotu. Problēma atrisināta (7. att.).

Rīsi. 7

Lai turpinātu nodarbības, mums būs jāizveido jauns lauks, kas ir melns aplis, kura diametrs ir aptuveni 1 metrs, uzklāts uz balta lauka. Apļa līnijas biezums ir 2 - 2,5 cm.Lauka pamatnei var ņemt vienu A0 izmēra papīra loksni (841x1189 mm), salīmēt kopā divas A1 izmēra papīra loksnes (594x841 mm). Šajā laukā atzīmējiet apļa līniju un krāsojiet to ar melnu tinti. Varat arī lejupielādēt Adobe Illustrator formātā veidotu lauku izkārtojumu un pēc tam pasūtīt to uz baneru auduma uzdrukātu tipogrāfijā. Izkārtojuma izmērs ir 1250x1250 mm. (Lejupielādēto izkārtojumu varat apskatīt tālāk, atverot to programmā Adobe Acrobat Reader)

Šis lauks mums noderēs vairāku klasisku problēmu risināšanai robotikas kursā.

12. uzdevums: ir nepieciešams uzrakstīt programmu robotam, kas pārvietojas apļa iekšpusē, kas apgriezts ar melnu apli, saskaņā ar šādu noteikumu:

  • robots virzās uz priekšu pa taisnu līniju;
  • sasniedzot melno līniju, robots apstājas;
  • robots pārvieto atpakaļ divus motora apgriezienus;
  • robots pagriežas par 90 grādiem pa labi;
  • robota kustība tiek atkārtota.

Iepriekšējās nodarbībās iegūtās zināšanas palīdzēs pašam izveidot programmu, izšķiroša problēma №12.

12. uzdevuma risinājums

  1. Sāciet taisnvirziena kustība uz priekšu (8. att. 1. vienums);
  2. Pagaidiet, līdz krāsu sensors šķērso melno līniju (8. att. 2. vienums);
  3. Pārvietojieties atpakaļ 2 apgriezienus (8. att. 3. vienums);
  4. Pagriezieties pa labi par 90 grādiem (8. att. 4. pozīcija); griešanās leņķa vērtība tiek aprēķināta robotam, kas samontēts saskaņā ar instrukcijām mazais robots-45544 (8. att. 5. pozīcija);
  5. Atkārtojiet komandas 1–4 bezgalīgā ciklā (8. att. 6. pozīcija).

Rīsi. 8

Lai darbinātu krāsu sensoru režīmā "Atstarotās gaismas spilgtums" Mēs atgriezīsimies daudzas reizes, kad apsvērsim algoritmus pārvietošanai pa melno līniju. Pagaidām apskatīsim krāsu sensora trešo darbības režīmu.

6.2. Krāsu sensors - režīms "Apkārtējās gaismas spilgtums".

Krāsu sensora darbības režīms "Ārējās gaismas spilgtums"ļoti līdzīgs režīmam "Atstarotās gaismas spilgtums", tikai šajā gadījumā sensors neizstaro gaismu, bet mēra dabiskās gaismas apgaismojumu vidi. Vizuāli šis režīms Sensora darbību var noteikt pēc vāji mirdzošas zilas gaismas diodes. Sensoru rādījumi atšķiras no 0 (nav gaismas) līdz 100 (spilgtākā gaisma). Risinot praktiskas problēmas, kurās nepieciešams mērīt ārējo apgaismojumu, ieteicams sensoru novietot tā, lai sensors paliktu pēc iespējas atvērts un to neaizsprostotu citas daļas un konstrukcijas.

Piestiprināsim krāsu sensoru savam robotam tāpat kā pieskāriena sensoru 4. nodarbībā (9. att.). Pievienojiet krāsu sensoru ar kabeli pie porta "2" EV3 modulis. Pāriesim pie praktisku problēmu risināšanas.

Rīsi. 9

13. uzdevums: mums ir jāuzraksta programma, kas maina mūsu robota ātrumu atkarībā no ārējā apgaismojuma intensitātes.

Lai atrisinātu šo problēmu, mums jāzina, kā iegūt sensora pašreizējo vērtību. Un programmas bloku Dzeltenā palete, ko sauc "Sensori".

6.3. Dzeltenā palete - "Sensori"

Lego mindstorms EV3 programmēšanas vides dzeltenajā paletē ir programmatūras bloki, kas ļauj iegūt pašreizējos sensoru rādījumus tālākai apstrādei programmā. Atšķirībā no, piemēram, programmas bloka "Gaidības" Oranžajā paletē programmu bloki dzeltenajā paletē nekavējoties pārsūta vadību uz šādiem programmu blokiem.

Programmēšanas vides mājas un izglītības versijās Dzeltenās paletes programmu bloku skaits atšķiras. Programmēšanas vides mājas versijā nav programmatūras bloku sensoriem, kas nav iekļauti dizainera mājas versijā. Bet, ja nepieciešams, jūs varat tos savienot pats.

Programmēšanas vides izglītības versija satur programmu blokus visiem sensoriem, ar kuriem var izmantot Lego konstruktors prātu vētras EV3.

Atgriezīsimies pie risinājuma Problēmas Nr.13 un redzēsim, kā varat saņemt un apstrādāt krāsu sensoru rādījumus. Kā mēs jau zinām: krāsu sensora vērtību diapazons režīmā "Ārējās gaismas spilgtums" atrodas diapazonā 0 pirms tam 100 . Parametram, kas regulē motora jaudu, ir tāds pats diapazons. Mēģināsim izmantot krāsu sensora rādījumu, lai regulētu motoru jaudu programmatūras blokā "Stūre".

Risinājums:


Rīsi. 10

Ielādēsim iegūto programmu robotā un palaidīsim to izpildei. Vai robots brauca lēni? Ieslēdzam LED zibspuldzi un mēģināsim to pievest pie krāsu sensora dažādos attālumos. Kas notiek ar robotu? Aizklājam ar plaukstu krāsu sensoru – kas šajā gadījumā notika? Uzrakstiet atbildes uz šiem jautājumiem nodarbības komentāros.

Izaicinājums - Bonuss

Ievietojiet to robotā un izpildiet uzdevumu, kas parādīts attēlā zemāk. Atkārtojiet eksperimentus ar LED lukturītis. Dalieties savos iespaidos nodarbības komentāros.

Apskatīsim vienkāršāko algoritmu, lai pārvietotos pa melno līniju vienā krāsu sensorā EV3.

Šis algoritms ir lēnākais, bet visstabilākais.

Robots nepārvietosies stingri pa melno līniju, bet gan pa tās robežu, griežoties pa kreisi un pa labi un pakāpeniski virzoties uz priekšu.

Algoritms ir ļoti vienkāršs: ja sensors redz melnu, tad robots griežas vienā virzienā, ja balts, tad otrā.

Ieviešana Lego Mindstorms EV3 vidē

Abos kustību blokos atlasiet “iespējot” režīmu. Mēs iestatām slēdzi uz krāsu sensoru - mērījums - krāsa. Apakšā neaizmirstiet nomainīt "bez krāsas" uz baltu. Tāpat pareizi jānorāda visi porti.

Neaizmirstiet pievienot ciklu, bez tā robots nekur netiks.

Pārbaudiet to. Par sasniegumiem labākais rezultāts mēģiniet mainīt stūres un jaudas vērtības.

Kustība ar diviem sensoriem:

Jūs jau zināt algoritmu robota pārvietošanai pa melnu līniju, izmantojot vienu sensoru. Šodien mēs apskatīsim pārvietošanos pa līniju, izmantojot divus krāsu sensorus.
Sensori jāuzstāda tā, lai starp tiem būtu melnā līnija.


Algoritms būs šāds:
Ja abi sensori redz balta krāsa- virzīties uz priekšu;
Ja viens no sensoriem redz baltu, bet otrs melnu, pagriezieties uz melnu;
Ja abi sensori redz melnu, mēs atrodamies krustojumā (piemēram, apstāsies).

Lai ieviestu algoritmu, mums būs jāuzrauga abu sensoru rādījumi un tikai pēc tam jāiestata robots kustēties. Lai to izdarītu, mēs izmantosim slēdžus, kas ir ligzdoti citā slēdžā. Tādējādi mēs vispirms aptaujāsim pirmo sensoru, un pēc tam, neatkarīgi no pirmā sensora rādījumiem, mēs aptaujāsim otro sensoru, pēc kura mēs iestatīsim darbību.
Savienosim kreiso sensoru pie porta Nr.1, labo ar portu Nr.4.

Programma ar komentāriem:

Neaizmirstiet, ka mēs iedarbinām motorus režīmā “Ieslēgts”, lai tie darbotos tik ilgi, cik nepieciešams, pamatojoties uz sensora rādījumiem. Tāpat cilvēki bieži aizmirst par cilpas nepieciešamību – bez tās programma uzreiz beigsies.

http://studrobots.ru/

Tā pati programma NXT modelim:

Izpētiet kustību programmu. Programmējiet robotu. Nosūtiet video par modeļa testēšanu

15.01.2012, 18:51

Līdz šim rakstos par algoritmiem, ko izmanto, pārvietojoties pa līniju, tika apsvērta metode, kad gaismas sensors, šķiet, uzrauga savu kreiso vai labo robežu: tiklīdz robots pārcēlās uz lauka balto daļu, kontrolieris atgrieza robotu. līdz robežai sensors sāka virzīties dziļāk melnajā līnijā - regulators to iztaisnoja atpakaļ.
Neskatoties uz to, ka iepriekš redzamais attēls ir parādīts releja regulatoram, vispārējais proporcionālā (P-regulatora) kustības princips būs tāds pats. Kā jau minēts, šādas kustības vidējais ātrums nav īpaši liels, un vairāki mēģinājumi to palielināt, nedaudz sarežģījot algoritmu: vienā gadījumā tika izmantota “mīkstā” bremzēšana, citā, papildus pagriezieniem, kustība uz priekšu. tika ieviests.
Lai ļautu robotam virzīties uz priekšu dažos apgabalos, gaismas sensora radīto vērtību diapazonā tika iedalīts šaurs laukums, ko parasti varētu saukt par "sensors atrodas uz līnijas robežas".
Šai pieejai ir neliels trūkums - ja robots “seko” līnijas kreisajai robežai, tad pagriezienos pa labi tas uzreiz nekonstatē trajektorijas izliekumu un rezultātā vairāk laika pavada līnijas meklēšanai un pagriešanai. Turklāt ar pārliecību varam teikt, jo asāks pagrieziens, jo ilgāk šī meklēšana notiek.
Nākamajā attēlā redzams, ka, ja sensors atrastos nevis apmales kreisajā pusē, bet gan labajā, tad tas jau būtu noteicis trajektorijas izliekumu un sāktu veikt pagrieziena manevrus.

Tāpēc ieteicams robotu aprīkot ar diviem sensoriem uzreiz, kas atrodas gar dažādas puses no līnijas un attiecīgi palīdzētu robotam ātrāk reaģēt uz kustības virziena izmaiņām.
Tagad mums ir jānosaka, kā šīs dizaina izmaiņas ietekmēs programmu. Vienkāršības labad mums atkal jāsāk ar vienkāršāko releja kontrolieri, un tāpēc, pirmkārt, mūs interesē iespējamās sensoru pozīcijas attiecībā pret līniju:

Faktiski var identificēt vēl vienu pieņemamu nosacījumu - sarežģītos maršrutos tas būs krustojuma krustojums vai kaut kāds sabiezējums uz ceļa.
Citas sensoru pozīcijas netiks ņemtas vērā, jo tās ir vai nu atvasinātas no iepriekš parādītajām, vai arī tās ir robota pozīcijas, kad tas ir atstājis līniju un vairs nevarēs tajā atgriezties, izmantojot informāciju no sensoriem. . Rezultātā visus iepriekš minētos noteikumus var reducēt līdz šādai klasifikācijai:
  • kreisais sensors, tāpat kā labais, atrodas augšā viegla virsma
  • kreisais sensors virs gaišas virsmas, labais sensors virs tumšas
  • kreisais sensors virs tumšas virsmas, labais sensors virs gaišas virsmas
  • abi sensori atrodas virs tumšas virsmas
Ja noteiktā laika brīdī robota programma konstatē kādu no šīm pozīcijām, tai būs attiecīgi jāreaģē:
    Ja abi sensori atrodas virs baltās virsmas, tad tā ir normāla situācija, kad līnija ir starp sensoriem, tāpēc robotam jādodas taisni. Ja kreisais sensors joprojām atrodas virs gaismas virsmas, bet labais sensors jau atrodas virs gaismas virsmas. tumšs, tad robots ir uzbraucis ar savu labo pusi uz līnijas, kas nozīmē, ka viņam ir jāpagriežas pa labi, lai līnija atkal atrastos starp sensoriem. Ja kreisais sensors atrodas virs tumšas virsmas, bet labais joprojām ir virs gaišas, tad lai noregulētu robotu jāgriežas pa kreisi Ja abi sensori atrodas virs tumšas virsmas, tad kopumā robots atkal turpina kustēties taisni.

Augšējā diagramma uzreiz parāda, kā tieši programmā jāmainās motoru uzvedībai.Tagad programmas rakstīšana nedrīkst būt sarežģīta.Jāsāk ar izvēli, kurš sensors tiks aptaujāts pirmais. Tam īsti nav nozīmes, tāpēc lai tas paliek. Ir jānosaka, vai tas atrodas virs gaišas vai tumšas virsmas:
Šī darbība vēl neļauj pateikt, kurā virzienā robotam jādodas. Bet tas sadalīs iepriekš uzskaitītos stāvokļus divās grupās: (I, II) augšējai atzarai un (III, IV) apakšējai grupai. Katrai grupai tagad ir divi stāvokļi, tāpēc jums ir jāizvēlas viens no tiem. Ja paskatās uzmanīgi uz pirmajiem diviem stāvokļiem I un II, tie atšķiras ar labā sensora pozīciju - vienā gadījumā tas atrodas virs gaišas virsmas, otrā - virs tumšas. Lūk, kas noteiks, kādu darbību veikt:
Tagad jūs varat ievietot blokus, kas nosaka motoru uzvedību saskaņā ar iepriekš minētajām tabulām: ligzdotā nosacījuma augšējais atzars definē kombināciju “abi sensori gaismā”, augšējais - “pa kreisi uz gaišu, pa labi uz tumsu”:
Galvenā nosacījuma apakšējā filiāle ir atbildīga par citu III un IV nosacījumu grupu. Abi stāvokļi arī atšķiras viens no otra ar gaismas līmeni, ko nosaka pareizais sensors. Tas nozīmē, ka tas noteiks katra no tiem izvēli:
Iegūtie divi zari ir piepildīti ar kustību blokiem. Augšējais zars ir atbildīgs par stāvokli “pa kreisi tumsā, pa labi uz gaišu”, bet apakšējais ir atbildīgs par “abiem sensoriem tumsā”.
Jāņem vērā, ka šī konstrukcija nosaka tikai to, kā ieslēgt motorus atkarībā no sensoru rādījumiem noteiktā lauka vietā, likumsakarīgi, ka pēc mirkļa programmai ir jāpārbauda, ​​vai rādījumi nav mainījušies, lai regulētu attiecīgi motoru uzvedība un pēc brīža atkal, atkal utt. .d. Tāpēc tas ir jāievieto cilpā, kas nodrošinās šo atkārtoto pārbaudi:

Šāda diezgan vienkārša programma nodrošinās diezgan lielu robota kustības ātrumu pa līniju, nepārlidojot tās robežas, ja pareizi konfigurēsit maksimālo ātrumu, pārvietojoties I un IV stāvoklī, kā arī iestatīsit labākais veids bremzēšana II un III stāvokļos - jo stāvāki pagriezieni uz šosejas, jo “stingrāk” jābūt bremzēšanai - ātrāk jāsamazina ātrums un otrādi - ar vienmērīgiem pagriezieniem ir pilnīgi iespējams bremzēt, izslēdzot jaudu vai pat vispār samazinot ātrumu.

Daži atsevišķi vārdi jāsaka arī par sensoru izvietojumu uz robota. Acīmredzot šo divu sensoru novietojumam attiecībā pret riteņiem tiks piemēroti tie paši ieteikumi kā vienam sensoram, tikai trijstūra virsotne tiek ņemta par segmenta vidusdaļu, kas savieno divus sensorus. Attālums starp pašiem sensoriem arī jāizvēlas no trases raksturlielumiem: jo tuvāk sensori atrodas viens otram, jo ​​biežāk robots izlīdzināsies (veic salīdzinoši lēnus pagriezienus), bet, ja sensori ir izvietoti pietiekami plati. , tad pastāv risks izlidot no trases, līdz ar to nāksies vairāk “grūtināt” pagriezienus un samazināt ātrumu taisnos posmos.



Šī problēma ir klasiska, idejiski vienkārša, to var atrisināt daudzas reizes, un katru reizi atklāsi ko jaunu.

Ir daudzas pieejas, lai atrisinātu sekojošo problēmu. Viena no tām izvēle ir atkarīga no robota konkrētā dizaina, no sensoru skaita, to izvietojuma attiecībā pret riteņiem un vienam pret otru.

Mūsu piemērā tiks analizēti trīs robota piemēri, pamatojoties uz Robot Educator galveno izglītības modeli.

Sākumā mēs saliekam izglītojošā robota Robot Educator pamatmodeli, šim nolūkam varat izmantot instrukcijas programmatūra MINDSTORMS EV3.

Tāpat, piemēram, mums būs nepieciešami EV3 gaismas krāsu sensori. Šie gaismas sensori ir kā neviens cits labākais veids piemērots mūsu uzdevumam; strādājot ar tiem, mums nav jāuztraucas par apkārtējās gaismas intensitāti. Šim sensoram programmās izmantosim režīmu atstarotā gaisma, kurā tiek novērtēts atstarotās gaismas daudzums no sensora sarkanā fona apgaismojuma. Sensoru rādījumu robežas ir 0 - 100 vienības, “nav atstarošanas” un “ pilnīgs atspoguļojums"attiecīgi.

Kā piemēru mēs analizēsim 3 programmu piemērus, lai pārvietotos pa melnu trajektoriju, kas attēlota uz līdzena, gaiša fona:

· Viens sensors ar P regulatoru.

· Viens sensors, ar datora regulatoru.

· Divi sensori.

1. piemērs. Viens sensors ar P regulatoru.

Dizains

Gaismas sensors ir uzstādīts uz stara, kas ērti atrodas modelī.


Algoritms

Algoritma darbība ir balstīta uz to, ka atkarībā no sensora apgaismojuma kūļa pārklāšanās pakāpes ar melnu līniju sensora atgrieztie rādījumi mainās gradienti. Robots saglabā gaismas sensora pozīciju uz melnās līnijas robežas. Pārveidojot ievades datus no gaismas sensora, vadības sistēma ģenerē robota pagrieziena ātruma vērtību.


Tā kā uz reālas trajektorijas sensors ģenerē vērtības visā tā darbības diapazonā (0-100), kā vērtība, uz kuru robots tiecas, tiek izvēlēts 50. Šajā gadījumā rotācijas funkcijām pārsūtītās vērtības tiek ģenerētas diapazons -50 - 50, taču ar šīm vērtībām nepietiek, lai trajektorija būtu stāva. Tāpēc diapazons ir jāpaplašina pusotru reizi līdz -75 - 75.

Tā rezultātā programmā kalkulatora funkcija ir vienkāršs proporcionālais kontrolieris. kuras funkcija ( (a-50)*1,5 ) gaismas sensora darbības diapazonā ģenerē rotācijas vērtības saskaņā ar grafiku:

Algoritma darbības piemērs

2. piemērs. Viens sensors ar PK regulatoru.

Šis piemērs ir balstīts uz to pašu konstrukciju.

Jūs droši vien pamanījāt, ka iepriekšējā piemērā robots pārmērīgi šūpojās, kas neļāva tam pietiekami paātrināties. Tagad mēs mēģināsim šo situāciju nedaudz uzlabot.

Mūsu proporcionālajam kontrolierim mēs pievienojam arī vienkāršu kuba kontrolieri, kas kontroliera funkcijai pievienos nelielu izliekumu. Tas samazinās robota šūpošanos vēlamās trajektorijas robežas tuvumā, kā arī radīs spēcīgākus grūdienus, atrodoties tālu no tā.