View
38
Download
0
Category
Preview:
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
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ő
• A szenzorok jeleit egy beágyazott PC-n futó valós idejű (real-time) Ubuntu Linux operációs rendszer dolgozza fel
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ó)
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
RobotinoView 2.6.3 - Függvényblokkok
• A programok legkisebb építőegysége a függvényblokk
• 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
RobotinoView 2.6.3
• Alprogramok készítése:
MunkaterületFüggvény-
Blokkok
Alprogram fülek Eszközsor
Menüsor
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.
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
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
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)
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.
?
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.
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
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)
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
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
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
Motorok közvetlen vezérlése
• Forgás jobbra:
• Mozgás előre:
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.
OmniDrive objektum
• Forgás jobbra:
• Mozgás előre: • Mozgás átlósan:
• Mozgás köríven:
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
Irányítás a Joystick objektummal
• Joystick / Gamepad hozzáadása:
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.
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
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
Navigáció – Position driver
1: Drive | Turn Holonomic
2: Drive & Turn Holonomic
3: Turn | Drive | Turn Nonholonomic
4: Drive & Turn | Turn Nonholonomic
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
Távolságmérő (infra) szenzorok karakterisztikája
Távolságmérő (lézeres) szenzorok karakterisztikája
Objektumok áttekintése
• Scale: átskálázás
• Transfer function
be bemenet
ki kimenet
x bemenet
y kimenet
Objektumok áttekintése
• Oscilloscope:
• Mean filter
Input bemenet
Output kimenet
Channel # bemenet
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/ )
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
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
Vektorműveletek
• Vektorműveletek használata:
Vektor 1
Vektor 2
Vektor 1+2
Eleforgatott vektor x
y
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.
PassiveAviod értelmezése
Infra sze
nzo
rok
Minden infra szenzorra szükség van.Minden infra szenzorra szükség van.
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.
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.
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
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
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
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
Webkamera
• A webkamera képének megtekintése:
Image Kép kimenet
Párhuzamosra álló blokk
Referencia felvétel
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
Képfeldolgozás
Fagyasztás megszűntetése A kimeneten megjelenő kép
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ó.
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
Vonalkövetés
• Vonalkövetés optikai szenzorokkal:
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ő
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!)
Köszönjük a figyelmet!
Kérdések?
Recommended