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
Algoritm mööda musta joont liikumiseks ilma proportsionaalse kontrollerita
Liikumine korraldatakse ühe mootori võimsust muutes
Näide programmist mööda musta joont sõitmiseks ilma P-kontrollerita
Liikumist korraldatakse pöördenurga muutmisega
Joone liikumine ühe anduriga
Läbi ristmike sõitmine
Kahe valgusanduri kasutamisel on võimalik organiseerida liikumist mööda keerulisemaid marsruute
Algoritm mööda maanteed ristmikel sõitmiseks
P-regulaatori tööpõhimõte
Anduri asend
O=O1-O2
Algoritm proportsionaalse kontrolleriga mööda musta joont liikumiseks
HC = K*(C-T)
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.
Valgusandur on paigaldatud mudelil mugavalt paiknevale talale.
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:
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.