Mobil robot Fuzzy rendszerű szabályzása
Készítette: Tomozi György 2009. 01. 18.
Mobil robot Fuzzy rendszerű szabályzása
Tartalomjegyzék 1.Bevezetés...........................................................................................................................................3 2.A robot felépítése...............................................................................................................................4 2.1Elrendezés és kormányzás..........................................................................................................4 2.2BLDC meghajtó motorok...........................................................................................................5 2.3Optikai érzékelők........................................................................................................................7 2.4Szabályzó elektronika...............................................................................................................10 2.5Tápellátás..................................................................................................................................12 3.Szoftver............................................................................................................................................12 3.1Inicializálás...............................................................................................................................12 3.2Paraméterek bemérése..............................................................................................................13 3.3Megszakítás..............................................................................................................................13 TIMER1 megszakítás................................................................................................................13 TIMER0 megszakítás................................................................................................................14 AD átalakító megszakítás..........................................................................................................14 3.4Optikai érzékelők átkapcsolása.................................................................................................14 3.5Fuzzy szabályzó........................................................................................................................14 3.6Motorok meghajtása.................................................................................................................19 4.Tapasztalatok...................................................................................................................................19 5.Irodalomjegyzék..............................................................................................................................20
-2-
Mobil robot Fuzzy rendszerű szabályzása
1. Bevezetés Manapság több országban is rendeznek versenyeket hobbi robot építők számára, hogy az itt merített ötletekkel emeljék a műszaki szakma színvonalát. Szaktársammal Bozi Istvánnal egy egyetemi faliújságon láttuk meg az InnoC innovációs központ felhívását egy robot versenyre. A versenyszámok egyike volt a vonalkövető robot építése. 2008. áprilisában volt a verseny Bécsben. A verseny előtti éjszakán a robotunk finombeállításán dolgoztunk és egy váratlan műszaki probléma miatt tönkre ment az a PIC mikrokontroller, mely a robotot irányította. 2009. márciusában ismét megrendezik a versenyt, melyre robotunkat újból felkészítjük a jobb szereplés reményében. Kicsit átdolgozva a robot szoftverét – melybe egy Fuzzy szabályzót építettünk – próbálkozunk újra márciusban. A dokumentációban írom le a robot, valamint a Fuzzy szabályzó működését.
-3-
Mobil robot Fuzzy rendszerű szabályzása
2. A robot felépítése 2.1 Elrendezés és kormányzás A robot tervesésekor figyelembe vettük a verseny kiírásokat, mely egyrészt a robot méretére tartalmazott megkötéseket, valamint azt a célt tűzte ki, hogy a robotok minél gyorsabban és minél pontosabban teljesítsék a megadott útvonalat.
1. ábra. Ennek érdekében nagy teljesítményű motorokat, nagy áttételt, nagy energiájú akkumulátort és könnyű szerkezetet választottunk. A robot kormányzása a motorok fordulatszám különbségének elvén valósul meg, azaz a lassabban forgó motor irányába kanyarodik a robot. Az áttételt „O” -gyűrűs ékszíjhajtással valósítottuk meg. A kerekek szintén danamidból készültek a lehető legkisebb tömeggel, hogy az inercia nyomatékuk minél kisebb legyen. A tapadófelület egy nagyméretű „O”-gyűrű, mely a kerekek erre célra kimunkált hornyiba fekszik bele. A kerekek csúszócsapágyas megoldással lettek szerelve egy
-4-
Mobil robot Fuzzy rendszerű szabályzása edzett, köszörült INA tengelyre Első kereket nem szereltünk a robotra, hanem egy danamid félhengeren csúszik.
2. ábra. A robot alatt elhelyezkedő fekete vonal helyzetének meghatározására optikai érzékelőket választottunk, melyből két sorban 8-8-at szereltünk fel. A robottest műanyag lemezből, valamint alumíniumból készült.
2.2 BLDC meghajtó motorok A robot meghajtására Brush Less Direct Current motorokat alkalmaztunk, mert jobb tulajdonságokkal rendelkeznek, mint a hagyományos DC motorok: •
Halkabb
•
Kisebb EMI
•
Kevesebb karbantartás
•
Hosszabb élettartam
•
Nagyobb hatásfok
-5-
Mobil robot Fuzzy rendszerű szabályzása •
Kisebb forgórész inercia (csak a mágnes)
•
Lineáris karakterisztika
•
Kisebb méret
•
Nagyobb fordulatszám
3. ábra. Ezek az előnyök a szénkefe illetve kommutátor páros elhagyásából adódnak. Persze a kommutálás mechanikai hiányából adódnak a motor „rossz” tulajdonságai, azaz a bonyolultabb előállítás, illetve a nehezebb motorvezérlés. A motor karakterisztikáját mutatja a következő ábra [1]:
4. ábra. A karakterisztika nem meglepő ugyanis egy DC motorról van szó, melyet nem szénkefékkel, hanem elektromosan kommutálunk. A motor forgórészén Neodímium mágneseket találunk, melyek nagy fluxussűrűsége növeli a motor nyomatékát.
-6-
Mobil robot Fuzzy rendszerű szabályzása A kommutálásnak két módját használják manapság: 1. Hall szenzoros: mágnesesség érzékelőkkel állapítják meg a rotor szögét és ez alapján történik a kommutáció. 2. A motor tekercseiben indukálódó feszültséget figyelve (Back EMF) állapítják meg a kommutáció pontos idejét. Ezt mutatja a következő ábra [1]:
5. ábra. Az általunk alkalmazott motort eredetileg modell repülőgépek meghajtására szánták. Éppen ezért viszonylag magas (~24 000 rpm) fordulatszámmal üzemel, melyhez nagy lassító áttételt alkalmaztunk. A motor áramfelvétele eléri a 3-3,2 A-t is induláskor. Így a robot hajtása a motornak és az áttételnek köszönhetően nagyon erős lett: ~2 m/s! A rendkívül erős hajtáshoz egy nagyon rugalmas, megbízható szabályzásra van szükségünk.
2.3 Optikai érzékelők Mivel a kírásban szerepelt, hogy a robotnak egy fehér alapon lévő fekete csíkot kell követnie optikai érzékelőt kellett beépítenünk a robotba. Erre a CNY-70 reflexiós optikai érzékelőt választottuk, mivel ezzel a típussal volt némi tapasztalatunk és tudtuk, hogy a célnak megfelelő lesz. Ezen kívül a TAOS cégtől kértünk termékminta gyanánt egy lineáris optikai szenzort is, melyet nem építettünk be, mivel a CNY-70 jobban illeszkedik a Fuzzy vezérléshez.
-7-
Mobil robot Fuzzy rendszerű szabályzása
6. ábra. A képen látható érzékelő az infravörös tartományban dolgozik (950nm) [2]. A benne található LED megvilágítja a felületet, majd az onnét visszaverődő fény a fototranzisztor EC áramát befolyásolja. A tokban már a gyártó elhelyezett egy optikai színszűrőt is, mely a zavaró hullámhosszúságú fényeket kiszűri.
-8-
Mobil robot Fuzzy rendszerű szabályzása 7. ábra. A fenti kép mutatja a szenzor jellemző karakterisztikáit [2]. A szenzor alkalmazhatóságát a Fuzzy rendszerrel az javította, hogy kimeneti függvénye (6.11.) haranggörbe jellegű és ezt, mint egy fuzzy halmazt felfogva kihagyhatjuk a fuzzifikálást időt spórolva ezzel.
8. ábra. A szenzorból egy sorban 8 darab került beszerelésre. Ennek fuzzy halmazait mutatja a fenti ábra. A szenzorokat páronként sorba kapcsoltuk, hogy az AD átalakítás idejét felezzük. Tápfeszültség
Optikai érzékelő uC analóg bemenet
Optikai érzékelő
9. ábra. Igaz hogy az elrendezés csökkenti az AD átalakítás idejét, azonban így szoftveresen kell tárolni az ofszet értékeket, melyre a szoftver leírásánál visszatérek.
-9-
Mobil robot Fuzzy rendszerű szabályzása
10. ábra.
2.4 Szabályzó elektronika Az elektronika tervezése során a megadott hardver feltételeknek kellett megfelelnünk, valamint a rugalmasságra is kellett gondolni.
-10-
Mobil robot Fuzzy rendszerű szabályzása
11. ábra. A fenti ábra tartalmazza a vezérlőpanel kapcsolási rajzát. Az alkalmazott PIC mikrokontroller egy 16 bites változat, mely hardveres szorzót is tartalmaz. Az órajelet egy 20 megahertzes kvarc rezonátor biztosítja. A motoroknak szükséges PWM jel a JP1 és JP3 csatlakozókra lett kivezetve és innét kapja az áramkör a tápellátást is. A PWM jellel párhuzamosan kötött LD4 és LD5 LED a PWM jel meglétét mutatja. A nyomógomboknak és egyéb LED -eknek a működés során van szerepük. A JP2es csatlakozón keresztül programozható a kontroller egy PICKit2-es programozóval. A C1 kondenzátor végzi a tápfeszültség nagyfrekvenciás szűrését, míg a C3 kondenzátor a tápellátás ingadozását hivatott kiküszöbölni. A panelen elhelyezett PAD -ek a későbbi bővíthetőséget szolgálják. Az X1 csatlakozó 9 és 10 -es pontján érkezik a szenzorsorok multiplexelt analóg jele. A csatlakozó többi része, melyek kimenetre csatlakoznak a multiplexeléshez szükségesek. A az előbb ismertetett szenzorpárok tápfeszültsége és GND pontja is egy-egy kimenetre csatlakozik. Amelyik szenzorpár értékét akarjuk elérni, az ahhoz tartozó kimenetet állítjuk kimeneti állapotba és kapcsoljuk rá a megfelelő jelszinteket. A kiolvasás során a többi lábat bemeneti állapotban tartjuk, azaz nagy impedanciát kapcsolunk a vonalakra.
-11-
Mobil robot Fuzzy rendszerű szabályzása
2.5 Tápellátás A robot futás közbeni tápellátását egy Lítium-Polimer akkumulátor biztosítja, mely igen nagy energiák tárolására alkalmas (2800W/kg). A töltés és kisütés arány 99,8%. Egy cella feszültsége 3,7-3,8V. Hátránya az akkumulátornak, hogy kb. 1000 -szer tölthető újra, illetve maga a töltés is nehézkes, mivel az akkumulátor robbanásveszélyes a töltés során, nagyon kell figyelni a töltés helyes idejére. Mivel ezekben az akkumulátorokban elektrolit folyadék helyett polimert alkalmaznak dielektrikumnak, ezért a kisütési tényező 15-20C között is mozoghat. Ez teszi a kisméretű akkumulátort nagyon erőssé.
3. Szoftver A mikrokontroller szoftvere C nyelven íródott, melyet az MPLAB fejlesztőkörnyezethez ingyenesen lehet eltölteni a gyártó honlapjáról. A kód a mellékletben megtalálható
3.1 Inicializálás A bekapcsolás után a PIC_init rutin inicializálja a mikrokontrollert. Az IO lábak beállítása után következik a TIMER0 időzítő beállítása, mely az AD átalakítás sebességét szabja meg. Ezt követően kerül beállításra a PWM jelhez szükséges TIMER1 modul. Mindkét timer megszakítást generál, ha túlcsordul. Az AD átalakító inicializálása során beállítjuk a két bemeneti lábat, illetve a referenciákat, valamint az AD átalakítás előtti várakozási idő, mely a jel stabilizálódása miatt szükséges. Az AD átalakító szintén megszakításos üzemben fut. A PIC inicializálása után a motorokat kell felprogramozni. Ezt végzi el a MotorRamp függvény, mely miután elindítja a PWM egységet – jelen beállítások mellett 70% -os kitöltési tényezővel (PWM_max_duty) – egy lefutó rámpát generál a motorvezérlő számára – egészen 30% -os kitöltésig. Ekkor a motorvezérlő beméri a számára rendelkezésre álló tartományt és ehhez igazítja a motorok sebességét. A lefutó rámpa után a felhasználónak egy nyomógomb segítségével manuálisan van lehetősége további rámpákat generálni a motorvezérlő számára, ahhoz hogy a motor egyes paramétereit átprogramozza (fék üzemmód, akkumulátor típusa stb.).
-12-
Mobil robot Fuzzy rendszerű szabályzása
3.2 Paraméterek bemérése Amikor a robot új környezetbe kerül mindig szükség van egy újbóli paraméter bemérésre, hogy a szabályzás pontos maradjon. Ha indítás során a felhasználó nyomva tartja BUTTON3 nyomógombot, akkor a paraméter bemérés megtörténik. Ellenkező esetben a robot az EEPROM memóriából tölti be az előzőekben használt adatokat. A paraméterbemérés során két rutint kell meghívni. Az egyik az OffsetMeres, mely a sorba kötött optikai érzékelő nyugalmi állapotában kialakuló feszültséget méri meg. Ehhez arra van szükség, hogy a felhasználó a robotot egy homogén fehér színű területre tegye. Ekkor egy jelzőbittel jelezzük, hogy a megszakításban keletkező adatokat, egy erre a célra szánt változótömbbe tegye a program. A mérés 1000 -szer hajtódik végre így a hibák kevésbé zavarják a mérés kimenetelét. A másik mérés, melyet el kell végezni az a Min_Max_meres. Ekkor a szenzorok minimum és maximum értékeit méri ki a kontroller, hogy később ezeket normalizálni lehessen. Itt szintén egy jelzőbit jelzi a megszakítás számára a teendőket. A fenti mérések után a kapott adatokat egy tömbbe rendezzük, melyet a későbbike folyamán EEPROM -ba mentünk. Ha a felhasználó nem kéri az adatok kimérését, akkor az előbb említett tömbbe töltjük vissza az előzőleg elmentett adatokat. Ezekre a mérésekre azért van szükség, mert a későbbiekben tárgyalandó Fuzzy szabályzó számára ezek segítségével tudjuk az adatokat 0-100 skálára normalizálni.
3.3 Megszakítás Egyszerre akár három periféria is képes megszakítást generálni, ekkor a megszakításkezelő rutin fut le, mely elsődlegesen megvizsgálja, hogy a háromból melyikről van szó
TIMER1 megszakítás A TIMER1 modul a PWM jelhez szükséges. Megszakítás esetén a timer regiszterei újra feltöltésre kerülnek, majd a hozzájuk kapcsolt Compare modulok regiszterei is megkapják a helyes értéket. Amikor a Compare modul regisztere és a TIMER1 regisztere egyenlő, akkor történik a PWM jelszintjének váltása. Fontos még, hogy itt kell törölnünk a megszakítás jelző bitet, hogy a timer újra futni tudjon.
-13-
Mobil robot Fuzzy rendszerű szabályzása
TIMER0 megszakítás Ez a modul a mintavételi sebességet állítja. Megszakítása esetén mindamellett, hogy a regiszterek újra feltöltésre kerülnek elindul a 0. csatorna AD átalakítása is.
AD átalakító megszakítás Az előbbiekben elindított AD átalakítás egy rövid várakozási idő után megszakítást generál. Ekkor a rutin átkapcsolja az átalakítót a másik csatornára, valamint tárolja az előző értékét egy változóban, majd az átalakítási idő letelte után ismét ide kerül a program. Miután a második érték is eltárolódott a LEDatkapcsolas rutin vált a következő optikai szenzorpárra és a meglévő adatokat tárolja.
3.4 Optikai érzékelők átkapcsolása Az érzékelőket a LEDatkapcsolas rutin demultiplexeli figyelembe véve, hogy melyik üzemmódban van az AD. Ha ofszetet mérünk, akkor a bejövő adatok átlagolásra kerülnek. Ha minimum és maximum értékeket keresünk, akkor a legnagyobb és legkisebb tárolódik csak el. Ha pedig normál üzemmódban dolgozunk, akkor az előbbi értékek segítségével normalizálásra kerül a bemeneti jel.
3.5 Fuzzy szabályzó A műszaki életben Európában, Amerikában leginkább a P, I, D szabályzás illetve ezek kombinációja a legelterjedtebb, míg keleten, leginkább Japánban a Fuzzy logika és szabályzó hódított magának teret. Egy PID szabályzó tervezése és beállítása viszonylag egyszerű és a szakirodalomban található módszerekkel könnyen elvégezhető [3]. Egy Fuzzy szabályzó tervezése némileg bonyolultabb és több szakmai tapasztalatot kíván, főként a tagsági függvények kialakításánál nehézkesebb a tervezés. Ezt persze egy Neuro-Fuzzy rendszer akár önmaga is képes elkészíteni, de ez viszonylag magas erőforrás igényű. Egy átlagos Fuzzy szabályzó blokkdiagrammját mutatja a következő ábra [3]. Az előfeldolgozó egység normalizálja a bejövő jelet, majd a tagsági függvények segítségével a szabályzó számára értelmezhető jelet a fuzzifikálás állítja elő. Esetünkben ez kimerül a normalizálásban, hiszen mint fent említettük az optikai szenzorok kimenő – gauss jellegű – jelét egy-egy fuzzy halmaznak tekintjük. Így esetünkben 8 darab bementi fuzzy halmazt kapunk, melyek szuprémuma 100. Tehát a halmazok nem normális fuzzy halmazok. Ez azért van így mivel a fixpontos számokkal a mikrokontroller gyorsabban tud számolni, sőt hardveres szorzóval rendelkezik ilyen esetekre. A lebegőpontos számokkal végzett műveletek a mikrokontrollerek esetében 200-500 műveletet igényelnek. -14-
Mobil robot Fuzzy rendszerű szabályzása A kapott értékek ezután a következtető gépből és a szabálybázisból álló modulba kerül, ahol a megadott szabályok alapján egy kimenti fuzzy halmazt kapunk. Esetünkben ezt a Fuzzy rutin tartalmazza a defuzzifikációval együtt.
12. ábra. A robotnál alkalmazott szabályok csak az első érzékelőt veszik figyelembe és a következő képen alakulnak: Ki és bemeneti fuzzy halmazok:
E g y s z e n z o r s o r b e m e n e t i fu z z y h a lm a z a i 1 .5
B A L4
T a g s á g i é rté k
1
BA L2
B A L3
JO B B 1
B A L1
JO B B 2
JO B B 4
JO B B 3
0 .5
0
0
500
1000
1500
2000
2500 P o z íc i ó
13. ábra.
-15-
3000
3500
4000
4500
5000
Mobil robot Fuzzy rendszerű szabályzása K im e n e t i fu z z y h a lm a z o k 1 .5
T a g s á g i é rté k
1
B A L4
B A L3
0
10
K O ZE P
B A L2
JO B B 2
JO B B 3
JO B B 4
90
100
0 .5
0 -2 0
-1 0
20
30
40
50 S ebesség
60
70
80
110
120
14. ábra. Szabályok: •
Ha BAL4, akkor JOBB4
•
Ha BAL3, akkor JOBB3
•
Ha BAL2, akkor JOBB2
•
Ha BAL1 vagy JOBB1, akkor KÖZÉP
•
Ha JOBB2, akkor BAL2
•
Ha JOBB3, akkor BAL3
•
Ha JOBB4, akkor BAL4
A KÖZÉP kimeneti függvényhez nincs szükség t-normát használni, mert a két érték közül az egyik mindig nulla. Ez a sorba kapcsolt érzékelőkből és az előfeldolgozó rutinból következik. Mivel a MAMDANI -féle módszert alkalmaztuk, ezért az egész szabálybázishoz tartozó összesített következtetés az egyes szabályokhoz tartozó következtetések uniójaként áll elő [3]. Az így kapott eredményeket a COG (Center Of Gravity) módszerrel defuzzifikáltuk [3]. Melynél figyelmen kívül hagytuk az esetleges átlapolódásokat. Ehhez számítanunk kellett az egyes háromszögek megfelelő alfa vágatához tartozó trapéz területeket, melyhez a következő képletet használtuk: Terület=magasság * ((alap-(alap * magasság))/200); A képletben szereplő 200 -as érték a nem normális fuzzy halmazok 100 -as magasságából adódik.
-16-
Mobil robot Fuzzy rendszerű szabályzása Ezeket a területeket később egy 4 bájtos változóban összegeztük méretük miatt. A COG metódusban tulajdonképpen a tartók súlyozott átlagát számítjuk a következő képlet szerint:
Az így kapott érték tekintve a fuzzy halmazok elhelyezkedését 0 és 100 között ingadozik, azaz rögtön a motorvezérlők bemenetére adható PWM jel formájában. Tekintettel arra, hogy a fuzzy bementi értékek ingadozhatnak egy alsó korlátot kellett szabnunk, hogy a kis lengések esetén az algoritmus ne adjon rossz értékeket. Ezért az egyes bementi jeleknek el kell érniük a 5 -ös értéket, ahhoz, hogy tüzeljenek. A robot szoftverébe programozott Fuzzy szabályzót MATLAB -ban teszteltünk. A teszt során öszszehasonlítottuk a MATLAB Fuzzy-toolbox által generált kimeneti jelet, valamint a szoftver által adott választ. A M A T L A B F u z z y t o o l b o x á lt a l g e n e r á l t k im e n e t i fü g g v é n y c s a k a z e l s ő s z e n z o r o k n á l 1 0 .8
F u z z y k im e n e t s e b e s s é g F u z z y k im e n e t k o rm á n y z á s
0 .4 0 .2
0
500
1000
1500
2000
2500 P o z íc ió
3000
3500
4000
4500
5000
15. ábra. A z e l s ő s z e n z o r s o r k i m e n e t i fü g g vé n y e - h á t s ó s o r in a k t ív ! 1 0 .8 0 .6 K im e n e t
K im e n t
0 .6
0 .4 S e b e s s é g k im e n e t K o r m á n y z á s k im e n e t
0 .2 0
0
500
1000
1500
2000
2500 P o z íc i ó
-17-
3000
3500
4000
4500
5000
Mobil robot Fuzzy rendszerű szabályzása 16. ábra.
17. ábra. Némi eltérés mutatkozik a két kimeneti függvény között, de ez annak tudható be hogy a MATLAB Gauss függvényekkel dolgozik, mi pedig nem tudtunk olyan tökéletes Gauss-t modellezni. A programozott Fuzzy szabályzó a valóságban is működik, bár még akad csiszolni való rajta.
-18-
Mobil robot Fuzzy rendszerű szabályzása
3.6 Motorok meghajtása A Fuzzy szabályzó által kiszámított kimeneti érték a PWMout1 és 2 változóba kerül, majd ez a megszakításban kerül át a COMPARE modulba, mely a PWM jel kitöltési tényezőjét változtatja. Az így kialakult jel a motorvezérlő áramkörben arányos fordulatszám változást okoz.
4. Tapasztalatok A robot megépítve és programozva az első néhány teszt után már le tudtunk vonni néhány tapasztalatot. Amit szerettünk volna, azaz, hogy a robot dinamikus és gyors legyen azt sikerült elérni ugyanis a két motor induláskor képes a robot elejét felemelni. Ezért súlyokat kellett alkalmazni a próbák során. A végsebessége is nagyon magas kb 2 m/s. Azonban a szabályzás még koránt sem tökéletes. A programozott szabályzó még túl durva a feladathoz. Ez abban nyilvánul meg, hogy tesztek során már az első kormányzás letaszítja a pályáról a robotot. Ez részben a motorok meghajtásának köszönhető, hiszen nagyon nagy tartományban képesek dolgozni. Ezt legegyszerűbben a használt PWM kitöltési sáv mérséklésével tudjuk javítani, de legjobb lenne az ékszíjas hajtást átdolgozni egy nagyobb áttételű fogaskerekes hajtásra. Az első ötletnél még először meg kell vizsgálnunk, hogy a motor vezérlő milyen felbontással képes kezelni a PWM jelet. Ehhez ki kell mérni a motorvezérlő karakterisztikáját. Ha a vezérlőben mikrokontrollert alkalmaztak, akkor lehet, hogy csak 8 vagy 10 bites felbontással lehet üzemeltetni. A nyolc bites túl kevés lenne, a 10 bites még éppen elegendő lehet számunkra. A robot tapadása a pályához rendkívül jó. Ezen nem kell változtatni. Ha sikerül márciusig elérni a vonalkövetést akkor szinte biztos a győzelem.
-19-
Mobil robot Fuzzy rendszerű szabályzása
5. Irodalomjegyzék [1] – Brushless DC (BLDC) Motor Fundamentals – Padmaraja Yedamale [2] – CNY-70 adatlap [3] – Design of Fuzzy controller – Jan Jantzen
-20-