Tartalmi kivonat
Mobil robot akadálykerülı irányítása Mechatronika project 2009 Készítette: Bodnár Péter mősz.inf IV évf 2009-02-14 A project célja Kétkerekő mobil robot síkbeli, akadálykerülı mozgását valósítjuk meg Fuzzy irányító segítségével. A megvalósítást a Matlab Simulink, Virtual Reality és Fuzzy toolboxaival végezzük el. Modell A robotnak két, külön hajtással rendelkezı kereke van. Ismerjük a kerekek sugarát és a távolságukat. A szervomotor a kerekeknek szögsebességet ad, ezáltal a robot elmozdulást hajt végre. Ha mindkét kerék azonos szögsebességgel forog, a robot egyenesen elıre (vagy hátra) halad. Ha a szögsebességek ellentétesek, a robot forgómozgást végez Egyetlen kerék hajtásával a robot az ellentétes irányba kanyarodik. A modellt egyszerősítjük: • A kerék csúszásmentesen gördül, a felülettel 1 ponton érintkezik. • A felület teljesen sík • A robotnak csak a tömegközéppontjával számolunk • A
kerék tökéletes kör alakú • A robot és a két kerék merev A feladat kinematikai felírása A koordináta-rendszer kiinduló pontja lesz a robot érkezési célja (0,0). A robot valamely x,y koordinátából Θ kezdeti szöggel indul. A robot ezután elindul a cél felé Egy jól megválasztott pozícióba (xa, ya) helyezett akadály gátolja a robot pályáját, ezért a robotnak valamely irányba fordulással el kell kerülnie azt, ezután tovább folytatnia útját a célig. Jelölje továbbá l a robot céltól mért és p az akadálytól mért távolságát, Θ2 (a blokkvázlaton Θo) a cél szögét és Θ1 (a blokkvázlaton Θa) az akadály szögét a robot haladási irányából nézve. Matematikai összefüggések p = ( x − xa ) 2 + ( y − y a ) 2 l = x2 + y2 V = R (ω j + ωb ) / 2 x = ( R cos Θ(ω j + ωb )) / 2 y = ( R sin Θ(ω j + ωb )) / 2 Θ = R (ω j + ωb ) / 2b A p és l nagyságát koordináta-geometriai, a többit fizikai és
koordináta-geometriai megfontolások egyértelmően adják. Simulink blokkvázlat Simulink segítségével Integrator dobozokkal elıállítottuk x-et, y-t, és Θ-t. A többit az elızı képletekkel számoltuk. A Fuzzy irányítóban szükség volt további szögekre, ezt arctg függvénnyel állítottuk elı, majd elforgattuk a robot nézıpontjába. A Virtual Realityben az XY tengelyeket XZ-re képeztük le, ahol Z-t ellentétesre változtattuk a láthatóság kedvéért. A modellbıl adódóan még a robot modelljét elforgatjuk VR-ben Pi-vel, és segédváltozókat is beveszünk, hogy a megfelelı vektor álljon elı (valamiért a forgatásnál a Signal Expander nem mőködött megfelelıen). A Fuzzy irányítót szintén vektorra kötjük, és a kimeneit rávezetjük a rendszerre, amit majd a VR is feldolgoz. A szögsebességeket nem rendeltük hozzá semmihez, ami egyszerősít a blokkvázlaton. A kerekek így a virtuális valóságban nem forognak, de ez nem is feltétlenül
szükséges. Elég, ha a kocsi mozgását és szögét vizsgáljuk Jelölések: • • • • • világoskék: a robot kinematikai modellje világoszöld: scope-ok narancs: konstansok rózsaszín: VR megjelenítı részei sötétzöld: Fuzzy irányító részei Bemeneti, kimeneti halmazok Bemenet p: az akadály távolsága [0, 35] l: a célpont távolsága [0, 35] Θa: az akadály szöge a robot „elejéhez” viszonyítva [-π,π] rad Θo: a célpont (origo) szöge ugyanígy [-π, π] rad Kimenet ωj: a jobb kerék szögsebessége [-3, 3] rad/s ωb: a bal kerék szögsebessége [-3, 3] rad/s A szabályzó blokkvázlata Tagsági függvények p csak akkor lényeges, ha közel van. ZMF típusú függvény tökéletes l-nél két lehetıséget vizsgálunk. Ha távol vagyunk, és ha célba értünk (home) Az akadály szöge lehet pozitív vagy negatív. Ha 0-hoz közeli, tehát ütközıpályán vagyunk, akkor kell majd kerülni jobbra, illetve balra. A cél szöge
lehet jobbra, balra, vagy pont irányban (null). A jobb kerék szögsebessége lehet negatív, nulla, vagy pozitív. A másik kerék hasonló megfontolással készült. Fuzzy szabályok 1. 2. 3. 4. 5. 6. Ha megérkeztünk, megállunk. (legerısebb szabály) Ha nem vagyunk irányban, akkor forduljunk rá. (gyenge szabály) Hasonlóan az elızıhöz, csak másik irányban. (gyenge szabály) Ha messze vagyunk, és irányba álltunk, lehet menni elıre. (leggyengébb) Ha közel az akadály és jobbra van, térjünk ki balra. (erıs szabály) Ugyanez, csak bal oldali akadály esetén. Kitérés jobbra (erıs szabály) Defuzzyfikációs módszer, egyéb paraméterek type: mamdani andMethod: min orMethod: max defuzzMethod: centroid impMethod: min aggMethod: max input: [1x4 struct] output: [1x2 struct] rule: [1x6 struct] Szabálynézı ablak Fuzzy struktúra [System] Name=fazi Type=mamdani Version=2.0 NumInputs=4 NumOutputs=2 NumRules=6 AndMethod=min OrMethod=max ImpMethod=min
AggMethod=max DefuzzMethod=centroid [Input1] Name=p Range=[0 20] NumMFs=1 MF1=near:zmf,[0.0476 997354497354497] [Input2] Name=l Range=[0 20] NumMFs=2 MF1=far:smf,[0.841 101851851851852] MF2=home:gaussmf,[0.1 0] [Input3] Name=theta a Range=[-1 1] NumMFs=2 MF1=poz:trimf,[0 0.002 1] MF2=neg:trimf,[-1 -0.002 0] [Input4] Name=theta o Range=[-3.14 314] NumMFs=3 MF1=neg:gaussmf,[0.881901604796422 -314] MF2=null:gaussmf,[0.119938618252313 -555e-017] MF3=poz:gaussmf,[0.825459902089451 314] [Output1] Name=omega j Range=[-3 3] NumMFs=3 MF1=null:gaussmf,[0.05 0] MF2=poz:smf,[0.25 211904761904762] MF3=neg:zmf,[-2.13492063492063 -025] [Output2] Name=omega b Range=[-3 3] NumMFs=3 MF1=null:gaussmf,[0.05 0] MF2=poz:smf,[0.2 221428571428571] MF3=neg:zmf,[-1.97619047619048 -02] [Rules] 0 2 0 0, 0 0 0 3, 0 0 0 1, 0 1 0 2, 1 0 1 0, 1 0 2 0, 1 3 2 2 2 1 1 2 3 2 1 2 (1) : (0.5) (0.5) (0.1) (0.8) (0.8) 1 : : : : : 1 1 1 1 1 Szabályozási felületek A mozgás animációja A robot a
kikerülés elıtt célra tart. A kikerülés után ismét célra tart. Az animáció balról nézve Az animáció jobbról nézve. Scope-ok