Termékek
keresésmenumenumenu
lego logo
LEGO® készletek
Figurák, ajándékok LEGO® elemek Ajánlott termékek Újdonságok
(+36) 20 242 8992
0 
0 
theme

EV3 - Távirányítású vonalkövető


A Mindstorm a kedvencem minden Lego között :-) Ennek azonban nem lehet nekiállni úgy, hogy most van fél napom, amit a legozásnak szánok, itt fél nap kell az építésre, aztán kb. ötször ennyi a programozásra. Azért, mert ha a Lego-ra igaz, hogy mindíg lehet rajta finomítani egy-egy kocka cseréjével, helyzetének megváltoztatásával, akkor a Lego-ra írt program esetében ez még inkább így van, mindíg lehet még jobbá tenni és tökéletes soha nem lesz...

Valamikor 1 - 2 hónappal ezelőtt kitaláltam egy olyan robotot, ami egy vonalat képes követni, és ha akadályt talál maga előtt, akkor azt kikerüli, újból rááll a vonalra és halad tovább. Azt szerettem volna, hogy ne kelljen rátenni a robotot a vonalra, hanem távirányítással lehessen rávezetni, aztán indítani a "robotpilótát". Többszöri módosítással ez az összeállítás született:

 

 

 

Sok érdekes pontja van az ilyen hardver-szoftver összegyúrásnak. először megszületik a fizikai építmény, aztán jön a programozás. Sokszor változtatok a programozási tapasztalatok alapján a szerkezeten, mert így sokkal jobb végeredmény születhet, mintha a tökéletlenségeket szoftveres úton igyekeznénk foltozgatni. Ennél a robotnál jó példa erre a Color szenzor elhelyezése.  Az egész rendszer úgy épül fel, hogy van két motor, amelyek 1-1 kereket hajtanak, a harmadik alátámasztási pont egy utánfutásos önbeálló mini kerék pár. A Color szenzor a középvonalban lefelé néz:

 

 

A haladási irány az Infra szenzor fele van. Először az önbeálló kerék elé építettem be a Color szenzort, mert ott a vezetékelése jobban elfért, viszont túl messze volt a meghajtás tengelyvonalától, így kis iránykorrekció esetén relatív óriásit mozdult a szenzor, nem tudtam olyan finomra állítani az iránykorrekciót, hogy ne "csapkodva" haladjon a robot. Csúnya is volt és gyakran tévesztett is, ezért módosítottam programozás közben a felépítésen, ez meg is hozta a pozitív eredményt ! A másik hiba az volt, hogy túl alacsonyan volt a szenzor, így néha a földhöz ért, ekkor a beépített megvilágítása nem tudott fényt juttatni a figyelt felületrészre, így a kimeneti érték teljesen képtelen adatra ugrott, ehhez is kellett idő, mire rájöttem a hibára, most már meg van emelve a szabadonfutó kerék egy fogaskerékkel, így már nem lép fel a hiba:

 

 

A másik változtatás a Gyro szenzor esetében történt. Az EV3 Brick alatt találtam számára helyet, nem volt tőle asszimetrikus a forma, mint itt a végleges változatnál:

 

 

 Igen ám, de ez a szenzor a föld mágneses mezejét használja irány számításhoz, és valószínűleg a motorok mágnesei túl közel kerültek és folyton képtelen értékeket mutatott, azaz nem talált vissza egy 90 fokos kitérítést követően. Át kellett hát rakni a számára megfelelő helyre. Az eredeti terv szerint ez a szenzor végezné akadály kerüléskor a 90 fokos irányváltoztatásokat. Az infra szenzor elfordulva követné folyamatosan az akadályt, most még csak fejcsóválást imitál, de ez is jól jött :-) A Gyro szenzorra visszatérve az most egyenlőre kicsit más feladatot kapott: megállítja a robotot és visszaadja a kézi irányítást, amikor a vonalkövető megtett egy kört a pályán, ezt úgy teszi, hogy induláskor nullázz a szoftver, majd figyeli az elfordulási szög abszolút értékét, és amikor az eléri a 360 fokot, akkor vált a program üzemmódot.

 

Az infra szenzor kettős üzemmódban van itt felhasználva: amiokor távirányítjuk, akkor ez a vevő a kézi irányítóhoz, amikor átveszia "robot pilóta" a vezetést, akkor azt figyeli távolságmérő üzemmódban, hogy van-e akadály az útjában. A 180 fokos elfordítást a kis szervó végzi, ami a meghajtó motorok közé lett bepaszírozva:

 

 

A tesztpályát két A4-es papírra nyomtattam, majd azokat összeragasztottam és a parkettához is rögzítettem, hogy a kerék ne toligálja maga alatt:

 

 

A programozásról is essen szó, grafikus alapon történik, azt olvastam, hogy 8 éves gyermekek is programoznak EV3-at, ez szerintem teljesen hihető is, mert szimbólumok formájában látjuk az információkat, a ki és bemenetek nem "akadnak ki" tartományon kívüli értékekre, szóval elég felhasználó barát az egész. Így néz ki a program lelke, a vonalkövető algoritmus az én agymenésem alapján:

 

 

A galéria képek között talán jobban látható, két elágazás van benne, a Color szenzor itt saját megvilágításával a felület fényesség értéket figyeli, ha az benne van egy kívánt tartományban - nálam 13 - 17 - akkor motor vezérlésnek egyenes menetet diktál, ha a tartományon kívül van, akkor annak irányától függően jobbra vagy balra fordulásra utasítja a motorokat, és a fordulás mértéke függ az aktuális érték megkívánt tartománytól való eltérésének mértékétől, így egy kanyarodó vonal esetén agresszívebben reagál, míg az egyenes meneti kis eltéréseket alig észrevehetően igazítja ki. Az egy szenzoros vonalkövetés esetében ez a nem kígyózó mozgású megoldás egy sokkal szebb módszer (ezért is küzdöttem vele ennyit) az általánosan alkalmazottnál, annak így néz ki az algoritmusa:

 

 

 

 

 Az alapkészletnek nem tartozéka a Gyro szenzor, ezért írnék pár sort a használatáról. A most működő robotnál azt figyeli, hogy mikor tett meg egy teljes kört a vonalon. Ennek elmélete, hogy amikor ismét a kiindulási ponthoz ér, addígra tesz egy 360 fokos fordulatot, azaz egyszer körbefordul, ezért azt kell figyelni, hogy az induláskor nullázott szenzor mikorra éri el az abszolút értékben 360 fokos fordulatot, ekkor a robot motorjai megállnak, elhangzik a "Good job" kijelentés, majd a program kilép az automatikus vezérlés "Loop"-ból, ismét a kézi távirányítás vezetheti a szerkezetet, mindezt ez a programrész felügyeli:

 

 

És akkor két video, ami az összes jelenlegi képességet bemutatja, az akadálykerülésről nem tettem le, de most véget értek talán az esős napok :-)

 

 

 

 

 

 Köszönöm a figyelmet!

 

2015-05-24

 

F O L Y T A T Á S - mert sosem tökéletes :-)

 

 Kicsit bővítettem a kihasználtságot, a fotókon látszik, hogy a "B" motor port és a "3" szenzor port a vonalkövető robot esetében nincs kihasználva. Arra gondoltam, hogy a meglévő Ultrahang szenzor és a szervo motor, valmint egy 9 V-os Technic kapcsoló segítséégével ki lehetne bővíteni a robot kihasználtságát egy újabb program megírásával. Így attól függően, hogy melyik programot futtatom, lesz egy vonalkövető robotom, vagy egy váltópár vezérlő automatikám. Megépítetetm a hardvert:

 

 

Ilyen nyakatekerten kellett felraknom a kapcsolót, mert az EV3 stud illeszkedéséhez nem tökéletesen lego kompatibilisen helyezkedik el a motor tengelyvonala, így viszont összehozható volt. A kapcsoló 90 fokos tartományban működik, középállásban elektromosan kikapcsolt állapotú, + / - 45 foknál ellentétes polaritással bekapcsol, így tudom vezérelni a váltókatt működtető motorokat.  Ahhoz, hogy automatikusan kalibrálható legyen, kell egy mozgástartomány behatárolás, ezt a feladatot a tengelyre szerelt kis szürke elem és a kék pinek végzik:

 

 

A kalibráció folyamata úgy történik, hogy a motort bekapcsoljuk 4 másodpercre -1 teljesítmény értékkel, így az addíg forog, amíg a határoló meg nem állítja, amikor megszűnik a meghajtás, akkor adunk 1 másodpercet, hogy a rugalmas feszítés visszatérhessen nyugalmi állapotba, itt resetelünk szögelfordulás mérőt, majd 56 fokkal (ez az érték próbálgatás során áll be) elfordulunk, hogy a kapcsoló középállásba kerüljön:

Az ultrahang szenzor érzékeli a vonat megérkezését, majd a teljes áthaladást, ezt követően végzi el a váltási folyamatot:

Programban ez a fenti módon történik: várakozás amíg a szenzor távolság értéke a 9 cm-nél kisebb értéket mér, majd várakozás, amíg 23 cm-nél magasabb értéket mér (ekkor haladt el a teljes szerelvény). Ezek után azt kell tudni, hogy merre kell váltani, ez úgy megy, hogy a "valto" szám típusú változó 0 vagy 1 értéke az elágazásban átíródik minden váltás alkalmával, hogy melyik elágazási útvonal kell aktuálisan, az a kiolvasott változó értéktől függ:

 

 

 És akkor a szokásos video a működésről:

 

 

Köszönöm a türelmet attól, aki végig bírta :-)

 

2015-05-25

EV3EV3EV3EV3EV3EV3EV3EV3A B motor port itt még kihasználatlanEV3A 3 - as szenzor port is kihasználatlan mégEV3EV3EV3A rögtönzött pályaEV3Az infra középállásának kézi kalibrálásaEV3Kézi irányítás algoritmusaEV3Útvonalkövetés algoritmusaEV3Akadály érzékelés és reagálásEV3Teljes kör megtételének felügyeleteEV3Példa egy képernyőkép megjelenítéséreEV3Kígyózó útvonalkövető algoritmusEV3Váltó vezérlés hardvereEV3EV3A motorizált váltóEV3Vonat áthaladás érzékeléseEV3Váltó vezérlésének elágazásaEV3Motor végállás kalibrációja és a szögelfordulás mérő nullázása

2015 május 24, 23:36
avatar
KovJonas Hűha, ez a Mindstorms nagyon jó dolog! Most megmozgatta a fantáziámat..sok dolgot ki lehetne hozni belőle. Jó napló, köszönjük! :) 2015 június 28, vasárnap