Mendelova univerzita v Brně Provozně ekonomická fakulta
Vizualizace manipulátoru KATANA v prostředí Control Web Bakalářská práce
Vedoucí práce: Dr. Ing. Radovan Kukla
Robert Rouš
Brno 2010
2
Rád bych na tomto místě poděkoval vedoucímu mé práce panu Dr. Ing. Radovanu Kuklovi za odborné vedení, vstřícný přístup a mnoho cenných rad při zpracování této práce.
Prohlašuji, že jsem tuto práci vyřešil samostatně s použitím literatury, kterou uvádím v seznamu.
V Brně dne 20. května 2010
....................................................
5
Abstract Rouš, R. KATANA manipulator visualisation in the Control Web system. Bachelor thesis. Brno, 2010. This thesis contains describtion of the KATANA manipulator and the creation of its visualisation. Thesis describes creation of the 3D model and its preparation for application in the Control Web 6 system. This part also describes selection of the right export format for the model and describes export of the model with the Rhinoceros 4 program. The last part describes the creation of the visualization in the Control Web system. There is also described the usage of the 3D model, the maim algorhytm and the controlling concept with the graphical user interface layout.
Abstrakt Rouš, R. Vizualizace manipulátoru KATANA v prostředí Control Web. Bakalářská práce. Brno, 2010. V práci je popsán manipulátor a tvorba jeho vizualizace. Práce popisuje tvorbu jeho modelu společně s přípravou pro použití v systému Control Web. Tato část také obsahuje výběr vhodného formátu modelu a export do něj pomocí programu Rhinoceros 4. Poslední částí je tvorba vizualizace v systému Control Web. Je zde popsáno použití a nastavení modelu, hlavní algoritmus programu a návrh ovládání společně s návrhem grafického rozhraní aplikace.
6
OBSAH
Obsah 1 Úvod
8
2 Cíl práce
9
3 Teorie 3.1 Klasifikace průmyslových robotů a manipulátorů . . . . . . . . . . 3.2 Kinematika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Posuv a rotace . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Kinematické řetězce průmyslových robotů a manipulátorů 3.2.3 Typy prostoru . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Manipulátor KATANA 6M180 . . . . . . . . . . . . . . . . . . . . 3.3.1 Technické parametry . . . . . . . . . . . . . . . . . . . . . 3.3.2 Uchopovací čelisti . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Ovládání . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 3D modelování . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Polygonové sítě . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Knihovna OpenGL . . . . . . . . . . . . . . . . . . . . . . 3.5 Závěr kapitoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Metodika 4.1 Principy práce s Control Web 6 . . . . . . . 4.1.1 Objekty a události . . . . . . . . . . 4.1.2 Přístroje . . . . . . . . . . . . . . . . 4.2 3D modelování . . . . . . . . . . . . . . . . 4.2.1 Základní možnosti práce s Rhinoceros 4.3 Závěr kapitoly . . . . . . . . . . . . . . . . .
. . . . . . . . 4. . .
5 Vlastní práce 5.1 Tvorba 3D modelu . . . . . . . . . . . . . . . . 5.1.1 STP soubory . . . . . . . . . . . . . . . 5.1.2 Import modelu a přepočet na polygonové 5.1.3 Rozdělení, kompletace a příprava modelu 5.1.4 Export modelu . . . . . . . . . . . . . . 5.2 Control Web – 3D zobrazení . . . . . . . . . . . 5.2.1 3D scéna a import modelu . . . . . . . . 5.2.2 Určení návazností částí modelu . . . . . 5.2.3 Určení středů rotací . . . . . . . . . . . . 5.3 Control Web – programový základ aplikace . . . 5.3.1 Nastavení časování . . . . . . . . . . . . 5.3.2 Hlavní algoritmus . . . . . . . . . . . . . 5.3.3 Evaluátory . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . sítě . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . .
10 10 11 11 12 14 14 15 15 16 16 17 17 18 19
. . . . . .
20 20 21 21 22 22 22
. . . . . . . . . . . . .
24 24 24 24 25 26 28 28 29 30 31 31 32 35
7
OBSAH
5.4
5.5
Control Web – ovládání vizualizace 5.4.1 Manuální ovládání . . . . . 5.4.2 Nastavení určené pozice . . 5.4.3 Uživatelský program . . . . 5.4.4 Grafické rozhraní aplikace . 5.4.5 Kamera a nastavení . . . . . 5.4.6 Systémové požadavky . . . . Závěr kapitoly . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
36 36 37 37 38 39 39 39
6 Závěr 41 6.1 Shrnutí práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.2 Zhodnocení výsledků . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.3 Budoucí využití a možná rozšíření . . . . . . . . . . . . . . . . . . . . 42 7 Literatura
43
Přílohy
44
A Technické parametry manipulátoru
45
B Model manipulátoru
47
C Grafické rozhraní aplikace
49
D Ukázka běhu aplikace
50
E Přiložené CD
52
1
1
ÚVOD
8
Úvod
Ve všech průmyslových odvětvích se vyskytují monotónní práce, fyzicky namáhavé činnosti, práce v nepříznivých nebo nebezpečných podmínkách nebo úkoly vyžadující vysoké nároky na svědomitost, bdělost a pečlivost pracovníka. Ve všech těchto případech se dá uvažovat o použití manipulátorů s různým stupněm automatizace. Pokud to zvážíme, cíl této myšlenky je pak často označován jako snaha vytvořit zařízení s takovým stupněm automatizace, aby nahradilo člověka v celém výrobním procesu. Nahrazení člověka sebou totiž nese krom snížení jeho námahy jednu velkou výhodu. Odstranění tzv. lidského faktoru a tím snížení chyb. Snahy o ulehčení si práce nebo pomoc s některými úkoly lze sledovat hluboko do minulosti. Jak už pouze písemné zmínky o strojích nahrazujících lidskou práci nebo dochované konkrétní předměty jako primitivní protézy pro raněné nebo různá jednoduchá manipulační zařízení. Vždy byli však lidé limitováni technickými možnostmi. První programovatelné a plně automatizovatelné manipulátory a roboty se však objevily až ve druhé polovině dvacátého století. Jako většina technických zařízení jsou i průmyslové roboty a manipulátory součástí výrobních řetězců a jejich vývoj zapadá do složitého vývojového procesu celého strojírenství, elektroniky a dalších oborů. Jejich vývoj se tedy nedá chápat jako oddělená část ale jako jeden z výsledků ovlivňování oblastí vědy a techniky. Toto prolínání se vývoje s výrobou je pro dnešní dobu typické a z hlediska budoucnosti se nejspíš zásadně nezmění. Pro vývoj obecně pro poznání principů funkcí průmyslových robotů a manipulátorů je nutné jejich studium. Proto i naše univerzita zakoupila manipulátor KATANA od firmy Neuronics AG. Tento manipulátor je právě díky svým vlastnostem pro studium velmi vhodný. V průběhu seznamování se s manipulátorem se zrodil nápad vytvořit vlastní rozhraní pro ovládání manipulátoru společně s jeho vizualizací kompletně v prostředí Control Web. Vzhledem k tomu, že jsou to vlastně dva samostatné obsáhlé úkoly, byly rozděleny. Tato práce by se měla zabývat tvorbou vizualizace v prostředí Control Web a návrhem jejího ovládání.
2
2
CÍL PRÁCE
9
Cíl práce
Tato práce si klade za cíl, krom seznámení se s manipulátorem samotným, vytvořit jeho vizualizaci, tedy vytvořit 3D model s návrhem ovládání v prostředí systému Control Web 6. Tato vizualizace bude znázorňovat funkce manipulátoru a díky grafickému 3D prostředí bude možné s modelem pohybovat jako se skutečným manipulátorem. Požadavky na model zahrnují vytvoření modelu, ve vhodném 3D modelovacím nástroji, který bude rozměrově odpovídat skutečnosti. Vzhled samotného modelu není důležitý. Důraz se klade na logiku a funkčnost vizualizace. Ovládání vizualizace spočívá v možnosti nastavení úhlů natočení jednotlivých ramen. Další součástí programu je možnost vytvářet uživatelské funkce (programy) činnosti.
3
TEORIE
3
10
Teorie
Dále je nutné studium průmyslových manipulátorů pro bližší poznání manipulátoru KATANA s teorií prostorových posuvů a transformací. Další částí je také vysvětlení některých pojmů z 3D grafiky, vhodných při samotném řešení práce.
3.1
Klasifikace průmyslových robotů a manipulátorů
Při práci s průmyslovými roboty se setkáme s různými označeními. Manipulátor, automatická ruka, robot či univerzální podávací zařízení – to jsou názvy pro univerzální automatizované zařízení, které je schopné vykonávat pohyby podobné pohybům lidské paže či ruky. Technickými předchůdci těchto zařízení byly různé mechanické ruce a jiná jednoduchá manipulační zařízení. Všechna tato zařízení přinesla zmenšení námahy a zvýšení bezpečnosti práce spolu se zkrácením výrobních časů v různých výrobních provozech (tváření, obrábění, kování a další.). Dnešní manipulátory jsou již navíc schopné narozdíl od nich být více univerzální a to díky programovému vybavení a rozšířeným možnostem vnímání prostředí. Stále ale plní obdobné úkoly – provádí manipulaci s nejrůznějšími předměty. (B. Chvála, R. Matička, J. Talácko, 1990)
Obr. 1: Rozdělení manipulačních zařízení (B. Chvála, R. Matička, J. Talácko, 1990)
Bavíme-li se o manipulátoru KATANA a o většině dnešních robotů a manipulátorů, můžeme je zařadit do kategorie univerzální manipulátory. Obecně pro ně platí, že mají větší rozsah manipulačních možností, které se využívají podle způsobu nasazení. Z hlediska použitelnosti jsou rozhodující především kinematické parametry (počet stupňů volnosti, druh dílčích pohybů), rozsahy jednotlivých pohybů, přesnost polohování, maximální zatížení.
3.2
11
Kinematika
Ve velké míře se dnes využívá spojení manipulátoru společně s dalším zařízením zajišťujícím vnímání okolí (např. kamera). Takovéto manipulátory spadají do kategorie kognitivní1 roboty. (B. Chvála, R. Matička, J. Talácko, 1990)
3.2
Kinematika
Manipulátor KATANA je označován jako manipulátor s pěti stupni volnosti. Tento pojem se v mechanice dle Adamce (J. Adamec, 2006) vysvětluje jako základní směry posunu a směry otáčení, kterými se bod nebo těleso může pohybovat a otáčet. Obvykle se tyto směry kryjí se směry souřadného systému, kterými je pozice tohoto bodu popisována a směry otáčení kolem těchto os. Hlavní typy stupně volnosti v ploše tedy jsou posun podél osy x, podél osy y a otočení kolem bodu. Pozice bodu v prostoru má 3 stupně volnosti z hlediska polohování, z hlediska manipulace a uchopení je pak potřeba dalších 3 stupňů (tj. 6 jak se uvádí u univerzálních robotů). V prostoru tedy přibude ještě posun podél osy z a otáčení je možné kolem všech os, tedy kolem osy x, y, a z. Tyto základní typy pohybů a způsob chápání pojmu stupeň volnosti si můžeme uvést na jednoduchém příkladu s lidskou paží. Lidská paže má dohromady sedm stupňů volnosti. Rameno potom udává rotaci celé paže horizontálně. Rotaci vertikálně, a natáčení celé paže. Loket potom zajišťuje rotaci podle jedné osy a zápěstí koná stejné rotace jako rameno. Pouze 3 z těchto pohybů by byly nezbytné pro pohyb ruky na jakékoliv místo v prostoru ale člověk by ztratil schopnost uchopit věci z různých směrů. 3.2.1
Posuv a rotace
Pro reprezentaci výchozího stavu před transformací v homogenním prostoru si zvolíme matici identity I. Matice identity I má pouze jedničky na diagonále. Při násobení vektoru touto maticí je výsledný vektor identický s vektorem původním. Takováto matice nám tedy reprezentuje původní stav souřadného systému. Matice identity je vždy východiskem, na které postupným násobením matic vždy aplikujeme jednotlivé transformace. (R. Bílý, 2010)
1 0 I= 0 0
0 1 0 0
0 0 1 0
0 0 0 1
(1)
Posuv neboli translace je pohyb přímočarý posuvný. Matematický popis je dán maticí translace T a vektorem posunutí v = (x, y, z). Při posuvu chceme chceme 1 Kognitivní proces je proces vnímání a speciálního myšlení ovšem bez citového vnímání a volného jednání.
3.2
12
Kinematika
pouze posunou počátek souřadného systému ve směru vektoru translace.(R. Bílý, 2010) Matice translace je potom tedy:
1 0 T = 0 0
0 1 0 0
0 0 1 0
x y z 1
(2)
Rotace je pohyb rotační okolo osy a o určitý úhel α. Matice rotací podle základních os jsou tedy:
1 0 0 0 cos α − sin α Rotace podle x Rx = 0 sin α cos α 0 0 0 cos α 0 sin α 0 1 0 Rotace podle y Ry = − sin α 0 cos α 0 0 0 cos α − sin α 0 sin α cos α 0 Rotace podle z Rz = 0 0 1 0 0 0 3.2.2
0 0 0 1 0 0 0 1 x 0 0 1
(3)
(4)
(5)
Kinematické řetězce průmyslových robotů a manipulátorů
Za referenční bod ramene považujeme konec ramene polohovacího mechanizmu průmyslových robotů a manipulátorů. Tento bod vykonává pohyb po přímce nebo po křivce. Podle konstrukce zařízení je tento pohyb buď jen po jedné souřadnici nebo je v rovině a nebo je prostorový. Základní dva pohyby jsou pohyb přímočarý posuvný (translační) a pohyb rotační. Pro pohyb referenčního bodu po křivce musí dojít k současnému působení dvou nebo více pohybů rotačních, dvou nebo více pohybů přímočarých posuvných, nebo jejich kombinací. Kinematický řetězec prům. robotů a manipulátorů je sestaven z kinematických dvojic. Protože se u těchto mechanizmů využívá základních pohybů, tj. přímočarého posuvného, rotačního a jejich kombinací, používají se zde pouze jednoduché kinematické dvojice, a to dvojice posuvné (translační) a dvojice rotační. Kinematické struktury rozeznáváme minimální a rozšířené. (J. Adamec, 2006) Kinematickou dvojici tedy můžeme chápat jako dvojici ramen spojených kloubem. Kde značení znamená:
3.2
Kinematika
13
Obr. 2: Kinematické dvojice (J. Adamec, 2006)
• • • •
R – rotační kinematická dvojice (1 stupeň volnosti) T – posuvná (translační) kinematická dvojice (1 stupeň volnosti) V – valivá kinematická dvojice (1 stupeň volnosti) O – obecná kinematická dvojice, např. posuv a válení (2 stupně volnosti) (J. Adamec, 2006)
Z kinematických dvojic lze tvořit kinematické struktury. Minimální kinematickou strukturou chápeme strukturu, která umožňuje dosažení libovolné polohy v prostoru s minimálním počtem kinematických dvojic. Rozšířená kinematickou strukturu potom chápeme jako minimální kin. strukturu s přidáním dalších kinematických dvojic. (J. Adamec, 2006)
Obr. 3: Minimální kinematické struktury (J. Adamec, 2006)
Obr. 4: Angulární kinematická struktura (V. Smutný, 2010)
Kinematická struktura se třemi stupni volnosti rotačními (RRR) se nazývá angulární. (V. Smutný, 2010)
3.3
Manipulátor KATANA 6M180
14
Kinematické struktury jsou charakterizovány, počtem stupňů volnosti, velikosti a tvarem manipulačního prostoru, typem kinematických dvojic (např. PRR, PPP, RPP atd.) a rozsahem pohybů jednotlivých kinematických dvojic. (J. Adamec, 2006) Pojmenování kinematických struktur vychází zejména z tvaru prostoru, který může být dosažen při dané kombinaci kinematických dvojic. 3.2.3
Typy prostoru
S definicí minimálních kinematických struktur souvisí pojmy okolní prostor, operační prostor a pracovní obálka (pracovní prostor). • Okolní prostor - prostor, ve kterém robot nebo mechanismus pracuje. Obvykle je to E 2 (rovina, planární manipulátor) nebo E 3 (prostor). Jedná se o Euklidovský prostor (nebo jeho aproximace). • Operační prostor - je podprostor okolního prostoru, do kterého může při pohybu robot zasáhnout některou ze svých částí. • Pracovní prostor - je podprostor okolního prostoru. Udává kam může robot sáhnout referenčním bodem chapadla. (V. Smutný, 2010)
3.3
Manipulátor KATANA 6M180
Manipulátor KATANA je výrobek švýcarské firmy Neuronics. Jeho aplikace v praxi je dána hlavně rozměry a nosností ramene. Využití tedy najde zejména při manipulaci s menšími předměty. V situacích kdy se na mnoha místech využívá lidská práce na operace typu vyber a přesuň. V reálném provozu tedy může manipulátor například přeskládávat hotové obrobky vycházející z různých strojů, ve spojení s kamerou vybírat defektní výrobky nebo přesné osazování určených míst. Toto jasně předurčuje aplikaci zejména při malých a středně velkých produkcích. Kontrola kvality, vkládání a testování výrobků. Využití v potravinářském, chemickém, elektrotechnickém nebo strojním průmyslu. Výroba a komerční sféra ovšem není jedinou možností využití. Díky svý rozměrům lze manipulátor velmi dobře využít pro výzkum a studium průmyslové robotiky. Své uplatnění tedy najde i na školách a místech produkujících vědeckou činnost, jako vhodný praktický doplněk. Velkou výhodou je možnost na samotné rameno přichytit různé druhy uchopovacích čelistí (mechanické, pneumatické, vakuové, magnetické) nebo využít možnosti univerzálního adaptéru a použití čelistí vyrobených přesně podle specifických podmínek na zakázku. Použijeme-li klasifikaci z předchozích podkapitol můžeme tento manipulátor zařadit jako manipulátor s angulárním pracovním prostorem (je schopen pouze rotací – RRR). Z hlediska rozdělení dle obr. 1 můžeme zařadit manipulátor do skupiny univerzálních manipulátorů. Při spojení s kamerovým systémem, který je možné doinstalovat, se dá již mluvit o manipulátoru kognitivním.
3.3
Manipulátor KATANA 6M180
15
Obr. 5: Pracovní prostor (Katana - Automation made easy, 2008)
3.3.1
Technické parametry
Manipulátor samotný s podstavcem jsou vyrobeny z eloxovaného hliníku. Kompletní manipulátor se skládá z pohyblivého ramene, základny s komunikačním rozhraním a uchopovacích čelistí zvolených dle potřeby. Základna s komunikačním rozhraním obsahuje kruhovou desku tištěných spojů sloužící jako základní řídicí deska - master, která komunikuje se slave deskami (podřízené desky mikrokontroléru: jedna pro každý motor a jedna nebo více desek pro uchopovací čelisti a případně pro další přídavná zařízení). Pro pohon jsou použity DC stejnosměrné kartáčové motory. Převodovky motorů v ramenech jsou použity harmonické k zabezpečení precizního polohování s minimálním zatížením os. Každý motor obsahuje enkodér, díky kterému se dá odečítat poloha ramene. Zatížení ramene se potom měří pomocí velikosti proudu odebíraného motorem při zatížení. (Návod k použití robotů Katana, 2006) 3.3.2
Uchopovací čelisti
Firma Neuronics nabízí několik druhů uchopovacích čelistí kompatibilních s manipulátorem 6M180. Standardní čelisti jsou dodávány pod názvem Univerzální a jsou mechanické. Jsou vybaveny čtyřmi infračervenými a dvěma silovými senzory. Volitelně je možné přidávat na čelisti další infračervené snímače. (Katana4D Příručka pro uživatele, 2007) Další možné verze uchopovače jsou například:
3.4
3D modelování
16
• Kyvadlový uchopovač – Tento typ uchopovače má přídavný stupeň volnosti. V závislosti na gravitaci směřují čelisti stále vertikálním směrem. To umožňuje robotu uchopit předmět vždy nezávisle na orientaci ramene. • Vakuový uchopovač – Tento uchopovač dokáže uchopovat předměty díky podtlaku. (Katana4D Příručka pro uživatele, 2007) 3.3.3
Ovládání
Manipulátor komunikuje s počítačem s nainstalovaným softwarem prostřednictvím sériového rozhraní. Program dodávaný výrobcem se jmenuje Katana4D. Katana4D podporuje ovládání ve třech různých operačních módech programu: • Uživatelský mód – Pro výběr a implementaci nastavených programů. V tomto módu je běžný uživatel schopen spouštět pouze 3 administrátorem předdefinované programy ovládající pohyb manipulátoru. • Programovací mód – Pro vytváření, editování a alokaci programů. V programech jsou ukládány sekvence pohybů. K programování je použito grafické rozhraní spolu s využitím skriptů psaných v programovacím jazyce 4th Dimension. Programy obsahují příkazy vytvořené pro Katana4D a definice (body, rastry, atd.). • Administrátorský mód – Pro úpravy a rozšíření významných parametrů. V tomto módu je možné přistupovat ke všem částem softwaru jako například k nastavení připojení, tvorbě úkolů a projektů obsahujících jednotlivé programy. (Katana4D, 2004) Jednou z možností ovládání je ruční ovládání manipulátoru. V tomto režimu je možné jednotlivým ramenům zadávat úhly natočení ve stupních s přesností na jednu setinu stupně. Veškeré hodnoty jsou nastavovány pomocí enkodérů, které jsou v každém motoru. Pro správnou funkci měření je potřeba manipulátor kalibrovat pomocí krajních bodů jednotlivých ramen a nastavením v ovládacím softwaru. (Katana4D, 2004, s. 7) Celý obslužný software byl vytvořen v programovacím jazyce 4th Dimension více o něm dostupné v referenční příručce jazyka. (4th Dimension Language Reference, 2007).
3.4
3D modelování
Díky modelování objektů můžeme provádět celou řadu činností jako například, návrhy součástí, vizualizace procesů, modelování terénu nebo simulace procesů. Základním problémem při modelování objektů volného tvaru (objekty jsou téměř libovolně definovatelné uživatelem, ten není omezován co se rozměru nebo tvaru výsledku týče) však zůstává rozměrová přesnost výsledného modelu. Pro zobrazení a modelování existují dva základní způsoby prezentace 3D modelů.
3.4
3D modelování
17
V souvislosti s tvorbou 2D a 3D grafiky se často můžeme setkat s pojmem grafické primitivy nebo polygonové primitivy. Těmito pojmy označujeme základní objekty, které bývají často předdefinované a je možné je v modelovacích softwarech vkládat do scény a využít je k modelování. Jsou to například 3D ploška, rovina, kvádr, koule elipsoid, kužel, komolý kužel, válec, anuloid nebo i úsečka a trojúhelník. (Rhinoceros verze 3.0 uživatelská příručka, 2003) 3.4.1
Polygonové sítě
První využívá polygonové sítě. Polygonová síť je vlastně souborem plochých trojúhelníků, které se snaží ideální plochu aproximovat — i když je ale plocha zakřivená, reprezentuje ji modelovací software stále jako síť plošek — nejčastěji trojúhelníků a čtyřúhelníků. I když se zdá, že programy pro polygonové modelování poskytují zcela přesné nástroje pro modelování objektů jako jsou koule, válec atd., nakonec jsou stejně všechny plochy převedeny na polygonové sítě. Z tohoto důvodu nejsou polygonové sítě příliš vhodné pro modelování například strojírenských součástek a obecně modelů u kterých je velmi důležitá přesnost. Větší přesnosti lze dosáhnout použitím více polygonů, tím ovšem nikdy nedosáhneme absolutní přesnosti a navíc se tím zvýší nároky na vykreslující hardware a dobu vykreslování. Svoje uplatnění ovšem najdou zejména při renderování a animaci. (Rhinoceros verze 3.0 uživatelská příručka, 2003) 3.4.2
NURBS
Druhou možností reprezentace 3D dat je NURBS geometrie. Tato metoda reprezentace objektů je známá z většiny modelovacích programů pro CAD, CAM, CAE a CAID které reprezentují plochy a tělesa volného tvaru právě jako NURBS objekty. Pokud je NURBS geometrie implementována pečlivě mohou být obecné tvary opisovány s dostatečnou přesností pro většinu náročných aplikací. Pokud je však prvotním zaměřením této aplikace strojírenství a ne tvorba obecných ploch, je jasné, že implementace NURBS geometrie bude z hlediska možnosti tvorby složitých ploch volného tvaru slabší. To je typické pro parametrické modelovací programy střední třídy. (Rhinoceros verze 3.0 uživatelská příručka, 2003) Hlavní výhody NURBS jsou: • Neomezené konstrukční možnosti - modifikace polohy bodu, váhy, uzlového vektoru, stupně. • rychlý, stabilní algoritmus. • Lokální kontrolovatelnost – při změně (např. bodu, váhy) dochází pouze k lokální změně křivky, zrychluje výpočet a vykreslování. • Zachování spojitosti při změnách. • Projektivní invariantnost - při základních transformacích – rotace, posunutí, zkosení – stačí zobrazit pouze řidící body a křivku znovu vypočítat, zrychluje výpočet.
3.4
3D modelování
18
• Konstrukce kuželosečkových oblouků. (J. Procházková, 2006) 3.4.3
Knihovna OpenGL
Knihovna OpenGL2 je aplikační programové rozhraní — API3 — k akcelerovaným grafickým kartám resp. celým grafickým subsystémům. OpenGL byla navržena tak, aby byla multiplatformní, využitelná s mnoha programovacími jazyky a aby byla použitelná na různých typech grafických akcelerátorů. V případě, že žádný grafický akcelerátor není nainstalován je použita softwarová simulace a výpočet scény přebírá místo jádra grafického akcelerátoru procesor. Pomocí funkcí poskytovaných knihovnou OpenGL lze vykreslovat obrazce a tělesa složená ze základních geometrických prvků, které nazýváme grafická primitiva (viz podkapitola 3.4 na straně 17). Vykreslování scény se provádí procedurálně - voláním funkcí OpenGL se vykreslí výsledný rastrový obrázek. Ten je uložený v tzv. framebufferu, kde je každému pixelu přiřazena barva, hloubka, alfa složka popř. i další atributy. Z framebufferu se už čte pouze barevná informace a tu je možné následně zobrazit na obrazovce. (P. Tišnovským, 2003) Princip viz obr. 6
Obr. 6: Princip vykreslování OpenGL (P. Tišnovským, 2003)
Pro vykreslování se často používají tzv. rozšíření OpenGL (OpenGL extensions). Jedná se o řadu funkcí a mechanismů, přístupných prostřednictvím API OpenGL, Win32 a grafického ovladače. Tato rozšíření bývají hardwarově podporována výrobci grafických akcelerátorů. To, která rozšíření akcelerátor podporuje, bývá specifikováno výrobcem pomocí označení verze knihovny OpenGL. Problémem zůstává pokud některý akcelerátor nepodporuje požadované rozšíření (podporuje některou starší verzi knihovny). Tyto případy proto musí být ošetřeny a proto nelze na rozšíření příliš spoléhat. (R. Bílý, 2010) 2 3
Open Graphics Library Application Programming Interface – rozhraní pro programování aplikací.
3.5
3.5
Závěr kapitoly
19
Závěr kapitoly
V této kapitole jsme se seznámili s klasifikací průmyslových manipulátorů, základními pojmy z kinematiky průmyslových robotů, manipulátorem samotným a základními pojmy, které se týkají 3D grafiky. Použijeme-li uvedený způsob klasifikace, můžeme manipulátor KATANA zařadit jako univerzální manipulátor s angulárním pracovním prostorem (provádí pouze rotace). Jedná se o manipulátor vhodný pro širokou škálu průmyslových odvětví využitelný zejména při malých a středně velkých produkcích výrobků nebo jako vhodná pomůcka pro studium a výzkum průmyslových manipulátorů. Jeho výhodou je možnost rozšíření o různé uchopovací čelisti nebo propojení s kamerovým systémem což rozšiřuje možnosti využití a řadí jej i do skupiny kognitivních robotů. Přesuneme-li se do části 3D modelování, můžeme srovnat obě metody reprezentace 3D objektů. Pro technické účely — zejména dokumentace a výkresy — je jednoznačně lepší využít NURBS kvůli rozměrové přesnosti. Pro animace nebo vizualizace je výhodnější použít jednodušší polygonové sítě.
4
METODIKA
4
20
Metodika
Pro tvorbu programu bude použito objektové programování v jazyce prostředí Control Web. Pro tvorbu modelu bude využito grafických nástrojů pro modelování 3D objektů.
4.1
Principy práce s Control Web 6
Control Web (dále jen CW) je univerzální nástroj pro vývoj a nasazování vizualizačních a řídicích aplikací, aplikací sběru, ukládání a vyhodnocování dat, aplikací rozhraní člověk-stroj. Systém s objektově orientovanou komponentovou architekturou zajišťující nejširší rozsah nasazení od prostých časově nenáročných vizualizací až po řídicí aplikace reálného času. (R. Bílý, 2010) Z hlediska programátora se systém skládá ze tří základních částí. Grafický editor s Inspektorem přístroje, textový editor a datové inspektory. • Grafický editor – Díky grafickému editoru se CW řadí k systémům, které podporují grafické programování. Základním prvkem editoru je plocha editoru a Paleta přístrojů. Tento nástroj obsahuje tzv. přístroje. To jsou všechny předdefinované části programu s definovanou strukturou a funkcemi (více v 4.1.2). Grafický editor má za úkol poskytnout vhodný nástroj pro ztvárnění grafického rozhraní. • Datové inspektory – V této sekci se nachází všechny datové proměnné definované globálně pro celou aplikaci. Dále také ovladače pro komunikaci s dalšími zařízeními a nastavení aplikace. V nastavení je možné zvolit parametry ovlivňující chod aplikace jako způsob běhu, prioritu v systému nebo způsob vykreslování 3D scény. • Textový editor – Je částí kde je soustředěn veškerý zdrojový kód, tedy i dílčí z jednotlivých přístrojů. Každá z těchto částí je specificky zaměřena na svou úlohu v procesu vývoje aplikace. Dohromady jsou ale úzce provázány. Toto provázání je označováno jako dvojcestné programování. Shrnuje dohromady jak textové programování (psaní kódu), tak grafické (umisťování grafických reprezentací kódu a tvorba grafického rozhraní v grafickém editoru s automaticky generovaným textovým kódem). Přechod mezi jednotlivými režimy práce je nazýván překlápění. Tento proces je snadný a není nijak omezen ani velikostí aplikace ani fází jejího vývoje. Popsaná dualita přístupů k tvorbě úlohy umožňuje podle momentální potřeby vybrat přesně takový postup, který nejlépe vyhovuje. (R. Bílý, 2010)
Obr. 7: Překlápění (R. Bílý, 2010)
4.1
Principy práce s Control Web 6
21
Změny způsobu práce vyžadují analogické změny podoby aplikace. Control Web přechody mezi režimy jednoduše rozlišuje na překlad (přechod z podoby textové do grafické) a na generování (přechod z podoby grafické do textové), přičemž překlad i generování obyčejně probíhají skrytě schovány do jiných operací - například otevření (nebo uložení) souboru v grafickém režimu automaticky vyvolá překlad (nebo generování) aplikace. Samozřejmě, kdykoli je možné dle vlastního uvážení režim práce změnit ručně. Textová podoba programu je brána jako základní. Textový soubor totiž umožňuje snadnou manipulaci a je udržovatelný nejrůznějšími prostředky (navíc je tak starý jako počítače samy, a tudíž je již zaručeně prověřen). Automaticky je tím dána vysoká bezpečnost a robustnost skladování aplikací. Textová data se totiž dají velmi snadno rozeznat a případně rekonstruovat. Textová podoba aplikace je tedy jediná, kterou CW používá pro ukládání. (R. Bílý, 2010)
Obr. 8: Překlad a generování kódu (R. Bílý, 2010)
4.1.1
Objekty a události
Je nutné zmínit, že CW není striktně objektový. Svou strukturou a způsobem přístupem k programování se objektovému přístupu velmi blíží. Celý běh programu je řízen tzv. událostmi. Neexistuje „hlavní programÿ, namísto toho systém reaguje na události a vyvolává bloky kódu které tyto události zpracovávají. Událost si můžeme představit jako stisknutí klávesy nebo pohyb myši. V případě průmyslového systému reálného času jako je CW jsou události generované i ovladači vstupně/výstupních zařízení, virtuálními přístroji nebo časovači. Událost se nikdy nevyskytuje „sama o soběÿ, bez vztahu k nějakému přístroji. Každý stisk klávesy, periodická aktivace nebo výjimka způsobená ovladačem se týká konkrétního virtuálního přístroje. Z tohoto důvodu jsou i procedury vždy spojeny s konkrétním virtuálním přístrojem. (R. Bílý, 2010) 4.1.2
Přístroje
Všechny přístroje se nachází na paletě přístrojů. Ta je takovým pomyslným skladištěm ze kterého se dají vybírat. Každý přístroj má své vlastní nativní procedury, procedury definované tvůrcem přístroje, které slouží pro jeho konkrétní ovládání. Samozřejmostí je definice vlastních, uživatelských procedur přímo programátorem. Dále také lokální data, což je lokální obdoba datových inspektorů.
4.2
3D modelování
22
Grafické znázornění přístroje může mít několik podob, podle toho jak je který přístroj připraven. Změny parametrů se provádí v inspektoru přístroje a nebo v textovém editoru editací nebo dopsáním příslušného kódu. Pokud se bavíme o přístrojích, nemusíme mít vždy na mysli přístroje viditelné s grafickou podobou. V CW existují přístroje označované jako neviditelné, které slouží jako pomocné stavební kameny při návrhu aplikace. Typickým neviditelným přístrojem je například file používaný pro práci se soubory na disku. Takovýto přístroj nepotřebuje grafickou reprezentaci, je jen funkčním prvkem využitým pro jiné další účely. (R. Bílý, 2010)
4.2
3D modelování
Pro úpravu a tvorbu modelu potřebujeme vhodný 3D modelovací software. Nakonec byl zvolen program Rhinoceros 4 a to hlavně z důvod intuitivního ovládání, podpory požadovaných formátů souborů a předchozích zkušeností s programem. 4.2.1
Základní možnosti práce s Rhinoceros 4
Rhinoceros je nástroj pro modelování NURBS ovšem zvládá i práci s sítěmi polygonů (viz sekce 3.4 na straně 16) a import a export do různých formátů. Práce v programu je určena čtyřmi okny, které znázorňují základní pohledy na scénu pro modelování (pohled zepředu, z boku, z vrchu a perspektivní pohled). Pomocí těchto pohledů je možné modelované objekty upravovat v prostoru v souladu s osami scény. Hlavním principem modelování je tvorba základních grafických primitiv a jejich následná úprava různými nástroji. Nejčastěji se setkáme s využitím booleovských operací na objekty, pro vytvoření sjednocení a průniků. Při práci s NURBS objekty potom s volnou deformací pomocí řidicích bodů nebo vytahování ploch podél přímek a křivek. Samozřejmostí je také využití pomocných nástrojů pro vyplňování, zaoblování a prodlužování ploch nebo nástroje pro stříhání objektů. Důležitým prvkem při modelování jsou možnosti přichytávání. Tyto volby umožňují kurzoru sledovat určitou trasu, např. hranu nebo přímku nebo se přichytit ve středu kružnice, v průsečíku přímek, v koncovém bodu a jiné. Pro analýzu jsou dostupné nástroje jako měření délky, úhlu nebo poloměru. Ty lze samozřejmě kombinovat s různými způsoby přichytávání pro přesné měření. (Rhinoceros verze 3.0 uživatelská příručka, 2003)
4.3
Závěr kapitoly
V této kapitole jsme se seznámili s prací ve dvou pro nás hlavních programech. Systémem Control Web a programem Rhinoceros 4. Každý z nich je určen pro určitou část práce.
4.3
Závěr kapitoly
23
Vzhledem k vlastnostem systému Control Web můžeme využívat textového editoru pro zápis samotného kódu programu a grafický editor pro vytváření grafického rozhraní aplikace. Datové inspektory vzhledem k principu překlápění využívat nemusíme a proměnné můžeme zapisovat také v textovém režimu. Pro tvorbu 3D modelu byl vybrán program Rhinoceros 4 a to díky předchozím zkušenostem s programem a podporovaným formátům. Rhinoceros umí pracovat jak s NURBS objekty tak s polygonovými sítěmi a proto je dostatečně variabilní pro zpracování modelu a výslednou volbu typu reprezentace a formátu modelu.
5
VLASTNÍ PRÁCE
5
24
Vlastní práce
V této kapitole je popsáno praktické řešení úkolu. To se skládá ze dvou hlavních částí a to z vytvoření modelu a samotného programu v systému CW, který vizualizaci zprostředkovává.
5.1
Tvorba 3D modelu
První částí, ze které je nutné vycházet, je model, který bude použit pro vizualizaci. Firma Neuronics AG dodává pro některé své výrobky modely. Pro model KATANA 6M180 je model od výrobce dodáván. Proto byl využit a upraven. Velkou výhodou tohoto řešení je, že model je téměř fotorealistický a co se týká rozměrů, je přesný. I přes to, že je model prakticky hotov, je potřeba jej pro naše potřeby upravit a to už z důvodu, že manipulátor a uchopovací čelisti nejsou zahrnuty v jednom modelu. Další nutné úpravy a konverze si popíšeme v některé z dalších sekcí. 5.1.1
STP soubory
Model samotný se skládá z ramene a uchopovacích čelistí. Obě tyto části jsou dostupné samostatně v formátu STP resp. STEP4 na stránkách výrobce manipulátoru. Tento typ souboru je textový a vychází se standardu ISO-10303-21 (dle hlavičky souboru). Formát je využíván v CAD softwarech a to zejména pro uložení modelů technických součástí. Všechny prvky v souboru jsou uloženy jako NURBS objekty a proto můžeme předpokládat dobrou rozměrovou přesnost. 5.1.2
Import modelu a přepočet na polygonové sítě
Po té co importujeme model do programu Rhinoceros, je nutné zvážit jak dál postupovat při úpravě. Ač je importovaný model zhotovený pomocí NURBS, výsledný model potřebujeme jako síť polygonů. Protože, je model jako takový hotov můžeme ho na polygonové sítě převést rovnou. Jediná nevýhoda tohoto řešení je, že jakékoliv následné operace vycházející s přesných hodnot modelu, jako např. středy motorů ramen, nebudeme moci určit. To je dáno tím, že polygonové sítě jsou pouze dopočítány do stejného tvaru ale úplně přesně ho nekopírují. Jedná se spíš o aproximaci, která nikdy nemůže být stejně přesná jako původní model. Tato nevýhoda se dá obejít pomocí vytvoření pomocné vrstvy s referenčními body ještě před převodem. V této vrstvě vytvoříme kružnice se středy ve stejném bodě jako mají středy motorů ramen. Přímky využijeme jako osy ramen. Teď už nám nebrání nic v převodu na polygonové sítě. Pro převod slouží příkaz „Z NURBS objektuÿ. V nabídnuté volbě máme možnost zvolit množství polygonů, kterými bude model znázorněn. Platí, že čím víc 4
Standard for the Exchange of Product model data
5.1
Tvorba 3D modelu
25
polygonů, tím větší přesnost ale větší model a větší nároky na vykreslování, a naopak. Pro naše účely stačí vzhled modelu, který nebude příliš deformován a zároveň nelpíme na sebemenších detailech. Proto byl zvolen jako vhodný kompromis stupeň čtyři na nabízené stupnici od jedné do deseti, tedy blíže menšímu počtu polygonů. 5.1.3
Rozdělení, kompletace a příprava modelu
Aby bylo možné vytvořit model schopný pohybu, není možné použít ho jako jeden celistvý kus. Program pracující s modelem nemůže vědět, které skupiny ploch modelu mají patřit do které části ramene. Toto musí být definováno již při tvorbě modelu. Pokud chceme vytvořit model pohybující se jako skutečná věc, je potřeba jej rozdělit na stejné funkční celky jako ve skutečnosti. Manipulátor KATANA můžeme z hlediska pohybů rozdělit na sedm částí. viz příloha A obr. 10. • Motor 1 – Spodní část manipulátoru. Vykonává rotaci celého manipulátoru kolem svislé osy. • Motor 2 – První část ramene. • Motor 3 – Druhá část ramene. • Motor 4 – Třetí část ramene. • Motor 5 – Poslední část ramene s uchopovacími čelistmi. • Uchopovací čelisti – Rozevírání a zavírání čelistí. Skládá se ze 2 částí. Rozdělení modelu je v programu Rhinoceros 3D provedeno pomocí příkazu Rozpojit. Ten zajistí, že se model rozdělí na dílčí polygony. Ty je poté nutné spojit do skupin odpovídajícím požadovaným částem. To se provádí klasickým hromadným výběrem. Následně je třeba polygony spojit, aby tvořili samostatný objekt. To je provedeno pomocí příkazu Spojit. Ten zajistí, že polygony jsou vázány do jednoho celku jako objekt a lze s ním i tak pracovat. Pro případnou další úpravu lze takto vytvořený objekt znovu rozložit. Výsledek viz příloha B, obrázek 12 na straně 47. Při rozdělování modelu si můžeme všimnout jedné věci. Model je vytvořen i s velmi malými detaily, jako například montážní díry, šroubky, drátové přípoje, které jsou pro nás naprosto zbytečné a pouze zvětšují model a zmenšují jeho přehlednost. Proto byly tyto detaily odstraněny. Další nutnou úpravou modelu je jeho „narovnáníÿ. Výchozí poloha není vhodná pro pozdější určování středů motorů nutných pro určení jak se mají části modelu pohybovat. Toto narovnání pomocí transformačních funkcí programu Rhinoceros. Díky pomocným kružnicím a přímkám máme potřebné hodnoty stále k dispozici i když je model již přepočítán. Pro správné určení úhlů je použita funkce pro jejich měření a následný dopočet pro absolutní přesnost natočení jednotlivých ramen. Výsledek viz příloha B, obrázek 12 na straně 47. Takto upravený model je téměř kompletní. Stačí jen dodat uchopovací čelisti. Ty se importují stejně jako model manipulátoru. Čelisti jsou také rozděleny na funkční části. Nakonec jsou přisazeny k manipulátoru a části modelu jsou spojeny v jeden celek.
5.1
Tvorba 3D modelu
26
Poslední částí úpravy modelu je úprava vzhledu. Pro lepší přehlednost a napodobení reálného manipulátoru byly části motorů zvýrazněny. Toto se provede rozdělením modelu na další části. Ty se již nebudou hýbat, bude jim pouze přidělena jiná barva. Takto zvýrazněny byly části motorů a čelisti. Výsledný model viz příloha B, obrázek 13 na straně 48. 5.1.4
Export modelu
Protože výsledná aplikace běží v systému CW, musíme se řídit tím jaké formáty modelů lze použít. Ve skutečnosti máme pouze tři možnosti. • 3DS – Jedná se o binární, a proto proprietární formát 3D modelovacího softwaru Autodesk (Discreet) 3D Studio resp. novější verze 3D Studio Max. Tyto produkty mají jinak uspořádán souřadný systém (osa z směřuje nahoru v ploše obrazovky a nikoliv dopředu ven z obrazovky) než Control Web. To je ovšem ošetřeno a přepočítáno. • DXF – Tento textový formát zastává roli všeobecně použitelného výměnného formátu pro CAD a CAM aplikace. Pro 3D modely není zdaleka ideální, zde mu mnoho možností chybí, nicméně to hlavní, a to jsou bezpochyby 3D meshe, z něj získáme spolehlivě. Po načtení se vytváří vlastní skupina pro každý mesh, které jsou poté vyfiltrovány. Pro každou skupinu je automaticky vytvořen také patřičný materiál. • OBJ – Tento formát je široce rozšířen a proto nástroje pro konverzi modelů obvykle tento formát podporují a navíc často slouží jako výměnný formát mezi jednotlivými aplikacemi. Je textový a je tedy upravitelný v běžném textovém editoru a máme jej tak plně pod kontrolou. Je relativně jednoduchý, v jeho textovém zápise se můžeme celkem jednoduše orientovat. Určitou nevýhodou tohoto formátu je nutně větší velikost jeho souborů. (R. Bílý, 2010) Po zvážení možností jsme dospěli k výsledku. Pro model bude použit formát OBJ a to z důvodů jednoduchosti a podpory ze strany programu Rhinoceros. Soubor v textové podobě lze lehce upravovat a to je výhoda zvlášť pokud Rhinoceros umí do tohoto formátu pouze exportovat a není to jeho nativní formát. Můžeme tak odstranit možné chyby po exportu. Jak už bylo řečeno, jedná se o ANSI5 textový soubor s popisem sítě vertexů, povrchů. Z hlediska struktury je soubor rozdělen na řádky obsahující klíčová slova za kterými následují data. Celý soubor je načítán od začátku do konce po jednotlivých řádcích. Nejčastěji soubor obsahuje jenom polygonové plochy. Pro popsání polygonu se nejdřív popisuje každý vrchol klíčovým slovem v za kterým následují souřadnice v prostoru. Následující klíčové slovo f označuje plochu a označuje body tak jak šly po sobě. Ikdyž model za nás vygeneruje Rhinoceros, můžeme si uvést jednoduchý příklad trojúhelníku: 5
American National Standards Institute – standardizuje znakovou sadu.
5.1
27
Tvorba 3D modelu
v v v f
0.0 0.0 1.0 1 2
0.0 0.0 1.0 0.0 0.0 0.0 3
Polygony mohou být přiřazeny do skupin a vytvořit tak podobjekty. Toto se provádí klíčovým slovem g. Využití se najde zvláště při animaci 3D modelů, tedy i v našem případě. (J. D. Murray, W. Van Ryper, 1996) Soubory OBJ v sobě neobsahují definice barev a proto musí odkazovat na externí místo které tyto informace obsahuje. Toto odkazování se provádí pomocí klíčového slova mtlib a odkazuje na tzv. materiálový soubor. Rhinoceros bohužel nedokáže zapsat materiálový soubor ve správném formátu, musíme ho tedy vytvořit sami. Materiálové soubory MTL jsou soubory pomocné. Stejně jako u souborů OBJ se jedná o ANSI textové soubory obsahující klíčová slova následovaná daty na jednotlivých řádcích. (B. Ramey, L. Rose, L. Tyerman, 1995) Základní struktura souboru vypadá následovně: newmtl Nazev materialu Barva materialu Definice mapy textury Definice odrazové mapy newmtl Nazev materialu ... (B. Ramey, L. Rose, L. Tyerman, 1995) V našem případě se budeme zajímat pouze o definice barev materiálu. Mapování textury nebo aplikace odrazové mapy je pro náš případ zbytečné. Zabývat se budeme tedy jen určením barev povrchů. Definice barev má také svá jasná pravidla a je dána určitými klíčovými slovy. Parametrů pro určení barvy je dohromady devět. (B. Ramey, L. Rose, L. Tyerman, 1995) Pro použití v systému CW nám stačí definovat pouze čtyři z nich. Dle (B. Ramey, L. Rose, L. Tyerman, 1995) je struktura následující: newmtl Ka Kd Ks Ns
grey r g b r g b r g b 0-1000
Definuje název materiálu Definuje barvu ve stínu po osvětlení materiálu zdrojem světla Definuje barvu po osvětlení materiálu zdrojem světla Definuje barvu odlesků lesklých povrchů po osvětlení Definuje zrcadlový odraz po osvětlení materiál
Jednotlivé hodnoty r g b udávají podíly barev červené, zelené a modré. Množství je dáno intervalem 0–1. U parametru Ns je to hodnota 0–1000 udávající exponent pro výpočet zaostření výsledného odlesku. Manipulátor by měl být světle šedý se zvýrazněnými černými částmi. Pro volbu barvy byla použita klasická RGB paleta a zvolena reprezentace šedé barvy. Další doladění ostatních parametrů bylo provedeno již v systému CW při práci na aplikaci.
5.2
Control Web – 3D zobrazení
28
Výsledné barvy tedy vypadají takto: newmtl Ka Kd Ks Ns
grey 0.25 0.25 0.25 1.0 1.0 1.0 0.35 0.35 0.35 1000
newmtl Ka Kd Ns
black 0 0 0 0.45 0.45 0.45 1000
Tím je model hotov a připraven pro použití ve vizualizační aplikaci.
5.2
Control Web – 3D zobrazení
První věcí potřebnou k zajištění je použití modelu v systému CW a jeho nastavení. Na takto připravený model můžeme později aplikovat kód pro jeho rozpohybování a následně připravit způsob ovládání společně s grafickým rozhraním aplikace. 5.2.1
3D scéna a import modelu
V systému CW máme možnost vybrat si ze dvou možných zobrazení 3D scény. Jednou z nich je ortografická projekce. V tomto zobrazení jsou veškeré objekty zobrazeny rovnoběžně do výsledné plochy. Každý předmět je zobrazen stejně velký nezávisle na jeho vzdálenosti od kamery. Tento pohled umožňuje přístroj gl panel. Druhou možností je perspektivní pohled. Zobrazovaný prostor tvoří kvádr (výřez nekonečně velkého prostoru s námi definovanými rozměry a počátkem souřadného systému), na který je nastaven pohled kamery z určité vzdálenosti pod určitým úhlem. Střed takového souřadného systému je uprostřed (kvádru) zobrazovaného prostoru. Při pohledu na tento kvádr můžeme vidět i mimo jeho objem další části okolního prostoru. Tento pohled umožňuje přístroj gl scene. Oba typy scény jsou implementovány pomocí OpenGL. (R. Bílý, 2010) Pro naši aplikaci víc vyhovuje perspektivní projekce už proto, že více odpovídá skutečnému pohledu na manipulátor. V tomto způsobu zobrazení se navíc dá ovládat kamera a nastavit tak, jak ji uživatel potřebuje. Souřadnice v systému jsou zadávány ve třech rozměrech. Pokud je požadováno udat směr, je to učiněno pomocí vektoru. Vektor v = (0, 1, 0) tedy pro příklad udává směr stejný jako osa y. Na velikosti vektoru nezáleží ale nedoporučuje se udávání velkých hodnot, které by mohly systému způsobit problémy při přepočtech matic. Vložení modelu do scény se provádí pomocí přístroje gl model, který umožňuje import uživatelských modelů. Model je potom brán jako kterýkoliv jiný přístroj a je možné proto využívat nativních procedur nebo si napsat svoji vlastní. Po vložení
5.2
Control Web – 3D zobrazení
29
Obr. 9: Souřadný systém 3D scény Control Webu (R. Bílý, 2010)
do scény je model vykreslen a ohraničen pomocnou krychlí. Tato krychle má vždy stejné rozměry což nám v budoucnu pomůže. Umístění modelu je dáno souřadnicemi v souřadném prostoru. Jako výchozí bod byly vybrány souřadnice počátku tedy [0, 0, 0]. Model ovšem není umístěn na tyto souřadnice svou spodní nebo vrchní částí ale na daných souřadnicích je střed pomocné krychle a tedy i přesná půlka modelu. Nastavení přesné pozice je dáno sekcí location, kterou mají všechny přístroje ve 3D scéně. Umístění v souřadném systému scény udává položka translate. Položka rotate udává otočení souřadného systému přístroje o daný úhel kolem libovolné osy a položka scale nastavení koeficientů měřítka souřadného systému. Nastavení rotate a scale bylo ponecháno ve výchozím nastavení a translate bylo změněno na souřadnice počátku. Nastavení vypadá takto: location translate = 0, 0, 0; rotate = 0, 0, 0, 1; scale = 1, 1, 1; end_location; 5.2.2
Určení návazností částí modelu
Aby bylo možné s jednotlivými částmi modelu pohybovat, je potřeba zajistit vzájemné vazby mezi jednotlivými částmi modelu. Stejně tak jak model náleží hierarchicky pod 3D scénu, potřebujeme rozdělit celý model resp. jeho části. Toto potřebujeme z jednoduchého důvodu. Pokud máme model objektu jakým je manipulátor, musíme zajistit, aby se při pohybu jedné části ramene pohybovaly i části na ni navazující. Pokud bychom problém řešili samostatně bez funkcí CW museli bychom při transformacích ohlídat, které části modelu se při kterých transformacích mají také transformovat a navíc dopočítat souřadnice v závislosti na výchozí transformaci prvního článku, který akci vyvolal. To by bylo velmi obtížné. Proto CW řeší tuto situaci rozdělováním do skupin a podskupin. Tím můžeme vytvořit stromovou strukturu, která má jasně definováno, které části modelu patří pod kterou část.
5.2
Control Web – 3D zobrazení
30
Definice se provádí pomocí příkazu RegisterGroup( skupina, vlastnik ). Pro příklad uvedeme poslední tři řádky: katana.RegisterGroup( ’3’, ’2’ ); katana.RegisterGroup( ’2_mat’, ’2’ ); katana.RegisterGroup( ’2’, ’podstava’ ); Kde podstava je nejspodnější část modelu a 2 mat je zvýrazněná část modelu, která vznikla při jeho rozdělování na jednotlivé části (vice v 5.1.3). Pro tyto zvýrazněné části musí být také specifikováno, ke které části patří, protože prostorovou transformaci mohou konat všechny části. Celé toto přiřazení do skupin musí být v celém programu provedeno mezi prvními operacemi aby připravilo model k používání. Pro tento účel byl zvolen přístroj program. Tento přístroj patří do kategorie neviditelných přístrojů, tedy nemá grafické znázornění. Primárně slouží pro zápis programu, který se nehodí zapsat do jiných přístrojů a pro kód vyvolávající události u jiných přístrojů. Tento přístroj v sobě dokáže sdružovat několik dílčích částí obsahujících samotný kód. Tyto části lze libovolně pojmenovat. Použitím speciálního názvu startup docílíme toho, že se kód zapsaný do této části spustí po spuštění celé aplikace. Protože je CW událostmi řízený, je to zajištěno pomocí nativní procedury OnActivate, kterou obsahují všechny přístroje. Pro zaregistrování hierarchické struktury částí modelu je potřeba ještě poslední věc. Provést toto zaregistrování přímo v modelu, protože pro něj jsou nastavení určena. To se provádí příkazem send. Tento příkaz slouží k aktivaci přístrojů. Při měnění parametrů přístrojů je nutné je aktivovat a proto se využívá tohoto „aktivačního impulzuÿ. V našem případě se jedná o příkaz send katana, kde katana je jméno modelu. Obecně pak název jakéhokoliv jiného přístroje nebo přístrojů oddělených čárkou. 5.2.3
Určení středů rotací
Pro zajištění pohybu jednotlivých částí modelu je třeba zjistit, kde přesně se mají části modelu ohýbat. V tuto chvíli je pro nás velmi výhodné, že jsme model manipulátoru narovnali. Tím jsme totiž dosáhli toho, že všechny středy motorů a tedy i středy rotací jsou na ose y. Pro každý motor musí být zadán vektor určující směr rotace a souřadnice středu rotace. Tyto hodnoty budou vepsány jako konstanty a použity v programu. Jelikož je model vložen do souřadného systému scény a bod [0, 0, 0] leží uprostřed modelu, musíme určit pro požadované středy odchylku do kladné nebo záporné části osy. Hodnoty potřebujeme určit pro motor 2, 3, 4 a 6. Motory 1 a 5 (viz příloha A obrázek 10) mají střed rotace v bodě [0, 0, 0]. Pro výpočet odchylky se nám hodí znát velikost jednotlivých částí manipulátoru (viz příloha A tabulka 2). Pro ověření hodnot můžeme použít nástroj pro měření vzdálenosti v programu Rhinoceros
5.3
Control Web – programový základ aplikace
31
a změřit samotný model. Tím dostaneme přesnější hodnoty než kdybychom se spoléhali na to, že například při převodu na polygonové sítě nedošlo k odchylce nebo při připojování uchopovacích čelistí nedošlo k chybě. Pro výpočet souřadnic tedy potřebujeme určit konstantu k poměru zobrazení v CW a velikosti modelu. Tu určíme jako: k=
vyskakrychle vyskamodel
(6)
Bereme v úvahu že výchozí velikost krychle do které je model vsazen je 200. Potom střed je v hodnotě 0 a spodní a horní kraj modelu v hodnotě 100. Pokud h je vzdálenost od spodního konce modelu k požadovanému motoru, potom přepočítaný posun s od středu je: s = −100 + v · k
(7)
Výsledné hodnoty jsou v následující tabulce. Tab. 1: Posuny středů rotace
Motor motor 2 motor 3 motor 4 motor 6
Posunutí oproti středu -52,32168547 -7,336446581 25,40698115 77,17876883
Tyto hodnoty jsou zadány jako lokální data do datových struktur modelu. Tím je model připraven k vytvoření programu pro jeho rozpohybování.
5.3
Control Web – programový základ aplikace
Zde si popíšeme podstatu programu, kterým se model dává do pohybu a jak je celá aplikace z hlediska běhu nastavena. 5.3.1
Nastavení časování
Základní věcí při tvorbě aplikace samotné v systému CW je volba časování. Protože je CW průmyslový vizualizační systém odvíjí se od toho také možnosti. Možnosti časování nabízí CW dvě. Aplikace datově řízené, které umožňují velmi snadno a rychle sestavit vizualizující aplikaci (jednodušší na tvorbu aplikace), a aplikace reálného času, které nabízejí komplexní podporu programování řídicích a monitorujících celků pro nejrůznější druhy použití. Ač je naším úkolem vytvořit vizualizaci bude pro nás lepší využít reálného časování aplikace. Tato možnost poskytuje větší možnosti řízení aplikace než řízení daty.
5.3
Control Web – programový základ aplikace
32
Systémy reálného času jsou velmi flexibilní, ale jsou schopné uspokojit pouze požadavky, reálně vztažené k použitému hardware, technologii, možnostem operačního systému, možnostem přenosu dat a fyzikálním zákonům. Nastavení režimu se provádí v sekci settings. Volba režimu je dána příkazem operation mode = real time. Základem přesnosti jakýchkoli operací s časem v operačním systému je časové rozlišení jeho časové základny, jemnost, s jakou je schopen rozlišovat časové okamžiky jeden od druhého. Vybrat si můžeme ze tří úrovní, high, medium a low. Výchozím nastavením je low ale po prostudování ukázkových příkladů CW jsme zvolili možnost high. Priorita procesu jako celku v systému Windows byla nastavena na hodnotu normal, což odpovídá hodnotám v systému, tedy defaultní hodnotu běžných procesů. Pro spuštění aplikace předpokládáme, že poběží samostatně a nebude se muset s žádnými dalšími aplikacemi dělit a o procesorový čas. Nemusíme tedy prioritu zvyšovat. Případné přenastavení se dá udělat přímo v operačním systému. 5.3.2
Hlavní algoritmus
Pro tvorbu hlavního algoritmu musíme vědět co přesně by měl dělat a z čeho se skládat. Pokud si rozebereme strukturu manipulátoru, zjistíme, že všechny pohyby které vykonává, jsou rotační. Všechny klouby mají navíc stejné vlastnosti: • Otáčí se pouze v určitém rozsahu. • Otáčí se na dvě strany. • Mají stejný krok. Pokud vezmeme v potaz tyto podobnosti, musíme při návrhu uvažovat, že obecný algoritmus pro pohyb jedním kloubem bude možné aplikovat na všechny klouby manipulátoru. Musíme proto navrhnout proceduru, která bude mít jako parametr požadovanou polohu vychýlení a která se bude v případě potřeby pohybu volat. Pro plynulý přesun ramene je ale navíc potřeba definovat krok a zajistit aby se pohyb vykonával až do požadované hodnoty natočení. Využitím vlastností systému, tedy využitím řízení pomocí událostí můžeme vytvořit „smyčkuÿ, která nebude vykonávána nepřetržitě ale pouze pokud budeme my chtít. Model je v systému evidován jako každý jiný přístroj a má tedy vlastní nativní procedury, které k jeho typu náleží. Použitelnou metodou je nativní metoda OnActivate. Hlavním principem je tedy procedura, která je zavolána pro spuštění pohybu a smyčka tvořená událostmi probíhající dokud není rameno v požadované pozici. Než uvedeme příklad je potřeba popsat jaký význam mají jednotlivé proměnné resp. jejich označení. To je použito u všechny částí stejné. • Označení elev – obsahuje aktuální polohu ramene, tedy hodnota úhlu. • Označení speed – označuje velikost kroku. • Označení acc – určuje směr kterým rameno rotuje.
5.3
Control Web – programový základ aplikace
33
• Označení required – určuje požadovanou polohu, tedy hodnotu úhlu. • Označení high angle – určuje maximální krajní pozici ramene. • Označení low angle – určuje minimální krajní pozici ramene. Procedura pro vyvolání pohybu potom vypadá takto. Příklad si uvedeme na motoru 2, v programu nazvaném jako base. Všechny procedury jsou pojmenovány obdobně pro snadnou identifikaci. Základ názvu tvoří Set<jmeno>Pos, kde <jmeno> je název ovládaného prvku. procedure SetBasePos( Pos : real ); begin if Pos < base_2_low_angle then Pos = base_2_low_angle; elsif Pos > base_2_high_angle then Pos = base_2_high_angle; end; if base_2_elev <> Pos then base_2_required = Pos; send self; elsif program_priznak then base_priznak = true; send self; end; end_procedure; V parametru Pos je požadovaný úhel natočení. V první podmínce je ověřeno jestli není mimo rozsah daného motoru. Pokud je nastaví se na maximální nebo minimální hodnotu, podle situace. Tím je ošetřeno vložení nekorektních souřadnic. Pokud je současný úhel jiný než požadovaný, nastaví se hodnota do proměnné base 2 required. Následujícím příkazem send se vyvolá aktivace přístroje. Klíčové slovo self označuje aktivaci „sebe samaÿ. Tento způsob je využit, protože je procedura umístěna v kódu modelu. Pro zastavení stačí nastavit hodnotu proměnné s požadovanou pozicí hodnotou aktuální pozice. Pro příklad base 2 required = base 2 elev. Pro každý motor je definována procedura, která tuto operaci společně s aktivací provede. Tato proměnná je pro motor 2 pojmenována SetBaseStop. Blíže tento princip ještě vysvětlí následující příklad. Po aktivaci musí být definovány akce v proceduře OnActivate. Pro příklad si uvedeme opět kód pro motor 2. if base_2_required <> base_2_elev then if base_2_required < base_2_elev then base_2_acc = -1; elsif base_2_required > base_2_elev then base_2_acc = 1;
5.3
Control Web – programový základ aplikace
34
end; base_2_elev = base_2_elev + base_2_speed * base_2_acc; if abs( base_2_elev - base_2_required ) < base_2_speed then base_2_elev = base_2_required; if program_priznak then base_priznak = true; end; end; if base_2_elev > base_2_high_angle then base_2_elev = base_2_high_angle; elsif base_2_elev < base_2_low_angle then base_2_elev = base_2_low_angle; end; send self; else base_2_acc = 0; end; Spouštěcí procedura SetBasePos nám nastavila potřebné proměnné, teď se musí zpracovat. Pokud je požadovaná hodnota různá od aktuální, tedy není dosažena požadovaná poloha, je testováno kterým směrem se má rameno točí. Proměnná base 2 acc je tedy nastavena na hodnotu −1 nebo 1. To ovlivní směr při výpočtu dále. Následně je spočítána nová poloha jako současná plus krok vynásobený určením směru. Ten zajistí, jestli se bude odčítat nebo přičítá a tím změnu na danou stranu. Následující vyhodnocení zajistí, že pokud je rozdíl mezi stávající a požadovanou hodnotou menší než krok, hodnota je tedy již nedosažitelná pomocí výpočtu a aktuální pozice se nastaví na hodnotu požadovanou. proměnné s názvem priznak jsou použity až v další části programu a nyní nejsou důležité. Jako poslední část je otestována zda je aktuální hodnota větší nebo menší než mezní hodnoty a v případě pravdy je nastavena na danou mezní hodnotu. Tím je ošetřeno, že nedojde k rotaci na chybné souřadnice. Nakonec je opět použit příkaz send self který zajistí opětovnou aktivaci přístroje ale to až poté, co doběhne právě vyvolaný stav. Procedura OnActivate tedy musí doběhnout do konce. Tímto způsobem je zajištěna ta zmiňovaná „smyčkaÿ, protože jeden průchod tímto kódem dokáže posunout souřadnice maximálně o jeden krok o definované velikosti. Z logiky vyplývá, že podmínky se vyhodnocují do té doby než jsou požadované a aktuální souřadnice totožné. Poté je proměnná určující směr nastavena na nulu. Toto byla jen jedna část, která je v proceduře OnActivate obsažena. Její struktura je následující: procedure OnActivate(); begin; [Zpoždění]
5.3
Control Web – programový základ aplikace
35
[Nastavování souřadnic jednotlivých motorů] [Nastavování měřidel na aktuální polohu] [Vyhodnocování splnění kroku programu] end; end_procedure; Těmito částmi musí projít projít program při každé aktivaci. Jednotlivé části se dají popsat jako: • Zpoždění – Vzhledem k tomu, že algoritmus neustále probíhá těmito „smyčkamiÿ, dochází k vytížení procesoru. Pro plynulejší chod je zařazeno zpomalení. Je zde využit klasický princip vkládání prázdných instrukcí resp. v tomto případě využití příkazu pause, který vytvoří pauzu o požadované délce v milisekundách. • Nastavování souřadnic – Popsáno výše. Stejná operace šestkrát za sebou, vždy pro jiný motor. • Nastavování měřidel – Při každém průchodu jsou nastaveny aktuální hodnoty jednotlivých motorů v grafickém rozhraní aplikace. Blíže v 5.4.4. • Vyhodnocování splnění kroku – Toto je část která se vyhodnocuje při tvorbě uživatelem zadaných sekvencí pohybů. Blíže vysvětleno v 5.4.3. Tím je dán základní způsob výpočtu souřadnic pro pohyb jednotlivých motoru a ramen. 5.3.3
Evaluátory
V předchozí části bylo vysvětleno, jak se vypočítají úhly kroků motorů. Nikde ale nebyla zmínka, čím se aplikují na model a proč se tedy hýbe. V CW máme možnost využít tzv. evaluátorů. Evaluátor je prostředek pro přepočet jednoho intervalu hodnot do druhého intervalu hodnot. Máme tři základní: • Výraz – přepočet je dán pouze výrazem. Jedná se o běžný matematický výraz. • Převod rozsahů – dokáže mapovat výsledek zadaného výrazu do libovolného zvoleného intervalu, např. hodnoty v rozsahu 0 až 1 může převádět na úhel v rozsahu 0 až 360 stupňů. • Převod tabulkou – výstupní hodnoty interpoluje pomocí lomené přímky, jejíž zlomové body jsou zadány tabulkou. (R. Bílý, 2010) My jsme si vybrali převod rozsahů, protože jej použijeme pro přepočet úhlů rotace ramen. Evaluátory jsou v činnosti vždy když je přístroj aktivován. Má-li přístroj evaluátory definovány, pak jeho aktivace automaticky vyvolá překreslení přístroje (a tím samozřejmě celé scény). Tím je tedy objasněno jak dochází k překreslování scény a pohybu modelu. Evaluátor byl nastaven aby přepočítával hodnoty z proměnných elev a tím jsme zaručili, že při každém rotačním kroku byla překreslena scéna. Evalutátor reagoval na každou změnu v proměnné.
5.4
Control Web – ovládání vizualizace
36
Pro každou část manipulátoru byly nastaveny evaluátory samostatně. Toto nastavení bylo provedeno v části group kde jsou definovány středy rotací, vektory a úhly pro jednotlivé části přístroje. Následující příklad ukazuje pouze nastavení systémové proměnné angle, která určuje úhel, o který má objekt rotovat. angle = limit_interpolator { source = base_2_elev; lowmap = base_2_low_angle, base_2_low_angle; highmap = base_2_high_angle, base_2_high_angle;} Systémová proměnná source udává zdrojovou proměnnou s daty pro přepočet a lowmap highmap meze, do kterých se hodnoty mapují. Mezní limity pro jednotlivé motory byly uloženy jako konstanty a byly použity z tabulky 2. Vzhledem k tomu, že ve výchozí pozici je model narovnaný, byla tato pozice zvolena jako nulový stav a na jednu stranu od ní se úhel bere jako záporný, na druhou stranu od tohoto stavu se bere jako kladný.
5.4
Control Web – ovládání vizualizace
Výsledná aplikace by měla sdružovat 3D scénu s modelem společně s navrženým ovládáním. Ovládání modelu by mělo splňovat tyto body: • Manuální ovládání. • Možnost nastavení přesné polohy pomocí úhlů natočení ramen. • Tvorba sekvence pohybů. 5.4.1
Manuální ovládání
Manuální ovládání bylo navrhováno tak, aby bylo obdobné tomu v programu Katana4D. Cílem je nastavovat jednotlivé motory pomocí tlačítek určujících rotaci jednu nebo druhou stranu. Pro každý motor proto byla použita dvojice tlačítek v systému označovaných jako přístroj switch. Tento přístroj je reprezentací dvoupolohového přepínače a dokáže pracovat v několika módech. Jedním z nich je i mód, ve kterém je do výstupná proměnné tlačítka při stisknutí a držení nastavena hodnota true. Při uvolnění je nastaveno false. Pro spuštění pohybu je použita již dříve vysvětlená procedura Set<jmeno>Pos pro spuštění pohybu modelu. Její parametr požadované pozice je ovšem nastaven v každém tlačítku jako jedna z mezních hodnot úhlu daného motoru. Tím je zajištěno, že po stisknutí a držení tlačítka je procedura aktivní až do té doby než se dostaneme rameno do mezní polohy nebo je tlačítko uvolněno. V tom případě je nastavena hodnota false, která je vyhodnocena, a je zavolána procedura pro zastavení Set<jmeno>Stop.
5.4
Control Web – ovládání vizualizace
5.4.2
37
Nastavení určené pozice
Cílem této funkce je možnost nastavit požadované úhly natočení pomocí zadání přesných hodnot úhlů pro jednotlivé motory. Proto potřebujeme nějaké vstupní elementy pro předání požadované hodnoty. Systém CW obsahuje přístroj control, který může pracovat v režimu count box, tedy okénko s číselnou hodnotou, které obsahuje ovládací prvky pro přičítání a odčítání hodnoty po nastaveném kroku. Pro každý z motorů byl vytvořen jeden tento přístroj. Systém umožňuje nastavit mezní hodnoty, které byly určen konstantami s mezními hodnotami úhlů ramen a krok, který byl zvolen 0, 1. Jakákoliv změna v tomto přístroji je zapsána do zvolené proměnné náležící k přístroji. Z této proměnné potom mohou být hodnoty čteny dalšími přístroji nebo procedurami. Tím je zajištěna možnost nastavit požadovanou hodnotu. Spuštění pohybu modelu je provedeno pomocí tlačítka neboli přístroje button. Tento přístroj má nativní proceduru OnPress spouštějící po stisku tlačítka definovaný kód. Tímto kódem je opět již objasněná procedura pro rozpohybování modelu Set<jmeno>Stop. Parametrem je nastavený úhel z přístroje control. Stiskem tlačítka se tato procedura zavolá pro všechny motory. Z principu funkce algoritmu pro pohyb se potom nastaví jen ty, které mají jinou polohu než je požadovaná. Pro větší uživatelskou přívětivost jsou definovány ještě dvě tlačítka. Jedno pro vynulování všech hodnot v přístrojích control. A druhé pro nastavení tzv. „výchozíÿ pozice, ve které je model po spuštění, a která je shodná s výchozí pozicí reálného manipulátoru. 5.4.3
Uživatelský program
Uživatelským programem rozumíme sekvenci pohybů resp. sekvenci různých nastavených pozic modelu. Tato část programu napodobuje situace reálného světa, kdy manipulátory konají určitou manipulační činnost, která se dá definovat právě jako sekvence pohybů. Základním problémem zůstává, jak vyhodnocovat, kdy skončil daný krok sekvence. Ramena se totiž mohou pohybovat v čase nezávisle na sobě. Všechna nebudou ve stejný čas nastavena do požadované polohy. Jako řešení byla do algoritmu nastavování úhlů a pohybu ke každému motoru přidána indikace. Ta je vytvořena pomocí proměnné typu boolean. Pokud je daný motor v požadované poloze, je tento příznak nastaven na true. Pokud jsou všechny ramena nastaveny do požadovaných poloh, může s vykonat další krok. To je základní princip provádění kroků. Vyhodnocování se vykonává za běhu hlavního algoritmu pro pohyb. Tato část byla kapitole 5.3.2 v popisu na straně 35 zmíněna. Pro tvorbu sekvence pohybů potřebujeme kroky a kroky jednotlivé kroky programu je potřeba někam ukládat. Vhodnou datovou strukturou by byla matice (pole polí) ale tuto možnost CW nenabízí. Z nabízených přístrojů se hodí pouze přístroj listbox. Jedná se o grafické pole, do kterého je možné vkládat textové řádky. Tento přístroj má nativní procedury pro přidávání a odebírání řádků a proto by s ním
5.4
Control Web – ovládání vizualizace
38
mohlo být zacházeno jako s frontou. Tento přístroj ovšem neumožňuje záznam dat v takovém formátu v jakém potřebujeme. Je ryze textový. Samotný se tedy nedá použít. Vhodným doplňkem je přístroj file. Tento přístroj obstarává práci se soubory. Do souboru můžeme ukládat a číst jednotlivé kroky a listbox bude sloužit pouze jako grafická reprezentace. Jako vstupní data byly využity hodnoty ze sekce nastavení určené pozice. Hodnoty z těchto přístrojů jsou použity i zde. Pomocí tlačítka přidej (opět přístroj button) je přidán první řádek do přístroje listbox. Zároveň jsou vloženy hodnoty do souboru. Soubor je netypový a je využito vlastností datových typů. Hodnoty jsou typu real. Velikost tohoto typu je 8B. Data jsou tedy do souboru zapisována jako 6 krát 8 bajtů a také tak čtena. Důležité je pouze správné pořadí. Číslo řádku potom udává násobek a tedy i adresu v souboru. Z hlediska přístroje listbox se vkládají textové řádky reprezentující jednotlivé požadované polohy. Každému řádku je nastavena ikona signalizující průběh programu. Význam je následující: • • • •
Zhasnutá – Program není spuštěn. Krok není aktivní. Žlutá – Krok je právě prováděn. Zelená – Krok byl proveden. Červená – Program je spuštěn a krok čeká až se na něj dostane řada.
Spuštění programu je tvořeno tlačítkem Program (přístroj button), které spouští proceduru akce s parametrem řádku. Ta se stará o provedení samotného řádku. Tato procedura je volána i při přechodu na další krok programu po vyhodnocení příznaků v proceduře OnActivate popsané v kapitole 5.3.2. Ukázky běhu aplikace viz příloha D. 5.4.4
Grafické rozhraní aplikace
V systému CW je základním prvkem grafického rozhraní tzv. panel. Tento přístroj je plochou, na kterou se rozmisťují další přístroje. Ve výsledku slouží přístroj panel jako okno běžné aplikace. Aby se tak choval a vypadal je potřeba zvolit některé volby. Velikost hlavního panelu a tedy i okna byla zvolena tak aby byla spustitelná na rozlišení 1024 na 768 bodů. Spodní část tvoří ovládání, vrchní potom 3D scéna a nad ní menu aplikace. Dalšími okny jsou Nastavení a Kamera, která obsahují doplňující nastavení aplikace. Posledním oknem je okno O programu obsahující informace o programu. Ovládání bylo navrženo následovně. Úplně vlevo se nachází manuální ovládání tvořené tlačítky pro jednotlivé motory. Vedle něj jsou měřící přístroje ukazující aktuální nastavené pozice. Následuje tlačítko kopírovat pro přenesení aktuální pozice do následující sekce nastavení přesné polohy. Vedle ní už zbývá pouze sekce uživatelského programu tvořená tlačítky a přístrojem listbox. Celkový vzhled viz příloha C.
5.5
Závěr kapitoly
5.4.5
39
Kamera a nastavení
Nastavování pohledu je možné pomocí myši (přibližování, oddalování, natáčení kamery) a za pomocí panelu kamera dostupného z menu aplikace. V tomto okně má uživatel možnost nastavit rotaci kamery. Ve skutečnosti se provádí rotace celé scény a tím i vším v ní. To se provádí příkazem rotate(angle, x,y,z), kde angle je úhel rotace a ostatní jsou souřadnice vektoru, okolo kterého je rotace prováděna. Použití různých pohledů je ukázáno v příloze D. Okno nastavení poskytuje nastavení pro délku zpomalovacího kroku do hlavního algoritmu. Druhou možností je volba délky doby mezi jednotlivými kroky uživatelského programu. 5.4.6
Systémové požadavky
Jak už bylo zmíněno, hlavní zatížení je zatížení procesoru při pohybu modelu kvůli principu funkce hlavního algoritmu. To lze částečně kompenzovat právě nastavením zpomalení aplikace. Vše má ovšem své limity a tato volba slouží skutečně jen ke zpomalování. Zrychlení je možné dosáhnout nastavením z výchozího stavu na nulovou pozici, tedy žádné zpomalení nebo hodnotu blízkou ale nižší než výchozí. Vytížení grafického akcelerátoru je minimální a to už z důvodu nároků systému CW samotného viz Dokumentace CW (R. Bílý, 2010). Přesto byl do aplikace přidán prvek pro sledování zatížení grafického akcelerátoru Sledování zatížení je možné prostřednictvím sledování počtu snímků za sekundu (FPS6 ). Tento údaj udává kolikrát za sekundu je akcelerátor schopný překreslit scénu. U 3D scény platí stejné pravidlo jako například u klasického filmu. Díky setrvačnosti lidského oka se člověku jeví obraz plynulý až při určitém počtu snímků (obrázků) za sekundu. Obvykle se uvádí hodnota okolo 24 snímků za sekundu. Pro implementaci této funkce je použita nativní metoda přístroje gl scene nazývaná GetRenderTime. Převrácená hodnota této získané hodnoty nám dá počet snímků za sekundu. Ty už stačí pouze zobrazit v přístroji meter fps. Přístroj meter fps je jediným přístrojem aplikace, který je časovaný. Hodnota periody byla stanovena na 0, 5, tedy obnovení dvakrát za sekundu. To je dostačující počet překreslování. O absolutně přesnou hodnotu nám nejde. Tento údaj je spíše informativní. Zobrazení hodnoty se nachází v levém spodním rohu 3D scény.
5.5
Závěr kapitoly
V této kapitole bylo vysvětleno praktické zpracování práce. Základní částí byla tvorba modelu. Ten byl dle rozhodnutí vytvářen v programu Rhinoceros 4 za použití výrobcem dodávaného modelu manipulátoru. Tento model bylo ještě nutné 6
Frames Per Second
5.5
Závěr kapitoly
40
zkompletovat a upravit pro snadnější zpracování v systému CW a bylo potřeba exportovat ho do správného formátu. Jako formát byl vybrán formát OBJ kvůli své jednoduchosti (textový formát). V systému CW byly po importování dopočítány středy rotací k čemuž nám dopomohlo předchozí upravení modelu. Motory byly umístěny svými středy na osu y. Díky tomu bylo dopočítání možné vyjádřit pouze pomocí rozmístění souřadnic na této ose. Aplikace samotná byla navržena díky samotnému principu funkce systému CW, událostnímu řízení. Hlavní algoritmus je spouštěn událostmi vyslanými jednotlivými ovládacími prvky aplikace. Algoritmus je navržen tak, že principiálně plní pouze funkci pohybu ramene. Úhel natočení je předáván parametrem a povolený interval hodnot je ošetřen pro každé rameno, takže nemůže dojít k chybnému nastavení. Pro samotné vykreslování bylo využito tzv. evaluátorů, které umí vyvolat překreslení scény. Tyto evaluátory byly nastaveny na sledování změny hodnoty úhlu natočení ramene. Při každém přepočtu pozice (kroku) se změní hodnota a tím se vyvolá překreslení scény. Tento způsob opět využívá událostí v systému. Ovládání vizualizace bylo navrženo ze tří částí. Manuální ovládání, nastavení přesné polohy a sestavení uživatelského programu. Všechny tyto části využívají hlavního algoritmu a samy o sobě jsou jen jeho aplikací pro konkrétní úkoly. Grafické rozhraní bylo navrženo vzhledem k logice funkcí, které aplikace obsahuje. Ovládací prvky jsou seřazeny tak aby na sebe ovládání navazovalo a aby se některé části rozhraní mohli využívat navzájem. To platí pro část uživatelských programů a nastavení modelu do určené pozice. Pro doplnění funkčnosti aplikace bylo přidáno nastavení kamery a nastavení běhu aplikace. Pomocí těchto jednotlivých částí byla sestavena a dokončena celá aplikace.
6
ZÁVĚR
6
41
Závěr
V této kapitole zhodnotíme výsledky práce a dosažení cílů.
6.1
Shrnutí práce
V práci bylo řešeno vytvoření vizualizace manipulátoru KATANA v systému Control Web. Pro poznání principů funkcí manipulátorů jsme se seznámili s jejich klasifikací, základními pojmy jako například pracovní prostor a základy kinematiky. Vzhledem k řešení úlohy vztahující se ke konkrétnímu manipulátoru jsem se seznámil s jeho vlastnostmi a technickými parametry potřebnými k další práci. Pro práci s 3D modelovacím nástroje byly objasněny základní typy reprezentace objektů (NURBS a polygonové sítě) a vysvětleny některé základní pojmy týkající se knihovny OpenGl. Dospěl jsem k závěru, že manipulátor KATANA se dá zařadit mezi univerzální manipulátory s angulárním pracovním prostorem, který je velmi variabilní díky možným rozšířením. Ohledně reprezentací 3D objektů byly srovnány oba zmíněné způsoby a zhodnoceno, že každý je dobrý pro jiný účel použití. Polygonové sítě pro vizualizace animace a aplikace méně náročné na přesnost zobrazení, NURBS pro technické výkresy a dokumentaci. Pro tuto práci se hodí více použití polygonových sítí, protože nám jde o tvorbu vizualizace a také proto, že je tento způsob podporován systémem CW. Z hlediska metodiky byl pro práci s 3D modelem vybrán program Rhinoceros 4 a to zejména díky zkušenostem a podporovaným formátům souborů. Také byly vysvětleny principy práce se systémem CW a zhodnoceno, že základním způsobem práce v něm bude psaní kódu v textovém editoru systému společně s návrhem grafického rozhraní v grafickém editoru. Část Vlastní práce objasnila způsob jakým byla vizualizace postupně vytvořena za pomoci programu Rhinoceros a Control Web. Základní částí byl model, který musel být upraven pro snadnější práci v CW. Po importování modelu do CW byly dopočítány souřadnice a nastavena poloha modelu. Pro ovládání a pohyb částí modelu byl vytvořen jednotný algoritmus tak, aby jej bylo možné použít pro všechna ramena a nebyl omezeován konkrétním způsobem ovládání modelu. Tento algoritmus byl poté aplikován v rámci 3 způsobů ovládání. Manuálního ovládání, nastavení určené polohy a při tvorbě uživatelského programu pohybů. Jako poslední část bylo vytvořeno grafické rozhraní aplikace a jednotlivé části aplikace do něj umístěny. Pro doplnění funkčnosti aplikace bylo přidáno nastavení kamery a nastavení běhu aplikace. Tím byla tvorba aplikace ukončena.
6.2
Zhodnocení výsledků
Zaměřím-li se na zhodnocení výsledků práce musíme vzít v úvahu cíle, které byly stanoveny na začátku. Výsledná aplikace měla zprostředkovávat vizualizaci manipu-
6.3
Budoucí využití a možná rozšíření
42
látoru KATANA spolu s navrženým způsobem ovládání. Model samotný je tvořena za pomocí 3D modelu od firmy Neuronics AG, který byl upraven a proto je i vzhledově velmi přesný, i když to nebyla nutná podmínka. Ovládání mělo splňovat možnost nastavení úhlů natočení jednotlivých ramen a případně možnost vytvářet uživatelské funkce (programy) činnosti. Toto bylo nakonec vyřešeno rozdělením ovládání na manuální nastavení pro každý motor, libovolně podle přání uživatele a na přesné nastavení úhlů pomocí zadaných hodnot. Již manuální ovládání dovoluje prakticky jakékoliv nastavení modelu z hlediska uživatele a přesné nastavení je další možností. Tvorba uživatelských programů byla také vyřešena a dovoluje nám tedy vytvářet si sekvence pohybů pro model. Možnosti ovládání jsou tím prakticky vyčerpány všechny. Grafické rozhraní bylo navrženo tak, aby vyhovovalo použitým ovládacím prvkům v aplikaci a logicky je podporovalo. Pro doplnění byly navrženy funkce Kamera pro ovládání zobrazení a možnost ovládání běhu aplikace. Shrnu-li tedy stav splnění cílů, můžeme je všechny považovat za splněné bez nejmenších výhrad.
6.3
Budoucí využití a možná rozšíření
Pokud budeme hledat využití pro tuto aplikaci, můžeme dojít ke dvěma základním možnostem. Aplikace může být využita jako prostředek pro seznámení se s principy funkcí manipulátorů bez nutnosti využívání manipulátoru skutečného. Další možností je rozšíření, které bylo naznačeno již v úvodu práce. Do budoucna by bylo možné rozšířit tuto vizualizaci o komunikaci s reálným manipulátorem a vytvořit tak jednotné ovládací rozhraní.
7
7
LITERATURA
43
Literatura
Adamec, Jaromír. Technologie automatizovaných výrob. 1. vydání. Ostrava : VŠB – Technická univerzita Ostrava, 2006. 121 s. ISBN 80-248-0871-4. Bílý, Radek, et al. Dokumentace Control Web. [s.l.] : Moravian Instruments, 2010. 506 s. Chvála, Břetislav; Matička, Robert; Talácko, Jaroslav. Průmyslové roboty a manipulátory. Praha : SNTL – Nakladatelství technické literatury, 1990. 280 s. ISBN 80-03-00361-X. [kniha]. Katana – Automation made easy. Zurich : Neuronics AG, 2008. 4 s. Katana4D : Příručka pro uživatele. [s.l.] : Neuronics AG, 2007. 134 s. Katana4D : Quickstart. [s.l.] : Neuronics AG, 2004. 11 s. Murray, James D.; Van Ryper, William. Encyclopedia of Graphics File Formats. 2nd edition. [s.l.] : O’Reilly Media, 1996. 1152 s. ISBN 1-56592-161-5. Návod k použití robotů Katana. [s.l.] : Neuronics AG, 2006. 62 s. Procházková, Jana. Křivky NURBS. Root.cz [online]. 3.3.2006, 1, [cit. 2010-0506]. Dostupný z WWW:
. Ramey, Diane; Rose, Linda; Tyerman, Lisa. FILE FORMATS [online]. [s.l.] : [s.n.], 1995 [cit. 2010-05-01]. Alias/WaveFront Material (.mtl) File Format, s. . Dostupné z WWW:
. [část eknihy]. Rhinoceros verze 3.0 : uživatelská příručka. [s.l.] : Robert McNeel & Associates, 2003. 537 s. [kniha]. Smutný, Vladimír. ROBOTICS [online]. [s.l.] : [s.n.], 2010 [cit. 2010-05-05]. Dostupné z WWW:
. [e-kniha]. Tišnovský, Pavel. Grafická knihovna OpenGL. Root.cz [online]. 1.7.2003, 1, [cit. 2010-05-07]. Dostupný z WWW: . [e-článek]. R R [s.l.] : 4D SAS/4D 4th Dimension : Language Reference Windows⃝/ Mac OS⃝. Inc., 2007. 2244 s.
Přílohy
A TECHNICKÉ PARAMETRY MANIPULÁTORU
A
Technické parametry manipulátoru
Obr. 10: Popis částí manipulátoru (Návod k použití robotů Katana, 2006)
Obr. 11: Rozměry částí manipulátoru (Návod k použití robotů Katana, 2006)
45
A TECHNICKÉ PARAMETRY MANIPULÁTORU
Tab. 2: Parametry k obrázku 11 (Návod k použití robotů Katana, 2006)
Stupně volnosti 5 Maximální výška [mm] 854 (bez základové desky, s čelistmi) Úhly vyosení [◦ ] M1: 0 M2: 124,25 M3: 52,7 M4: 63,5 M5: 8,5 Operační rozsah [◦ ] M1: 345,7 M2: 140 M3: 241,5 M4: 232 M5: 332,2 M6: 140 (čelisti) Délka ramene [mm] UA: 190 FA: 139 WR: 185 GR: 130 (s uchopovačem)
46
B MODEL MANIPULÁTORU
B
Model manipulátoru
Obr. 12: Model po rozdělení na části (vlevo), očištěný a narovnaný model (vpravo)
47
B MODEL MANIPULÁTORU
Obr. 13: Zkompletovaný výsledný model a zvýrazněné části
48
C
C
GRAFICKÉ ROZHRANÍ APLIKACE
Grafické rozhraní aplikace
Obr. 14: Grafické rozhraní aplikace
49
D
D
UKÁZKA BĚHU APLIKACE
Ukázka běhu aplikace
Obr. 15: Výchozí stav po spuštění
Obr. 16: Ukázka natočení kamery ve výchozí pozici
50
D
UKÁZKA BĚHU APLIKACE
Obr. 17: Ukázka běžící aplikace s natočením kamery
Obr. 18: Ukázka běžící aplikace a pohledu zvrchu
51
E
E
PŘILOŽENÉ CD
Přiložené CD
Přiložené CD obsahuje: • Přeloženou aplikaci ve formátu CWX. • Zdrojové soubory aplikace. • Práci v elektronické podobě.
52