A RobotinoView programozása

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Adatelemzés számítógéppel
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
3. A programozás eszközei, programozás-technikai alapismeretek
Small Liga Mozgás vezérlő rendszere
Turbo Pascal Változók.
Szoftevrismeret Operációs rendszerek.
Bevezetés a Java programozásba
Adatbázis alapú rendszerek
Ez a dokumentum az Európai Unió pénzügyi támogatásával valósult meg. A dokumentum tartalmáért teljes mértékben Szegedi Tudományegyetem vállalja a felelősséget,
Ez a dokumentum az Európai Unió pénzügyi támogatásával valósult meg. A dokumentum tartalmáért teljes mértékben Szegedi Tudományegyetem vállalja a felelősséget,
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Jt Java Kifejezések,precedencia. jt 2 Egy kifejezés operandusokból és operátorokból (műveletekből) áll. A kifejezésben szerepelhet egy vagy több operandus,
Készítette: Rummel Szabolcs Elérhetőség:
Az operációs rendszerek
PHP Webprogramozás alapjai
Programozás I. Ciklusok
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Vizuális és web programozás II.
Excel Hivatkozások, függvények használata
C nyelv utasításai.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Függvények.
Beolvasó utasítás Console.Read();  Int típusú adatot kapunk. Console.ReadLine();  String típusú adatot kapunk. Console.ReadKey();  Tetszőleges billentyű.
Funkcionális programozás 2. gyakorlat
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Ismétlés.
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
3.2. A program készítés folyamata Adatelemzés, adatszerkezetek felépítése Típus, változó, konstans fogalma, szerepe, deklarációja.
Operátorok Értékadások
Készítette: Csíki Gyula
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
A PLC programozási nyelvek bemutatása
Java programozási nyelv Vezérlési szerkezetek
Számítógépes grafika I. AUTOCAD alapok
Az ábrán az inicializáló blokk lefutása utáni állapotot láthatjuk. A KÉSZ halmazhoz való tartozást színezéssel valósítjuk meg. A nem KÉSZ csúcsok fehérek,
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Operátorok Vezérlési szerkezetek Gyakorlás
Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
Táblázatkezelés.
Free pascal feladatok
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 3.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Vizuális programozás Előadó: Csapó Gábor.
FPGA Készítette: Pogrányi Imre.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Szöveg beírásához kattintson ide A SCRATCH környezet bemutatása szakköri tapasztalatok alapján Gödöny Péter Budapesti Műszaki Szakképzési Centrum Pataky.
Programstruktúrák. Program A program utasítások olyan sorozata, amely a számítógépen önállóan képes megoldani egy feladatot. A program háttértáron futtatható.
Programozási alapok.
00. GYAKORLAT Bevezető.
Kifejezések C#-ban.
Gépészeti informatika (BMEGEMIBXGI)
Programozási nyelvek típusossága.
Programozás C# -ban Elágazások.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Grosz Imre f. doc. Sorrendi áramkörök
PLC PROGRAMOZÁSI NYELVEK
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmus készítés.
Előadás másolata:

A RobotinoView programozása Í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

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

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

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.

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

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

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ének beállítása (ha szükséges)

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!)

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

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 Mozgás előre: Forgás jobbra:

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

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

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

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: Minden tengelyhez és minden gombhoz külön objektum tartozik. value gomb értéke

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!

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

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 be bemenet ki kimenet Transfer function x bemenet y kimenet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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ő

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ő

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