Jak umíme pomoci lidem s omezenou schopností pohybu a reakce? Pracovní skupina Nature Inspired Technologies Group (http://nit.felk.cvut.cz/) Katedra kybernetiky, ČVUT FEL, Praha Petr Novák at al.(
[email protected]) červenec 2010
Abstrakt Někteří lidé nemohou používat běžná zařízení pro ovládání osobního počítače (klávesnice, myš), existující aplikace (word, mail, …) nebo jiné elektronické přístroje (televize, telefon, světla, …). V tomto případě je potřeba vytvořit nejen speciální (alternativní) vstupní (ovládací) zařízení pro osobní počítač, ale rovněž i jednoduché aplikace pro psaní textu nebo mailů a současně zařízení pro ovládání některých přístrojů v okolním domácím prostředí. Zde popisovaný vytvořený soubor jak zařízení tak i aplikací je určen pro široké množství uživatelů od ležících přes ty částečně se pohybující až po ty, jež ke svému pohybu využívají například elektrický invalidní vozík. Jak počet zařízení a aplikací, tak i rozsah použití se neustále rozšiřuje.
Úvod Popisovaný soubor pomůcek a programů je výsledkem dlouhodobé práce několika pracovníků (zaměstnanců, doktorandů a dalších), studentů (diplomové práce, bakalářské práce, semestrální práce, projekty v týmu a další) a rovněž externích poradců / přispěvovatelů (techničtí specialisté, ošetřující pracovníci). Projekt byl započat jako součást řešení mezinárodního projektu COGAIN (2006 – 2009). Avšak bylo využito i poznatků z jiných projektů jako například rovněž mezinárodní projekt OLDES. V současné době jde zejména o náplň pro diplomové nebo bakalářské práce a další studentské aktivity v rámci studia. Jednotlivé části (vstupní zařízení, hry, elektrický invalidní vozík) byly původně vytvářeny celkem odděleně, ale postupem času došlo k integraci (sjednocení) všech těchto částí do jednoho celku což bylo určitě vhodným krokem. Celý systém je složen z několika hlavních částí: -
-
-
-
Alternativní vstupní zařízení (tlačítka, joystick, detekce pohybu, …) jenž snímají různé signály produkované / vytvářené uživatelem, částečně je zpracovávají, ale zejména převádějí do formy pro přenos do počítače. Základní programové ovladače pro příslušný typ vstupního zařízení. Některá vstupní zařízení, i když na venek vykazují velmi odlišnou činnost, mohou využívat v podstatě (téměř) stejný ovladač. V tomto ovladači se nastavují základní parametry vstupního zařízení. Tyto ovladače rovněž transformují signály ze vstupních zařízení (stisk, vychýlení joysticku, velikost náklonu, …) na tzv. virtuální tlačítka, jež se používají / zpracovávají dále. Řídící aplikace běžící na pozadí (operačního systému) zpracovává tato virtuální tlačítka ze vstupních zařízení (jejich ovladačů), doplňuje je, nebo jakkoli modifikuje (podle nastavené konfigurace) a předává na svůj výstup pro převod na povely do cílové aplikace. Část, jež skutečně předává povely do spuštěné (cílové) aplikace. Spuštěná aplikace nepřijímá již zmíněná virtuální tlačítka, ale povely ve formě přechod na položku vlevo, vpravo nebo
-
-
-
potvrzení vybrané akce. Virtuální tlačítka jsou na tyto povely převedena podle vytvořené konfigurace. Tyto povely jsou do cílové aplikace zasílány buď pomocí interního kanálu (nově vytvořené aplikace), případně pomocí simulace klávesnice nebo pomocí myši (již existující aplikace). Tento kanál se přepíná podle typu právě spuštěné / aktivní aplikace. Toolbar obsahující seznam nejčastěji používaných aplikací (programů) jenž může uživatel snadno spustit nebo mezi nimi přepínat. Samozřejmě lze spouštět i další (ne zcela libovolné) aplikace z plochy operačního systému pomocí ikon nebo nabídky Start. Soubor základních aplikací jako jsou: psaní textu, jabber klient (OnLine chat), mail klient, ovládání mobilního telefonu nebo soubor her, jenž jsou navrženy (téměř) pro všechny typy vstupních zařízení. Samostatnější částí je aplikace pro řízení okolního domácího prostředí, jenž pomocí jednoduchých externích HW zařízení ovládá některé základní domácí spotřebiče. Samostatnější částí je aplikace pro ovládání elektrického invalidního vozíku. Její možnosti jsou však závislé na použitém vstupním zařízení (počtu poskytovaných vstupů od uživatele). Ta poskytuje několik režimů od přímého řízení vozíku (uživatel přímo řídí pohyb vozíku), přes krokové řízení (uživatel pouze zvolí typ posunu / pohnutí) až po pohyb pomocí mapy bytu nebo dokonce ve venkovním prostředí.
Alternativní vstupní zařízení V současné době existuje několik vytvořených a otestovaných nebo případně částečně otestovaných alternativních vstupních zařízení. Mezi které patří: -
Tlačítka neboli spínače. Soubor tlačítek (1 až 8) jako libovolné vstupní signály (ano / ne). Tlačítka jsou vytvořena jako jednoduché spínací kontakty a lze je tedy využít zcela podle vlastních potřeb. Například stiskem prstů na ruce / noze, stisk pohybem hlavy (vlevo, vpravo, vzad), pohyb brady, dlaně, … (cokoli v závislosti na umístění). Jedná se tedy o externí HW zařízení detekující stav tlačítek (spínačů) a připojené k PC pomocí standardního USB portu. Význam jednotlivým signálů (jejich použití a zpracování) je nastaveno konfigurací. Tato reálná tlačítka jsou v ovladači převedena na virtuální tlačítka pro další zpracování.
-
Joystick podobný pákovému ovladači pro hry nebo pro řízení elektrického invalidního vozíku. Výchylka páky se převádí na virtuální tlačítka (jedno pro jeden směr, ale bude umožněno i více virtuálních tlačítek v jednom směru podle velikosti výchylky), která jsou dále zpracovávána. Není nutno využít všechny dostupné směry, ale například pouze dva (osoba pohybující jedním prsten vpravo a vlevo) nebo dokonce pouze jeden (osoba schopna vychýlit
vhodně prst vlevo, ale již ne vpravo). Joystick lze samozřejmě ovládat jakoukoli jinou částí těla (dlaň, noha, …). Zařízení je k PC rovněž připojeno pomocí standardního USB portu.
-
Detekce pohybu (přesněji řečeno náklonu) ve dvou osách. Zařízení připevněné například pomocí suchého zipsu na zápěstí (ruku) člověka snímá náklon vlevo, vpravo, nahoru a dolu. Schopnosti jsou v současné době velmi podobné již zmiňovanému joysticku (výchylka převedena na virtuální tlačítka a jejich následné zpracování). Lze jej však umístit na libovolnou část těla (noha, hlava, …). Zařízení je k PC rovněž připojeno pomocí standardního USB portu.
-
(Připravuje se) Detekce tlaku například prsty na ruce / noze nebo hlavou. Jedná se o snímače tlaku na principu detekce změny vodivosti odporové podložky podle vyvinutého tlaku. Velikost tlaku je vyhodnocena / převedena na virtuální tlačítka a ty dále zpracovány jako v případě jiných typů vstupních zařízení. Zařízení je k PC rovněž připojeno pomocí standardního USB portu. (Neodzkoušeno zcela) Pracovní název „rukavice“. Jedná se o zařízení v podobě rukavice obsahující jak detekci pohybu / náklonu ruky (totožné s již zmiňovaným zařízením pro detekci pohynu / náklonu) a současně detekci ohybu prstů (velikost ohybu je převedena na virtuální tlačítka a ty jsou dále zpracovány). Zařízení je k PC rovněž připojeno pomocí standardního USB portu.
-
-
Jednoduchý IR ovladač. Jako aktivní vstupní zařízení je použit (libovolný) jednoduchý (přehledný) IR ovladač obsahující například velmi malý počet tlačítek. Signály z IR ovladače (vysílané signály) jsou převáděny na virtuální tlačítka jako v případě jiného vstupního zařízení a dále zpracovány. V činnosti tedy není rozdíl mezi tímto IR ovladačem a jiným vstupním zařízením. Pomocí IR ovladače lze například hrát snadno hry, nebo ovládat (přes popisovaný systém) rovněž další zařízení v domácnosti, jež nejsou přímo ovladatelná pomocí IR ovladače. Přijímač IR ovladače (jako vstupní zařízení) je připojen k PC pomocí standardního USB portu a je schopen zpracovat signály (snad) ze všech existujících IR ovladačů.
V podstatě libovolné další vstupní zařízení lze vytvořit podle speciálních / konkrétních požadavků. Existuje HW a SW základ pro snímání stavu tlačítek, čtení analogových stupů a několika dalších typů signálů s již vytvořeným přenosem do PC a jejich převodem na virtuální tlačítka pro pozdější zpracování / vyhodnocení.
Ovladače vstupních zařízení V PC je ke každému vstupnímu zařízení přidružen příslušný ovladač, který lze konfigurovat. Některé ovladače mohou být společné pro několik typů vstupních zařízení (určité funkce nemusí být například využity). Pro snadné vytvoření tohoto ovladače existuje určitá knihovna (programový kód) představující základní (generický) ovladač. Od tohoto základního ovladače je odvozen konkrétní ovladač a lze tedy v budoucnu velmi snadno vytvářet i nové / další speciální ovladače. Základní schopnosti ovladače jsou zhruba následující: -
Přijímat signály / data z externího vstupného zařízení. Externí zařízení poskytují data různých typů a příslušný ovladač je sjednocuje pro další zpracování.
-
-
-
-
-
Zobrazovat aktuální stav / signály vstupního zařízení. Ovladač tedy zobrazuje aktuální stav například mechanických tlačítek, analogovou výchylku joysticku, velikost náklonu a další. Při vytváření / použití lze tedy kdykoli kontrolovat činnost vstupního zařízení pouhým spuštěním jeho ovladače. Přiřazení virtuálních tlačítek. Zařízení (přesněji jejich ovladače) poskytují virtuální tlačítka označená Button1 až Button32 (na něž převádějí reálné vstupní externí signály). Je zcela na uživateli jaká virtuální tlačítka zvolí (v konfiguraci zařízení), ale doporučuje se používat tlačítka od prvního k vyšším pro každé vstupní zařízení. Například pro tlačítka Button1 až Button8, pro výchylky joysticky v jednotlivých směrech Button1 až Button4 a tak dále (samozřejmě pokud je připojeno pouze jedno vstupní zařízení a ne více současně).
Nastavení některých základních parametrů jako je doba ustálení vstupu (od uživatele) v milisekundách. Takto lze například filtrovat třes prstů / ruky. Vstupní hodnota bude tedy akceptována teprve, až bude konstantní po dobu nastaveného intervalu (nikoli dříve). Jakákoli změna vstupu uživatele tedy vždy odstartuje nový ustalovací interval. Na ovladači je rovněž zobrazován aktuální čas zbývající do konce ustálení hodnoty (čas běží k nule). Teprve po ustálení je možno odebrat platný stav (virtuální tlačítko) na výstupu ovladače. Zobrazovat všechny hodnoty, jež ovladač poskytuje. Jedná se tedy například o virtuální tlačítka, na něž jsou převedeny vstupní analogové hodnoty (joystick, pohyb, …). Některé ovladače poskytují více výstupních hodnot a ty jsou zobrazeny v seznamu s jejich popisem (název, hodnota, zvyšující se číslo při každé změně položky).
Do ovladače zařízení rovněž vstupuje konfigurace neboli profil uživatele. Ten je zvolen v řídící aplikaci běžící na pozadí. Tyto informace jsou v ovladači rovněž zobrazeny.
Některá vstupní zařízení nepoužívají pouze jeden (programový) ovladač, ale současně více a ty jsou zřetězeny. Jedná se například o vstupní zařízení typu joystick, jenž používá první ovladač pro sběr dat obsahujících analogovou výchylku joysticku a ten svůj výstup předává do druhého ovladače, jenž tuto výchylku převádí na virtuální tlačítka. Toto má velkou výhodu v možnosti využití jak hodnoty představující přímo výchylku joysticku, tak i její převod na sadu virtuálních tlačítek.
Řídící aplikace běžící na pozadí Tato řídící aplikace běžící na pozadí je v podstatě první část mostu mezi vstupním zařízením (přesněji jeho ovladačem) a cílovou aplikací a její činnost spočívá ve čtení a zpracování virtuálních tlačítek ze vstupního zařízení, tak aby byla cílová aplikace co nejlépe (nejsnadněji) ovladatelná. Tato řídící aplikace již nemá informace jaké vstupní zařízení je právě připojeno / použito a virtuální tlačítka (v současné verzi) ze vstupních zařízení jsou tedy dále zpracovávána stejným způsobem bez ohledu na použitý typ vstupního zařízení. S virtuálními tlačítky (ze vstupního zařízení) lze vykonat následující možnosti: -
Nezpracovávat, pouze předat dále. Virtuální tlačítka lze zasílat přímo na výstup (pro předání do cílové aplikace) bez jakýchkoli změn / úprav. Je-li tedy vstupním zařízením vygenerováno určité virtuální tlačítko, tak jej řídící aplikace běžící na pozadí zašle přímo na svůj výstup (a později do právě spuštěné aplikace). Zde lze například v případě potřeby změnit název virtuálních tlačítek (Button1 například pře-mapovat na Button10).
-
Vytvoření nového virtuálního tlačítka pomocí kombinace již existujících virtuálních tlačítek (ze vstupního zařízení). V současné verzi lze vytvořit nové tlačítko kombinací maximálně pěti jiných již existujících virtuálních tlačítek. Lze však generovat libovolný počet nových virtuálních tlačítek. Pouze je potřeba dbát na to, aby novým tlačítkům byly přiděleny dosud nepoužité názvy (nikoli shodné jako názvy již existujících virtuálních tlačítek) například Button10, Button11 a další. Takto lze počet tlačítek (i znatelně) rozšířit. Pokud uživatel například používá pouze dvě tlačítka a to pro výběr předchozí a následující položky, lze tedy současným stiskem obou těchto tlačítek vytvořit třetí tlačítko pro potvrzení právě nastavené akce.
-
Vytvoření nového virtuálního tlačítka pomocí časového intervalu stisku již existujícího tlačítka. Další „první“ nové tlačítko lze vytvořit, například pokud již existující tlačítko uživatel držel méně než 1 vteřinu a další „druhé“ nové tlačítko lze vytvořit, pokud uživatel toto již existující tlačítko držel déle než 1 vteřinu. Nové tlačítko je samozřejmě generováno až po uvolnění příslušného tlačítka (aby byl detekován časový interval). Držením existujícího tlačítka méně nebo déle než 1 vteřinu mohou tedy vzniknout dvě nová virtuální tlačítka. Takto lze vytvořit další vhodná / potřebná virtuální tlačítka pokud je uživatel (jeho vstupní zařízení) neposkytuje. Vezměme v úvahu krajní případ: uživatel disponuje pouze jedním reálným tlačítkem (hlava, noha, …), jeho stisk na méně než 1 vteřinu znamená posun o položku vpřed (označení následující položky), jeho držení více než 1 vteřinu, ale méně než 2 vteřiny znamená posun o položku zpět (označení předchozí položky) a jeho držení déle než 2 vteřiny znamená výběr (potvrzení) právě označené položky. Takto lze i s minimem vstupních signálů ovládat i celkem složité aplikace (samozřejmě s určitou časovou náročností). U této možnosti lze nastavit rovněž zvukový signál (určité frekvence a délky) signalizující limity mezi nastavenými časovými intervaly. Uživatel tedy pouze drží tlačítko a poslouchá, zda je generován požadovaný zvuk (překročení daného časového intervalu) a poté tlačítko uvolní a tím dojde k vygenerování požadovaného nového tlačítka.
-
Vytvoření skriptu akcí (virtuálních tlačítek). V případě pouze jednoho vstupního virtuálního tlačítka ze vstupního zařízení lze generovat další tlačítka například časovým rozdělením. Tato skutečnost však není vždy zcela vhodná. Z tohoto důvodu byla vytvořena možnost sestavní skriptu akcí (virtuálních tlačítek), jež budou postupně vykonávány. Každý řádek / akce (v podstatě virtuální tlačítko) je vykonáván (jednou nebo opakovaně) dokud není stisknuto požadované vstupní tlačítko uživatele pro přechod na další položku skriptu. Po stisku vstupního tlačítka je ze skriptu vyzvednuta další akce (další virtuální tlačítko) a ta vykoná(vá)na a tak neustále dokola. Využití může být například při hraní hry. Ve skriptu jsou
potupně tyto akce: Button10 použitý pro pohyb vlevo (opakující se), Button11 použitý pro pohyb dolu (opakující se) a Button12 použitý pro potvrzení akce (neopakující se). Uživatel stiskem svého jediného tlačítka nejprve vybere první položku skriptu a to opakující se pohyb vpravo. Hra neustále (po zadaném intervalu) posouvá označené políčko vpravo (okolo přes hranu hrací plochu). Až je dosaženo požadovaného sloupečku, tak uživatel stiskne opět své tlačítko a tím dojde ke generování posuvu dolu (druhá položka ve skriptu). Hra nyní neustále (po zadaném intervalu) posouvá označené políčko dolu (okolo přes hranu hrací plochy). Až je dosaženo požadovaného řádku (v postatě požadovaného cílového políčka), tak uživatel stiskne opět své tlačítko a tím potvrdí akci na tomto políčku (poslední položka ve skriptu). Dalším stiskem tlačítka uživatele se proces opakuje od začátku (skript začíná opět znova). Takto lze samozřejmě hrát i velmi složité hry. Pokud je od uživatele k dispozici více tlačítek lze nastavit i další možnosti jako jsou: přeskočit položku ve skriptu nebo kdykoli spustit skript od začátku.
-
Možnost automatického generování virtuálního tlačítka. Pokud uživatel poskytuje například pouze jedno vstupní tlačítko tak je vhodné toto tlačítko použít pro potvrzení právě nastavené akce (položky) a přechod na další možnou akci (položku) generovat automaticky se zadaným časovým intervalem. Lze tedy nastavit jaké virtuální tlačítko a s jakým časovým intervalem se bude automaticky generovat. Toto tlačítko bude použito pro postupné označení další položky a další a další a atd. a tlačítko uživatele bude použito pro potvrzení právě označené položky. Interval automatického přechodu z položky na položku musí být dostatečně dlouhý, aby mohl uživatel požadovanou akci potvrdit.
-
Nastavení celkového času ustálení virtuálních tlačítek před jejich výstupem do části pro skutečné předání do cílové aplikace (popsáno dále). Tato možnost může být užitečná
například při vytváření dalších tlačítek pomocí kombinací již existujících, kdy je potřeba odstranit zákmity uživatele.
Při spuštění této aplikace běžící na pozadí je vždy vznesen dotaz na název konfigurace / profilu uživatele. Lze tedy vytvořit konfigurace / profily pro libovolný počet uživatelů (nebo několik pro jednoho uživatele) a poté vybrat požadovaný. Vybraný profil uživatele (jeho nastavení) je samozřejmě zaslán i do ovladače použitého vstupního zařízení a dokonce i do cílové aplikace při jejím spuštění (cílová aplikace nastaví některé své parametry podle právě aktivního uživatele / profilu).
Ovládání právě spuštění aplikace Virtuální tlačítka ze vstupního zařízení nebo dodatečně vytvořené v aplikaci běžící na pozadí musí být zaslána do právě spuštěné aplikace, ale tak by jim aplikace porozuměla. Zde jsou tři možnosti. Nově vytvořené aplikace používají interní komunikační kanál. Pokud je tato aplikace spuštěna, tak je o tomto řídící aplikaci běžící na pozadí informována a aktivní výstup je přesměrován do této právě spuštěné aplikace. Tato aplikace nyní přijímá všechny povely od uživatele. Aplikace však nepřijímá virtuální tlačítka (Button1 až Button32), ale zcela jiné povely společné všem aplikacím a pro tvůrce aplikací mnohem užitečnější. Pro aplikaci jsou tedy potřebné následující povely: -
Left, Right, Up, Down – představující pohyb po dialogu jako formou směrových šipek BackItem, NextItem – posun na předchozí nebo následující položku NextColumn, NextRow – posun na další sloupec nebo řádek Action, Escape – potvrzení právě vybrané akce, ukončení aktuální činnosti … (některé další)
Aplikace by měla reagovat na všechny tyto povely (současně), protože aplikaci mohou být zasílány pouze některé z nich (nebo všechny současně, není omezení). Povely jsou zvoleny tak, aby pokrývaly
většinu typů vstupních zařízení a byly v aplikaci snadno implementovatelné. V konfiguraci komunikačního kanálu lze tedy nastavit, jak jsou virtuální tlačítka mapována na povely vyžadované aplikací. Pokud uživatel poskytuje všechny směry, tak lze tedy využit povely Left, Right, Up a Down (mapované například na Button1 až Button4). Pokud uživatel poskytuje pouze dva směry je nutno využit pouze povely BackItem a NextItem (mapované například na Button1 a Button2). A podobně. Takto lze tedy snadno mapovat schopnosti uživatele na možnosti ovládání aplikace. Všechny (nově vytvořené) aplikace používají stejnou sadu vstupních povelů.
Některé již existující aplikace rovněž pro handicapované uživatele lze ovládat pomocí klávesnice (nebo zařízení simulujícího stisky určitých kláves). I tuto aplikaci lze rovněž spustit (použít), ale ona však po svém spuštění již nespolupracuje (nekomunikuje) s řídící aplikací běžící na pozadí, protože nebyla k tomuto uzpůsobena. Z tohoto důvodu je vytvořena obalující aplikace okolo této již existující, která je v podstatě prvotně spuštěna místo ní. Tato nová obalující aplikace nejen rovněž spustí původní / požadovanou aplikaci, ale současně zašle informaci do řídící aplikace běžící na pozadí, aby byl výstup přepnut na simulovanou klávesnici, a jaké klávesy spuštěná aplikace požaduje (každá aplikace může používat jinou sadu kláves). Následně je nastaveno mapování virtuálních tlačítek na požadované klávesy a ty se začnou zasílat do právě spuštěné (aktivní) aplikace. Při ukončení aplikace je rovněž ukončena obalující aplikace, která informuje o ukončení potřebné činnosti. Obalující aplikace obsahuje konfiguraci kláves pro spouštěnou aplikaci a lze ji kdykoli změnit podle potřeby. Obalující aplikace je vcelku univerzální a zle ji použít téměř pro jakoukoli běžnou aplikaci. Rovněž lze nastavit defaultní mapování virtuálních tlačítek na klávesy, pokud spuštěná aplikace nepožádá o vlastní nastavení.
Některé aplikace je nutno ovládat pomocí myši. Poslední položka V Toolbaru (popsáno dále) umožňuje používání myši. Při aktivaci této položky je ToolBar skryt a uživatel pohybuje myší po pracovní ploše. Možností nastavení pohybu myší je několik a závisí pouze na počtu signálů od
uživatele. Při poskytnutí signálů pro všechny směry lze myší pohybovat libovolně do všech směrů. Při poskytnutí pouze dvou signálů lze myší pohybovat například pouze vlevo a dolu a to rolováním přes okraje obrazovky. Rovněž akce myši lze nastavit podle několika možností. Pokud jsou dostupná další virtuální tlačítka lze na ně přímo mapovat klik nebo dvoj-klik myši. Pokud nejsou tak je jedním zvoleným virtuálním tlačítkem zobrazeno menu, z něhož je klik nebo dvoj-klik vybrán. Při skutečném nedostatku virtuálních tlačítek může být menu myši zobrazeno automaticky po určitém čase, kdy je myš v klidu (nepohybuje se). Typů nastavení je mnoho a záleží pouze na potřebách uživatele.
ToolBar Pro snadné spouštění aplikací a další potřebnou činnost byl vytvořen tzv. „ToolBar“ obsahující seznam (dostupných) aplikací pro jejich rychlé spuštění. V tomto ToolBaru jsou uvedeny názvy aplikací a při jejich výběru a potvrzení je aplikace spuštěna. Pro ToolBar je nutno nastavit (pomocí konfigurace) jaká virtuální tlačítka slouží pro pohyb mezi položkami na ToolBaru (následující / předchozí) a jaké tlačítko pro aktivaci právě označené položky. Při ukončení běhu aplikace je řízení vráceno opět do tohoto ToolBaru a lze tedy vybrat a spustit další aplikaci. Rovněž lze zvolit, zda bude při spuštění aplikace ToolBar skryt nebo nikoli. Aplikace do ToolBaru lze přidal v podstatě podle libosti.
Poslední dvě položky v ToolBaru jsou „Keyboard“ a „Mouse“. Ty slouží pro přepnutí výstupu na simulaci klávesnice nebo myší a pro některé uživatele mohou být samozřejmě zablokovány. ToolBar tedy slouží jako rozcestník pro další činnost. V současné verzi není zcela implementováno, ale ToolBar je schopen neustále kontrolovat stav právě běžící aplikace (bohužel pouze nově vytvořené),
zda je její činnost korektní. Pokud ToolBar detekuje nekorektní činnost aplikace (zatuhnutí), tak ji automaticky ukončí a předá řízení zpět do ToolBaru. Uživatel by tedy neměl být nikdy ztracen. Některé aplikace uvedené v Toolbaru však mohou být spuštěny neustále, ale nebudou zobrazeny. Jedná se například o aplikaci pro ovládání mobilního telefonu, jež může detekovat příchozí hovor / SMS a požádat ToolBar o pozastavení jiných aplikací a aktivace této.
Toto je příklad ToolBaru s několika aplikacemi. Zvýrazněné políčko představuje právě označenou aplikaci, jež může být spuštěna.
Soubor základních aplikací Samotné ovládání PC není dostačující, a proto byl vytvořen soubor některých základních aplikací. Každá aplikace není vytvářena zcela od začátku, ale byla vytvořena knihovna pro podporu jejich snadného vývoje. Tato knihovna poskytuje zejména následující schopnosti / podporu: -
-
Spojení a přijímání povelů z aplikace běžící na pozadí. Příjem konfigurace / profilu uživatele. Nastavení některých parametrů / vlastností podle uživatele (barvy, rychlosti pohybu, …). Podpora pro procházení prvků (položek) na dialogu aplikace pomocí povelů Left, Right, Up, Down, Next… (stačí nastavit seznam existujících položek na dialogu a o jejich vhodný postupný výběr se již knihovna postará automaticky). Potřebné jednoúčelové dialogy. Například dialog pro výběr Ano / Ne. Tyto dialogy jsou rovněž ovladatelné pomocí povelů vstupujících do aplikace. Aplikace nesmí používat žádné dialogy, které jsou ovladatelné pouze klávesnicí nebo myší.
-
-
SW klávesnici pro psaní textu do položek na dialogu. Klávesnice je zcela konfigurovatelná aplikací (pozice, velikost, speciální klávesy). V blízké době bude obsahovat predikci textu a to nejen se zaměřením na následující písmeno, ale i celé slovo. … (některé další)
Použitím takovéto knihovny se vývoj cílových aplikací stává mnohem jednodušší a aplikace jsou rovněž stabilnější. V současné době jsou k dispozici tyto základní aplikace: -
Psaní textu. Aplikace sloužící k jednoduchému psaní / zobrazení textu pomocí SW klávesnice, jež je umístěna v její spodní části. Povely z řídící aplikace běžící na pozadí přicházejí právě do této SW klávesnice.
-
Aplikace pro OnLine komunikace pomocí protokolu „Jabber“ (obdoba ICQ). Vpravo je zobrazen seznam právě OnLine uživatelů, v horní části záznam komunikace a v dolní části právě psaný / odesílaný text. Vždy je zobrazen text pouze od jednoho vybraného uživatele. Čtyři speciální tlačítka na levé straně klávesnice mají následující význam: o o o o
Up – posun textu v příslušném okénku nahoru Down – posun textu v příslušném okénku dolu Select – výběr OnLine uživatele pokud je aktivní okénku s OnLine uživateli Next – aktivace dalšího okénka (postupně OnLine uživatelé, záznam komunikace, psaný / odesílaný text)
-
Aplikace pro čtení / odesílání mailu. Speciální tlačítka na klávesnici mají význam UP / DOWN – pohyb v právě aktivním okénku, NEXT – aktivace další položky na dialogu (seznam zpráv, odpovědět, vymazat zprávu a opět dokola), NEXT TAP – přepnutí do další záložku na dialogu (záložky se rovněž přepínají stále dokola). V dalších záložkách je psaní mailu a správa kontaktů.
-
Aplikace pro ovládání mobilního telefonu přes BlueTooth. Při hovoru PC v podstatě simuluje „HandsFree“. Aplikace umí vyzvednout SMS uložená v telefonu, napsat a odeslat SMS přes telefon, zvednout příchozí hovor a vytočit požadované číslo. Speciální tlačítka na klávesnici mají stejný význam jako v případě aplikace mail.
Další aplikace budou postupem času přibývat. Současné aplikace, je však třeba částečně doladit hlavně co se týká snadnosti ovládání. Všechny povely do aplikace jsou směrovány do SW klávesnice (a jejích speciálních tlačítek) a pomocí ní je v podstatě celá aplikace ovládána.
Řízení domácího prostředí Speciální aplikací je řízení domácího prostředí. Přesněji řečeno některých domácích zařízení (spotřebičů). Tato aplikace se skládá ze tří hlavních částí: -
Hlavní GUI část zobrazující aplikace, jež mění typ zobrazení podle konfigurace. GUI jednotlivých zařízení, jež jsou načtena z konfiguračních souborů. Ovladače externích zařízení, jež slouží pro skutečné ovládání domácích zařízení.
Všechna zařízení v aplikaci jsou umístěna / sestavena do pomyslného stromu se strukturou: -
Byt. Základní kořen stromu, jenž může obsahovat několik místností. Místnost. Podmnožina bytu, jenž může obsahovat několik zařízení umístěných v dané místnosti. Zařízení. Zařízení nacházející se v místnosti a obsahující několik (svých) akcí. Akce (převážně tlačítko). Elementární akce, jež lze vykonat na určitém zařízení.
V tomto smyslu je rovněž vytvořena konfigurace celé aplikace. Tento strom je zobrazen však odlišně podle požadovaného typu zobrazení: -
Mapa a ikony. Na dialogu je zobrazena mapa (plánek) bytu. Jednotlivá zařízení jsou umístěna podle místností a zobrazena jako ikony. Teprve aktivací ikony je zobrazen seznam akcí, které lze na zařízení vykonat.
-
-
Mapa a akce. Zobrazení podobné předchozímu, ale místo ikon jsou rovnou zobrazeny tlačítka s akcemi, které lze na zařízení vykonat. Seznam zařízení ve formě jejich ikon. Teprve při výběru ikony se zobrazí seznam akcí, jenž lze na daném zařízení vykonat.
Seznam zařízení. Není zobrazena mapa bytu. Zařízení jsou zobrazena jako organizovaný (seskupený) seznam tlačítek podle zadané polohy. Například v horní části světla a v dolní části TV a rádio. Pozice a velikosti jsou dány konfigurací.
-
Seznam akcí. Akce od všech zařízení jsou seřazeny do jednoho seznamu a pouze odděleny podle typu zařízení (například textovým políčkem). Výběr postupně prochází přes všechny akce (všech zařízení).
Každý typ zobrazení je vhodný pro různé vstupní zařízení (počet poskytovaných signálů) a rovněž počet ovládaných zařízení (přehlednost dialogu). V konfiguraci zařízení je uloženo nastavení pro všechny typy zobrazení. Zobrazení lze tedy kdykoli snadno přepnout. Připojená / instalovaná zařízení mohou být rovněž přiřazena do několika skupin podle jejich činnosti a podle jejich vzájemného vztahu. Například zařízení ovlivňující teplotu (topení, ventilace, okno, …) jsou začleněna do jedné skupiny a tu lze konfigurovat. Například při poklesu teploty pod nastavenou hodnotu se okna zavrou nebo naopak při překročení určité teploty se otevřou. Tyto akce se však nevykonávají zcela automaticky a mnohdy vyžadují (pouze) potvrzení uživatele. Pro skutečné ovládání domácích zařízení samostatná aplikace není dostačující, ale jsou potřebná určitá externí zařízení. V současné době jsou vyzkoušena nebo vytvářena tato externí zařízení: -
Náhrada / simulace IR ovladače. Tento IR ovladač je schopen se naučit povely (snad) libovolného existujícího IR ovladače a poté je opět vysílat a tím ovládat původní / požadované zařízení (TV, rádio, DVD přehrávač, SETOP box a další jenž používají jakýkoli IR ovladač). Vytvořený ovladač stačí pouze jeden pro několik ovládaných zařízení. Zařízení je připojeno přes standardní USB port.
-
-
Měření několika parametrů v bytě (teplota, vlhkost, osvětlení, …). Zařízení je připojeno přes standardní USB port. Slouží převážně pro demonstrační a vývojové účely. (Připravuje se) Ovládání dálkových zásuvek pro zapínání / vypínání světel a dalších jednoduchých spotřebičů. Na principu odposlechu radiového signálu 433MHz a jeho zpětného vyslání lze (snad) ovládat pomocí zapnutí / vypnutí další spotřebiče. Prázdné zařízení, jež je vhodné pro napojení libovolného externího zařízení například přes elektrický rozvod nebo jiný typ sběrnice. … (některá další)
Soubor her Nedílnou součástí pro nejen zpříjemnění volného času, ale rovněž pro podporu například myšlení byl vytvořen soubor her. V podstatě byl zhotoven tak zvaný „framework“ pro snadné vytváření logických maticových her. Nové hry lze zde vytvářet pouze pomocí konfiguračních souborů. Samotná hra obsahuje několik hlavních konfiguračních souborů a to pro grafickou reprezentaci, pro herní pravidla, pro možné následující tahy a pro detekci konečného stavu. Tímto postupem je v současné době vytvořeno zhruba 15 her (Loydova 15ka, Netwalk, Pexeso, Socoban, Sudoku, Zhasni, …) a další budou vytvořeny v blízké době. Do her je ještě nutno přidat generátor výchozího postavení, aby nebyly hry stále stejné. Hry (a jejich pravidla) jsou navrženy zejména s ohledem na jednoduchost jejich ovládání pomocí různých alternativních vstupních zařízení. A to i pro případ minimálního počtu vstupních signálů (jedno tlačítka a automaticky generovaný posun). Všechny hry si uchovávají poslední dosažený stav (v závislosti na profilu uživatele) a tudíž lze kdykoli později v již rozehrané hře pokračovat. Rovněž všechny akce uživatele jsou uchovávány a mohou být později analyzovány a posloužit například pro zkvalitnění ovládání her.
Řízení elektrického invalidního vozíku Poslední speciální aplikací je možnost řízení elektrického invalidního vozíku. V tomto případě celý systém běží na malém počítači umístěném na elektrickém invalidním vozíku. Uživatel pomocí (téměř) libovolného vstupního zařízení ovládá příslušný program. Ne všechny vstupní zařízení jsou schopny využít všech možnosti tohoto programu. Je poskytováno několik režimů (mezi nimiž lze samozřejmě libovolně přepínat):
-
Přímé řízení. V tomto režimu uživatel přímo řídí pohyb vozíku pomocí svého vstupního zařízení. Například náklonem ruky (zařízení pro detekci náklonu ruky) přímo ovládá směr a jízdu vozíku. Lze zvolit rychlou nebo pomalou verzi jízdy. Tento režim je (zatím) dostupný pouze pro vstupní zařízení, jež poskytuje (téměř) plnou sadu směrů.
-
Přískokový režim. Na dialogu jsou zobrazeny elementární akce a uživatel může vybrat libovolnou akci (například jízdu vpřed o 1m) a tu poté potvrdí. Tlačítky „Fast“ a „Slow“ lze volit velké nebo malé kroky. Tento režim je v podstatě dostupný pro všechny typy vstupních zařízení.
-
Domácí režim. Tento režim slouží pro pohyb v rámci domova (bytu). Na dialogu je zobrazena symbolická mapa bytu a aktuální poloha invalidního vozíku. Pod mapou se nachází sada tlačítka s před-definovanou cílovou polohou a mohou být pojmenovány podle potřeby (například WC, kuchyň, chodba, …) a jejich stiskem se vozík rozjede do požadované cílové
polohy. Dále lze po stisku tlačítka TARGET označit cílovou pozici na mapě manuálně, tlačítkem PLAN naplánovat trasu a tlačítkem GO spustit pohyb vozíku. Naplánovaná trasa a aktuální poloha vozíku je vždy zobrazena na mapě.
-
Venkovní režim. Tento režim slouží pro jízdu ve venkovním prostředí. Na dialogu je zobrazen snímek z kamery (umístěné na vozíku). Na snímku uživatel pomocí zeleného čtverce označí texturu, která představuje například chodník nebo nějakou cestu a pomocí červeného čtverce označí texturu, jež není cesta (trávník, okraj cesty). Vozík rozpozná trasu, naplánuje cestu, a pokud ji uživatel potvrdí, tak se dá do pohybu naplánovaným směrem. V případě že rozpoznání cesty / textury selže, tak se vozík automaticky zastaví.
Tento program slouží pouze jako GUI pro ovládání vozíku a zobrazení jeho stavu. Skutečné řízení vozíku (detekce polohy v prostoru, plánování trasy, jízda…) je výsledkem práce lidí ve Skupině mobilní robotiky. Obě tyto části jsou propojeny zatím pomocí TCP/IP kanálu. Zde popisovaná aplikace zasílá do části pro řízení / plánování vozíku požadavky a naopak přijímá jeho aktuální polohu nebo naplánovanou trasu. Popisovaná aplikace rovněž zobrazuje detekovanou překážku při jízdě a to buď pouze jako vykřičník na místě překážky (je-li vzdálenost od překážky větší) nebo ji signalizuje i zvukově (je-li překážka nebezpečně blízko). Vozík se samozřejmě u překážky automaticky zastaví.
Zobrazovač / simulátor bytu Pro potřeby prezentace a ladění různých aplikací byl vytvořen tzv. zobrazovač / simulátor 3D bytu. Tato aplikace rovněž loguje všechny příchozí data (lze je uložit) a lze tedy kdykoli později opět přehrát soubor již uskutečněných akcí (a to i ve správném časovém sledu / odstupu). Tento zobrazovač / simulátor obsahuje dvě základní funkce: -
Zaznamenávat a zobrazovat veškerou komunikaci mezi GUI aplikací pro řízení invalidního vozíku a částí pro skutečné řízení tohoto vozíku (vytvořenou skupinou mobilní robotiky). Zobrazuje se poloha a natočení vozíku, naplánovaná trasa, detekovaná překážka a další. Pro
-
potřeby prezentace bez reálného invalidního vozíku byl v rámci zobrazovače vytvořen velmi primitivní simulátor jízdy invalidního vozíku (pouze zajištění jízdy požadovaným směrem a velmi jednoduchý plán cesty). Zaznamenávat a zobrazovat (přesněji řečeno simulovat) stav domácnosti. Vykonávat tedy v rámci zobrazení akce jako je zapnuti / vypnutí televize nebo rádia, zapnutí / vypnutí světel, otevření / zavření dveří nebo oken a další. Tyto akce jsou pouze přijímány a zobrazovány v podobě změny 3D scény nebo pomocí animací.
Popisovaný zobrazovač / simulátor je vytvořen jako TCP/IP server ke kterému se připojuje aplikace pro řízení invalidního vozíku a aplikace pro řízení domácího prostředí (spotřebičů). Pokud se aplikace na server nepřipojí, tak její činnost není nijak omezena.
Na obrázku je jednoduchý model bytu. V dolním rohu je zobrazen model invalidního vozíku a od něho fialovou barvou naplánovaná trasa pro jízdu. Body na trase určují naplánované záchytné body, jimiž bude vozík projíždět. Dveře a okna lze otevírat, v jednotlivých místnostech zapínat / vypínat světla, zapnut / vypnout televizi nebo rádio. Větrák lze nastavit na několik úrovní. 3D model bytu je generován velmi vhodným způsobem. Postačuje, pokud uživatel vytvoří 2D obrázek představující v podstatě plánek (půdorys) bytu a do něho umístí vhodnou barvou jednotlivé položky. Například oranžový obdélník značí skříň, bledě zelený postel, tlustá černá obvodová čára znamená zeď a šedá okno a další položky. Pokud je potřeba určit orientaci některého objektu je nutno na jedné straně vytvořit bílou tečku (například bílá tečka určující orientaci skříní a stolů).
Zde je příklad 2D mapy z níž je vytvořen zobrazený 3D model bytu. Zobrazení některých položek (například černé proužky přes okna) není ještě zcela dokonalé, ale snad bude brzo vylepšeno.
Poznámky -
Pro provoz / činnost popisovaného systému postačuje v podstatě jakékoli PC (i staršího typu) vybavené operačním systémem WIN-XP a novějším (s nainstalovaným MS.NET Framework 3.5). Na výkon tohoto PC nejsou kladeny v podstatě žádné velké nároky.
Další plány Pro zlepšení, zkvalitnění a rozšíření zde popisovaného systému hledáme spolupráci zejména pro tyto oblasti: -
Mající zkušenosti s používáním alternativních vstupních zařízení a mohou přispět / poradit při návrhu / vývoji dalších typů pro speciální případy / potřeby. - Vytvoření možnosti automatické konfigurace vstupního zařízení podle schopností / možností konkrétního uživatele. V některých případech nelze parametry vstupního zařízení nastavit dlouhodobě konstantně. - Vývoj jednoduchých aplikací různých účelů (podle vzájemné dohody). - Vytvoření jednoduché, ale velmi účinné predikce při psaní textu. Toto formou několika různých možností. - Velmi jednoduché ovládání dalších domácích spotřebičů a zařízení. - Vytvoření samo-učící se komponenty, jež by pozorovala činnost uživatele, detekovala opakující se posloupnosti akcí a ve vhodném okamžiku uživateli navrhla nejpravděpodobnější akci pro daný okamžik. - … (a další) Samozřejmě možnost otestování / odzkoušení pod dohledem.
Reference Zde jsou uvedeny pouze hlavní projekty, práce, osoby a publikace.
Projekty COGAN (Communacation by Gaze Interaction) – Grant evropské unie (European Framework 6 Network of Excellence) 2005 – 2009, www.cogain.org OLDES (Older people’s e/services at home) – Grant evropské unie 2007 – 2010, www.oldes.eu Diplomové práce Návrh uživatelského rozhraní pro ovládání domácího prostředí, (2010) Pavel Šťastný Prostředí pro snadné vytváření jednoduchých logických her, (2010) Tibor Strašrybka Bakalářské práce Univerzální úložiště, (2009) Dubec Martin Projekty v týmu Možnosti ovládání elektrického invalidního vozíku, (2008) Eduard Bakštein, Zdeňka Lukešová, Tibor Strašrybka, Jan Šourek, Pavel Šťastný Programy / aplikace osoby lidi s omezenou schopností pohybu nebo reakce (2010) Daniel Fučík, Ondřej Kučera, Tomáš Látal, Martin Synek, Roman Václavík Ovládání invalidního vozíku (2010) Cvetler Pavel, Vogal Martin, Kučera Adam, Pošusta Antonín, Martin Dubec, Josef Mareš Stálí členové týmu Petr Novák – Organizace a technické vedení projektu Miroslav Uller a většina členů skupiny NIT Další (externí z pohledu projektu / skupiny) spolupracovníci / poradci / přispěvovatelé Tomáš Krajník – Skupina mobilní robotiky, Katedra kybernetiky Pavel Děd – Zemědělská technická univerzita, Katedra automatizace Tomáš Vítek – Katedra mikroelektroniky Prof. Jaromír Wolf – Strojní fakulta CVUT, Ustav přístrojové a řídící techniky Roman Hrubý – technická podpora, Katedra kybernetiky Publikace When can eyes make up for hands?, Marcela Fejtová, Petr Novák, Jan Fejt, Olga Štěpánková, COGAIN 2007, 46 - 49 AI Support for a Gaze Controlled Wheelchair, Petr Novák, Tomáš Krajník, Libor Přeučil, Marcela Fejtová, Olga Štěpánková, COGAIN 2008, ISBN 978-80-01-04151-2, 19 - 22 Home and environment kontrol, Petr Novák, Olga Štěpánková, COGAIN 2009, ISBN 978-87-643-04756, 35 - 38 TEDA, a SW tool supporting customization of eye cracking algorithms, Petr Novák, Pavel Moc, Olga Štěpánková, Miroslav Uller, Lenka Nováková, COGAIN 2009, ISBN 978-87-643-0475-6, 81 – 84 Hand-free Interaction with a Computer and Other Technologies, Marcela Fejtová, L Figueiredo, Petr Novák, Olga Štěpánková, A Gomes, Universal Access in the Information Society 2009 vol 8, ISBN 1615-5289, 277 - 295