Robotino programozása v2.3.2 II. Robotino Olimpia 2010 II. Mobil Robot Kupa 2010
Írta: Bolla Dániel (BME-VIK) Lektorálta: Raj Levente (BME-MOGI)
2010 - F
F • 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 • Infra szenzorok
• I/O portok (analóg/digitális) • Egyéb kiegészítők: NorthStar
Gyroscope Lézer-scanner Gripper (megfogó)
Mit tud a Robotino?
Robotino® View 2.3.2
F • Alprogramok készítése: Menüsor Eszközsor Alprogram fülek
Munkaterület
Modulok
Robotino® View 2.3.2
F • Szekvencia megvalósítása: Menüsor Eszközsor Alprogram fülek
Szekvenciális eszközök
Munkaterület
Globális változók
F
Robotino® View 2.2.3 - Modulok
Motor objektumok
F
• 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
Acceleration
gyorsulás mértéke
Minden motorhoz külön objektum tartozik. Ellentétben az 1.7-es verzióval.
Actual velocity
aktuális forgási sebesség
Actual position
motor aktuális pozíciója
Current [A]
motor aktuális áramfelvétele
F
Motorok közvetlen vezérlése
• Mozgás előre:
VIDEO
• Forgás jobbra:
VIDEO
F
OmniDrive objektum
• OmniDrive objektum: vx
x-irányú sebesség
m1
1-es motor fordulatszáma
vy
y-irányú sebesség
m2
2-es motor fordulatszáma
omega
forgási sebesség
m1
3-as motor fordulatszáma
Leegyszerűsíti a motorok vezérlését.
Komplex mozgások is könnyen megvalósíthatóak vele.
F
OmniDrive objektum
• Mozgás előre:
VIDEO
• Forgás jobbra:
VIDEO
F
OmniDrive objektum
• Mozgás más irányokba:
VIDEO
• Mozgás köríven:
VIDEO
Irányítás a ControlPanel objektummal
F
• ControlPanel objektum:
• Slider objektum:
value
csúszka állapota
vx
x-irányú sebesség
vy
y-irányú sebesség
omega
forgási sebesség
F
Irányítás a Joystick objektummal
• Joystick / Gamepad hozzáadása:
Irányítás a Joystick objektummal
F
• Joystick tengelyei:
value
tengely állapota
• Joystick gombjai: Minden tengelyhez és minden gombhoz külön objektum tartozik. Ellentétben az 1.7-es verzióval.
value
gomb értéke
Vektorműveletek – Vektorok megadása
F
• Vektor létrehozása x és y koordinátákkal
x
x-koordináta
y
y-koordináta
Vector
vektor
Az x tengely hátulról előre, míg az y tengely jobbról balra irányuló tengelyek.
y x
• Vektor létrehozása polár koordinátákkal (szög, hossz)
Length
vektor hossza
Phi
vektor szöge
Vector
vektor
r + φ
0° az előrefelé irányt jelenti. A pozitív forgásirány az óramutató járásával ellentétes irányú.
F
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
F • Vektorműveletek használata:
y
Vektor 1 Vektor 2 Vektor 1+2
Eleforgatott vektor
x
Infra szenzorok (Distance modul)
F • Distance modul:
• Bumper:
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
Minden szenzorhoz külön objektum tartozik. Ellentétben az 1.7-es verzióval.
value
Bumper állapota
Jel kondicionálás
F • Scale: átskálázás
be
bemenet
ki
kimenet
• Transfer function x
bemenet
y
kimenet
• Mean filter
Input
bemenet
Output
kimenet
F
PassiveAviod
Feladat: Menekülés az esetleges ütközések elől. Az ellenkező irányba kell elmozdulni, mint amerre valami akadály van.
F
PassiveAviod értelmezése
Minden infra szenzorra szükség van. Infra szenzorok
F
PassiveAviod értelmezése
Vektorok létrehozása
Infra szenzorok
A továbbiakban vektorokkal szeretnénk dolgozni, így az infra-szenzorok jeleiből vektorokat hozunk létre.
PassiveAviod értelmezése
F Vektorok létrehozása
Vektorok összegzése
Infra szenzorok
Minél hosszabb a vektor, annál közelebb van a fal.
PassiveAviod értelmezése
F Vektorok létrehozása
Vektorok összegzése
Egységvektor létrehozása
Infra szenzorok
Egyenlőre csak az akadály irányára van szükségünk.
PassiveAviod értelmezése
F Vektorok létrehozása
Vektorok összegzése
Egységvektor létrehozása
Infra szenzorok
Vektorhossz meghatározása
Minél közelebb vannak az akadályok, annál hosszabb vektort hozunk létre.
PassiveAviod értelmezése
F Vektorok létrehozása
Vektorok összegzése
Vektor elforgatása Egységvektor létrehozása
Infra szenzorok
Vektorhossz meghatározása
A vektor most az akadály irányába mutat. Nekünk ezzel a vektorral pont ellentétes irányba kell elmozdulnunk.
PassiveAviod értelmezése
F Vektorok létrehozása
Vektorok összegzése
Vektor felbontása
Vektor elforgatása Egységvektor létrehozása
Infra szenzorok
Vektorhossz meghatározása
Hirtelen mozdulatok kiszűrése
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.
Web-kamera képe
F • Webkamera képének megtekintése:
Image
Kép kimenet
Képfeldolgozás
F
• Segmenter Modul: Az állatalunk kijelölt színekre bontja a kamera képét.
Kép lefagyasztása
Input
bemeneti kép
Output
szegmentált kép
Szín kijelölése
Szín lementése
Képfeldolgozás
F
Piros összetevő állítása
Kék összetevő állítása
Zöld összetevő állítása
Fagyasztás megszűntetése
Képfeldolgozás
F
• Segment extractor: Az adott színszegmensnek a 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
A (0;0) koordináta a kép bal-felső sarkában található.
Ellentétben az 1.7-es verzióval.
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?
Képfeldolgozás
F
VIDEO
VIDEO
Vonalkövetés
F • LineDetector modul: Input
kép bemenet
Threshold
vonalkereső érzékenysége
Search start
Honnan kezdje a keresést?
Search height
x
szegmens súlypontjának x koordinátája
Line Found
Találtunk vonalat?
Vizsgált terület magassága
Az x=0 a kép baloldalán található. Ellentétben az 1.7-es verzióval.
F
Vonalkövetés
VIDEO
Vonalkövetés
F • Vonalkövetés kiegészítő szenzorokkal: Digitális bemenet Analóg bemenet Digitális kimenet Relés kimenet
Induktív Szenzor
Optikai Szenzor
AI
DI
F • Vonalkövetés optikai szenzorokkal:
Vonalkövetés
Globális változók
F • Globális változók használata: adatok átvitele programmodulok között alprogramok kilépési feltételei (lásd később)
Globális változók
Globális változó olvasása Globális változó írása
Szekvenciális programvégrehajtás
F
• 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: 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
Párhuzamos ágak:
F
Szekvenciális programvégrehajtás
• Kilépési feltételek globális változók alapján: 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
F
Szekvenciális programvégrehajtás
• Alternatív ágak különlegességei: Mindig csak az egyik ágban van programfutás Az ágak prioritás balra nő (ha egyszerre két ágnál teljesül a kilépési feltétel, akkor a leg baloldalabbi á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 (lásd: példa).
?
F
Szekvenciális programvégrehajtás
F
Szekvenciális programvégrehajtás
• Párhuzamos ágak különlegességei: 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
Szekvenciális programvégrehajtás
• Biztonsági program: bumper hatására leáll Elhelyezünk egy párhuzamos ágat, ami bumper hatására a „bumper” nevű globális változót 1-be állítja (Step7). A „bumper változó hatására kilépünk a programokból. (minden kilépési feltételbe be kell rakni, hogy „|| bumper”!
Step7:
Egyszerű szabályozás
F
• Tartsuk a Robotino-t az előtte lévő faltól 5 cm-re! Alapjel
Rendelkező jel
+ -
Ellenőrző jel
Szabályozó (Programunk)
Robotino
Érzékelő
Szabályozó (Programunk) Alapjel
Robotino
Érzékelő
Kapcsolódás a Robotino-hoz
F
• Robotino adatainak leolvasása: IP-cím: 172.26.1.1 SSID: Robotino.2.122
• Kapcsolódás: WLAN bekapcsolása Csatlakozás az AP-hoz
Windows XP
Windows Vista / 7
Program futtatása a PC-n
F
1. Kapcsolódás a Robotino Accespoint-jához (Wifi szükséges) 3.Szekvenciális program futtatása
(3.) Aktuális alprogram futtatása (Kézi leállítás szükséges!)
1. IP-cím beírása 2. Kapcsolódás
RobotinoSim használata
F
Kijelölő eszköz
Port Robotino (kijelölve) Ha lassú a kommuniká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
Köszönjük a figyelmet! Kérdések? Játékra fel!