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

Hasonló előadás


Az előadások a következő témára: "A RobotinoView programozása"— Előadás másolata:

1 A RobotinoView programozása
Í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 2.6.3 - Függvényblokkok
A programok legkisebb építőegysége a függvényblokk

6 Függvényblokkok A programok legkisebb építőegysége a függvényblokk
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 Alprogramok készítése:
RobotinoView 2.6.3 Alprogramok készítése: Menüsor Eszközsor Alprogram fülek Munkaterület Függvény- Blokkok

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 Szekvenciális eszközök
RobotinoView 2.6.3 Főprogram készítése: Menüsor Eszközsor Alprogram fülek Szekvenciális eszközök Munkaterület Globális változók

10 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
Szekvenciális építőmodulok: Inicializáló rész, Ez indul el bekapcsoláskor. Alternatív ágak: 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) Szekvenciális eszközök: Párhuzamos ágak: 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

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
1. Kapcsolódás a Robotino Accespoint-jához 2. IP-cím beírása 3. Kapcsolódás 4.Szekvenciális program futtatása (4.) Aktuális alprogram futtatása (Kézi leállítás szükséges!)

17 A SIM-ben és a View-ban is át kell állítani!
RobotinoSim használata Kijelölő eszköz Port Robotino (kijelölve) 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 (mindig ez kell) Port (ugyanaz, mint a SIM-ben) 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 Brake fé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
Mozgás előre: Forgás jobbra:

20 Objektumok áttekintése
OmniDrive objektum: Leegyszerűsíti a motorok vezérlését. Komplex mozgások is könnyen megvalósíthatóak vele. vx x-irányú sebesség vy y-irányú sebesség omega forgási sebesség m1 1-es motor fordulatszáma m2 2-es motor fordulatszáma m3 3-as motor fordulatszáma

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

22 Irányítás a Control Panel objektummal
vx x-irányú sebesség vy y-irányú sebesség omega forgási sebesség Slider: value csú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: value tengely állapota Joystick gombjai: Minden tengelyhez és minden gombhoz külön objektum tartozik. value gomb értéke

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

26 Navigáció – Position driver
Position driver: Adott pozícióba navigálás X set A cél pozíció x koordinátája Y set A cél pozíció y koordinátája Phi set A cél pozíció phi koordinátája X actual Az aktuális pozíció x koordinátája y actual Az aktuális pozíció y koordinátája phi actual Az aktuális pozíció phi koordinátája restart Ha true-t kötünk erre a bemenetre újra beolvassa a cél pozíció koordinátáit. vx A cél pozíció eléréséhez szükséges x irányú sebesség vy A cél pozíció eléréséhez szükséges y irányú sebesség omega A 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 Omnidrive blokk bemenete Szinte mindig az Odometry blokk kimenete

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: Value Távolság arányos jel (minél közelebb van valami a szenzorhoz, annál nagyobb jelet ad ki) Heading szög, amely irányba a szenzor néz Bumper: value Bumper á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 be bemenet ki kimenet Transfer function x bemenet y kimenet

32 Objektumok áttekintése
Oscilloscope: Channel # bemenet Mean filter Input bemenet Output kimenet

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

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

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 használata:
x y Vektor 1 Vektor 2 Vektor 1+2 Eleforgatott vektor

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
Minden infra szenzorra szükség van. Infra szenzorok

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

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

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

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

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

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

45 A webkamera képének megtekintése:
Image Ké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. Input bemeneti kép Output szegmentált kép Kép lefagyasztása Szín kijelölése Szín lementése

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

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

51 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) RobotinoView help: 135. oldal Induktív Szenzor  Analog input Optikai Szenzor  Digital input

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

53 Szabályozó (Programunk)
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ő jel Alapjel Alapjel Szabályozó (Programunk) Robotino Érzékelő

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

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


Letölteni ppt "A RobotinoView programozása"

Hasonló előadás


Google Hirdetések