Algoritmi i avancuar për lëvizjen përgjatë vijës. Lëvizja e linjës me dy sensorë drite Lëvizje e qetë e linjës ev3

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ë një ide e mirë që të pajisni robotin 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'i përgjigjet më shpejt 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 ai 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 ai 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ërme - "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ë forta dhe lëvizje më të ngadalta në drejt.



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

Teksti i veprës vendoset pa imazhe dhe formula.
Versioni i plotë i punës është i disponueshëm në skedën "Skedarët e punës" në formatin PDF

Lego Mindstorms EV3

Faza përgatitore

Krijimi dhe kalibrimi i një programi

konkluzioni

Letërsia

1. Hyrje.

Robotika është një nga fushat më të rëndësishme të progresit shkencor dhe teknologjik, në të cilën problemet e mekanikës dhe teknologjive të reja vijnë në kontakt me problemet e inteligjencës artificiale.

Vitet e fundit, përparimet në robotikë dhe sistemet e automatizuara kanë ndryshuar fushat personale dhe të biznesit të jetës sonë. Robotët përdoren gjerësisht në transport, eksplorimin e tokës dhe hapësirës, ​​kirurgjinë, industrinë ushtarake, kërkimin laboratorik, sigurinë, prodhimin masiv të mallrave industriale dhe të konsumit. Shumë pajisje që marrin vendime bazuar në të dhënat e marra nga sensorët mund të konsiderohen gjithashtu robotë - të tillë, për shembull, ashensorë, pa të cilët jeta jonë është tashmë e paimagjinueshme.

Konstruktori Mindstorms EV3 na fton të hyjmë në botën magjepsëse të robotëve, të zhytemi në mjedisin kompleks të teknologjisë së informacionit.

Objektivi: Të mësoni se si të programoni një robot që të lëvizë në një vijë të drejtë.

    Njihuni me konstruktorin Mindstorms EV3 dhe mjedisin e tij programues.

    Shkruani programe për lëvizjen e robotit në vijë të drejtë për 30 cm, 1 m 30 cm dhe 2 m 17 cm.

    Konstruktori Mindstorms EV3.

Pjesë projektuese - 601 copë, servo motor - 3 copë, sensor ngjyrash, sensor lëvizjeje, sensor infra të kuqe dhe sensor prekjeje. Blloku i mikroprocesorit EV3 është truri i LEGO Mindstorms.

Një servomotor i madh është përgjegjës për lëvizjen e robotit, i cili lidhet me tullën EV3 dhe e bën robotin të lëvizë: shkoni përpara dhe prapa, kthehuni dhe lëvizni përgjatë një trajektoreje të caktuar. Ky servomotor ka një sensor rrotullimi të integruar, i cili ju lejon të kontrolloni me shumë saktësi lëvizjen e robotit dhe shpejtësinë e tij.

Ju mund të bëni një robot të kryejë një veprim duke përdorur softuerin EV3. Programi përbëhet nga blloqe të ndryshme kontrolli. Ne do të punojmë me bllokun e lëvizjes.

Blloku i lëvizjes kontrollon motorët e robotit, e ndez, e fiket, e bën atë të funksionojë në përputhje me detyrat. Ju mund ta programoni lëvizjen në një numër të caktuar rrotullimesh ose shkallësh.

    Faza përgatitore.

    Krijimi i një fushe teknike.

Ne do të shënojmë fushën e punës së robotit, duke përdorur shiritin elektrik dhe një vizore, do të krijojmë tre rreshta 30 cm të gjatë - një vijë jeshile, 1 m 15 cm - e kuqe dhe 2 m 17 cm - vija të zeza.

    Llogaritjet e nevojshme:

Diametri i rrotës së robotit - 5 cm 7 mm = 5,7 cm.

Një rrotullim i rrotës së robotit është i barabartë me perimetrin e një rrethi me diametër 5,7 cm. Perimetri gjendet me formulën

Ku r është rrezja e rrotës, d është diametri, π = 3.14

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

ato. Për një rrotullim të timonit, roboti udhëton 17.9 cm.

Llogaritni numrin e rrotullimeve të nevojshme për të kaluar:

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.

    Krijimi dhe kalibrimi i programit.

Ne do të krijojmë një program sipas algoritmit të mëposhtëm:

Algoritmi:

    Zgjidhni një bllok lëvizjeje në softuerin Mindstorms EV3.

    Ndizni të dy motorët në drejtimin e dhënë.

    Prisni që leximi i sensorit të rrotullimit të njërit prej motorëve të ndryshojë në vlerën e specifikuar.

    Fikni motorët.

Programi i përfunduar ngarkohet në njësinë e kontrollit të robotit. E vendosim robotin në fushë dhe shtypim butonin e fillimit. EV3 kalon nëpër një fushë dhe ndalon në fund të një linje të caktuar. Por për të arritur një përfundim të saktë, duhet të kalibroni, pasi faktorët e jashtëm ndikojnë në lëvizje.

    Fusha është e instaluar në tavolinat e studentëve, kështu që është i mundur një devijim i lehtë i sipërfaqes.

    Sipërfaqja e fushës është e lëmuar, ndaj nuk përjashtohet ngjitja e dobët e rrotave të robotit në fushë.

    Në llogaritjet e numrit të rrotullimeve, duhej të rrumbullakosnim numrat, dhe për këtë arsye, duke ndryshuar të qindtat e rrotullimeve, arritëm rezultatin e kërkuar.

5. Përfundim.

Aftësia për të programuar një robot për të lëvizur në një vijë të drejtë do të jetë e dobishme për krijimin e programeve më komplekse. Si rregull, të gjitha dimensionet e lëvizjes tregohen në termat e referencës për garat e robotikës. Ato janë të nevojshme në mënyrë që programi të mos mbingarkohet me kushte logjike, sythe dhe blloqe të tjera komplekse të kontrollit.

Në fazën tjetër të njohjes me robotin Lego Mindstorms EV3, do të mësoni se si të programoni kthesat në një kënd të caktuar, lëvizjen në një rreth, spirale.

Është shumë interesante të punosh me stilistin. Duke mësuar më shumë rreth aftësive të tij, mund të zgjidhni çdo problem teknik. Dhe në të ardhmen, ndoshta, krijoni modelet tuaja interesante të robotit Lego Mindstorms EV3.

Letërsia.

    Koposov D. G. "Hapi i parë në robotikë për klasat 5-6." - M.: Binom. Laboratori i Dijes, 2012 - 286 f.

    Filippov S. A. "Robotika për fëmijë dhe prindër" - "Shkenca" 2010

    Burimet e internetit

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

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

    http://www. lego. com/arsim/

Një nga lëvizjet bazë në legokonstruksion është ndjekja e vijës së zezë.

Teoria e përgjithshme dhe shembujt specifikë të krijimit të një programi përshkruhen në faqen wroboto.ru

Unë do të përshkruaj se si e zbatojmë këtë në mjedisin EV3, pasi ka dallime.

Gjëja e parë që roboti duhet të dijë është vlera e "pikës ideale" të vendosur në kufirin e bardhë e zi.

Vendndodhja e pikës së kuqe në figurë thjesht korrespondon me këtë pozicion.

Opsioni ideal i llogaritjes është matja e vlerës së zezë dhe e bardhë dhe marrja e mesatares aritmetike.

Ju mund ta bëni atë me dorë. Por të këqijat janë menjëherë të dukshme: edhe për një kohë të shkurtër, ndriçimi mund të ndryshojë dhe vlera e llogaritur do të rezultojë e pasaktë.

Kështu që ju mund të bëni një robot ta bëjë atë.

Gjatë eksperimenteve, ne zbuluam se nuk është e nevojshme të maten të zezën dhe të bardhën. Vetëm e bardha mund të matet. Dhe vlera e pikës ideale llogaritet si vlera e bardhë e ndarë me 1.2 (1.15), në varësi të gjerësisë së vijës së zezë dhe shpejtësisë së robotit.

Vlera e llogaritur duhet të shkruhet në një variabël në mënyrë që të aksesohet më vonë.

Llogaritja e "pikës ideale"

Parametri tjetër i përfshirë në lëvizje është shpejtësia e kthesës. Sa më i madh të jetë, aq më ashpër roboti reagon ndaj ndryshimeve në ndriçim. Por një vlerë shumë e lartë do të bëjë që roboti të lëkundet. Vlera zgjidhet eksperimentalisht individualisht për çdo dizajn robot.

Parametri i fundit është fuqia bazë e motorëve. Kjo ndikon në shpejtësinë e robotit. Një rritje në shpejtësinë e lëvizjes çon në një rritje të kohës së reagimit të robotit ndaj një ndryshimi në ndriçim, i cili mund të çojë në një largim nga trajektorja. Vlera zgjidhet gjithashtu eksperimentalisht.

Për lehtësi, këto parametra mund të shkruhen edhe në variabla.

Raporti i drejtimit dhe fuqia bazë

Logjika e lëvizjes përgjatë vijës së zezë është si më poshtë: matet devijimi nga pika ideale. Sa më i madh të jetë, aq më i fortë roboti duhet të përpiqet të kthehet tek ai.

Për ta bërë këtë, ne llogarisim dy numra - vlerën e fuqisë së secilit prej motorëve B dhe C veç e veç.

Në formën e formulës, duket kështu:

Ku Isens është vlera e leximeve të sensorit të dritës.

Së fundi, zbatimi në EV3. Është më e përshtatshme të lëshohet në formën e një blloku të veçantë.

Zbatimi i algoritmit

Ky është algoritmi që u implementua në robot për kategorinë e mesme WRO 2015

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 mjaftueshëm. 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.