Robotkar modellezés. Készítette: Dévényi Péter (2011) Simulink indítása: Matlab konzolban simulink parancs beírásával. A SimMechanics elérése:

Hasonló dokumentumok
Robotok inverz geometriája

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

Infobionika ROBOTIKA. XI. Előadás. Robot manipulátorok III. Differenciális kinematika. Készült a HEFOP P /1.0 projekt keretében

Mechatronika segédlet 10. gyakorlat

Infobionika ROBOTIKA. IX. Előadás. Robot manipulátorok I. Alapfogalmak. Készült a HEFOP P /1.0 projekt keretében

Számítógépes geometria (mester kurzus)

Denavit-Hartenberg konvenció alkalmazása térbeli 3DoF nyílt kinematikai láncú hengerkoordinátás és gömbi koordinátás robotra

Függvények ábrázolása

Merev testek mechanikája. Szécsi László

Forgattyús mechanizmus modelljének. Adams. elkészítése, kinematikai vizsgálata,

Robotika. Kinematika. Magyar Attila

Jelek és rendszerek Gyakorlat_02. A gyakorlat célja megismerkedni a MATLAB Simulink mőködésével, filozófiájával.

Quadkopter szimulációja LabVIEW környezetben Simulation of a Quadcopter with LabVIEW

MATLAB. 6. gyakorlat. Integrálás folytatás, gyakorlás

Az ipari robotok definíciója

A mechanika alapjai. A pontszerű testek kinematikája. Horváth András SZE, Fizika és Kémia Tsz szeptember 29.

Tárgymutató. dinamika, 5 dinamikai rendszer, 4 végtelen sok állapotú, dinamikai törvény, 5 dinamikai törvények, 12 divergencia,

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Mérési útmutató Robotkar inverz geometriája (és irányítása)

Négycsuklós mechanizmus modelljének. Adams. elkészítése, kinematikai vizsgálata,

Kinematika szeptember Vonatkoztatási rendszerek, koordinátarendszerek

Gauss elimináció, LU felbontás

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

A LEGO Mindstorms EV3 programozása

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Intelligens hatlábú robot kinematikai vizsgálata

M-Fájlok létrehozása MATLAB-ban

HA8EV ORBITRON Programmal vezérelt Azimut/Elevációs forgató elektronika v10.0

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

9. SZERSZÁMOK POZÍCIONÁLÁSA

Neumann János Számítógép-tudományi Társaság Programozás, robotprogramozás szakkör Három félév 3 * 8 foglalkozás

Mechatronika segédlet 11. gyakorlat

Robotkiszolgáló-rendszer kinematikai szimulációja

Maple: Deriváltak és a függvény nevezetes pontjai

Delphi programozás I.

Baran Ágnes. Gyakorlat Függvények, Matlab alapok

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Robotirányítási rendszer szimulációja SimMechanics környezetben

MATLAB. 3. gyakorlat. Mátrixműveletek, címzések

Transzformációk. Szécsi László

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

Mester Gyula 2003 Intelligens robotok és rendszerek

3. jegyz könyv: Bolygómozgás

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

New Default Standard.ipt

VisualNastran4D. kinematikai vizsgálata, szimuláció

Az RM 01 típusú PUMA robot programozása

Matematika (mesterképzés)

(kidolgozta: Dr. Nagy Zoltán egyetemi adjunktus)

BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM

A végeselem módszer alapjai. 2. Alapvető elemtípusok

Szimulációs technikák

INTELLIGENS ROBOTOK ÉS RENDSZEREK

MATLAB. 8. gyakorlat. Differenciálegyenletek

8. Laboratóriumi gyakorlat INKREMENTÁLIS ADÓ

VIK A2 Matematika - BOSCH, Hatvan, 3. Gyakorlati anyag. Mátrix rangja

Soros felépítésű folytonos PID szabályozó

KÖRMOZGÁS, REZGŐMOZGÁS, FORGÓMOZGÁS

MÁTRIXFÜGGVÉNYEK, SAJÁT FÜGGVÉNYEK, GRAFIKA

MATLAB alapismeretek II.

IV. LEGO Robotprogramozó Országos Csapatverseny

Mechanika Kinematika. - Kinematikára: a testek mozgását tanulmányozza anélkül, hogy figyelembe venné a kiváltó

Matlab Fuzzy Logic Toolbox

A mechanika alapjai. A pontszerű testek dinamikája

MODELLEZÉS - SZIMULÁCIÓ

KARAKTERFELISMERÉS AZ EVASYS-BEN

Tömegpontok mozgása egyenes mentén, hajítások

Pneumatika az ipari alkalmazásokban

Az alábbi fogalmak és törvények jelentését/értelmezését/matematikai alakját (megfelelő mélységben) ismerni kell: Newtoni mechanika

Cella létrehozása. A roboguide programot elindítva az 1.ábra szerinti bejelentkező ablakot kapjuk.

Az ábrán a mechatronikát alkotó tudományos területek egymás közötti viszonya látható. A szenzorok és aktuátorok a mechanika és elektrotechnika szoros

rnök k informatikusoknak 1. FBNxE-1 Klasszikus mechanika

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

3. ZH-ban a minimum pontszám 15

Feladatok megoldásokkal az első gyakorlathoz (differencia- és differenciálhányados fogalma, geometriai és fizikai jelentése) (x 1)(x + 1) x 1

2014/2015. tavaszi félév

Hibadetektáló rendszer légtechnikai berendezések számára

Szolgáltatói Adminisztrátori leírás

4_Gnuplot1. October 11, Jegyzetben az 3. fejezet (36-től 52.-ig oldalig).

(Forrás:

Tamás Ferenc: Nevezetes szögek szögfüggvényei

CAD-CAM-CAE Példatár

Memento kurzus: Matlab bevezető

Tárgy. Forgóasztal. Lézer. Kamera 3D REKONSTRUKCIÓ LÉZERES LETAPOGATÁSSAL

Közönséges differenciálegyenletek megoldása Mapleben

Széchenyi István Egyetem. Informatika II. Számítási módszerek. 5. előadás. Függvények ábrázolása. Dr. Szörényi Miklós, Dr.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Trigonometria II.

Matlab alapok. Baran Ágnes. Grafika. Baran Ágnes Matlab alapok Grafika 1 / 21

Baran Ágnes. Gyakorlat Halmazok, függvények, Matlab alapok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 34

Robotika. Alapok. Helfenbein Tamás

A számok kiíratásának formátuma

Robottechnika. 1. Bevezetés. Ballagi Áron Automatizálási Tanszék

Bevezetés a MATLAB programba

VI. Robotprogramozó Országos Csapatverseny évfolyam

Az éjszakai rovarok repüléséről

BONYOLULT TÁLBAN MOZGÓ GOLYÓ

Gépészeti rendszertechnika (NGB_KV002_1)

Az Object Bender. Bevezető. Letöltés. A parancssoros felület kapcsolói

0-49 pont: elégtelen, pont: elégséges, pont: közepes, pont: jó, pont: jeles

Annak a function-nak a neve, amiben letároltuk az egyenletünket.

Átírás:

Robotkar modellezés Készítette: Dévényi Péter (2011) Néhány nagyon alapvető Matlab tudnivaló: Ha Matlab kódot akarunk írni akkor a következőt kell tenni. File->New->Script. Ezzel egy.m kiterjesztésű file-t hozunk létre. A Robotics Toolboxos feladatot ilyen állományban kell megírni. Simulink indítása: Matlab konzolban simulink parancs beírásával. A SimMechanics elérése: Simulink->SimScape->SimMechanics Új simulink feladathoz létrehozásához a következőt kell tenni: Simulinkben File->New- >Model. Ez létre fog hozni egy.mdl kiterjesztésű állományt. Használjuk a Súgót, mert szinte minden le van írva benne. Robotics Toolbox: Telepítés: A RoboticsToolbox.zip tartalmát másold a Matlab/Toolbox mappába, majd a Matlabban File->Seth Path és add meg az elérési utat. Indítás: Amennyiben demókat szeretnénk megtekinteni akkor Matlab konzolba írjuk be az rtdemo parancsot. Segédanyag: Kövesi-Nagy Dániel által fordított RoboticsToolbox.doc leírás. Itt minden fontos információt megtaláltok, illetve a honlapjáról (http://www.staff.u-szeged.hu/~kndani/ ) tudtok mintapéldákat elérni. Példa feladat megoldása: Először is hozzunk létre egy üres.m file-t. Robotkar létrehozása: link utasítással hozunk létre új szegmenst. link([alpha a theta d sigma(r/p)]), ahol az első négy tag a D-H feladatból ismert négy paraméter, az sigma(r/p) pedig megadja, hogy a csukló rotációs sigma=0 vagy transzlációs sigma!=0. A forgatásokat érdemes radiánban megadni, mintahogy a példában is látszik. Példa: L{1} = link([pi/2 0.0 0 0.0 0]); Amennyiben dinamikát is szeretnénk számolni, az egyes szegmenseknek megadhatunk tömeget (L{1}.m), tömegközéppont koordinátáját (L{1}.r), áttétel arányt (L{1}.G), motor tehetetlenségét (L{1}.Jm), szegmens tehetetlenségi tenzorát (L{1}.I) Példa: L{1}.m = 0.23;

L{1}.r =[0 0 0]; L{1}.G=1; L{1}.Jm = 0.1; L{1}.I=I; A robot létrehozása a robot() utasítással történik. Megadhatunk a robotnak saját nevet, illetve gravitációt is. Példa: myrobot=robot(l); myrobot.name = 'Leg'; myrobot.gravity = [0 0 g]; A robotnak megadhatunk pályát, amely mentén haladhat. Ehhez definiálni kell egy idővektort. Illetve a szimulációs időt. Példa: t = [0:.01:1]; tab = [t 1+t 2+t 3+t 4+t 5+t]; A pálya pontjainak meghatározásához, használhatjuk a következő utasításokat például. transl(), amely megadja a transzláció homogén transzformációs mátrixát, rotx(), roty(), rotz(), melyek a megfelelő tengely körüli forgatás transzformációs mátrixát adják meg. Példa: T0 = transl(13, 0, 0); T1 = transl(13, 45, 0); T2 = rotx(40); A pálya kiszámításához a ctraj() utasítást lehet használni. Két pontot, és a pálya megtételéhez szükséges időt kell megadni neki. Példa: Tf0 = ctraj(t0, T1, length(t)); A cat() utasítással összekonkatenálhatjuk a részpályákat a megfelelő dimenzió mentén. Példa: Palya=cat(3, Tf0, Tf1); Amennyiben inverz kinematikát szeretnénk számolni a ikine() utasítást kell használni. Példa: qik=ikine(myrobot, Tf13, Q, M); ahol az első paraméter a robotunk, aminek a kinematikáját számoljuk, második a pálya, amelyen az inverz kinematikát számljuk, a harmadik kezdeti érték (általában Q=[0 0 0]), és a negyedik egy maszk, mellyel a 6 szabadsági foknál kevesebbel rendelkező robotok szabadságfokát lehet kimaszkolni.

M=[rotx roty rotz transx transy transz], és minden érték vagy 0 vagy 1 lehet az adott szabadságfok meglététől függően. Az inverz kinematika során csuklópozíciókat (illetve ennek deriváltjait is a Toolboxban) fogunk kapni a megadott pálya világkoordinátái alapján. Példa: [q0,q0d,q0dd] = jtraj(qik(1,:), qik(101,:), t); ahol a jtraj() első két paramétere a pálya két állapotát jelölik, míg a harmadik a pálya elemszámot, ami az idővektor (korábban t = [0:.01:1];) elemszámával egyenlő. Amennyiben dinamikát (inverz dinamikai feladat megoldása) is szeretnénk számolni az rne() utasítást kell használnunk. Példa: tau0 = rne(myrobot, q0, q0d, q0dd); Az első paraméter a robotunk, a második, harmadik, negyedik, sorrendben a csuklópozíció, csuklósebesség, csuklógyorsulás. Ha futási időt szeretnénk mérni, akkor a mérendő folyamat elé rakjuk a tic majd utána a toc utasítást. Az eredményeinket ki is tudjuk rajzolni. A kirajzoláshoz a plot() parancsot használjuk. Példa: plot(tab, tau(:,1:1)/10, 'r'); Az első paraméter az x tengely menti érték, a második az y tengely menti, a harmadik pedig a kirajzolás színe. Ha szeretnénk a tengelyeket elnevezni akkor használjuk az xlabel() és ylabel() parancsokat. Példa: xlabel('time (s)'); ylabel('joint torque (mnm)');

Ha több plotot akarunk egy ablakban, de mindegyik plotot külön kirajzolva, akkor a subplot() utasítást használjuk. Példa: subplot(3,1,1); plot(tab, tau(:,1:1)/10, 'r'); subplot(3,1,2); plot(tab, qdd(:,1:1), 'g'); subplot(3,1,3); plot(tab, gl(:,1:1)/10, 'b'); A szimuláció animálása a következőképpen lehetséges: figure(2); plot(myrobot, qik); Ezzel a robotunk végre fogja hajtani a qik-ban letárolt pályát. Simulink SimMechanics: SimMechanicox Toolbox célja, hogy komplex fizikai rendszereket tudjunk szimulálni és modellezni. A rendszer numerikus módon végzi a modellezést. Egy robotkar létrehozásához, hozzunk létre egy új.mdl filet. Feladat egy egyszerű robotkar létrehozása. Minden fizikai rendszernél definiálni kell a talajt és a környezetet. Ehhez nyissuk meg a következőt a Simulinkben: Simscape->Simmechanics- >Bodies és húzzuk az üres állományunkba a Ground és Machine Environment dobozokat. A

Az előbbi definiálja a talaj pozícióját (és tulajdonképpen a világkoordináta rendszer origóját). Érdemes itt a show machine environment portot bepipálni, hogy a talajt hozzákapcsolhassuk a környezethez. A Machine Environmenttel beállíthatjuk a gravitációt, dinamikai vizsgálat típusát, vizualizációt... stb. azaz a modellezési környezetet. Ezek után már csak a csuklókat és a szegmenseket kell létrehozni. A Ground-hoz közvetlenül nem kapcsolhatunk szegmens, csak csuklót. Vegyük a Joints-ok közül a Weld csuklót. Ez egy passzív csukló, amivel a robot talapzatát (vagy éppen a talaj fizikai megjelenését) tudjuk definiálni. A Weld egy passzív csukló (azaz nem végez forgást vagy tarnszlációt). A csuklókat megnyitva, megadhatjuk, hogy mi legyen a referenciaa koordinátarendszer, illetve, hogy melyik tengely mentén/körül hajtsa végre a mozgást (Weld esetében ez 0, hiszen ez egy rögzített passzív csukló). A dobozkán a két betű B és F a Base-t és a Follower-t jelenti, értelemszerűen az előző szegmenst a B-hez kötjük és a következőt az F-hez. A talapzat szegmensét (vagy talajszegmens) egy Body elemmel modellezzük. A Body-t megnyitva, beállíthatjuk szegmenset alkotó pontok koordinátáit, azok viszonyítási pontját és koordinátarendszerét, tömegét, tehetetlenségi tenzorát. Érdemes minden Body-t, úgy beállítani, hogy az előző jointhoz kapcsolódó pontja a szegmensnek legyen Adjoining viszonyítású, a többi pontot ehhez képest kell megadni.

Ahhoz, hogy lássuk a lemodellezett robotkarunkat a következőt kell beállítani:.mdl fileban- >Simulation->Configure parameters->simscape->simmechanics->show animation during simulation kipipálása. A többi szegmenst és csuklót a fenntebb említett módon kell megadni.

Minden szegmenshez és csuklóhoz megadhatunk aktuátorokat szenzorokat, megszorításokat, kezdeti feltételeket. Az aktuátorokat alkalmazhatjuk, a külső erők modellezésére is, nemcsak vezérelt meghajtásra. Példa: A csuklóinkat akarjuk meghajtani, például úgy, hogy azok szinusos pályákat írjanak le. A megtett pályát pedig meg akarjuk jeleníteni.

A szenzorokat és aktuátorokat a SimMechanics->Sensors and Actuators blokkban találjuk. Megynyitva ezeket, hogy mivel szeretnénk meghajtani az aktuátort (pozíció/sebesség/gyorsulás vagy nyomatékkal), illetve hogy mit akarunk mérni (mozgást vagy erőt). Mivel csuklókat akarunk meghajtani, meg kell adnunk a jointjainknak új portokat, ahova beköthetjük ezeket. Ehhez meg kell nyitnunk a joint dobozunkat és beállítani a Number of sensor/actuator ports-ot a megfelelő számra. Az aktuátornak mozgást adok meg a példában azaz pozíció/sebesség/gyorsulás hármast kér inputnak. A matematikai függvények, jelirányítás (pl. mux/demux), jelforrások (pl. a szinusz jelünk) a Simulinkben a Simulink Toolboxban találhatóak a megfelelő blokkban. A példában a szinuszjel a pozíciót adja, amelyből deriválom a sebességet és a gyorsulást, majd multiplexálom a három jelet, mert csak egy bemenetet fogad az aktuátor. Ha meg akarjuk jeleníteni az eredményeket, akkor ezt a Simulink->Sinks blokkban lévő elemekkel tehetjük meg. A példában egy Scope-ot használok, mellyel a kimenet grafikonját jelenítem meg, ami a

példában a csukló elfordulási szöge. A Scope-ot megnyitva a Scope parameters megnyitva beállíthajuk, hogy a scope-unknak mennyi bemenete legyen. Megjegyzés: A jegyzet tartalmazhat hibákat, ha valaki felfedez egyet, akkor nyugodtan jelezze e-mailben.