55
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

A RobotinoView programozása v2.6.3

Embed Size (px)

DESCRIPTION

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. 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ő. - PowerPoint PPT Presentation

Citation preview

Page 1: A RobotinoView programozása v2.6.3

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

Page 2: A RobotinoView programozása v2.6.3

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

Page 3: A RobotinoView programozása v2.6.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ó)

Page 4: A RobotinoView programozása v2.6.3

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

Page 5: A RobotinoView programozása v2.6.3

RobotinoView 2.6.3 - Függvényblokkok

• A programok legkisebb építőegysége a függvényblokk

Page 6: A RobotinoView programozása v2.6.3

• A programok legkisebb építőegysége a függvényblokk

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

Page 7: A RobotinoView programozása v2.6.3

RobotinoView 2.6.3

• Alprogramok készítése:

MunkaterületFüggvény-

Blokkok

Alprogram fülek Eszközsor

Menüsor

Page 8: A RobotinoView programozása v2.6.3

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.

Page 9: A RobotinoView programozása v2.6.3

RobotinoView 2.6.3

• Főprogram készítése:

Munkaterület Globális változók

Alprogram fülekEszközsorMenüsor

Sze

kv

en

ciá

lis e

szk

özö

k

Page 10: A RobotinoView programozása v2.6.3

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

Page 11: A RobotinoView programozása v2.6.3

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)

Page 12: A RobotinoView programozása v2.6.3

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.

?

Page 13: A RobotinoView programozása v2.6.3

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.

Page 14: A RobotinoView programozása v2.6.3

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

Page 15: A RobotinoView programozása v2.6.3

Kapcsolódás a Robotino-hoz

• Robotino adatainak leolvasása: IP-cím: 172.26.1.1

• Kapcsolódás: WLAN bekapcsolása

Csatlakozás az AP-hoz

Hálózati kártya IP címénekbeállítása (ha szükséges)

Page 16: A RobotinoView programozása v2.6.3

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

Page 17: A RobotinoView programozása v2.6.3

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

Page 18: A RobotinoView programozása v2.6.3

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

Page 19: A RobotinoView programozása v2.6.3

Motorok közvetlen vezérlése

• Forgás jobbra:

• Mozgás előre:

Page 20: A RobotinoView programozása v2.6.3

Objektumok áttekintése

• OmniDrive objektum:

m1 1-es motor fordulatszáma

m2 2-es motor fordulatszáma

m3 3-as motor fordulatszáma

vx x-irányú sebesség

vy y-irányú sebesség

omega forgási sebesség

• Leegyszerűsíti a motorok vezérlését.

• Komplex mozgások is könnyen megvalósíthatóak vele.

Page 21: A RobotinoView programozása v2.6.3

OmniDrive objektum

• Forgás jobbra:

• Mozgás előre: • Mozgás átlósan:

• Mozgás köríven:

Page 22: A RobotinoView programozása v2.6.3

Irányítás a Control Panel objektummal

• Control Panel:vx x-irányú sebesség

vy y-irányú sebesség

omega forgási sebesség

• Slider:

value csúszka állapota

Page 23: A RobotinoView programozása v2.6.3

Irányítás a Joystick objektummal

• Joystick / Gamepad hozzáadása:

Page 24: A RobotinoView programozása v2.6.3

Irányítás a Joystick objektummal

• Joystick tengelyei:

value tengely állapota

• Joystick gombjai:

value gomb értéke

Minden tengelyhez és minden gombhoz külön objektum tartozik.

Minden tengelyhez és minden gombhoz külön objektum tartozik.

Page 25: A RobotinoView programozása v2.6.3

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)

Az alprogram futása előtt mindig célszerű

inicializálni!

Az alprogram futása előtt mindig célszerű

inicializálni!

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

Page 26: A RobotinoView programozása v2.6.3

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 Odometry blokk kimenete

Szinte mindig az Odometry blokk kimenete

Szinte mindig az Omnidrive blokk bemenete

Szinte mindig az Omnidrive blokk bemenete

Page 27: A RobotinoView programozása v2.6.3

Navigáció – Position driver

1: Drive | Turn Holonomic

2: Drive & Turn Holonomic

3: Turn | Drive | Turn Nonholonomic

4: Drive & Turn | Turn Nonholonomic

Page 28: A RobotinoView programozása v2.6.3

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

Page 29: A RobotinoView programozása v2.6.3

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

Page 30: A RobotinoView programozása v2.6.3

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

Page 31: A RobotinoView programozása v2.6.3

Objektumok áttekintése

• Scale: átskálázás

• Transfer function

be bemenet

ki kimenet

x bemenet

y kimenet

Page 32: A RobotinoView programozása v2.6.3

Objektumok áttekintése

• Oscilloscope:

• Mean filter

Input bemenet

Output kimenet

Channel # bemenet

Page 33: A RobotinoView programozása v2.6.3

Objektumok áttekintése

• Lua script: Komplex számításokat valósíthatunk meg

Bemenetekszáma

Kimenetekszáma

Globális változók(ha vannak)

A megvalósítandóFunkció kódja

(http://www.lua.org/manual/5.1/ )

Page 34: A RobotinoView programozása v2.6.3

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ú.

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.

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

Length vektor hossza

Phi vektor szöge

Vector vektor

Page 35: A RobotinoView programozása v2.6.3

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

Page 36: A RobotinoView programozása v2.6.3

Vektorműveletek

• Vektorműveletek használata:

Vektor 1

Vektor 2

Vektor 1+2

Eleforgatott vektor x

y

Page 37: A RobotinoView programozása v2.6.3

PassiveAviod

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

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

Page 38: A RobotinoView programozása v2.6.3

PassiveAviod értelmezése

Infra sze

nzo

rok

Minden infra szenzorra szükség van.Minden infra szenzorra szükség van.

Page 39: A RobotinoView programozása v2.6.3

PassiveAviod értelmezése

Infra sze

nzo

rok

Vektorok létrehozása

A továbbiakban vektorokkal szeretnénk dolgozni, így az infra-szenzorok jeleiből vektorokat hozunk létre.

A továbbiakban vektorokkal szeretnénk dolgozni, így az infra-szenzorok jeleiből vektorokat hozunk létre.

Page 40: A RobotinoView programozása v2.6.3

PassiveAviod értelmezése

Infra sze

nzo

rok

Vektorok létrehozása

Vektorokösszegzése

Minél hosszabb a vektor, annál közelebb van a fal.Minél hosszabb a vektor, annál közelebb van a fal.

Page 41: A RobotinoView programozása v2.6.3

PassiveAviod értelmezése

Infra sze

nzo

rok

Vektorok létrehozása

Vektorokösszegzése

Egyenlőre csak az akadály irányára van szükségünk.Egyenlőre csak az akadály irányára van szükségünk.

Egységvektor létrehozása

Page 42: A RobotinoView programozása v2.6.3

PassiveAviod értelmezése

Infra sze

nzo

rok

Vektorok létrehozása

Vektorokösszegzése

Minél közelebb vannak az akadályok, annál hosszabb vektort hozunk létre.

Minél közelebb vannak az akadályok, annál hosszabb vektort hozunk létre.

Egységvektor létrehozása

Vektorhossz meghatározása

Page 43: A RobotinoView programozása v2.6.3

PassiveAviod értelmezése

Infra sze

nzo

rok

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.

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

Page 44: A RobotinoView programozása v2.6.3

PassiveAviod értelmezése

Infra sze

nzo

rok

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.

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

Page 45: A RobotinoView programozása v2.6.3

Webkamera

• A webkamera képének megtekintése:

Image Kép kimenet

Page 46: A RobotinoView programozása v2.6.3

Párhuzamosra álló blokk

Page 47: A RobotinoView programozása v2.6.3

Referencia felvétel

Page 48: A RobotinoView programozása v2.6.3

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

Page 49: A RobotinoView programozása v2.6.3

Képfeldolgozás

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

Page 50: A RobotinoView programozása v2.6.3

Képfeldolgozás

• Segment extractor: Az adott színszegmens pozícióját adja meg.

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?

Input ké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ó.

A (0;0) koordináta a kép bal-felső sarkában található.

Page 51: A RobotinoView programozása v2.6.3

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

Page 52: A RobotinoView programozása v2.6.3

Vonalkövetés

• Vonalkövetés optikai szenzorokkal:

Page 53: A RobotinoView programozása v2.6.3

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

Alapjel

Szabályozó (Programunk) Robotino Érzékelő

Page 54: A RobotinoView programozása v2.6.3

Egyszerű szabályozás

• Menjen a Robotino 1 méterrel előre!

Szabályozó(Programunk)

Robotino

Ellenőrző jelÉrzékelő

+

-

Rendelkező jelAlapjel

Alapjel

Szabályozó (Programunk) Robotino Érzékelő

(ne felejtsük el inicializálni az odometriát!)

Page 55: A RobotinoView programozása v2.6.3

Köszönjük a figyelmet!

Kérdések?