Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A RobotinoView programozása v2.6.3 Írta: Bolla Dániel (BME-VIK) Lektorálta: Raj Levente (BME-MOGI) Átdolgozta: Slang Tamás (PTE-PMMIK)2012.

Hasonló előadás


Az előadások a következő témára: "A RobotinoView programozása v2.6.3 Írta: Bolla Dániel (BME-VIK) Lektorálta: Raj Levente (BME-MOGI) Átdolgozta: Slang Tamás (PTE-PMMIK)2012."— Előadás másolata:

1 A RobotinoView programozása v2.6.3 Írta: Bolla Dániel (BME-VIK) Lektorálta: Raj Levente (BME-MOGI) Átdolgozta: Slang Tamás (PTE-PMMIK)2012

2 Mi az a Robotino? Oktatási és kutatási célokra fejlesztett autonóm robot Számos szenzorral és akár webkamerával is felszerelhető A szenzorok jeleit egy beágyazott PC-n futó valós idejű (real- time) Ubuntu Linux operációs rendszer dolgozza fel

3 Mit tud a Robotino? 2D mozgás bármely irányba Függőleges tengely menti forgás Web-kamera (képfeldolgozás) Vezeték nélküli programozás Távolság mérő szenzorok I/O portok (analóg/digitális) Opcionális kiegészítők:  NorthStar  Gyroscope  Lézer-scanner  Gripper (megfogó)

4 Mi az a RobotinoView? A Robotino programozásához fejlesztett vizuális programozási nyelv. A programokat programkód gépelése nélkül hozhatjuk létre A programozás módszertana gyorsan elsajátítható Vizuális programnyelv révén könnyen átláthatóak a programok Egyszerű hibakeresés

5 RobotinoView Függvényblokkok A programok legkisebb építőegysége a függvényblokk

6 Függvényblokkok A függvényblokkok közötti kapcsolatokat vezetékezéssel, a függvényblokkok ki- és bemeneteinek összekötésével alakíthatjuk ki Az így kialakított „hálózatok” az alprogramok Az alprogramok feldolgozása ciklikus végrehajtási módon történik Ez azt jelenti, hogy az alprogram kiértékelése az alprogram kilépési feltételének teljesüléséig újra és újra megtörténik

7 RobotinoView Alprogramok készítése: Munkaterület Függvény- Blokkok Alprogram fülek Eszközsor Menüsor

8 Főprogram - Szekvenciális programvégrehajtás Az alprogramokból (a PLC programozásban használt) IEC 1131 szabványnak megfelelően, úgynevezett sorrendi folyamatábra – más nevén: állapotgráf – segítségével építhetjük fel a főprogramot.

9 RobotinoView Főprogram készítése: MunkaterületGlobális változók Alprogram fülek Eszközsor Menüsor Szekvenciális eszközök

10 Globális változók Globális változók használata:  adatok átvitele programmodulok között  alprogramok kilépési feltételei Globális változók Globális változó olvasása Globális változó írása

11 Főprogram - Szekvenciális programvégrehajtás Lépés beszúrása az aktuális fölé Lépés beszúrása az aktuális alá Alternatív ág beszúrása az aktuálistól balra Alternatív ág beszúrása az aktuálistól jobbra Párhuzamos ág beszúrása az aktuálistól balra Párhuzamos ág beszúrása az aktuálistól jobbra Ugrás a megadott lépésre Szekvenciális eszközök: Szekvenciális építőmodulok: Alternatív ágak: Párhuzamos ágak: Inicializáló rész, Ez indul el bekapcsoláskor. Kilépési feltétel (lásd később) Alprogram blokkja. Kilépési feltétel (lásd később) Ugró utasítás (goto, jump)

12 Főprogram - Szekvenciális programvégrehajtás Alternatív ágak tulajdonságai:  Mindig csak az egyik ágban van programfutás  Az ágak prioritás jobbra csökken (ha egyszerre két ágnál teljesül a kilépési feltétel, akkor a legbaloldalibb ágban lévő alprogram fut le)  Ág beszúrása bonyolultabb szerkezetekben:  Érdemes két kilépési feltétel vízszintes jelölő vonalát kijelölni (egyszerre több dolog kijelölése a shift gomb nyomva tartása mellett lehetséges), amikhez az alternatív ágat akarjuk kapcsolni, és ezután az új ág beszúrására kattintani.  Egyes esetekben segéd lépéseket kell beiktatni, amit ezután ki lehet törölni. ?

13 Főprogram - Szekvenciális programvégrehajtás Párhuzamos ágak tulajdonságai:  Mindegyik ágban lévő program fut  Ág beszúrása bonyolultabb szerkezetekben:  Párhuzamos ágak esetén lépéseket kell kijelölni.  Több lépés kijelölése itt is a shift gombbal lehetséges.  Az alábbi példánál a 9-es és 6-os lépést jelöltük ki, majd utána szúrtunk be balra egy új párhuzamos ágat, ami az összes többi alprogrammal párhuzamosan fog futni.

14 Főprogram - Szekvenciális programvégrehajtás Kilépési feltételek operátorai:  Konstans feltételek: -true (egyszer lefut, és kilép az alprogramból) -false (sosem lép ki az alprogramból)  Logikai feltételek (mint c-ben): -És kapcsolat: && -Vagy kapcsolat: II -Negálás: !  Matematikai: -Összeadás, kivonás, szorzás, osztás: +, -, *, / -Kisebb, nagyobb, egyenlő, nem egyenlő:, ==, !=  Összetettebb kifejezések is lehetségesek: Pl.: ( (a==1) && (b<=3) ) || c

15 Kapcsolódás a Robotino-hoz Robotino adatainak leolvasása:  IP-cím: Kapcsolódás:  WLAN bekapcsolása  Csatlakozás az AP-hoz  Hálózati kártya IP címének beállítása (ha szükséges)

16 Program futtatása a PC-n 2. IP-cím beírása 4.Szekvenciális program futtatása (4.) Aktuális alprogram futtatása (Kézi leállítás szükséges!) 3. Kapcsolódás 1. Kapcsolódás a Robotino Accespoint-jához

17 RobotinoSim használata Kijelölő eszköz Robotino (kijelölve) Port IP – cím (mindig ez kell) Port (ugyanaz, mint a SIM-ben) Ha lassú a kommuni- káció, próbáljunk meg portot váltani. Pl.: 8081-re A SIM-ben és a View-ban is át kell állítani! Ha lassú a kommuni- káció, próbáljunk meg portot váltani. Pl.: 8081-re A SIM-ben és a View-ban is át kell állítani! IP_cím:Port

18 Objektumok áttekintése Motor objektumok: Speed set-point beállítani kívánt forgási sebesség Reset position motor pozíció nullázása Brakefékezés Accelera- tion gyorsulás mértéke Actual velocity aktuális forgási sebesség Actual position motor aktuális pozíciója Current [A] motor aktuális áramfelvétele

19 Motorok közvetlen vezérlése Forgás jobbra: Mozgás előre:

20 Objektumok áttekintése OmniDrive objektum: m11-es motor fordulatszáma m22-es motor fordulatszáma m33-as motor fordulatszáma vxx-irányú sebesség vyy-irányú sebesség omegaforgási sebesség Leegyszerűsíti a motorok vezérlését. Komplex mozgások is könnyen megvalósíthatóak vele.

21 OmniDrive objektum Forgás jobbra: Mozgás előre:Mozgás átlósan: Mozgás köríven:

22 Irányítás a Control Panel objektummal Control Panel: vxx-irányú sebesség vyy-irányú sebesség omegaforgási sebesség Slider: valuecsúszka állapota

23 Irányítás a Joystick objektummal Joystick / Gamepad hozzáadása:

24 Irányítás a Joystick objektummal Joystick tengelyei: valuetengely állapota Joystick gombjai: valuegomb értéke Minden tengelyhez és minden gombhoz külön objektum tartozik.

25 Navigáció - Odometria Odometry: A megtett út mérése xA kezdő pozíció x koordinátája yA kezdő pozíció y koordinátája phiA kezdő pozíció phi koordinátája SetHa true-t kötünk erre a bemenetre, a felveszi az x, y, phi bemeneteken megadott értékeket. (Inicializálás) Az alprogram futása előtt mindig célszerű inicializálni! xAz aktuális pozíció x koordinátája yAz aktuális pozíció y koordinátája phiAz aktuális pozíció phi koordinátája

26 Navigáció – Position driver Position driver: Adott pozícióba navigálás X setA cél pozíció x koordinátája Y setA cél pozíció y koordinátája Phi setA cél pozíció phi koordinátája X actualAz aktuális pozíció x koordinátája y actualAz aktuális pozíció y koordinátája phi actual Az aktuális pozíció phi koordinátája restartHa true-t kötünk erre a bemenetre újra beolvassa a cél pozíció koordinátáit. vxA cél pozíció eléréséhez szükséges x irányú sebesség vyA cél pozíció eléréséhez szükséges y irányú sebesség omegaA cél pozíció eléréséhez szükséges forgási sebesség Position reached True, ha a vx=vy=0 Orientation reached True, ha omega=0 Pose reached True, ha Postion reached és Orientation reached true Szinte mindig az Odometry blokk kimenete Szinte mindig az Omnidrive blokk bemenete

27 Navigáció – Position driver 1: Drive | Turn Holonomic 2: Drive & Turn Holonomic 3: Turn | Drive | Turn Nonholonomic 4: Drive & Turn | Turn Nonholonomic

28 Távolságmérő (infra) szenzorok Distance modul: ValueTávolság arányos jel (minél közelebb van valami a szenzorhoz, annál nagyobb jelet ad ki) Headingszög, amely irányba a szenzor néz Bumper: valueBumper állapota

29 Távolságmérő (infra) szenzorok karakterisztikája

30 Távolságmérő (lézeres) szenzorok karakterisztikája

31 Objektumok áttekintése Scale: átskálázás Transfer function bebemenet kikimenet xbemenet ykimenet

32 Objektumok áttekintése Oscilloscope: Mean filter Inputbemenet Outputkimenet Channel #bemenet

33 Objektumok áttekintése Lua script: Komplex számításokat valósíthatunk meg Bemenetek száma Kimenetek száma Globális változók (ha vannak) A megvalósítandó Funkció kódja (http://www.lua.org/manual/5.1/ )http://www.lua.org/manual/5.1/

34 Vektorműveletek Vektor létrehozása x és y koordinátákkal Vektor létrehozása polár koordinátákkal (hossz, szög) x y r +φ+φ 0° az előrefelé irányt jelenti. A pozitív forgásirány az óramutató járásával ellentétes irányú. Az x tengely hátulról előre, míg az y tengely jobbról balra irányuló tengelyek. xx-koordináta yy-koordináta Vectorvektor Lengthvektor hossza Phivektor szöge Vectorvektor

35 Vektorműveletek Vektor felbontása x és y, illetve polár koordinátákra Vektorkorok összegzése, kivonása Vektoriális szorzat, vektorhossz lekérdezése Vektor forgatása Vektorok és skalárok közötti műveletek

36 Vektorműveletek Vektorműveletek használata: Vektor 1 Vektor 2 Vektor 1+2 Eleforgatott vektor x y

37 PassiveAviod Feladat: Menekülés az esetleges ütközések elől. Az ellenkező irányba kell elmozdulni, mint amerre valami akadály van.

38 PassiveAviod értelmezése Infra szenzorok Minden infra szenzorra szükség van.

39 PassiveAviod értelmezése Infra szenzorok Vektorok létrehozása A továbbiakban vektorokkal szeretnénk dolgozni, így az infra-szenzorok jeleiből vektorokat hozunk létre.

40 PassiveAviod értelmezése Infra szenzorok Vektorok létrehozása Vektorok összegzése Minél hosszabb a vektor, annál közelebb van a fal.

41 PassiveAviod értelmezése Infra szenzorok Vektorok létrehozása Vektorok összegzése Egyenlőre csak az akadály irányára van szükségünk. Egységvektor létrehozása

42 PassiveAviod értelmezése Infra szenzorok Vektorok létrehozása Vektorok összegzése Minél közelebb vannak az akadályok, annál hosszabb vektort hozunk létre. Egységvektor létrehozása Vektorhossz meghatározása

43 PassiveAviod értelmezése Infra szenzorok Vektorok létrehozása Vektorok összegzése A vektor most az akadály irányába mutat. Nekünk ezzel a vektorral pont ellentétes irányba kell elmozdulnunk. Egységvektor létrehozása Vektorhossz meghatározása Vektor elforgatása

44 PassiveAviod értelmezése Infra szenzorok Vektorok létrehozása Vektorok összegzése Ha a vektrot felbontjuk x és y összetevőre, akkor ezekkel az értékekkel közvetlenül vezérelhetjük az omnidrive-ot. Egységvektor létrehozása Vektorhossz meghatározása Vektor elforgatása Vektor felbontása Robotino vezérlése Hirtelen mozdulatok kiszűrése

45 Webkamera A webkamera képének megtekintése: ImageKép kimenet

46 Párhuzamosra álló blokk

47 Referencia felvétel

48 Képfeldolgozás Segmenter Modul: Az általunk kijelölt színekre (szegmensekre) bontja a kamera képét. Inputbemeneti kép Outputszegmentált kép Kép lefagyasztásaSzín kijelöléseSzín lementése

49 Képfeldolgozás Fagyasztás megszűntetéseA kimeneten megjelenő kép

50 Képfeldolgozás Segment extractor: Az adott színszegmens pozícióját adja meg. xszegmens súlypontjának x koordinátája yszegmens súlypontjának y koordinátája Areaszegmens területe Segment found találtunk szegmenst? Inputkép bemenet Selected segment kereset szegmens száma Minimum area minimális terület, ami esetén észreveszi a szegmenst A (0;0) koordináta a kép bal-felső sarkában található.

51 Vonalkövetés Vonalkövetés szenzorokkal: Digitális bemenet (értéke: true vagy false) Analóg bemenet (értéke: 0..10) Digitális kimenet (értéke: true vagy false) Relés kimenet (értéke: true vagy false) Optikai Szenzor  Digital input Induktív Szenzor  Analog input RobotinoView help: 135. oldal

52 Vonalkövetés Vonalkövetés optikai szenzorokkal:

53 Egyszerű szabályozás Tartsuk a Robotino-t az előtte lévő faltól 5 cm-re! Szabályozó (Programunk) Robotino Ellenőrző jel Érzékelő + - Rendelkező jelAlapjel Szabályozó (Programunk)RobotinoÉrzékelő

54 Egyszerű szabályozás Menjen a Robotino 1 méterrel előre! Szabályozó (Programunk) Robotino Ellenőrző jel Érzékelő + - Rendelkező jelAlapjel Szabályozó (Programunk) RobotinoÉrzékelő (ne felejtsük el inicializálni az odometriát!)

55 Köszönjük a figyelmet! Kérdések?


Letölteni ppt "A RobotinoView programozása v2.6.3 Írta: Bolla Dániel (BME-VIK) Lektorálta: Raj Levente (BME-MOGI) Átdolgozta: Slang Tamás (PTE-PMMIK)2012."

Hasonló előadás


Google Hirdetések