Uzlabots algoritms pārvietošanai pa līniju. Līnijas kustība ar diviem gaismas sensoriem Gluda līniju kustība ev3

15.01.2012, 18:51

Līdz šim rakstos par algoritmiem, kas tiek izmantoti, pārvietojoties pa līniju, šāda metode tika uzskatīta, kad gaismas sensors it kā sekoja tā kreisajai vai labajai robežai: tiklīdz robots pārcēlās uz lauka balto daļu, kontrolieris atgrieza robotu uz robežas, sensors sāka virzīties dziļi melnajās līnijās - regulators to iztaisnoja atpakaļ.
Neskatoties uz to, ka iepriekš redzamais attēls ir paredzēts releja kontrollerim, 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 tika veikti vairāki mēģinājumi to palielināt, nedaudz sarežģījot algoritmu: vienā gadījumā tika izmantota "mīkstā" bremzēšana, otrā papildus pagriezieniem tika ieviesta kustība uz priekšu.
Lai robots varētu virzīties uz priekšu atsevišķos apgabalos, gaismas sensora radīto vērtību diapazonā tika iedalīta šaura sadaļa, ko nosacīti 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 labajā pagriezienā šķiet, ka tas uzreiz nenosaka trajektorijas izliekumu un rezultātā vairāk laika pavada līnijas meklējumos. un pagriežot. Turklāt var droši teikt, ka jo stāvāks pagrieziens, jo ilgāka ir šī meklēšana.
Nākamajā attēlā redzams, ka, ja sensors atrastos nevis apmales kreisajā pusē, bet gan labajā pusē, tad tas jau uztvertu trajektorijas izliekumu un sāktu veikt pagrieziena manevrus.

Tāpēc ieteicams robotu aprīkot ar diviem sensoriem uzreiz, kas atrodas pretējās līnijas pusēs un attiecīgi palīdzētu robotam ātrāk reaģēt uz kustības virziena maiņu.
Tagad ir jānosaka, kā šādas 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 izcelt vēl vienu pieņemamu stāvokli - sarežģītos maršrutos tas būs krustojuma krustojums vai sava veida 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 atstāja 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, kā arī labais, atrodas virs gaišas virsmas
  • kreisais sensors virs gaišas virsmas, labais sensors virs tumšās virsmas
  • kreisais sensors virs tumšas virsmas, labais sensors virs gaismas
  • abi sensori atrodas virs tumšās 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 ar labo pusi uzbrauca uz līnijas, kas nozīmē, ka viņam jāpagriežas pa labi, lai līnija atkal atrastos starp sensoriem. Ja kreisais sensors atrodas virs tumšās virsmas, bet labais joprojām ir virs gaišais, tad robotam jāpagriežas pa kreisi, lai izlīdzinātu Ja abi sensori atrodas virs tumšās virsmas, tad kopumā robots atkal turpina iet 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 rūpīgi aplūko pirmos divus stāvokļus I un II, tie atšķiras ar labā sensora pozīciju - vienā gadījumā tas atrodas virs gaišas virsmas, otrā - virs tumšas. Tālāk ir norādīts, kas noteiks veicamo darbību izvēli:
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šējā - "pa kreisi uz gaismas, pa labi uz tumsu":
Galvenā nosacījuma apakšējā filiāle ir atbildīga par citu III un IV stāvokļu grupu. Šie divi stāvokļi arī atšķiras viens no otra ar apgaismojuma līmeni, ko uztver pareizais sensors. Tātad 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šējā - 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 labotu 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 ātrumu, kas pārvietojas pa līniju, nepārkāpjot tās robežas, ja pareizi iestatīsit maksimālo ātrumu, pārvietojoties I un IV stāvokļos, kā arī iestatīsit optimālo bremzēšanas metodi II un II stāvokļos. III - jo stāvāki pagriezieni trasē, jo "stingrāk" jābūt bremzēšanai - ātrumam jākrītas ātrāk, un otrādi - ar gludiem pagriezieniem ir pilnīgi iespējams bremzēt, izslēdzot enerģiju vai pat nedaudz ātruma kritums.

Daži atsevišķi vārdi jāsaka arī par sensoru izvietojumu uz robota. Acīmredzot uz šo divu sensoru izvietojumu attiecībā pret riteņiem attieksies tie paši ieteikumi kā vienam sensoram, tikai segmenta vidusdaļa, kas savieno divus sensorus, tiek ņemta par trijstūra virsotni. Arī pats attālums starp sensoriem ir jāizvēlas no trases īpašībām: 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, tāpēc taisnēs nāksies veikt stingrākus pagriezienus un lēnāku kustību.



Apskatīsim vienkāršāko algoritmu, lai pārvietotos pa melnu līniju uz vienas krāsas sensora 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 vai nu pa kreisi, vai 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 - otrā.

Ieviešana Lego Mindstorms EV3 vidē

Abos kustību blokos izvēlieties "iespējot" režīmu. Slēdzis ir iestatīts uz krāsu sensoru - mērījums - krāsa. Apakšā neaizmirstiet nomainīt "bez krāsas" uz baltu. Turklāt jums ir pareizi jānorāda visi porti.

Neaizmirstiet pievienot cilpu, bez tās robots nekur netiks.

Pārbaudiet. Lai iegūtu labākos rezultātus, mēģiniet mainīt stūres un jaudas iestatījumus.

Kustība ar diviem sensoriem:

Jūs jau zināt algoritmu robota pārvietošanai pa melno līniju, izmantojot vienu sensoru. Šodien mēs apsvērsim kustību 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 baltu, mēs virzāmies uz priekšu;
Ja viens no sensoriem redz baltu, bet otrs melnu, mēs pagriežamies uz melno;
Ja abi sensori redz melnu, mēs atrodamies krustojumā (piemēram, apstājieties).

Lai ieviestu algoritmu, mums ir jāseko abu sensoru rādījumiem un tikai pēc tam jāiestata robots kustēties. Lai to izdarītu, mēs izmantosim slēdžus, kas ievietoti 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.
Pievienojiet kreiso sensoru portam #1, labo sensoru portam #4.

Programma ar komentāriem:

Neaizmirstiet, ka mēs iedarbinām motorus režīmā "Iespējot", lai tie darbotos tik ilgi, cik nepieciešams, pamatojoties uz sensoru rādījumiem. Tāpat bieži tiek aizmirsta nepieciešamība pēc cilpas – bez tās programma uzreiz beigsies.

http://studrobots.ru/

Tā pati programma NXT modelim:

Izpētiet kustību programmu. Programmējiet robotu. Augšupielādējiet modeļa testa video

Darba teksts ievietots bez attēliem un formulām.
Pilna darba versija ir pieejama cilnē "Darba faili" PDF formātā

Lego Mindstorms EV3

Sagatavošanas posms

Programmas izveide un kalibrēšana

Secinājums

Literatūra

1. Ievads.

Robotika ir viena no nozīmīgākajām zinātnes un tehnoloģiju progresa jomām, kurā mehānikas un jauno tehnoloģiju problēmas saskaras ar mākslīgā intelekta problēmām.

Pēdējos gados robotikas un automatizēto sistēmu sasniegumi ir mainījuši mūsu dzīves personīgās un biznesa jomas. Roboti tiek plaši izmantoti transportā, zemes un kosmosa izpētē, ķirurģijā, militārajā rūpniecībā, laboratorijas pētījumos, drošībā, rūpniecisko un patēriņa preču masveida ražošanā. Par robotiem var uzskatīt arī daudzas ierīces, kas pieņem lēmumus, balstoties uz datiem, kas saņemti no sensoriem – tādi, piemēram, lifti, bez kuriem mūsu dzīve jau nav iedomājama.

Mindstorms EV3 konstruktors aicina iekļūt aizraujošajā robotu pasaulē, iegremdēties sarežģītajā informācijas tehnoloģiju vidē.

Mērķis: iemācīties ieprogrammēt robotu kustēties pa taisnu līniju.

    Iepazīsties ar Mindstorms EV3 konstruktoru un tā programmēšanas vidi.

    Uzrakstiet programmas robota kustībai taisnā līnijā 30 cm, 1 m 30 cm un 2 m 17 cm.

    Mindstorms EV3 konstruktors.

Dizaineru daļas - 601 gab., servomotors - 3 gab., krāsu sensors, kustības sensors, infrasarkanais sensors un pieskāriena sensors. EV3 mikroprocesora bloks ir LEGO Mindstorms smadzenes.

Par robota kustību ir atbildīgs liels servomotors, kas savienojas ar EV3 Brick un liek robotam kustēties: iet uz priekšu un atpakaļ, apgriezties un braukt pa noteiktu trajektoriju. Šim servomotoram ir iebūvēts rotācijas sensors, kas ļauj ļoti precīzi kontrolēt robota kustību un tā ātrumu.

Varat likt robotam veikt kādu darbību, izmantojot EV3 programmatūru. Programma sastāv no dažādiem vadības blokiem. Strādāsim ar kustību bloku.

Kustības bloks vada robota motorus, ieslēdz, izslēdz, liek darboties atbilstoši uzdevumiem. Jūs varat ieprogrammēt kustību uz noteiktu apgriezienu skaitu vai grādiem.

    Sagatavošanas posms.

    Tehniskās jomas izveide.

Atzīmēsim robota darba lauku, izmantojot elektrisko lenti un lineālu izveidosim trīs līnijas 30 cm garumā - zaļu līniju, 1 m 15 cm - sarkanu un 2 m 17 cm - melnu līniju.

    Nepieciešamie aprēķini:

Robota riteņa diametrs - 5 cm 7 mm = 5,7 cm.

Viens robota riteņa apgrieziens ir vienāds ar apļa apkārtmēru, kura diametrs ir 5,7 cm. Apkārtmēru nosaka pēc formulas

Kur r ir riteņa rādiuss, d ir diametrs, π = 3,14

l = 5,7 * 3,14 = 17,898 = 17,9.

Tie. Uz vienu riteņa apgriezienu robots nobrauc 17,9 cm.

Aprēķiniet apgriezienu skaitu, kas nepieciešams, lai izietu:

N = 30: 17,9 = 1,68.

    1m 30cm = 130cm

N = 130: 17,9 = 7,26.

    2 m 17 cm = 217 cm.

N = 217: 17,9 = 12,12.

    Programmas izveide un kalibrēšana.

Mēs izveidosim programmu pēc šāda algoritma:

Algoritms:

    Programmatūrā Mindstorms EV3 atlasiet kustības bloku.

    Ieslēdziet abus motorus norādītajā virzienā.

    Pagaidiet, līdz viena motora rotācijas sensora rādījums mainīsies uz norādīto vērtību.

    Izslēdziet motorus.

Gatavā programma tiek ielādēta robota vadības blokā. Noliekam robotu uz lauka un nospiežam starta pogu. EV3 brauc pāri laukam un apstājas noteiktās līnijas beigās. Bet, lai iegūtu precīzu apdari, ir jāveic kalibrēšana, jo ārējie faktori ietekmē kustību.

    Laukums ierīkots uz studentu galdiem, tāpēc iespējama neliela virsmas izliece.

    Laukuma virsma ir gluda, tāpēc nav izslēgta robota riteņu slikta saķere ar lauku.

    Aprēķinot apgriezienu skaitu, mums bija jānoapaļo skaitļi, un tāpēc, mainot apgriezienu simtdaļas, mēs sasniedzām nepieciešamo rezultātu.

5. Secinājums.

Spēja ieprogrammēt robotu kustēties pa taisnu līniju noderēs sarežģītāku programmu veidošanā. Robotikas sacensību nolikumā parasti ir norādīti visi kustību izmēri. Tie ir nepieciešami, lai programma netiktu pārslogota ar loģiskiem nosacījumiem, cilpām un citiem sarežģītiem vadības blokiem.

Nākamajā iepazīšanās posmā ar Lego Mindstorms EV3 robotu uzzināsiet, kā programmēt pagriezienus noteiktā leņķī, kustību pa apli, spirāles.

Ir ļoti interesanti strādāt ar dizaineri. Uzzinot vairāk par tā iespējām, jūs varat atrisināt visas tehniskas problēmas. Un nākotnē, iespējams, izveidojiet savus interesantus Lego Mindstorms EV3 robota modeļus.

Literatūra.

    Koposovs D. G. "Pirmais solis robotikā 5.-6. klasei." - M.: Binoms. Zināšanu laboratorija, 2012 - 286 lpp.

    Filippovs S. A. "Robotika bērniem un vecākiem" - "Zinātne" 2010

    Interneta resursi

    http://lego. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http://www. lego. com/education/

Viena no pamata kustībām legokonstrukcijā ir sekošana melnajai līnijai.

Vispārīgā teorija un konkrēti programmas izveides piemēri ir aprakstīti vietnē wroboto.ru

Es aprakstīšu, kā mēs to ieviešam EV3 vidē, jo ir atšķirības.

Pirmā lieta, kas robotam jāzina, ir “ideālā punkta” vērtība, kas atrodas uz melnā un baltā robežas.

Sarkanā punkta atrašanās vieta attēlā tieši atbilst šai pozīcijai.

Ideāls aprēķina variants ir izmērīt melnbalto vērtību un ņemt vidējo aritmētisko.

To var izdarīt manuāli. Bet mīnusi ir redzami uzreiz: pat īsā laikā apgaismojums var mainīties, un aprēķinātā vērtība izrādīsies nepareiza.

Tātad jūs varat likt robotam to izdarīt.

Eksperimentu gaitā noskaidrojām, ka nav nepieciešams mērīt gan melno, gan balto. Var izmērīt tikai balto. Un ideālā punkta vērtību aprēķina kā balto vērtību dalītu ar 1,2 (1,15), atkarībā no melnās līnijas platuma un robota ātruma.

Aprēķinātā vērtība ir jāieraksta mainīgajā, lai tai piekļūtu vēlāk.

“Ideālā punkta” aprēķins

Nākamais kustībā iesaistītais parametrs ir pagrieziena attiecība. Jo lielāks tas ir, jo asāk robots reaģē uz apgaismojuma izmaiņām. Taču pārāk liela vērtība izraisīs robota šūpošanos. Vērtība tiek eksperimentāli izvēlēta individuāli katram robota dizainam.

Pēdējais parametrs ir motoru bāzes jauda. Tas ietekmē robota ātrumu. Kustības ātruma palielināšanās palielina robota reakcijas laiku uz apgaismojuma izmaiņām, kas var izraisīt novirzīšanos no trajektorijas. Vērtība tiek izvēlēta arī eksperimentāli.

Ērtības labad šos parametrus var ierakstīt arī mainīgajos.

Stūres attiecība un bāzes jauda

Pārvietošanās pa melno līniju loģika ir šāda: tiek mērīta novirze no ideālā punkta. Jo lielāks tas ir, jo spēcīgāk robotam jācenšas tajā atgriezties.

Lai to izdarītu, mēs aprēķinām divus skaitļus - katra motora B un C jaudas vērtību atsevišķi.

Formulas formā tas izskatās šādi:

Kur Isens ir gaismas sensora rādījumu vērtība.

Visbeidzot, ieviešana EV3. Visērtāk ir izsniegt atsevišķa bloka veidā.

Algoritma realizācija

Šis ir algoritms, kas tika ieviests vidējās kategorijas WRO 2015 robotā

Šis uzdevums ir klasisks, idejiski vienkāršs, 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 konkrētā robota konstrukcijas, no sensoru skaita, to izvietojuma attiecībā pret riteņiem un vienam pret otru.

Mūsu piemērā trīs robotu piemēri tiks izjaukti, pamatojoties uz galveno Robot Educator apmācības modeli.

Sākumā mēs saliekam Robot Educator pamata modeli, šim nolūkam varat izmantot MINDSTORMS EV3 programmatūrā sniegtos norādījumus.

Tāpat, piemēram, mums ir nepieciešami EV3 gaismas krāsu sensori. Šie gaismas sensori, kā neviens cits, ir vislabāk piemēroti 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 atstarotās gaismas režīmu, kurā tiek novērtēts sensora sarkanā apgaismojuma atstarotās gaismas daudzums. Sensoru rādījumu robežas ir attiecīgi 0 - 100 vienības "bez atstarošanas" un "pilnīga atstarošana".

Piemēram, mēs analizēsim 3 programmu piemērus, lai pārvietotos pa melnu ceļu, kas attēlots uz vienmērīga, gaiša fona:

· Viens sensors ar P regulatoru.

· Viens sensors, ar PK 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 balstās uz to, ka atkarībā no pārklāšanās pakāpes, sensora apgaismojuma stars ar melnu līniju, sensora atgrieztie rādījumi mainās gradientā. Robots saglabā gaismas sensora pozīciju uz melnās līnijas robežas. Pārveidojot gaismas sensora ievades datus, vadības sistēma ģenerē robota pagrieziena ātruma vērtību.


Tā kā uz reālas trajektorijas sensors ģenerē vērtības visā savā darbības diapazonā (0-100), vērtība, uz kuru robots tiecas, ir 50. Šajā gadījumā vērtības, kas tiek pārraidītas uz rotācijas funkciju, tiek veidotas diapazonā. -50 - 50, taču ar šīm vērtībām nepietiek stāvai trajektorijas rotācijai. Tāpēc diapazons ir jāpaplašina pusotru reizi līdz -75 - 75.

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

Algoritma piemērs

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

Šis piemērs ir apkopots uz tā paša dizaina.

Jūs droši vien pamanījāt, ka iepriekšējā piemērā robots pārāk daudz šū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 kontrollerim mēs pievienojam arī vienkāršu kuba kontrolieri, kas papildinās kontroliera funkciju. Tas samazinās robota šūpošanos vēlamās trajektorijas robežas tuvumā, kā arī veiks spēcīgākus grūdienus lielā attālumā no tā.