Programm roboti ev3 jaoks mööda joont sõitmiseks. Täiustatud joone liikumise algoritm. Värviandur - "Ümbritseva valguse heledus" režiim

07.03.2020 Ahjud ja kaminad

Vaatame lihtsaimat algoritmi EV3 ühel värvianduril mööda musta joont liikumiseks.

See algoritm on kõige aeglasem, kuid kõige stabiilsem.

Robot ei liigu rangelt mööda musta joont, vaid mööda selle piiri, pöörates vasakule ja paremale ning liikudes järk-järgult edasi.

Algoritm on väga lihtne: kui andur näeb musta, siis robot pöörab ühte, kui valget, siis teise suunda.

Teostus Lego Mindstorms EV3 keskkonnas

Valige mõlemas liikumisplokis režiim "lubamine". Seadsime lüliti värvisensorile - mõõtmine - värv. Allosas ärge unustage muuta "no color" valgeks. Samuti peate kõik pordid õigesti määrama.

Ärge unustage tsiklit lisada, ilma selleta ei lähe robot kuhugi.

Vaata järgi. Saavutuse eest parim tulemus proovige muuta rooli ja võimsuse väärtusi.

Liikumine kahe anduriga:

Te teate juba algoritmi roboti liigutamiseks mööda musta joont ühe anduri abil. Täna vaatleme kahe värvianduri abil mööda joont liikumist.
Andurid tuleb paigaldada nii, et nende vahel jookseks must joon.


Algoritm oleks järgmine:
Kui mõlemad andurid näevad valge värv- edasi liikuma;
Kui üks anduritest näeb valget ja teine ​​musta, pöörake musta poole;
Kui mõlemad andurid näevad musta, oleme ristmikul (näiteks peatume).

Algoritmi rakendamiseks peame jälgima mõlema anduri näitu ja alles pärast seda panema robot liikuma. Selleks kasutame teise lüliti sees olevaid lüliteid. Seega küsime esmalt esimest andurit ja seejärel, olenemata esimese anduri näidust, küsime teist andurit, mille järel määrame toimingu.
Ühendame vasakpoolse anduri pordiga nr 1, parema pordiga nr 4.

Programm koos kommentaaridega:

Ärge unustage, et käivitame mootorid režiimis "Sees", et need töötaksid anduri näitude põhjal nii kaua, kui vaja. Samuti unustavad inimesed sageli ära tsükli vajaduse – ilma selleta saab programm kohe otsa.

http://studrobots.ru/

Sama programm NXT mudeli jaoks:

Õppige liikumisprogrammi. Programmeerige robot. Saada video mudelitestimisest

Algoritmid mobiilse LEGO roboti juhtimiseks. Joone liikumine kahe valgusanduriga

Lisaõppe õpetaja

Kazakova Ljubov Aleksandrovna


Liikumine mööda joont

  • Kaks valgusandurit
  • Proportsionaalne kontroller (P-kontroller)

Algoritm mööda musta joont liikumiseks ilma proportsionaalse kontrollerita

  • Mõlemad mootorid pöörlevad sama võimsusega
  • Kui parempoolne valgusandur tabab musta joont, siis vasaku mootori (näiteks B) võimsus väheneb või seiskub
  • Kui vasakpoolne valgusandur tabab musta joont, siis mõne teise mootori (näiteks C) võimsus väheneb (naaseb joonele), väheneb või seiskub
  • Kui mõlemad andurid on valged või mustad, toimub lineaarne liikumine

Liikumine korraldatakse ühe mootori võimsust muutes


Näide programmist mööda musta joont sõitmiseks ilma P-kontrollerita

Liikumist korraldatakse pöördenurga muutmisega


  • Proportsionaalne kontroller (P-kontroller) võimaldab teil reguleerida roboti käitumist sõltuvalt sellest, kui palju selle käitumine erineb soovitud käitumisest.
  • Mida rohkem robot eesmärgist kõrvale kaldub, seda rohkem peab ta selleni jõudmiseks pingutama.

  • P-kontrollerit kasutatakse roboti teatud olekus hoidmiseks:
  • Manipulaatori asendi hoidmine Liikumine mööda joont (valgusandur) Liikumine mööda seina (kaugusandur)
  • Manipulaatori asendi hoidmine
  • Joone liikumine (valgusandur)
  • Liikumine mööda seina (kaugusandur)

Joone liikumine ühe anduriga

  • Eesmärk on liikuda mööda “valge-musta” piiri
  • Inimene suudab eristada piiri valge ja musta vahel. Robot ei saa.
  • Roboti eesmärk on hall

Läbi ristmike sõitmine

Kahe valgusanduri kasutamisel on võimalik organiseerida liikumist mööda keerulisemaid marsruute



Algoritm mööda maanteed ristmikel sõitmiseks

  • Mõlemad andurid on valged – robot sõidab otse (mõlemad mootorid pöörlevad sama võimsusega)
  • Kui parempoolne valgusandur tabab musta joont ja vasakpoolne valge joon, siis toimub pööre paremale
  • Kui vasakpoolne valgusandur tabab musta joont ja parempoolne valge joon, siis pöördub see vasakule
  • Kui mõlemad andurid on mustad, toimub lineaarne liikumine. Saate lugeda ristmikke või teha mis tahes toiminguid


P-regulaatori tööpõhimõte

Anduri asend

O=O1-O2


Algoritm proportsionaalse kontrolleriga mööda musta joont liikumiseks

HC = K*(C-T)

  • Ts - sihtväärtused (võtke valge ja musta valgusanduri näidud, arvutage keskmine)
  • T - voolu väärtus - saadud andurilt
  • K - tundlikkuse koefitsient. Mida rohkem, seda suurem on tundlikkus


See probleem on klassikaline, ideoloogiliselt lihtne, seda saab mitu korda lahendada ja iga kord avastad midagi uut.

Järgmise joone probleemi lahendamiseks on palju lähenemisviise. Neist ühe valik sõltub roboti konkreetsest disainist, andurite arvust, nende asukohast rataste ja üksteise suhtes.

Meie näites analüüsitakse peamise põhjal kolme roboti näidet haridusmudel Robotiõpetaja.

Alustuseks paneme kokku õpperoboti Robot Educator põhimudeli, selleks saate kasutada juhiseid tarkvara MINDSTORMS EV3.

Samuti vajame näiteks EV3 valgusvärvi andureid. Need valgusandurid pole nagu ükski teine parim viis sobivad meie ülesandeks, nendega töötades ei pea me muretsema ümbritseva valguse intensiivsuse pärast. Selle anduri puhul kasutame programmides peegeldunud valguse režiimi, milles hinnatakse anduri punasest taustvalgusest peegelduva valguse hulka. Anduri näitude piirid on 0 - 100 ühikut, vastavalt "ei peegeldu" ja "täielik peegeldus".

Näitena analüüsime 3 näidet programmidest, mis võimaldavad liikuda mööda musta trajektoori, mis on kujutatud tasasel heledal taustal:

· Üks andur, P-regulaatoriga.

· Üks andur, PC regulaatoriga.

· Kaks andurit.

Näide 1. Üks andur, P-regulaatoriga.

Disain

Valgusandur on paigaldatud mudelil mugavalt paiknevale talale.


Algoritm

Algoritmi töö põhineb asjaolul, et sõltuvalt anduri valgusvihu musta joonega kattumise astmest varieeruvad anduri poolt tagastatavad näidud gradientselt. Robot hoiab valgusanduri asendit musta joone piiril. Valgusanduri sisendandmeid teisendades genereerib juhtsüsteem roboti pöördekiiruse väärtuse.


Kuna reaalsel trajektooril genereerib andur väärtusi kogu oma töövahemikus (0-100), siis valitakse väärtuseks, mille poole robot püüdleb, 50. Sel juhul genereeritakse pöörlemisfunktsioonidele edastatavad väärtused vahemikus -50 - 50, kuid nendest väärtustest ei piisa trajektoori järsuks pööramiseks. Seetõttu tuleks vahemikku poolteist korda laiendada -75 - 75-ni.

Selle tulemusena on programmis kalkulaatori funktsioon lihtne proportsionaalne kontroller. mille funktsioon ( (a-50)*1,5 ) genereerib valgusanduri tööpiirkonnas pöörlemisväärtusi vastavalt graafikule:

Algoritmi toimimise näide

Näide 2. Üks andur, PK regulaatoriga.

See näide põhineb samal konstruktsioonil.

Tõenäoliselt märkasite, et eelmises näites kõikus robot liigselt, mis ei võimaldanud tal piisavalt kiirendada. Nüüd proovime seda olukorda veidi parandada.

Meie proportsionaalkontrollerile lisame ka lihtsa kuubikontrolleri, mis lisab kontrolleri funktsioonile mõningast paindumist. See vähendab roboti õõtsumist trajektoori soovitud piiri lähedal ning teeb sellest kaugel eemal olles tugevamaid tõmblusi.

Selleks, et robot liiguks sujuvalt mööda musta joont, peate sundima seda ise liikumiskiirust arvutama.

Inimene näeb musta joont ja selle selget piiri. Valgusandur töötab veidi teisiti.

Just seda valgusanduri omadust – suutmatust selgelt eristada valget ja musta – kasutame liikumiskiiruse arvutamiseks.

Esiteks tutvustame ideaalse trajektooripunkti kontseptsiooni.

Valgusanduri näidud jäävad vahemikku 20–80, enamasti on valgel näidud ligikaudu 65, mustal umbes 40.

Ideaalne punkt on umbes valge ja musta värvi keskel asuv tingimuslik punkt, mille järel robot liigub mööda musta joont.

Siin on punkti asukoht põhiline – valge ja musta vahel. Seda pole matemaatilistel põhjustel võimalik täpselt valgele või mustale määrata, miks selgub hiljem.

Empiiriliselt oleme välja arvutanud, et ideaalse punkti saab arvutada järgmise valemi abil:

Robot peab liikuma rangelt mööda ideaalset punkti. Kui mis tahes suunas on kõrvalekalle, peab robot sellesse punkti tagasi pöörduma.

Koostame ülesande matemaatiline kirjeldus.

Esialgsed andmed.

Ideaalne punkt.

Praegused valgusanduri näidud.

Tulemus.

Mootori pöörlemisvõimsus V.

Mootori pöörlemisvõimsus C.

Lahendus.

Vaatleme kahte olukorda. Esiteks: robot kaldus mustalt joonelt valge joone poole.

Sel juhul peab robot suurendama mootori B pöörlemisvõimsust ja vähendama mootori C võimsust.

Olukorras, kus robot siseneb mustale joonele, on vastupidi.

Mida rohkem robot ideaalpunktist kõrvale kaldub, seda kiiremini peab ta sinna tagasi pöörduma.

Kuid sellise regulaatori loomine on üsna keeruline ülesanne ja seda pole alati vaja tervikuna.

Seetõttu otsustasime piirduda ainult P-regulaatoriga, mis reageerib adekvaatselt kõrvalekalletele mustast joonest.

Matemaatilises keeles kirjutatakse see järgmiselt:

kus Hb ja Hc on vastavalt mootorite B ja C lõppvõimsused,

Baas – mootorite teatud baasvõimsus, mis määrab roboti kiiruse. See valitakse eksperimentaalselt, sõltuvalt roboti konstruktsioonist ja pöörete teravusest.

Itek – valgusanduri hetkenäidud.

Iid – arvutatud ideaalpunkt.

k – katseliselt valitud proportsionaalsuskoefitsient.

Kolmandas osas vaatame, kuidas seda NXT-G keskkonnas programmeerida.

Nii näeb inimene joont:

Robot näeb seda järgmiselt:


Kasutame seda funktsiooni roboti projekteerimisel ja programmeerimisel võistluskategooria “Trajektoor” jaoks.

On mitmeid viise, kuidas õpetada robotit joont nägema ja seda mööda liikuma. On keerulisi programme ja väga lihtsaid.

Tahan rääkida programmeerimismeetodist, mida isegi 2.–3. klassi lapsed oskavad valdada. Selles vanuses on neil palju lihtsam konstruktsioone vastavalt juhistele kokku panna ja roboti programmeerimine on nende jaoks raske ülesanne. Kuid see meetod võimaldab lapsel programmeerida roboti mis tahes raja marsruudile 15–30 minutiga (võttes arvesse järkjärgulist testimist ja trajektoori mõningate funktsioonide kohandamist).

Seda meetodit katsetati munitsipaal- ja piirkondlikel robootikavõistlustel Surguti oblastis ja Hantõ-Mansi autonoomses Okrug-Yugras ning see tõi meie koolile esikohad. Seal veendusin, et see teema on paljudele meeskondadele väga aktuaalne.

Noh, alustame.

Seda tüüpi võistlusteks valmistudes on programmeerimine vaid osa ülesande lahendamisest. Alustada tuleb konkreetse marsruudi jaoks roboti kujundamisest. Järgmises artiklis räägin teile, kuidas seda teha. Noh, kuna joont mööda liikumine toimub väga sageli, alustan programmeerimisega.

Vaatleme kahe valgusanduriga roboti varianti, kuna see on algklassiõpilastele arusaadavam.

Valgusandurid on ühendatud portidega 2 ja 3. Mootorid pordidesse B ja C.
Andurid on paigutatud joone äärtesse (proovige katsetada andurite paigutamist üksteisest erinevatele kaugustele ja erinevatele kõrgustele).
Oluline punkt. Sest parem töö Sellise skeemi jaoks on soovitav valida andurite paar vastavalt parameetritele. Vastasel juhul on vaja anduri väärtuste reguleerimiseks sisestada plokk.
Andurite paigaldamine šassiile vastavalt klassikaline skeem(kolmnurk), umbes nagu pildil.

Programm koosneb väikesest arvust plokkidest:


1. Kaks valgussensorit;
2. “Matemaatika” neli plokki;
3. Kaks mootoriplokki.

Roboti juhtimiseks kasutatakse kahte mootorit. Igaühe võimsus on 100 ühikut. Meie skeemi jaoks võtame mootori võimsuse keskmiseks väärtuseks 50. See tähendab, et sirgjoonel liikudes on keskmine kiirus 50 ühikut. Sirgjoonelisest liikumisest kõrvalekaldumisel suureneb või väheneb mootorite võimsus proportsionaalselt, sõltuvalt kõrvalekalde nurgast.

Nüüd mõtleme välja, kuidas ühendada kõik plokid, konfigureerida programm ja mis selles juhtub.
Seadistame kaks valgusandurit ja määrame neile pordid 2 ja 3.
Võtke matemaatikaplokk ja valige "Lahutamine".
Ühendame valgusandurid "Intensiivsus" väljunditest bussidega matemaatikaploki sisenditesse "A" ja "B".
Kui roboti andurid on paigaldatud sümmeetriliselt rööbastee keskelt, on mõlema anduri väärtused võrdsed. Pärast lahutamist saame väärtuse – 0.
Koefitsiendina kasutatakse järgmist matemaatika plokki ja selles tuleb määrata “Korrutamine”.
Koefitsiendi arvutamiseks peate NXT ploki abil mõõtma “valge” ja “musta” taset.
Oletame: valge -70, must -50.
Järgmiseks arvutame: 70-50 = 20 (valge ja musta vahe), 50/20 = 2,5 (seame matemaatikaplokkides sirgjooneliselt liikudes keskmise võimsuse väärtuseks 50. See väärtus pluss lisavõimsus reguleerimisel peaks liikumine olema võrdne 100-ga)
Proovige seada sisendis “A” väärtuseks 2,5 ja seejärel valida see täpsemalt.
Matemaatikaploki “Korrutamine” sisendiga “B” ühenda eelmise matemaatikaploki “Lahutamine” väljund “Tulemus”.
Järgmisena tuleb paar - matemaatikaplokk (lisamine) ja mootor B.
Matemaatikaploki seadistamine:
Sisend “A” on seatud väärtusele 50 (pool mootori võimsusest).
Ploki “Result” väljund on siini kaudu ühendatud mootori B sisendiga “Power”.
Järgmine paar on matemaatikaplokk (lahutamine) ja mootor C.
Matemaatikaploki seadistamine:
Sisend “A” on seatud väärtusele 50.
Sisend “B” on siini kaudu ühendatud matemaatikaploki “Korrutamine” väljundiga “Result”.
Ploki “Result” väljund on siini kaudu ühendatud mootori C sisendiga “Power”.

Kõigi nende toimingute tulemusena saate järgmise programmi:

Kuna see kõik töötab tsüklina, lisame "Tsükli", valime selle ja liigutame selle kõik "Tsüklisse".

Nüüd proovime välja mõelda, kuidas programm töötab ja kuidas seda konfigureerida.


Kui robot liigub sirgjooneliselt, langevad andurite väärtused kokku, mis tähendab, et ploki “Lahutamine” väljundiks on väärtus 0. Ploki “Korrutamine” väljund annab samuti väärtuse 0. See väärtus antakse paralleelselt mootori juhtpaariga. Kuna need plokid on seatud väärtusele 50, ei mõjuta 0 lisamine või lahutamine mootorite võimsust. Mõlemad mootorid töötavad sama võimsusega 50 ja robot veereb sirgjooneliselt.

Oletame, et rada teeb pöörde või robot kaldub sirgelt kõrvale. Mis juhtub?

Joonisel on näha, et pordiga 2 ühendatud anduri (edaspidi andurid 2 ja 3) valgustus valgele väljale liikudes suureneb ja anduri 3 valgustus väheneb. Oletame, et nende andurite väärtused on: andur 2 – 55 ühikut ja andur 3 – 45 ühikut.
Plokk "Lahutamine" määrab kahe anduri (10) väärtuste erinevuse ja edastab selle parandusplokki (korrutades koefitsiendiga (10*2,5=25)) ja seejärel juhtplokkidesse
mootorid.
Mootorijuhtimise B matemaatikaplokis (lisamine) keskmise kiiruse väärtusele 50
Lisatakse 25 ja mootorile B antakse võimsusväärtus 75.
Mootori C juhtimise matemaatikaplokis (lahutamine) lahutatakse keskmisest kiirusest 50 25 ja mootorile C antakse võimsusväärtus 25.
Sel viisil korrigeeritakse kõrvalekallet sirgest.

Kui rada pöörab järsult küljele, on andur 2 valge ja andur 3 must. Nende andurite valgustusväärtusteks on: andur 2 - 70 ühikut ja andur 3 - 50 ühikut.
Lahutamise plokk määrab kahe anduri (20) väärtuste erinevuse ja suunab selle parandusplokki (20*2,5=50) ja seejärel mootori juhtplokkidesse.
Nüüd antakse mootori B juhtimise matemaatika (lisamise) plokis mootorile B võimsusväärtus 50 +50 =100.
Mootori C juhtimise matemaatikaplokis (lahutamine) antakse mootorile C võimsusväärtus 50–50 = 0.
Ja robot teeb järsu pöörde.

Valgetel ja mustadel väljadel peab robot sõitma sirgjooneliselt. Kui seda ei juhtu, proovige valida samade väärtustega andurid.

Nüüd loome uue ploki ja kasutame seda roboti liigutamiseks mis tahes marsruudil.
Valige tsükkel, seejärel valige menüüst "Muuda" käsk "Loo minu plokk".

Andke dialoogiboksis "Block Designer" meie plokile nimi, näiteks "Mine", valige ploki ikoon ja klõpsake "VALMIS".

Nüüd on meil plokk, mida saab kasutada juhtudel, kui peame liikuma mööda joont.