Mechatronika segédlet 11. gyakorlat

Hasonló dokumentumok
Mechatronika segédlet 10. gyakorlat

Mechatronika segédlet 3. gyakorlat

Mechatronika segédlet 8. gyakorlat

Mechatronika segédlet 6. gyakorlat

Mechatronika segédlet 1. gyakorlat

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

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

Robotok inverz geometriája

Mechatronika segédlet 2. gyakorlat

Hurokegyenlet alakja, ha az áram irányával megegyező feszültségeséseket tekintjük pozitívnak:

Mio Technology Limited C510, C710. Gyors használati utasítás a Mio Map v3 programhoz. Magyar

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

Regresszió számítás. Tartalomjegyzék: GeoEasy V2.05+ Geodéziai Kommunikációs Program

IV. LEGO Robotprogramozó Országos Csapatverseny

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

1. ábra. 24B-19 feladat

Számítógépes Grafika mintafeladatok

A +Q töltés egy L hosszúságú egyenes szakasz mentén oszlik el egyenletesen (ld ábra ábra

MATLAB alapismeretek II.

Navigáci. stervezés. Algoritmusok és alkalmazásaik. Osváth Róbert Sorbán Sámuel

értékel függvény: rátermettségi függvény (tness function)

Tanulmányozza az 5. pontnál ismertetett MATLAB-modell felépítést és működését a leírás alapján.

VI. Robotprogramozó Országos Csapatverseny Döntő versenyfeladatok. 5. évfolyam

Konjugált gradiens módszer

A számítógépes adatgyűjtő program használata

Hozzávalók keresése és csatolása

Szimulációs technikák

Kiegészítő előadás. Vizsgabemutató VBA. Dr. Kallós Gábor, Fehérvári Arnold, Pusztai Pál Krankovits Melinda. Széchenyi István Egyetem

Táblázatkezelés (Excel)

Támogatás / Excel / Excel 2010 súgó és útmutató / Diagramok / Diagramok formázása Hibasáv felvétele, módosítása és eltávolítása diagramban

1. kép. A Stílus beállítása; új színskála megadása.

Matlab Fuzzy Logic Toolbox

17. előadás: Vektorok a térben

Az egységugrás függvény a 0 időpillanatot követően 10 nagyságú jelet ad, valamint K=2. Vizsgáljuk meg a kimenetet:

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Függvények ábrázolása

CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez

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

Adatelemzés SAS Enterprise Guide használatával. Soltész Gábor solteszgabee[at]gmail.com

Cölöpcsoport elmozdulásai és méretezése

Informatika terméktervezőknek

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

VIII. Robotprogramozó Országos Csapatverseny Regionális versenyfeladatok évfolyam

A feladat megoldása során a Microsoft Office Excel használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni:

E-Freight beállítási segédlet

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

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

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

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Számítógépes Grafika mintafeladatok

Tájékoztató. Használható segédeszköz: -

APB mini PLC és SH-300 univerzális kijelző Általános használati útmutató

Kinematika szeptember Vonatkoztatási rendszerek, koordinátarendszerek

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

Kirchhoff 2. törvénye (huroktörvény) szerint az áramkörben levő elektromotoros erők. E i = U j (3.1)

Ablak és ablakműveletek

1. Feladatok a dinamika tárgyköréből

Számítógépes döntéstámogatás. Genetikus algoritmusok

Az MS Excel táblázatkezelés modul részletes tematika listája

Koordináta-geometria alapozó feladatok

VRV Xpressz Használati Útmutató

Q 1 D Q 2 (D x) 2 (1.1)

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

5. házi feladat. AB, CD kitér élpárra történ tükrözések: Az ered transzformáció: mivel az origó xpont, így nincs szükség homogénkoordinátás

Robotika. Relatív helymeghatározás Odometria

az adatbevitel szabályozása, alapok

9. Trigonometria. I. Nulladik ZH-ban láttuk: 1. Tegye nagyság szerint növekvő sorrendbe az alábbi értékeket! Megoldás:

Hajder Levente 2018/2019. II. félév

A loxodrómáról. Előző írásunkban melynek címe: A Gudermann - függvényről szó esett a Mercator - vetületről,illetve az ezen alapuló térképről 1. ábra.

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

Egy mozgástani feladat

MATEMATIKA HETI 5 ÓRA

MicLab Javítási útmutató

MATLAB OKTATÁS 6. ELŐADÁS SIMULINK ALAPOK JÁRMŰMÉRNÖKI ALKALMAZÁSSAL. Dr. Bécsi Tamás Hegedüs Ferenc

A számítógép beállításainak megváltoztatása

Gauss-eliminációval, Cholesky felbontás, QR felbontás

QGIS gyakorló. --tulajdonságok--stílus fül--széthúzás a terjedelemre).

Választó lekérdezés létrehozása

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

Problémás regressziók

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

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Adatbányászati szemelvények MapReduce környezetben

INFORMATIKAI ALAPISMERETEK

Forráskód formázási szabályok

1. Határozd meg az a, b és c értékét, és az eredményeket közönséges tört alakban írd a megfelelő helyre!

Táblázatkezelés 2. előadás. Alapok (folyt.)

Pénzintézetek jelentése a pénzforgalmi jelzőszám változásáról

Markerek jól felismerhetőek, elkülöníthetők a környezettől Korlátos hiba

Az elliptikus hengerre írt csavarvonalról

Vektorgeometria (2) First Prev Next Last Go Back Full Screen Close Quit

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

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

azonos sikban fekszik. A vezetőhurok ellenállása 2 Ω. Számítsuk ki a hurok teljes 4.1. ábra ábra

értékel függvény: rátermettségi függvény (tness function)

Számítógépvezérelt irányítás és szabályozás elmélete (Bevezetés a rendszer- és irányításelméletbe, Computer Controlled Systems) 7.

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

10. Koordinátageometria

SZERZŐ: Vindics Dóra. Oldal1

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Átírás:

Mechatronika segédlet 11. gyakorlat 2017. április 23. Tartalom Vadai Gergely, Faragó Dénes Feladatleírás... 2 Konstansok helyettesítése függvénnyel... 2 Megoldás... 2 Irányítás... 3 Megoldás... 4 maxspeed és diffspeed... 5 Kód... 5 Megállási feltételek... 5 Megoldás... 5 Kód... 5 Megjelenítés... 7 Akadálykerülés... 7 Kód... 8 Megjegyzés... 9 Kezdeti feltételek, célpont, szenzorok beállítása, pálya módosítása... 9 Kezdeti pozíció és orientáció... 9 Szenzorok, prevgd, pálya... 10 Pálya módosítása... 10 1

Ha a jegyzetben bármilyen hibát találsz, kérlek jelezd a farago.denes@stud.u-szeged.hu mailcímen. Feladatleírás A gyakorlat során olyan szabályzást készítünk, amely segítségével eljuttatjuk a robotot a célpozícióba. Konstansok helyettesítése függvénnyel Az első feladat a RobotSim mappában lévő simrobot.mdl módosítása úgy, hogy a kerekek szögsebességeit ne a konstans blokkok állítsák elő, hanem egy Interpreted MATLAB Function diagram komponens. Ehhez először el kell készíteni egy függvényt, amelynek neve a későbbi változatokban controlrobot lesz, ezért célszerű így elnevezni. Később visszacsatolást is meg kell megvalósítani, ezért érdemes a függvény paraméterlistáját a simrobotmdl függvényével azonosra választani. Megoldás A függvény (1. ábra) kezdetleges megvalósításában egyszerűen a kimeneti vektort konstansokkal töltjük fel, majd ezt a függvényt használjuk az Interpreted MATLAB Function (2. ábra) blokkban. Az új diagram komponens Properties menüjében az Output dimensions értéket kettőre kell állítani, különben hibával térhet vissza a szimuláció (3. ábra). 1. ábra: Kezdetleges controlrobot függvény 2. ábra: Módosított Simulink modell 2

3. ábra: Az Interpreted MATLAB Fcn. properties ablaka, ami dupla kattintással érhető el Irányítás A második feladat a kerekek szögsebességeinek szabályozása úgy, hogy a robot a célpont felé tartson a szimuláció során. 3

Megoldás 4. ábra: A célpont orientációjának kiszámítása Először ki kell számolni, hogy a robothoz képest merre van a célpont. A robot középpontján áthaladó vízszintes vonal, és a robot középpontját és a célpontot összekötő szakasz által bezárt szög: XT XP β = arctg ( YT YP ) Ebből már csak ki kell vonni a robot orientációját, így megkapjuk a robot és a célpont által bezárt szöget. Ezzel a képlettel azonban az a baj, hogy ha a robot és a célpont ugyanazon a vízszintes egyenesen van, akkor nullával osztunk, és hibát dob a szimuláció. Erre megoldás, ha nem az atan függvényt, hanem egy másik beépített függvényt, az atan2-t használjuk. Ez a függvény két hosszúságot vár paraméterül, visszatérési értéke a bezárt szög, működését a 5. ábra mutatja be. 4

maxspeed és diffspeed 5. ábra: β értéke atan2(x, Y) A szabályozás során, ha a robotnak nem kell kanyarodnia, akkor mindkét kerék szögsebessége maxspeed. Ha fordulnia kell, akkor a bal kerék forgási sebességét a diffspeed és bezárt szög szorzatával kell csökkenteni, a jobb kerék sebességét pedig ennyivel növelni. Ez a feladat megoldható sok más módon is, például a bezárt szög helyett lehet használni ennek a π-vel normalizált értékét is. Az előadó megvalósításában, ha a diffspeed kezdeti értéke 0.1, akkor maximális sebességkülönbség a két kerék között 0,2π. Kód function [ speeds ] = controlrobot( XP, YP, Theta ) %Célpont koordinátái: XT=1; YT=1; %Ezt a sebességet módosítjuk a bezárt szög függvényében: maxspeed=3; %A diffspeeddel súlyozzuk a beavatkozást diffspeed=0.1; %A robot és a célpont által bezárt szög kiszámítása %(atan2(sin(theta), cos(theta)) = Theta <= pi) goalorient=atan2(yt-yp,xt-xp) - atan2(sin(theta), cos(theta)); %Kerekek forgási sebességének módosítása a bezárt szöggel arányosan diffspeed=diffspeed*goalorient; speeds = [maxspeed-diffspeed maxspeed+diffspeed]; Megállási feltételek A numerikus hibák miatt kicsi a valószínűsége, hogy a robot pontosan megérkezik a célpontba. Emiatt a szimuláció végén a robot a célponton túlra kerülhet, foroghat körülötte. Megoldás Állítsuk meg a robotot, ha a célpont euklideszi távolsága egy küszöbszint alá csökken. Kód function [ speeds ] = controlrobot( XP, YP, Theta ) XT=1.5; YT=1.5; maxspeed=3; diffspeed=0.1; %Távolság küszöbszint: 5

goaldistlimit=0.1; goaldist=sqrt((xt-xp)^2 + (YT-YP)^2); goalorient=atan2(yt-yp,xt-xp) - atan2(sin(theta), cos(theta)); diffspeed=diffspeed*goalorient; speeds = [maxspeed-diffspeed maxspeed+diffspeed]; %Ha a távolság kisebb, mint a küszöbszint, akkor fék if (goaldistlimit >= goaldist) speeds = [0 0]; Ennél jobb megoldás, ha a robotot csak akkor állítjuk meg a küszöbszint alatt, ha a célpont távolsága nőtt az előző iterációhoz képest. Ekkor a küszöbszint alatt is közeledhet a robot a célponthoz, és csak akkor áll meg, ha túlhaladt rajta. A távolság növekedésének vizsgálatát megtehetjük például úgy, hogy az aktuális távolságot egy workspace-en lévő változóba mentjük, a következő iterációban ez lesz az előző körhöz tartozó távolság. Ha az aktuális távolság nagyobb, mint az előző (prevgd, previous Goal Distance), akkor a robot túlhaladt a célponton, és meg kell állítani. Ezt megtehetjük például úgy, hogy a kerekek sebességeit [0, 0]-val felülírjuk. A két feltételt az && logikai művelettel kell összekapcsolni, mert, ha induláskor a robot a célponthoz képest az ellentétes irányba néz, akkor a második feltétel azonnal megállítaná a robotot, amikor az elindulna. function [ speeds ] = controlrobot( XP, YP, Theta ) XT=1.5; YT=1.5; maxspeed=3; diffspeed=0.1; goaldistlimit=0.1; goaldist=sqrt((xt-xp)^2 + (YT-YP)^2); goalorient=atan2(yt-yp,xt-xp) - atan2(sin(theta), cos(theta)); diffspeed=diffspeed*goalorient; prevgd=evalin('base','prevgd'); assignin('base','prevgd',goaldist); speeds = [maxspeed-diffspeed maxspeed+diffspeed]; %Ha a távolság küszöbszint alatt van vagy nőtt, akkor fék if (goaldistlimit >= goaldist && goaldist >= prevgd) speeds = [0 0]; Az új workspace változó miatt módosítani kell a modell InitFcn eljárását is, ami a RobotTargetStop.zip fájlban már meg van valósítva (6. ábra). 6

Megjelenítés 6. ábra. prevgd workspace változó létrehozsa az InitFcn eljárással A robot-célpont távolság időbeli lefolyása és a robot által bejárt útvonal megjeleníthető például a RobotTargetStop.zip-ben megvalósított módon. Ehhez módosítani kell a controlrobot visszatérési vektorát (8. ábra) és a diagramot is (7. ábra). 7. ábra: A modell visszacsatolással és megjelenítéssel Akadálykerülés 8. ábra: Módosított kimeneti vektor Az óra végén feladat volt az akadálykerülés megavalósítása is. Erre egy módszer, a szenzorok közül maximum kereséssel kiválasztjuk azt, amelyiknek a legnagyobb az értéke, vagyis azt, amelyikhez a legközelebb van az akadály. Ennek a szenzornak az orientációja alapján egy (például diffspeed2-nek elnevezett) változóval módosítjuk a kerék forgási sebességét úgy, hogy a robot az akadályhoz képest az ellentétes irányba kanyarodjon. Ennek a beavatkozásnak 7

a mértékét érdemes nagyobb súllyal (például kettővel) venni, mint a célra tartáshoz tartozó beavatkozást. Az, hogy melyik indexhez tartozó szenzor orientációja milyen, a SensorOrients tömb alapján látszik, amit most már a callback eljárás segítségével adunk meg (9. ábra). Kód 9. ábra: A szenzorok orientációi és a hozzájuk tartozó indexek function [ speeds ] = controlrobot( XP, YP, Theta ) XT=-1; YT=0; maxspeed=3; diffspeed=0.1; goaldistlimit=0.1; goaldist=sqrt((xt-xp)^2 + (YT-YP)^2); goalorient=atan2(yt-yp,xt-xp) - atan2(sin(theta), cos(theta)); diffspeed=diffspeed*goalorient; prevgd=evalin('base','prevgd'); assignin('base','prevgd',goaldist); %Szenzorok értékeinek beolvasása sensors=evalin('base', 'sensors'); %Az akadályhoz legközelebbi szenzor indexének kinyerése %(A maxval-t jelenleg nem használjuk, de egy szebb megoldásban %ezzel is lehet számolni.) [maxval, maxind]=max(sensors); %A callback eljárásból kimásolt orientációk: %SensorOrients=[80 50 25 0-25 -50-80 130-130]; %maxind értékét vizsgáljuk, vagyis azt, hogy melyik szenzor érzékelte a 8

%legjobban az akadályt. switch maxind case 1 %Majdnem teljesen balra van az akadály, nem avatkozunk be, hanem %elhaladunk mellette diffspeed2=0; case 2 %Az 50 fokos szenzor érzékel a legjobban, jobbra kell kanyarodni diffspeed2=-0.5; case 3 %A 25 fokos szenzor érzékel a legjobban, erőteljesebben kell %kanyarodni. diffspeed2=-0.8; case 4 %Az akadály a robottal szemben van, nagyon erőteljesen kell %fordulni. diffspeed2=1; case 5 %Az akadály a -25 fokos szenzornál van, tehát jobbra kell kanyarodni, %emiatt változik az előjel. diffspeed2=0.8; case 6 %A -50 fokos szenzor érzékel a legjobban, balra kell kanyarodni. diffspeed2=0.5; otherwise %Az akadály a robot mögött van, így nem kell beavatkozni. diffspeed2=0; %A diffspeed2-vel kétszeres súllyal avatkozunk be az eddigi szabályzásunkba speeds = [maxspeed-diffspeed-2*diffspeed2 maxspeed+diffspeed+2*diffspeed2 goaldist prevgd]; %Az eddigi megállási feltétel if (goaldistlimit >= goaldist && goaldist >= prevgd) speeds = [0 0 goaldist prevgd]; Megjegyzés A ZH-ban nem biztos, hogy ez a kód megfelelő/elegő lesz a feladatok megoldására. Előfordulhat, hogy bizonyos értékeket másként kell súlyozni. Kezdeti feltételek, célpont, szenzorok beállítása, pálya módosítása Kezdeti pozíció és orientáció A robot kezdeti pozíciója és orientációja az integrátorok kezdeti értékeinek megadásával történik (10. ábra). 9

10. ábra: Az integrátorok kezdőértékeinek beállítása. Ebben az esetben a robot kezdeti X koordinátája 1. Szenzorok, prevgd, pálya A szenzorok konfigurációjának, a prevgd kezdeti értékének megadását és a pálya betöltését a modell InitFcn eljárásával tehetjük meg, amelyet módosíthatunk például az előző jegyzetben bemutatott módon. Pálya módosítása A robot által kikerülő akadályokat a csv fájlban lévő vonalhalmaz módosításával változtathatjuk meg. 10