Spieni Erdélyi Mgyr Tudományegyeem Műszi és Humánudományo Kr Mrosvásárhely Roboprogrmozási nyelv ervezése és ejleszése négy szbdságoú roborchieúrár Készíee: Demeer Zolán Sz: Számíásechni Évolym: V. Tudományos vezeő: Dr. Máron Lőrinc Spieni-EMTE, Műszi és Humánudományo Kr Villmosmérnöi Tnszé XI. Erdélyi Tudományos Diáöri Konerenci Kolozsvár 8. május 3-4.
Trlomjegyzé Kivon...3. Bevezeés...3. A rendszer speciiációi és rchieúráj...6.. A rendszer szerezee, elépíése...6 3. Részlees ervezés...7 3.. Fejlesze roboprogrmozási nyelv...7 3. Fejlesze ompiláor...8 3.. Lexiális elemző...9 3.. Szinius elemző... 3.3. Prncso...4 3.3. Alpelve...4 3.3. Válozóspeciius prncso...5 3.3.. INIT...5 3.3.. LET...5 3.3.3 Nyelvspeciius prncso...5 3.3.3. IF...5 3.3.3. REPEAT...6 3.3.4 Robovezérlési prncso...6 3.3.4. GRIPPER OPEN...6 3.3.4. GRIPPER CLOSE...6 3.3.4.3 DELAY...6 3.3.4.4 SPEED...7 3.3.4.5 ACCEL...7 3.3.4.6 MOVE_TO...7 3.4. Pályervezés...8 3.4.. Polinomiális pályervezés...9 3.5. Összee hibmerián lpuló pályöveő szbályozás...3 3.6. Use cse digrm...6 3.7. Oszálydigrm...7 3.8. Kollborációs digrm...7 3.9. Szevenci digrm...8 4. Köveezeése...8 4. Felhsznál echnológiá...8 4. Mérési eredménye...9 5. Irodlmi jegyzé...3
Kivon Számos ipri olymbn gyrn hsznál eszöz robor mnipulálási, összeszerelési, esési, hegeszési eldo végrehjásár. A roboo lgorimizálhó mozgáso hjn végre. Felprogrmozásu, z előír mozgásu meghározás mérnöö eld. A eldo leírásár úgyneveze roboprogrmozási nyelvee hsználn, melye leheővé eszi roboo mgsbb szinű, elhsználóbrá irányíásá. Ezee progrmozási nyelvee állábn gyáró bizosíj, de ejleszheün sjá progrmozási nyelve is. A dolgozbn egy állm iejlesze négy szbdságoú robor llmzhó roboprogrmozási nyelv erül bemuásr. A megvlósío roboprogrmozási nyelven elhsználó áll ír Assembly-szerű progrmo robon végre ell hjni. A nyelv usíásészlee segíségével bármely robomozgás leírhó. A szover örnyezee bizosí progrmo írásához, szereszéséhez, megigyeléséhez (öveendő pály grius megjeleníése, szbályozási hib válozás robo mozgás során, robor mozgásán 3 dimenzióbn örénő megjeleníése), vlmin robo lcsony szinű eszeléséhez (robo eszelése nyíl hurobn, PD+F szbályozás). A megír progrmo rendszer elemzi (lexiális, szinius elemzés), helyes progrm eseén progrm végrehjásr erül, ellenező eseben rendszer jelzi hibá elhsználón. Kulcsszv: ipri robor, roboprogrmozási nyelv, o-line progrmozás, ompiláor, szinii elemzés, lexiális elemzés, roboirányíás.. Bevezeés A roboprogrmozási nyelve célj, hogy roboirányíás özelebb hozzá elhsználóhoz. A elhsználón rr ell eenie hngsúly, hogy mi szerene robol végrehjni és nem végrehjás módjár. A elhsználón ehá nem ell érenie z irányíás miénjé, elég h műveleee egy mgsbb bszrciós szinen ismeri. Ezen mgsbb szin és vlós irányíás özöi pcsolo roboprogrmozási nyelv eszi leheővé. A elhsználó egy viruális világbn gondolodi, modellezi vlóságo, míg roboprogrmozási nyelv vlós, izii rendszer irányíj. 3
[] lpján. ábr. Roboprogrmozási nyelve műödéséne blorjz Mivel gyárbn roboo hsználói állábn evés ismereel rendelezne z lcsony szinű roboirányíásról, ezér roboprogrmozási nyelvee már z első roboro megjelenése ó észíee roboo elhsználóbrá progrmozásán leheővé éele céljából. Az első ilyen, Assembly-szerű progrmozási nyelve 7-es éve elején jelene meg: z IBM áll ejlesze AUTOPASS [9] nyelv, z Edinborough Egyeemen ejlesze RAPT [3] nyelv, z MIT áll ejlesze LAMA nyelv. Eze nyelve eldorienál nyelve vol, zz végrehjndó eldo egyszerű, Assembly prncsohoz hsonló usíásol lehee leírni. Az AUTOPASS nyelve például iejezeen összeszerelési eldo megoldásár ervezé [9], olymosn ejlődi, m már meserséges inelligenci elemei is hsználj []. A 7-es éve özepén megjelene sruurál roboprogrmozási nyelve. Eze leheővé eé z dsruúrá hsználá. Ilyen vol például VAL [] vgy z IBM áll ejlesze AML []. A VAL nyelve eredeileg PUMA roboro progrmozásához ervezé, de egyszerűsége mi ngyon elerjed []. Az AML nyelvben leheőség vn geomerii pon, ömb, ple, logii ípusú válozó lérehozásár []. Eze nyelve már modern roboprogrmozási nyelve lpji eeé le. A Brunschweigi Műszi Egyeemen ejleszeé High Lp vlmin ZERO++ nevű nyelvee []. A Richrd E. Pis áll észíe Krel nevű nyelv iejezeen didii és oási célo szolgál []. Ez mininyelve [] Pis Snord Egyeemen ro urzusibn hsznál. Ö lpusíássl rendelezi vlmin progrmelágzás és ieráció rlmz. Egy Krel progrmo végrehjó robo cs diszré mozgáso ud végezni. A Krel nyelv egyszerűségéne öszönhee sieré. Számos nyelvre leordío váloz jelen meg. Továbbejlesze váloz z objeumorienál Krel++ progrmozási nyelv. A jpán FANUC Roboics robogyáró cég őén Krel nyelven vlósíj meg roboro progrmozásá []. Megállpíhó, hogy számos progrmozási nyelv szülee világ számos egyeemén, uóözponjábn. A gyorlbn hsznál és lboróriumobn iejlesze roboprogrmozási nyelve épességei és leheőségei özöi szdé zonbn ngyon ngy. 4
Mnpság roboirányíás már nem cs elhsználó áll ír progrm lpján épzelheő el, hnem ár hng vgy ép lpján is. Ilyen, lboróriumbn megloo és modellezésre hsznál progrmozási nyelv Jpánbn iejlesze EusLisp [4], mi már objeumorienál prdigmá öve, és melyne első váloz már 986-bn megjelen. Ezzel nyelvvel leheséges roboro 3D modellezése, ár hngelismerésen, épeldolgozáson lpuló irányíás. A néme Bosch cég áll iejlesze BAPS plus [3] nyelv olymábrá segíségével eszi leheővé z ipri roboro progrmozásá. A griusn megrjzol olymábrá rendszer ordíj progrmóddá ezáll csöenve hibleheősége. Kééle roboprogrmozási módo ülönbözeün meg [] : on-line progrmozás: léezi özvelen összeöeés robol o-line progrmozás: nincs özvelen összeöeés robo és vezérlő progrm özö progrmírás pillnábn Az on-line progrmozás során elhsználju robovezérlő szolgálási. A módszer előnye, hogy helyes, műödő progrm eleezi, egyes pono beníássl dhun meg. Hárány, hogy progrmozás során robo iesi ermelésből. Az o-line progrmozás eseében roboo vezérlő progrm írás és roborchieúr érben elváli. Ebben z eseben nincs szüség sem roborchieúrár sem vezérlőegységre progrm írásához. Egy rendszer ellenőrzi megír progrm lexiális, szinii, szemnii helyességé, szimulációs leheősége bizosíh. Előnye, hogy nem ooz ermelésiesés. Hárány, hogy nem elélenül eleezi helyes progrm. A hibá cs progrm vlós uásánál derülne i. Az állm ejlesze nyelv ámenee épez didii célo szolgáló Krel nyelv és z dsruúrá is ezelő nyelve özö. A bemuásr erülő rendszer didii oncepció is mgábn ogll: usíási egyszerűe, mininyelv erveze pály grius megjeleníése mege ú 3 dimenziós ábrázolás robor lcsony szinű eszelése A progrmnyelv ugynor ezelni ud válozó is, mi már VAL és z AML nyelve sjáosság. A ejlesze nyelv és Pis áll ejlesze Krel nyelv özöi ülönbség, hogy míg egy Krel progrmo végrehjó robo cs diszré mozgáso ud végezni, ddig bemuásr erülő nyelven bármely robomozgás leírhó. A ejlesze nyelv négy szbdságoú roborchieúrá o-line progrmozásá eszi leheővé. A nyelv önnyen bővíheő új usíásol, áervezheő öbb szbdságoú roboo 5
irányíásár. A rendszer áll rjzol grionon nem cs didii, hnem szimulációs éréü is vn.. A rendszer speciiációi és rchieúráj Az állm ejlesze progrmozási nyelv célj leheősége bizosíni elhsználón egy négy szbdságoú robo mgsbb szinű irányíásához. Az ezen nyelven ír progrmn olyn usíássorozá ell lulni, mi robor számár érelmezheő és végrehjhó... A rendszer szerezee, elépíése A rendszer 5 ő részből áll: progrmozási nyelv, ompiláor, pályervező modul, irányíási modul, moniorizálás.. ábr. A rendszer műödéséne blorjz A elhsználó, i lehe ár mérnö, ár evésbé épze szember, egy robovezérlési progrmo ír iejlesze roboprogrmozási nyelven. Az így megír progrmo első lépésben ompiláor dolgozz el. Abbn z eseben, h megír progrm hibmenes, ompiláor generál egy ódsorozo, mi lpján pályervező modul megervezi z előír pályá, mi roborn övenie ell. Ez megerveze pály z irányíási modul bemenee, z irányíási lgorimus ezen pály lpján számolj i minden minvéelben vezérlőjele, mi iüld roborn. A iüldö vezérlőjel robor vlmilyen elmozdulásá eredményezi. A robor vlós helyzeé (pozíció, sebesség, gyorsulás) z érzéelő méri. Eze z do visszármoln z irányíási modulb, vlmin elhsználó számár is megjeleníődne moniorizálás segíségével. 6
3. Részlees ervezés Az előzőeben láu, hogyn pcsolódn z egyes modulo egymáshoz, milyen viszonybn vnn egymássl. Mos lássu részleesen, hogyn is épülne el egyenén. 3.. Fejlesze roboprogrmozási nyelv A nyelvne olyn egyszerű elemee ell rlmzni, melye mérnöö számár önnyen érheőe, áláhó. Mivel nyelv hsználói nem elélenül progrmozó, ezér nyelvi elemene ellően szorosn ell lenniü, zz nem engedheün meg úl ngy szbdságo progrmírón, ellenező eseben nyelv áláhlnná, bonyolulá váli z ipri dolgozó számár. Egy olyn mininyelve ell loni, mi segíhei roboro progrmozásán elsjáíásá. Bármely nyelve le udun írni nyelv nyelvnávl. Bármely nyelvn öveező négyes hároz meg [5] : G = ( N, Σ, P, S), hol N nemermináliso hlmz, N Φ Σ nyelv ábécéje, ermináliso hlmz Σ Φ és Σ N = Φ P helyeesíési szbályo hlmz S mondszimbólum vgy ezdőszimbólum, S N Az állm ejlesze nyelv nyelvná ovábbibn G-vel jelölöm és öveező módon hározom meg: Nemerminális szimbólumo hlmz: N = { < commnds >, < LET >, < INIT >, < MOVE _ TO >, < SPEED >, < ACCEL >, < GRIPPER >, < DELAY >, < REPEAT >, < vr ible >, < number >, < number >, < coniner >, < operor >, < relion >, < chr >, < digi >, < digi > } Terminális szimbólumo hlmz: Σ = { MOVE _ TO, X, Y, Z, T, SPEED, VX, VY, VZ, VT, ACCEL, AX, AY, AZ, AT, IF, ENDIF, ELSE, GRIPPER OPEN, GRIPPER CLOSE, DELAY,.. z, A.. Z,..9, =, <, >, <=, >=,! =, ==, +,,*, /,{,},(,)} Helyeesíési szbályo: I. rész S { <commnds> <commnds> <LET> <INIT> <MOVE_TO> <SPEED> <ACCEL> <IF> <GRIPPER> <DELAY> <REPEAT> } <LET> <vrible>=<coniner><operor><coniner> <INIT> <vrible>=<number> <REPEAT> REPEAT (<coniner><relion><coniner>) { <commnds> <commnds> 7
<MOVE_TO> MOVE_TO X <coniner> Y <coniner> Z <coniner> T <coniner> <commnds> <SPEED> SPEED VX <coniner> VY <coniner> VZ <coniner> VT <coniner> <commnds> <ACCEL > ACCEL AX <coniner> AY <coniner> AZ <coniner> AT <coniner> <commnds> <IF> IF (<coniner><relion><coniner>) { <commnds> <ENDIF> <ENDIF> ENDIF <commnds> ELSE { <commnds> ENDIF <commnds> <GRIPPER> GRIPPER OPEN <commnds> GRIPPER CLOSE <commnds> <DELAY> DELAY <coniner> <commnds> <coniner> <number> <vrible> II. rész <vrible> <chr><vrible> <chr><number> <chr> <chr>..z A..Z <number> <digi><number> <digi> <number>.<number> <number> -<number> <digi>..9 <digi>..9 <relion> < > <= >=!= == <operor> + - * / Mondszimbólum: S A enieben leír nyelvn áll generál nyelv z roboprogrmozási nyelv, melye elhsználó llmz roboii eld leírásár. Az ezen nyelven ír helyes progrm nyelv egy mond. 3. Fejlesze ompiláor A ompiláor z első olyn modul, mi elhsználó áll ír progrmml pcsolb lép. Feld, hogy ellenőrizze, hogy elhsználó áll ír progrm elege esz-e G nyelvnn, zz progrmozási nyelv egy szv-e. H progrm G nyelvn áll generál nyelv egy szv, or progrm helyes, h nem, or z progrm hibás, nem G nyelv áll generál nyelven íródo. A ompiláor é ő modulból épül el: lexiális és szinius elemzőből. A elhsználó áll ír robovezérlési progrm lexiális elemző bemeneére erül. H lexiálisn helyelen progrm, or ejleszőne i ell jvíni progrmbn előorduló lexiális hibá. H progrm lexiálisn helyes, or lexiálisn elemze progrm szinius elemző bemeneére erül. H progrm sziniilg helyelen, or 8
progrmozón ismé i ell jvíni z előorduló, ezúl már szinii hibá. H progrm sziniilg helyes, or szinius elemző imenee öveező modulhoz (pályervezés) erül. Ez olymo szemlélei (3. ábr). 3. ábr. Kompiláor olymábráj A szinius elemző imene egy olyn ódol állomány, mi hgyományos ompiláoro eseében árgyódn elel meg. Ez z állomány háérárolón árolódi, bármior végrehjhó z eredei progrm hiányábn is. Ez z állomány einhejü robor áll végrehjhó progrmn. A ülönbség hgyományos ompiláoro és ejlesze ompiláor özö, hogy míg z első eseben árgyódo processzor hjj végre, ddig másodi eseben árgyód egy mechnii rendszeren, roboron erül végrehjásr. Anlógi lpján jelenhejü i, hogy robor gépi ódj szinius elemző imenei állomány. Megállpíhó ovábbá, hogy ordíási és uási idő elülöníheő egymásól, ugynis szinius elemző imenee nélül is lérejöhe, hogy progrm végrehjódn. Mindeze lpján ijelenhejü, hogy ejlesze rendszer eseében ompiláorról beszélün. 3.. Lexiális elemző Egy progrmozási nyelven ír progrm elemzéséne első lépése nyelv szimbólumin elismerése. Ez eldo lexiális elemző láj el. A lexiális elemző bemenee egy, 9
elhsználó áll roboprogrmozási nyelven ír progrm, melyben nyelv szimbólumi el ell ismerni. Ilyen szimbólumo például ulcsszv, válozóneve, onsns érée sb. A szimbólumo deiníciójár iválón llms reguláris iejezése [4]. Például MOVE_TO ulcsszó árhány ehér szóöz előzhei meg vgy övehei, ezér öveező reguláris iejezéssel írhó le: (b spce)*move_to(b spce) + Kijelenheő ehá, hogy ejlesze roboprogrmozási nyelvben ulcsszv özé eszőleges számú ehér szóöz eheün. A lexiális elemző imenee é állomány: lex.ou bemeni állománybn elismer szimbólumo ódji rlmzz lex.err h bemenee nem sierül lexiálisn elemezni, or rlmzz hib sor- és sizmbólumszámá A lex.exe állomány Flex [5] ülső eszözzel hozm lére. Enne bemenee egy lex.x nevű állomány, mely nyelv szimbólumin megelelő reguláris iejezésee rlmzz. A Flex lex.yy állomány generálj, mi nem más, min egy ANSI C ód. Enne uás során jön lére lexiális elemző megelelő imenee. A lexiális elemző G nyelvn II. részé eljes mérében elismeri, zz válozó, onsns éréee, vlmin z I. rész erminális szimbólumi: MOVE_TO, SPEED, DELAY, ACCEL, pcsos zárójele (progrmbloo özreogó szimbólumo. Minden erminális szimbólumn megelel egy ód. A ódo úgy válszom meg, hogy nyelv bővíése ne oozzon problémá, -5 nyelvhez rozó usíásszerű ulcsszv rozn, míg z 5. ódól ezdődne válozó, számo, zárójele, operáoro sb. A lexiális elemző imenee ehá egy ódsoroz. A erminális szimbólumo ódolásá ogllj össze (. ábláz. A lexiális elemzés uán progrm szövege már nem olvshó. Eől ponól ezdve mindegy, hogy nyelvben milyen ulcsszv dun például cilus megnevezésére: z ngol while vgy mgyr isméeld szv ugynz ódo pjá. Ebből öveezően egy progrmnyelve önnyű áírni bármely más nyelvre, hiszen cs lexiális elemző ell megválozni [4]. H lex.err állomány nem rlmz bejegyzés, z z jeleni, hogy elhsználó áll ír progrm orrásódjá sierül lexiálisn elemezni, és orrásód ódolásá meglálju lex.ou állománybn. Abbn z eseben, h lex.err rlmz bejegyzés, or mindeni hibjelzés rlmzz, hogy hibá orrásód hánydi sorábn, soron belül hánydi szimbólumnál edeze el lexiális elemző.
Megjegyzendő, hogy mindig legelső hib jvíásávl próbálozzun, mjd próbálju meg ismé elemezni progrmo, mivel másodi hib lehe, hogy z első öveezménye.. ábláz A G nyelvn erminális szimbólumin ódji -5 usíáso Lierálo, válozó, operáoro sb. MOVE_TO 5 poziív vlós szám X MOVE_TO prncs prméere 5 progrmválozó 3 Y MOVE_TO prncs prméere 53 + - / * operáoro 4 Z MOVE_TO prncs prméere 54 = operáor 5 T MOVE_TO prncs prméere 55 ( 6 REPEAT 56 ) 7 LET 57 < > <= >=!= == logii operáoro 8 IF 58 { 9 ELSE 59 } GRIPPER OPEN GRIPPER CLOSE SPEED 3 VX, SPEED prncs prméere 4 VY SPEED prncs prméere 5 VZ SPEED prncs prméere 6 VT SPEED prncs prméere 7 INIT 8 DELAY ACCEL AX z ACCEL prncs prméere 3 AY z ACCEL prncs prméere 4 AZ z ACCEL prncs prméere 5 AT z ACCEL prncs prméere 6 ENDIF 3.. Szinius elemző A szinius elemző egy progrmozási nyelv örnyezeüggelen nyelvn lpján elemez [4]. Ez örnyezeüggelen nyelvn hározz meg z usíáso szerezeé, elépíésé. A szinius elemző eld nn megállpíás, hogy elhsználó áll megír progrm nyelvn egy mond-e. Ez úgy leheséges, hogy z elemzőne meg ell loni progrmhoz
rozó levezeési á. A levezeési gyöéreleme mondszimbólum, levelei pedig erminális szimbólumo. Ezee erminális szimbólumo lexiális elemző szolgálj szinius elemzőne. A szinius elemzőne el ell épíenie levezeési gyöéreleme és levele özi részé. H nem léezi egyelen levezeési sem, or progrm helyelen. Az elemzés üggőleges irányá einve é éle elemzési módszerről beszélheün: enről leele elemzés: mondszimbólumból indulun i és helyeesíési szbályo segíségével megpróbálju elérni, hogy levezeési levelei összeolvsv z elemzendő progrmo pju. Ilyen elemzése: LL(), reurzív leszállás módszere sb. lenről elele elemzés: progrmból indulun i és helyeesíési szbályo segíségével megpróbálun eljuni mondszimbólumig: LR(), SLR, LALR sb. Aól üggően, hogy erminális szimbólumo olvsásá szinius elemző milyen irányból végzi, megülönbözeün blról jobbr és jobbról blr elemzésee. A rendszer áll hsznál szinius elemző egyi bemenee lexiális elemző áll generál ódsoroz (lex.ou, mási bemenee pedig nyelvn zon helyeesíési szbályi, melyee lexiális elemző még nem elemze. [6, 7] A szinius elemző z LL() elemző lgorimus vlósíj szüséges, hogy nyelvn eljesísen bizonyos öveelményee: meg. Ehhez z Minden szbály erminálissl ezdődjön Ne legyen öbb leheőség egy nemerminális szimbólum szbályi özö ugynzon erminálisr, zz egy nemerminálishoz rozó összes szbályn ülönböző erminális szimbólumml ell ezdődnie. Ezen öveelménye eljesíése vége en ismeree G nyelvn á ell línun: Nemerminális szimbólumo hlmz: N = { < commnds >, < coniner >, < ENDIF > } Terminális szimbólumo hlmz: Σ = { INIT, LET, REPEAT, MOVE _ TO, X, Y, Z, T, SPEED, VX, VY, VZ, VT, ACCEL, AX, AY, AZ, AT, IF, ELSE, ENDIF, GRIPPER OPEN, GRIPPER CLOSE, DELAY, (,),{,}, < number >, < vrible >, < relion > } Megjegyzendő, hogy z előző nyelvnbn még nemerminális szimbólumén szerepelő <number>,<vrible> és <relion> szimbólumo ebben nyelvnbn már erminális szimbólumén szerepelne, mer lexiális elemző már elismere őe, és elódol. Helyeesíési szbályo: S { <commnds> <commnds> INIT <vrible>=<coniner> <commnds>
<commnds> LET <vrible>=<coniner><operor><coniner> <commnds> <commnds> REPEAT (<coniner> <relion> <coniner>) { <commnds> <commnds> <commnds> MOVE_TO X <coniner> Y <coniner> Z <coniner> T <coniner> <commnds> <commnds> SPEED VX <coniner> VY <coniner> VZ <coniner> VT <coniner> <commnds> <commnds> ACCEL AX <coniner> AY <coniner> AZ <coniner> AT <coniner> <commnds> <commnds> IF (<coniner><relion><coniner>) { <commnds> <ENDIF> <commnds> GRIPPER OPEN <commnds> <commnds> GRIPPER CLOSE <commnds> <commnds> DELAY <coniner> <commnds> <commnds> } <coniner> <number> <vrible> <ENDIF> ENDIF <commnds> <ENDIF> ELSE { <commnds> ENDIF <commnds> Mondszimbólum: S A nemerminális szimbólumo (beleérve mondszimbólumo is) öveező ódolássl szerepelne grmmr.x állománybn:. ábláz A szinius elemző áll hsznál nyelvn nemerminális szimbólumin ódolás Nemerminális szimbólum Kód S - <commnds> - <coniner> -3 <ENDIF> -4 A szbályo ódol ormábn lálhó grmmr.x állománybn. Az állomány első eleme megmondj, hogy hány szbály vn. Minden sor első eleme megmondj, hogy hány szimbólum szerepel helyeesíési szbálybn, másodi szimbólum szbály bl oldlán szereplő nemerminális szimbólum, míg hrmdi szimbólumól ezdődően vn ódolv helyeesíési szbály jobb oldl. A nemerminális szimbólumo negív, míg ermináliso poziív számo jelöli. A szinius elemzőne ehá é bemenee vn: lexiális elemző imenee, és nyelvn szbályi rlmzó grmmr.x állomány. A szinius elemző eld ehá megvizsgálni, 3
hogy lexiális elemző imeneén megjelenő progrm megelel-e nyelvn szbályin. A grmmr.x bemenei állomány lpján elöljü szinius elemző T ömbjé megelelő elemeel. T ömb nem más, min egy ábláz, mely nemerminálison megelelő szbályo rlmzz. Az oszlopindexe erminális szimbólumo ódj, sorindexe nemermináliso ódján boszlú érée. A szinius elemzés ezen ábláz lpján öréni z LL() elemző lgorimusn megelelően. A szinius elemzésne é imenei állomány vn: error.log és sin.ou. Abbn z eseben, h error.log állomány rlmz bejegyzés, or progrmbn szinii hib vn. A hibüzene rlmzz eledeze szinii hib progrmbeli sorindexé, vlmin, hogy hánydi szimbólum sorbn. H error.log állomány nem rlmz bejegyzés, or szinius elemzés sieres vol, zz progrm G nyelvn áll generál nyelv egy mond. Ebben z eseben sin.ou állomány rlmzz robor áll végrehjhó ódo. Ez ód nem más, min robor áll végrehjndó művelee és zo prméerei. Enne ódn z érelmezése és végrehjás már z lcsony szinű irányíás eld. A öveezőben ismereem meghározo progrmozási nyelv szinxisá. 3.3. Prncso A ompiláor imenee egy olyn állomány, mely z eredei robovezérlési progrm egy ódol ormáj. Ez z állomány rlmzz művelee ódji vlmin lierálo, operáoro, elhsználó áll delrál válozó sb. Mondhju, hogy egy robovezérlési progrm műveleeből és művelee prméereiből áll. A öveezőben ismereem prncso szinii ormájá. A öveező jelölésee hsználom: válozónév rerlánc, mi nem ezdődhe számml operndus válozó vgy poziív vlós szám operáor +,-,*,/ rimeii operáoro logii operáor <, >, <=, >=,!=, == logii operáoro [] öelező éré <> opcionális éré 3.3. Alpelve Bármely, ejlesze roboprogrmozási nyelven megír robovezérlési progrm lierálji z R, vlós számo hlmzán érelmezee. A nyelv minden ulcsszvá ngybeűvel ell írni. Bármely progrm progrmblooból épül el, melyee pcsos zárójele jelezne. Mgá 4
eljes progrmo is pcsos zárójele özé ell ennün, mer eljes progrm is egy progrmblon számí. A progrmnyelv ulcsszvi özöi ehér rere számán nincs jelenősége. 3.3. Válozóspeciius prncso A válozóspeciius prncsohoz olyn műveleee sorolo, melye nincsene özvelen és zonnli hássl robor vezérlésére, hnem dároláshoz, rimeii művelee végzéséhez öheőe. 3.3.. INIT Az INIT prncs leheővé eszi elhsználó számár válozó bejelenésé. Szinxis: INIT [válozónév]=[operndus] A válozónév z újonnn bejelene válozó neve, z operndus vlós szám z R -ből vgy egy előzőleg már bejelene válozó neve. 3.3.. LET A LET prncs leheővé eszi egy már előzőleg bejelene válozó módosíásá, rimeii művele végzésé. Szinxis: LET [válozó]=[operndus][operáor][operndus] 3.3.3 Nyelvspeciius prncso A nyelvspeciius prncso csoporjáb cilus, elágzás meghározás rozi. 3.3.3. IF Az IF prncs progrmelágzás esz leheővé egy logii eléel lpján. Szinxis: IF ([operndus][logii operáor][operndus]) { <művele> <művele> <művelen> } [ELSE { <művele> 5
<művele> <művelen> }] ENDIF Egymásb ágyzo elágzáso is leheségese. 3.3.3. REPEAT A REPEAT leheővé eszi prncso cilius végrehjásá. Szinxis: REPEAT ([operndus][logii operáor][operndus]) { <művele> <művele> <művelen> } Egymásb ágyzo REPEAT usíáso is leheségese 3.3.4 Robovezérlési prncso A robovezérlési prncso egóriájáb zo műveleee sorolhó, melye özvelen hássl vnn robor lcsony szinű irányíásár. 3.3.4. GRIPPER OPEN A GRIPPER OPEN prncs hásár inyíli végberendezés megogój. Szinxis: GRIPPER OPEN 3.3.4. GRIPPER CLOSE A GRIPPER CLOSE prncs hásár végberendezés megogój összezár. Szinxis: GRIPPER CLOSE 3.3.4.3 DELAY A DELAY prncs hásár robovezérlés elüggesződi, zz robo prméerén milliszeundumbn megdo időegysége vár, ezen idő lejár uán olyódi z irányíás, robovezérlési progrm végrehjás. Mivel progrmnyelv vlós számol dolgozi, ezér DELAY usíás prméere is lehe vlós szám. A robovezérlés prméer egész részéne bszlú érééig og elüggesződni. Az egész rész viseledése IEEE Sndrd 6
754 4. beezdéséne megelelő, zz h ereíendő szám ponosn é egész szám özé esi, or ereíés eredménye páros szám lesz. Szinxis: DELAY [operndus] 3.3.4.4 SPEED A SPEED prncs segíségével beállíhju robor moorjin mximálisn megengede sebességé. A SPEED prncs négy szbdságoú robor négy moorján z egymásól üggelen sebesség-beállíásá eszi leheővé. Szinxis: SPEED VX [operndus] VY [operndus] VZ [operndus3] VT [operndus4] A VX, VY, VZ, VT prméerérée százlébn érendő, zz z udju beállíni, hogy moor vlós mximális sebességéne hány százléávl szerenén dolgozni. Ez vlós o mximális moorsebesség implemenációbn ódol éré, jelen eseben v = 3. A s operndusi elhsználó áll beállío csulósebessége pedig v = v i hol i =, 4. Alpérelmeze módon operndus i =. 3.3.4.5 ACCEL Az ACCEL prncs segíségével beállíhju robor moorin mximálisn megengede gyorsulásá Az ACCEL prncs négy szbdságoú robor négy moorján z egymásól üggelen gyorsulás-beállíásá eszi leheővé. Szinxis: ACCEL AX [operndus] AY [operndus] AZ [operndus3] AT [operndus4] Az AX, AY, AZ, AT prméerérée százlébn érendő, zz z udju beállíni, hogy moor vlós mximális gyorsulásán hány százléávl szerenén dolgozni. Ez vlós o mximális moorgyorsulás implemenációbn ódol éré, jelen eseben = 5. A s csuló elhsználó áll beállío gyorsulás Alpérelmeze módon operndus i =. operndusi = i hol i =, 4. 3.3.4.6 MOVE_TO A MOVE_TO prncs segíségével robor eljuhju munér egyi ponjából egy mási ponjáb. Mind négy szbdságor meg ell dnun íván végpozíció. A robor mindig z uális pozícióból indul i és elju végpozíciób, zz h é MOVE_TO 7
prncs szerepel egymás uán másodi MOVE_TO ezdőponj z pon lesz, hol robor z első MOVE_TO uán megáll. Szinxis: MOVE_TO X [operndus] Y [operndus] Z [operndus3] T [operndus4] Az operndus, operndus, operndus3 és operndus4 érée z X,Y,Z és T szbdságoo előír oordináái obn iejezve. 3.4. Pályervezés A pályervezés robor érbeli mozgásán megervezése, z előír mozgás meghározás. Ké éle robomozgás ülönbözeün meg: Ponól ponig (Poin To Poin mozgás: robor eljuás ezdőponból végponb oly módon, hogy robor özes állpoi nem onos, csupán z, hogy robor véges időn belül eljusson z előír pozíciób. Ilyen mozgás lpján műödi z állm is implemenál PD+F szbályozás, melye erjedelmi orláo mi nem ismeree. Ilyen szbályozás hsználo roborchieúr csulónéni eszelésénél. Pályöveés: cél ugyncs végpon elérése oly módon, hogy ezdőpon és végpon özö minden időpillnbn előírom robo íván pozíciójá, sebességé, gyorsulásá. 4. ábr. A pályervező lgorimus helye roboirányíási rendszerben Az előír pozíció melle meg ell dnun z előír sebessége és gyorsulás is mozgás minden időpillnábn. Ez z előír pozíció első- illeve másodrendű deriválj lesz, ehá z előír pozíción észeresen deriválhó időüggvényne ell lennie [8]. x = x( v = v( = x& ( = ( = && x( 8
H ez három időüggvény minvéelezzü egy T s minvéeli periódussl, három ponsorozo nyerün három időüggvényből. Az állm észíe pályervező lgorimus T s = 5ms minvéeli periódussl dolgozi. A ejlesze rendszer pályervezés csulóoordináár végzi, mi z jeleni, hogy özvelenül robor csulói vezérlő mooro pályájá írju elő. Enne előnye, hogy is számíási ölséggel jár, vlmin mximális sebesség és gyorsulás önnyen meghározhó bevozó dlpjából. Hárány viszon, hogy munérben é pon özöi mozgás nem prediálhó, mi üözésveszéllyel jár. bemenee. A pályervező lgorimus áll iszámol ponsoroz lesz z irányíási lgorimus 3.4.. Polinomiális pályervezés A pályervezés egy do csulór muom be, z lgorimus mind négy szbdságor ugynz. Ado: x ezdei pozíció, z illeő csuló vezérlés elői pozíciój x végpozíció, mi MOVE_TO prnccsl z illeő csulón megelelő prméerrel lehe beállíni v csuló elhsználó áll beállío mximális sebessége csuló elhsználó áll beállío mximális gyorsulás Feld: Hározzu meg x (, v (, ( d d d időüggvényee oly módon, hogy hsználju i mximális sebessége és mximális gyorsulás. Mennyi idő l érezi meg csuló végpozíciób? Legyen: mozgás első ázisán vége mozgás másodi ázisán vége csuló végpozíciób vló megérezéséne időponj, mozgás vége 9
5. ábr. Pályervezés I.A. eseben 6. ábr. Pályervezés II.A. eseben Ké ő esee ülönbözeün meg: I. x x > x( ) Ebben z eseben z x és x pono özi ávolság elegendő hhoz, hogy elérjü mximális sebessége. Ké lesee ülönbözeün meg: A. x > x, zz ezdei pozíció végpozíció l vn. Lásd (5.ábr) A mozgás három szszr bonhju: i) <, gyorsulás poziív ( = λ v( = λ + λ3 x( = λ + λ + λ 4 5 6 () A mozgás ezdeén gyorsulás mximális mindddig, míg el nem érjü mximális v sebessége. Ez hározzu meg: pillnbn öréni meg. A λ, i =, 6 éréee öveező módon i ( ) = v() = = λ v& ( = λ = ( = x() = λ = x 6 x& ( = λ + λ = v( = 4 3 = λ 5 λ = < λ = 4, λ = 5 Az ()-be behelyeesíve meghározo λ, i =, 6 éréee pju, hogy i
Mivel ( = v( = x( = + x () -ben elérjü mximális sebessége, ezér írhju, hogy v ( = ) = = v v ii) < iii), sebesség onsns ( = v( = v x( = v = x v x v ( ) +, gyorsulás negív + x (3) ( = v( = = x( = v + ( ) + v ( ) + v ( ) + x v (4) B. x < x, zz ezdei pozíció végpozíció ele vn i) <, gyorsulás negív ( = v( = x( = v = + x (5) ii) <, sebesség onsns ( = v( = v x( = v = x v x v ( ) + x (6)
iii), gyorsulás poziív ( = v( = = x( = v + ( ) v ( ) II. x x < x( ). v ( ) + x v + (7) Ebben z eseben z x és x pono özi ávolság nem elegendő hhoz, hogy elérjü v mximális sebessége. Ké lesee ülönbözeün meg: A. x > x, zz ezdei pozíció végpozíció l vn. Lásd (6.ábr) i) <, gyorsulás poziív ( ) v ( ) x ( ) = = = = x x + x (8) ii), gyorsulás negív ( = v( = ( ) + x x x( = ( ) + x x ( ) + x + x (9) = x x B. x < x, zz ezdei pozíció végpozíció ele vn i) <, gyorsulás negív ( = v( = x x( = = x + x ()
ii), gyorsulás poziív ( = v( = ( ) x x x( = ( ) x x ( ) + x + x () = x x A eni pályervezési lgorimus mind négy szbdságo x és x oordináájár el ell végezni. Az így po (), (3), (4), (5), (6), (7), (8), (9), (), () időüggvényee T s minvéeli periódussl minvéelezni ell. Az lgorimus imene három ponsoroz: Pozíció: x r [i], hol i =, n, n = Ts Sebesség: v r [i], hol i =, n, n = Ts Gyorsulás: r [i], hol i =, n, n =, Ts hol [] z egész rész jeleni. Ez három ponsoroz egy do csuló eseében z irányíási lgorimus bemenee. Könnyen beláhó, hogy z így erveze pály időben opimális. 3.5. Összee hibmerián lpuló pályöveő szbályozás Az irányíási lgorimus eld bemene lpján meghározni hrdwre-re iüldendő vezérlőjele. A szbályzás bemenee pályervező lgorimus áll generál ponsoroz, vlmin z érzéelő áll robo vlós prméereiről szolgálo inormáció. Az irányíási lgorimus eze lpján számolj i ülön-ülön z uális minvéelben szbdságoon megelelő mooror iüldendő eszülségszine, vlmin mooro orgási irányá. Legyen x r [ z i. minvéelben. csuló pályervezési lgorimus áll iszámol, előír pozíciój v r [ z i. minvéelben. csuló pályervezési lgorimus áll iszámol, előír sebessége 3
r [ z i. minvéelben. csuló pályervezési lgorimus áll iszámol, előír gyorsulás Algorimus: x [ z i. minvéelben. csuló vlós pozíciój v [ z i. minvéelben. csuló vlós sebessége [ z i. minvéelben. csuló vlós gyorsulás. lépés: Meghározom x [, v[ éréee Mind négy moorr egy-egy 5 beoszássl rendelező inremenális dó vn szerelve. Az inremenális dó áll generál impulzussoroz egy számláló bemenee. Minden minvéelben iolvsom számláló rlmá, mjd számláló ovább számol. A mooro mximális sebessége vlmin z inremenális dó beoszásszám nem eszi leheővé számláló öbbszöri úlcsordulásá, ezér z i. minvéelben. moor revenciáj z lábbi módon írhó: c i, c i, ci, ci,, h ci, ci, Ts req[ =, hol c + ci ci,,, h ci, < ci, Ts. számláló rlm z i. minvéelben. számláló rlm z (i-). minvéelben c. számláló mximális érée. Jelen eseben c = 65535 A revenci segíségével számolhó mooro sebessége: A mooro pozíciój: 36 req[ v[ = 5 x[ = x[ i ][ + T. lépés: Meghározom minden moor vezérlőjelé Legyen S[ v[ v [ + ( x[ x [ ) s o s v[ + v[ i ][ = r λ r hibüggvény, hol λ iejezi, hogy. moornál mennyire onos pozícióhib. Az i. minvéelben. moorr vezérlőjel öveezőéppen számolhó: u[ = ( r[ i, λ ( v[ vr [ ) S Ks + Kv v[ ), hol J J. moorr csol erhelés eheelenségi nyomé Ks szbályozó erősíése 4
Kv. moor eleromooros állndój 3. lépés: Mivel minden moornál léezi Coulomb súrlódás, ezér vezérlőjele ompenzálni ell zzl üszöbeszülséggel, hol moor álló helyzeből elezd orogni. Nevezzü ez üszöbeszülsége osze eszülségne. Ez z éré mooronén válozi, z állm hsznál mooronál [,3] mv-os románybn lálhó. Az osze eszülsége igyelembe véve vezérlőjel öveező: u[ + V u[ = u[ V V ose. moor osze eszülsége. ose ose,, h h u[ >, hol u[ < 4. lépés: Szuráció. Ann elerülése vége, hogy egy moorr se erüljön úl ngy eszülség, imenő vezérlőjele orláozni ell. A vezérlőjel cs [ u + u ] ; rományból vehe el éréee. u u[ = u,, h h u[ < u u[ > u Az állm hsznál mooronál = 5 mv, =, 4 u. 5. lépés: Vezérlőjel iüldése 6. lépés: Számlálóéré, revenci, pozíció, sebesség elmenése. c i, = c i, req[ i ][ = req[ v[ i ][ = v[ x[ i ][ = x[ 7. lépés: vissz z. lépéshez mindddig míg i, zz vn még elem pályervező Ts lgorimus áll meghározo ponsorozbn. 5
3.6. Use cse digrm A use cse digrm szemlélei rendszer uncionális műödésé, elhsználó (Progrmmer) áll igénybe veheő rendszerunció. 7. ábr. A rendszer usecse digrmj 6
3.7. Oszálydigrm Az oszálydigrm bemuj, hogy rendszer 5 ő omponensé hogyn ervezhejü meg oszályor lebonv z objeumorienál prdigm lpján. 8. ábr. A rendszer oszálydigrmj 3.8. Kollborációs digrm A ollborációs digrm szemlélei rendszer egyes omponensei özöi uncionális pcsolo. 9. ábr. A rendszer ollborációs digrmj 7
3.9. Szevenci digrm A szevenci digrm rendszer időbeni uncionális műödésé szemlélei. 4. Köveezeése. ábr. A rendszer szevenci digrmj 4. Felhsznál echnológiá A rendszer őén C# nyelven íródo Microso Visul Sudio.NET 3 örnyezeben.net.-es echnológiá elhsználv Microso Windows XP operációs rendszer l. Az Advnech PCI 78-s és Advnceh PCI 73-s áryá driveréne buroló oszályá (AdvnechDriver) Mnged C++-bn írm. A lexiális elemző z állm leír reguláris iejezése és z egyes reguláris iejezésne megelelő progrmód lpján ülső Flex eszözzel hozm lére. 8
4. Mérési eredménye Az állm ejlesze rendszer elhsználó számár leheővé eszi egy négy szbdságoú roborchieúr mgsbb szinű irányíásá. A elhsználón rr ell oncenrálni, hogy mi szerene elérni és nem rr, hogy hogyn szerené. Láu, hogyn épül el egy ilyen rendszer, melye ő omponensei, hogyn épződi le roboprogrmozási nyelven megír progrm lcsony szinű irányíássá. Mivel rendszer Windows plormon ejleszeem, ezér igyelme ell ordíni z időzíése érdésére. Közudo, hogy mulising operációs rendszerenél hiáb állíun be egy időzíési érée, z operációs rendszer nem bizosíj ezen éré ponos berásá. Az időzíés ponosság ügg processzor erhelségéől, zon szál prioriásáól, melyen z időzíés lálhó (ez lehe ár őszál is), beüemeze, uhó, zonos prioriású szál számáól vlmin mgáól processzor gyorsságáól. Egyprocesszoros rendszereben z zonos prioriású szál zonos processzoridő-szeleee pn. Ez z időszele Windows XP eseében ms ngyságrendű. Mivel ejlesze llmzásbn onos z időzíés, ezér mérésee végezem minvéeli periódus opimális megválszás céljából. A mérés egy Ahlon XP 6+ processzoron végezem. A cél: megállpíni, hogy egy ms-os időzíő milyen ponossággl rhó ülönböző prioriású szálon. A mérés processzor %-os erhelése melle oly. Az eredménye összeogllásá (3. ábláz rlmzz. Minden eseben mérésből számol mérési eredmény erül áblázb öveező éple lpján: szál uási ideje vlós idődőzíési idő = Az időzíés rlmzó szál időzíés hj végre. Ké időzíés özi vár idő ms. 3. ábláz Vlós időzíési érée ms-os időzíés eseében processzor %-os erhelése melle Szál prioriási szinje Vlós időzíés ms eseében lcsony 45ms normál li 43ms normál 39ms normál ölöi 34ms mgs 7ms 9
A processzor 5%-os erhelésére számív és robovezérlés végző szál mgs prioriású szinre emelésével rendszer minvéeli periódusá 5ms-bn hározm meg. Ponos időzíés vlós idejű operációs rendszer, vgy időzíő ármör segíségével oldhó meg. A ovábbibn négy szbdságoon végze mérésee muo be. Hsonló griono rendszer hsznál során elhsználó áll is elérheőe, bár ezen griono ő célj hibellenőrzés és szbályozási prméere minél ponosbb hngolás. Minden robovezérlési progrm griusn szemléleheő. A roborchieúrábn mooro áéelen ereszül hjjá meg csuló. Legyen z áéeli rány η. Az egyes csuló pozícióján ponosság =,4 csuló sorszám mx( e ε ) =, hol η mx( e ). csuló pozícióhibáján mximum szbályozás során. ábr. A pozícióhib válozás z első szbdságor. ábr. A pozícióhib válozás másodi szbdságor 3. ábr. A pozícióhib válozás hrmdi szbdságor 4. ábr. A pozícióhib válozás negyedi szbdságor 3
5 ábr. Péld rendszer áll megerveze összee pályár 6 ábr. 3 csuló pozícióválozás do roboirányíási progrm eseében 3
5. Irodlmi jegyzé [] WAHL, F. M. THOMAS, U.. Robo Progrmming - From Simple Moves o Complex Robo Tss. Insiue or Roboics nd Process Conrol Technicl Universiy o Brunschweig. hp://www.rob.cs.u-bs.de/conen/3-reserch/3- publicions/downlod/uh 5_worshop_sb_b4.pd Megeinve: 8.3.5 [] hp://en.wiipedi.org/wii/vrible_assembly_lnguge Megeinve: 8.4.5 [3] hp://www.ipb.in.ed.c.u/arg/ Megeinve: 8.4.5 [4] hp://www.el.go.jp/~msui/eus/ Megeinve: 8.4. [5] CSÖRNYEI Zolán KÁSA Zolán 7. Formális nyelve és ordíóprogrmo. Kolozsvári Egyeemi Kidó. Bbeş-Bolyi Tudományegyeem [6] CSÖRNYEI Zolán 6. Frodíóprogrmo. Typoex. Budpes [7] CSÖRNYEI Zolán. Frodíási lgorimuso. Erdélyi Tnönyvnács. Kolozsvár [8] LEWIS, Frn L. DAWSON, Drren M. ABDALLAH, Choui T. 4. Robo Mnipulor Conrol. Mrcel Deer. Inc., NY [9] LIEBERMAN, Lwrence I. WESLEY, Wesley A. 977. AUTOPASS: An Auomic Progrmming Sysem or Compuer Conrolled Mechnicl Assembly. IBM Journl o Reserch nd Developmen. New Yor. hp://www.reserch.ibm.com/journl/rd/4/ibmrd4d.pd Megeinve: 8.5.9 [] hp://en.wiipedi.org/wii/krel_%8progrmming_lnguge%9 3
Megeinve: 8.5. [] hp://de.wiipedi.org/wii/minisprche Megeinve: 8.5. [] CSÁKI Tibor 6. Roboechni elődásvázl. Misolci Egyeem, Szerszámgépe Tnszé. hp://www.szg.uni-misolc.hu/~csi/robo.pd Megeinve: 8.5.9 [3] hp://opeus.sdi.i/oneuomiolbororio/roboi/baps_plus_en.pd Megeinve: 8.5. [4] CSÖRNYEI Zolán 5. Fordíóprogrmo elemzési lgorimusi. Inormii lgorimuso II,. ejeze. ELTE Eövös Kidó. Budpes. hp://www.ms.spieni.ro/~ing/www/pges/omp/csornyei.pd Megeinve: 8.5. [5] hp://lex.sourceorge.ne/ Megeinve: 8.5. 33