Sem vložte zadání Vaší práce.
České vysoké učení technické v Praze Fakulta informačních technologií Katedra teoretické informatiky
Bakalářská práce
Aplikace pro vyhodnocení stylu jízdy řidiče Tomáš Šabata
Vedoucí práce: Ing. Miroslav Balík, Ph.D.
6. května 2014
Poděkování Děkuji své rodině a přítelkyni za podporu a trpělivost. Děkuji vedoucímu práce Ing. Miroslavu Balíkovi, Ph.D. za vedení mé bakalářské práce, za podnětné návrhy a připomínky.
Prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů, zejména skutečnost, že České vysoké učení technické v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle § 60 odst. 1 autorského zákona.
V Praze dne 6. května 2014
.....................
České vysoké učení technické v Praze Fakulta informačních technologií c 2014 Tomáš Šabata. Všechna práva vyhrazena.
Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora.
Odkaz na tuto práci Šabata, Tomáš. Aplikace pro vyhodnocení stylu jízdy řidiče. Bakalářská práce. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2014.
Abstrakt Cílem této práce je analýza stylu jízdy řidiče pomocí mobilního zařízení s operačním systémem Android. Pro sbírání dat o jízdě je využíváno akcelerometru mobilního zařízení. Akcelerometr měří směr a velikost zrychlení zařízení. Z těchto naměřených dat lze rozeznat a ohodnotit agresivitu jízdního manévru. Práce se zabývá kalibrací senzoru, porovnává algoritmy pro vyhlazení dat ze senzoru a vytváří systém hodnocení stylu jízdy. Klíčová slova Android aplikace, styl jízdy vozidlem, senzory, klasifikace
Abstract The purpose of this thesis is a driving style analysis using a mobile device with the operating system Android as a platform. An accelerometer of the mobile device is used for collecting data. The accelerometer measures direction and value of acceleration. With this measured data, aggressiveness of the driving maneuver can be assessed and recognized. The thesis deals with the sensors calibration, compares smoothing algorithms and creates a rating system of the driving style. Keywords Android application, driving style, sensors, classification ix
Obsah Úvod
1
1 Operační systém Android 1.1 Historie OS Android . . . . . 1.2 Využití verzí android systému 1.3 Architektura . . . . . . . . . 1.4 Senzory . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
3 3 4 4 6
2 Dynamika silničních vozidel 2.1 Souřadnicový systém . . . 2.2 Podélná dynamika . . . . 2.3 Boční dynamika . . . . . 2.4 Svislá dynamika . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
13 13 14 17 19
. . . .
. . . .
3 OBD 21 3.1 OBD-I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 OBD-II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3 OBD-II příkazy . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4 Analýza problému 25 4.1 Kalibrace akcelerometru . . . . . . . . . . . . . . . . . . . . . . 25 4.2 Předzpracování dat . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3 Vyhodnocení dat . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 Realizace 5.1 Podmínky testování 5.2 Kalibrace senzorů . . 5.3 Předzpracování dat . 5.4 Vyhodnocení dat . .
. . . .
. . . .
. . . .
. . . .
. . . . xi
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
35 35 35 38 40
Závěr
47
Literatura
49
A Seznam použitých zkratek
51
B Obsah přiloženého CD
53
xii
Seznam obrázků 1.1 1.2 1.3 1.4 1.5 1.6
Architektura operačního systému OS Android [17]. . . . . . . . . . 5 Rotace telefonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Osy souřadnic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Akcelerometr v klidu (vlevo) a akcelerometr ve volném pádu (vpravo). 10 Akcelerometr při pohybu tělesa (vlevo) a akcelerometr při pohybu tělesa a působení gravitace (vpravo). . . . . . . . . . . . . . . . . . 10 Reálná podoba akcelerometru ADXL345 [16]. . . . . . . . . . . . . 11
2.1 2.2 2.3 2.4
Osy souřadnic . . . . . . . . Schéma průběhu zrychlení. Schéma průběhu brzdění. . Schéma průběhu zatáčení. .
. . . .
14 16 17 19
3.1
OBD System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.1
Rotace telefonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
5.1 5.2 5.3 5.4 5.5 5.6 5.7
Nastavení rychlosti senzoru SENSOR DELAY NORMAL. . . . . . Nastavení rychlosti senzoru SENSOR DELAY GAME. . . . . . . . Použití lineárního akcelerometru. . . . . . . . . . . . . . . . . . . . Jednoduchý klouzavý průměr v závislosti na velikosti okénka. . . . Porovnání vyhlazovacích metod . . . . . . . . . . . . . . . . . . . . Rozhodovací strom . . . . . . . . . . . . . . . . . . . . . . . . . . . Bayesův klasifikátor, atribut maximalní směrnice. Červená křivka znázorňuje agresivní jízdu. Modrá křivka znázorňuje neagresivní jízdu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bayesův klasifikátor, atribut maximální hodnoty. Červená křivka znázorňuje agresivní jízdu. Modrá křivka znázorňuje neagresivní jízdu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36 37 38 39 40 43
5.8
. . . .
. . . .
. . . .
. . . .
xiii
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
44
44
Seznam tabulek 1.1 1.2
Využití verzí OS android [10]. . . . . . . . . . . . . . . . . . . . . . Typy senzorů podporované sensor frameworkem [9]. . . . . . . . .
5.1 5.2 5.3 5.4
Atributy zvážené dle jejich informačního zisku. . . . Výsledky klasifikace pomocí rozhodovacího stromu. . Výsledky klasifikace pomocí Bayesova klasifikátoru. . Výsledky klasifikace pomocí Neuronové sítě. . . . . .
xv
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
4 8 42 43 45 45
Úvod Cílem této bakalářské práce je vytvoření aplikace, která má řidiče uvést do povědomí o jeho stylu jízdy. Styl jízdy lze rozdělit do dvou kategorií: agresivní a neagresivní. Protože hranice mezi těmito kategoriemi je velmi subjektivní, bude hledáno objektivní vyhodnocení. Potencionálně agresivní jízda je v dnešní době jednou z hlavních příčin dopravních nehod. Systém má za úkol zvýšit povědomí o agresivitě řidičovy jízdy a zvýšit tak bezpečnost nejen jeho, ale i ostatních řidičů. Podle studie American Automobile Association (AAA) z roku 2009 bylo přibližně 56% smrtelných nehod v letech 2003 až 2007 způsobeno agresivním chováním řidiče [1]. Za agresivní chovaní bylo považováno nadměrné překročení rychlosti, nevypočitatelné změny jízdního pruhu nebo nesprávně projetí zatáčky. Do mobilních zařízení jsou instalovány různé senzory. Tyto senzory jsou s každou novou generací mobilních zařízení přesnější. Tato práce je zaměřena na akcelerometry. Ty primárně slouží pro obsluhu rotace obrazovek při otočení zařízení, ale přibývají aplikace využívající těchto senzorů pro vlastní funkcionalitu. Pro rozeznávání stylu jízdy řidiče a jednotlivých základních jízdních manévrů, které jsou při jízdě vozidlem vykonávány, budou využívány akcelerometry mobilních zařízení. Existují komerční projekty, které sledují celé vozové parky společností a hodnotí styl jízdy, spotřebu paliva a jiné aspekty konkrétním řidičům. Tyto projekty využívají speciální zařízení, která se do vozidel instalují. Tato varianta je však velice drahá a pro většinu běžných řidičů finančně nedostupná.
Členění textu V první kapitole je podrobněji rozebrán operační systém Android, jeho historie, architektura, senzory a jejich obsluha. Druhá kapitola je věnována dynamice silničních vozidel, aby bylo možno lépe porozumět silám, které na ak1
Úvod celerometr během jízdy působí. Ve třetí kapitole je představen způsob komunikace s řídící jednotkou vozidla s využitím protokolu OBD-II, který slouží k diagnostice emisních systémů vozidla. Ve čtvrté kapitole je vytvořena analýza problému, jež musí aplikace (popř. server) řešit. V poslední, páté, kapitole jsou vyobrazeny výsledky testů řešení navržených v kapitole čtvrté.
2
Kapitola
Operační systém Android Operační systém Android (dále jen „OS Android“) je rozsáhlá open-source platforma, která vznikla pro mobilní zařízení (mobilní telefony, tablety, navigace). Nyní je Android využíván i v televizích, fotoaparátech, hodinkách a jiných zařízeních. Při vývoji OS Android byly brány ohledy na omezení, která s sebou přináší mobilní zařízení, a to zejména: výdrž baterie, menší výkon procesoru, málo dostupné paměti.
1.1
Historie OS Android
Společnost Android, Inc. byla založena v říjnu roku 2003. Původním záměrem bylo vytvoření operačního systému pro digitální fotoaparáty. Tím nedokázali na trh prorazit, a proto se později zaměřili na vývoj operačního systému pro mobilní zařízení, kde chtěli konkurovat operačním systémům Symbian a Windows Mobile. V roce 2005 koupila společnost Android, Inc společnost Google, Inc (dále jen „Google“) i s jejími klíčovými zaměstnanci. V roce 2007 bylo představeno první mobilní zařízení společnosti Apple. V té době byl OS Android, s krycím jménem „Sooner“, více podobný operačnímu systému zařízení BlackBerry s QWERTY klávesnicí, namísto dotykové obrazovky. Konkurenční boj dovedl Google k předělání OS Android tak, aby byl společnosti Apple konkurenceschopný. První komerčně prodávané mobilní zařízení bylo HTC Dream představené 22. října 2008. V roce 2010 začal Google představovat zařízení řady Nexus, která byla vyráběna partnerskými společnostmi a na jejichž vývoj dohlížel. Tato zařízení mají garantovanou 18-ti měsíční podporu týkající se záplat a nových verzí OS Android [19]. Od první verze 1.0, která vyšla v září roku 2008, až po verzi 4.4.2, která vyšla v prosinci roku 2013, prošel OS Android mnohými změnami. Změny se týkají zejména uživatelského rozhraní, výkonnostních úprav, podpory hardware a dalších. Posledním trendem OS Android 4.4 je podpora 64bitové architektury, se kterou bude možné využívat více paměti RAM. 3
1
1. Operační systém Android Verze OS Android mají své názvy. První název „Cupcake“ dostal OS Android 1.5. Nové verze začínají vždy dalším písmenem abecedy oproti počátečnímu písmenu verze předchozí. Nejvýznamnější verze z hlediska míry využívanosti jsou zmíněny v tabulce 1.1.
1.2
Využití verzí android systému
Tabulka 1.1 ukazuje využití jednotlivých verzí OS Android. Data vyjadřují relativní počet zařízení s danou verzí OS Android, jež přistupují do služby Play Store. Data byla sesbírána v sedmidenní periodě končící 3. května 2014. Aplikace vytvořená v rámci této práce využívá verzi API 15 a vyšší. Z tabulky je vidět, že OS Android 4.0 a vyšší pokrývá téměř 80% dnešního trhu, není proto nutné zabývat vývojem i pro zařízení s verzí OS Android nižší než 4.0. Verze OS 4.4 4.3.x 4.2.x 4.1.x 4.0.3-4.0.4 3.2 2.3.3-2.3.7 2.2
Název verze OS KitKat Jelly Beam Jelly Beam Jelly Beam Ice Cream Sandwich Honeycomb Gingerbread Froyo
Datum vydání 31. 10. 2013 24. 7. 2013 13. 11. 2012 9. 7. 2012 16. 12. 2011 15. 7. 2011 9. 2. 2011 20. 5. 2010
Verze API 19 18 17 16 15 13 10 8
Rozšíření 2.5% 9.6% 17.1% 35.3% 15.2% 0.1% 19.0% 1.2%
Tabulka 1.1: Využití verzí OS android [10].
1.3
Architektura
Architektura operačního systému Android je rozdělena do 5 vrstev, jak zachycuje obrázek 1.1.
1.3.1
Jádro (Kernel)
Na obrázku 1.1 je jádro červeně zobrazená vrstva. Android využívá Linuxové jádro standardně ve verzi 2.6, které obsahuje některé změny architektury od společnosti Google. Mezi jeho hlavní součást patří ovladače (drivery) sloužící pro komunikaci s hardwarem. Android využívá i další funkcionalitu Linuxového jádra jako je správa paměti, správa procesů, síťová komunikace, bezpečnostní nastavení, atd. 4
1.3. Architektura
Obrázek 1.1: Architektura operačního systému OS Android [17].
1.3.2
Knihovny (Libraries)
Druhou vrstvu tvoří nativní knihovny. Tyto knihovny jsou psané v jazyce C/C++. Starají se spolu s jádrem o základní funkčnost systému. Patří mezi ně například: • Surface Manager - knihovna, která stará se o zobrazování vrstev aplikací, • OpenGL - knihovna, která se stará o vykreslování 3D grafiky, • SGL - knihovna, která se stará o vykreslování 2D grafiky, • Media Framework - knihovna, která pracuje s mediálními soubory, • SQLite - knihovna pro práci s databází SQLite, • SSL - knihovna, která se zabývá šifrováním dat a jejich zabezpečením.
1.3.3
Prostředí Android Runtime
Aplikace, které jsou vytvořeny nativně pro OS Android, jsou z velké většiny napsané v jazyku Java. Na rozdíl od jiných aplikací vytvořených v jazyku Java, nevyužívají aplikace vytvořené pro OS Android Java Virtual Machine (dále jen „JVM“), ale Dalvik Virtual Machine (dále jen „DVM“). Dalvik je 5
1. Operační systém Android open-source projekt pojmenován po vesnici na Isladnu a založen Danem Bornsteinem. Na rozdíl od JVM, která využívá zásobníkovou architekturu, využívá DVM registrově orientovanou architekturu. Používá nástroj zvaný dx, který převede některé důležité soubory s příponou .class do jednoho souboru s příponou .dex. Java bytekód, který využívá JVM, je převeden do alternativní sady instrukcí DVM. DVM byla vyvíjena s ohledem na limity jako jsou kapacita baterie, rychlost procesoru a dostupná paměť [2]. Společnost Google chystá postupně přechod na nové runtime prostředí ART [7]. Zatímco DVM interpretuje bytekód JIT (Just-In-Time1 ), využívá ART zpracování AOT (Ahead-Of-Time2 ). Výhodou je rychlost spouštění aplikace na úkor delší doby instalace a paměťové náročnosti aplikace, která vzroste přibližně o 10–20%. Mezi jeho další výhody patří zlepšení výkonu, výdrže baterie a multitaskingu. Ve verzi systému Android 4.4 KitKat je pro vývojáře možnost přepnout z prostředí DVM na prostředí ART.
1.3.4
Aplikační framework
Aplikační framework je pro vývojáře pro OS Android nejdůležitější vrstvou. Obsahuje knihovny napsané v jazyce Java, které vývojář používá jako systémové API. Používá se k přístupu ke grafickým prvkům (tlačítka, textová pole, atd.), aktivitám3 , kontaktům, telefonnímu seznamu, senzorům atd.. Tento framework je pro vývojáře podrobně popsán a zdokumentován společností Google4 . Pro každou verzi systému vychází nové API, které je zpětně kompatibilní, ale některé metody starších API mohou být zastaralé.
1.3.5
Aplikace
Do mobilních zařízení s OS Android jsou dodávány aplikace vytvořené společností Google jako například správce SMS, správce emailů, přehrávač hudby nebo webový prohlížeč, za které výrobci telefonů platí licenční poplatky společnosti Google. Někteří výrobci mobilních zařízení vytvářejí své vlastní grafické nadstavby a předinstalované aplikace. Zdrojem aplikací je Google Play5 (dříve Play store), kam vývojáři své aplikace umisťují, a kde jsou pod kontrolou společnosti Google.
1.4
Senzory
Většina zařízení s OS Android má vestavěné senzory, které měří pohyb, orientaci a různé podmínky prostředí zařízení. Tyto senzory jsou schopny posky1
Při použití techniky JIT probíhá kompilace buď před spuštěním aplikace nebo přímo za běhu (šetří paměť) 2 AOT znamená, že bytekód je do zařízení předkompilováván již v době instalace 3 Aktivity jsou jedním ze základních stavebních kamenů aplikace 4 http://developer.android.com/reference/index.html 5 http://play.google.com
6
1.4. Senzory tovat data s vysokou přesností. Jsou užitečné pro sledování trojrozměrného pohybu, polohy zařízení nebo pro sledování změn okolního prostředí v blízkosti zařízení. Běžně se používají pro rotaci obrazovky nebo obsluhu zařízení pohyby a gesty jako jsou naklonění, otřesy nebo rotace. Senzory můžeme rozdělit do tří skupin podle využití: 1. senzory pohybové, které měří síly zrychlení působící na zařízení nebo rotaci zařízení (akcelerometry, gravitační senzory, gyroskopy, atd.), 2. senzory prostředí, které měří různé parametry prostředí jako jsou teplota, vlhkost a tlak vzduchu či iluminaci světla (tlakoměry, vlhkoměry, fotobuňky, atd.), 3. senzory poziční, které měří aktuální pozici zařízení vzhledem ke gravitačnímu poli (senzory orientace, magnetometry, atd.). Přístup k senzorům zařízení má standardní uživatel (není nutné rootovaní6 telefonu) a to skrze Android sensor framework. Skrze tento framework vývojář získává seznam dostupných senzorů, informace o konkrétních senzorech, přistupuje k datům ze senzorů a registruje posluchače pro změny senzorů. O senzorech je možné zjistit několik důležitých parametrů a podle toho si mezi nimi vybrat nejvhodnější z nich7 [11]. Parametry, které lze o senzorech zjistit jsou například: • typ, • maximální rozsah, • minimální zpoždění, • spotřeba energie, • rozlišení, • výrobce. Podrobnější přehled senzorů je uveden v tabulce 1.2.
1.4.1
Souřadnicový systém
Jsou definovány dvě základní polohy zařízení: 1. portrait - zařízení je drženo obrazovkou k uživateli tak, že horní, kratší hrana telefonu směřuje vzhůru, 6
Rootovaní je proces, kdy se Android zařízení přepne do privilegovaného režimu, který známe z Linuxu jako „root access“ 7 V zařízení může být umístěno více senzorů jednoho typu, ale různého výrobce a různých parametrů
7
1. Operační systém Android
Typ senzoru Akcelerometr
Typ Hardware
Gravitace
Software Hardware
Gyroskop
Hardware
Lineární akcelerometr
Software Hardware
Magnetické pole Orientace
Hardware
Přiblížení
Hardware
Relativní vlhkost
Hardware
Měří relativní okolí [%]
Rotační vektor Světlo
Software Hardware Hardware
Teplota okolní
Hardware
Teplota vnitřní
Hardware
Měří rotaci zařízení. Výsledkem je rotační vektor Měří okolní intenzitu osvětlení [lx] Měří teplotu okolního vzduchu [ ◦ C] Měří teplotu zařízení [ ◦ C]
Tlak vzduchu
Hardware
Měří tlak vzduchu [hPa]
Software
Popis Měří zrychlení působící na zařízení včetně gravitace v osách (x,y,z) [m/s2 ] Měří gravitační sílu působící na zařízení v osách (x,y,z) [m/s2 ] Měří rychlost otáčení zařízení kolem os (x,y,z) [rad/s] Měří zrychlení působící na zařízení bez gravitace v osách (x,y,z) [m/s2 ] Měří okolní magnetické pole pro osy (x,y,z) [µT] Vytvoří matici sklonu a rotace, která vzniká spojením gravitačního a geomagnetického senzoru Měří přiblížení objektu k obrazovce zařízení [cm] vlhkost
Běžné užití Detekce pohybových gest Detekce pohybových gest Detekce rotace
Sledovaní zrychlení kolem jedné osy Kompas Detekce polohy zařízení
Přiblížení telefonu k uchu při hovoru Sledovaní rosného bodu, vlhkosti Detekce pohybu a rotace Řízení jasu displaye Sledovaní teploty okolí Sledovaní teploty zařízení Sledovaní změn tlaku vzduchu
Tabulka 1.2: Typy senzorů podporované sensor frameworkem [9].
8
1.4. Senzory 2. landscape - zařízení je drženo obrazovkou k uživateli tak, že boční, delší hrana telefonu směřuje vzhůru. Tuto definici schématicky zachycuje obr. 1.2.
Obrázek 1.2: Schématické znázornění polohy potrait (vlevo) a polohy landscape (vpravo). Obecně lze říci, že většina senzorů využívá ortogonální, tří osový systém souřadnic. Tento souřadnicový systém je definován vzhledem k obrazovce zařízení. Pokud je zařízení v poloze portrait, pak osa X vede středem zařízení zleva doprava, osa Y vede středem zařízení zdola nahoru a osa Z vede od zadního krytu zařízení, prochází středem zařízení, a směřuje k obrazovce zařízení. Polohu landscape znázorňuje obr. 1.3.
Obrázek 1.3: Souřadnicový systém v poloze landscape.
1.4.2
Akcelerometr
Zrychlení, které akcelerometr měří, lze rozdělit na dynamické a statické. Dynamické zrychlení je síla, která vznikne změnou rychlosti či směru pohybujícího se tělesa. Statické zrychlení je síla vzniklá působením zemské gravitace [14]. Akcelerometr si lze pro zjednodušení představit jako kuličku upevněnou na pružinových siloměrech ve všech třech základních osách. Každý takový 9
1. Operační systém Android siloměr udává velikost síly, která na těleso působí. Pokud je těleso v klidu, kulička siloměru působí pouze ve směru gravitace, jak zachycuje obrázek 1.4. Na kuličku nepůsobí žádné síly právě ve volném pádu, jak zobrazuje obrázek 1.4. Akcelerometr při pohybu zachycuje obrázek 1.5. S tímto případem se lze v této práci setkat jen teoreticky, protože nastává pouze při pohybu ve volném pádu nebo mimo gravitační pole kosmických těles. Oproti tomu je poslední případ ryze praktický. Těleso se pohybuje a zároveň na něj působí gravitační zrychlení jak zachycuje obrázek 1.5. Postupující miniaturizace akcelerometrů umožňuje jejich použití v mobilních zařízeních. Pro představu o velikosti je na obr. 1.6 zachycena reálná podoba akcelerometru ADXL345, který lze použít do vlastních zařízení.
Obrázek 1.4: Akcelerometr v klidu (vlevo) a akcelerometr ve volném pádu (vpravo).
Obrázek 1.5: Akcelerometr při pohybu tělesa (vlevo) a akcelerometr při pohybu tělesa a působení gravitace (vpravo).
10
1.4. Senzory
Obrázek 1.6: Reálná podoba akcelerometru ADXL345 [16].
11
Kapitola
Dynamika silničních vozidel Zatímco kinematika se zabývá pouze prostorovými a časovými formami pohybu, dynamika pojednává o příčinách vzniku a o změnách pohybů. K veličinám jako jsou poloha, čas, rychlost a zrychlení, které jsou používané v kinematice, přibývají v dynamice další fyzikální veličiny jako hmotnost a síla. Základním cílem dynamiky je určovaní polohy a rychlosti tělesa (hmotného bodu) v daném čase za podmínky, že jsou známy síly působící na těleso (hmotný bod). Čtyřkolové vozidlo si lze představit jako systém tvořený 5 částmi, karoserií a čtyřmi koly. Části jsou navzájem spojeny pružinami, tlumiči a zavěšením kol. Dynamika celého tohoto systému je velice složitá a obsáhlost problému je mimo rozsah této práce, proto jsou rozebrány jen dílčí problémy, které budou v této práci využívány. Pro celkovou analýzu dynamiky vozidla nestačí pouze vyjádření pomocí pohybových rovnic, ale je třeba vyjádřit také chování řidiče. Řidič ovládá vozidlo zrychlováním, brzděním a řízením, na což vozidlo reaguje. Mnohdy reaguje také v nežádoucím smyslu, což může způsobit i ztrátu kontroly nad vozidlem. Vztah platí také obráceně a kromě optických a zvukových informací z okolí, dostává řidič od vozidla informace jako vibrace, náklon, atd.. Do celého systému řízení je třeba také započítat vliv vnějšího prostředí jako boční vítr, stav vozovky (nerovnosti, přilnavost, sklon, atd.). Vytvořit matematický model řidiče je však téměř nemožné, proto je z výpočtů vyloučen stejně jako vliv okolního prostředí vzhledem k povaze jevu, který lze označit jako zcela náhodný a nepředvídatelný. Pojmy této kapitoly vychází převážně z publikací [18][12].
2.1
Souřadnicový systém
Pohyb vozidla lze popsat souřadnicovým systémem, jenž zachycuje obr. 2.1. Nechť existuje těžiště T, které je označováno za těžiště karoserie, a osy x, y, z. Osa x zachycuje první z dílčích problémů, podélnou dynamiku (přímou jízdu). 13
2
2. Dynamika silničních vozidel
Obrázek 2.1: Souřadnicový systém vozidla. Podélná dynamika popisuje situaci zrychlování a brzdění vozidla. Rotací kolem osy x vzniká kolébání vozidla. Osa y zachycuje druhý z dílčích problémů, boční dynamiku (směrovou stabilitu). Boční dynamika popisuje výchylky ve směru jízdy. Rotací kolem osy y vzniká houpání nebo klonění vozidla. Osa z popisuje třetí z dílčích problémů, svislou dynamiku (kmitání vozidla). Svislá dynamika popisuje pohyby nadnášení, které jsou způsobeny nejčastěji stavem vozovky. Rotací kolem osy z vzniká stáčení vozidla. Podobné souřadnicové systémy se dají popsat pro kolo vozidla se středem v těžišti kola nebo pro řidiče.
2.2
Podélná dynamika
Při jízdě proti pohybu vozidla neustále působí jízdní odpory. Valivý odpor vzniká deformací pneumatiky a vozovky. V případě tuhé vozovky se deformuje pouze pneumatika. Při jízdě vozidla proudí proti směru jízdy vzduch. Část vzduchu proudí kolem horní části karoserie a část mezi spodní částí vozidla a vozovkou. Proudění se za vozidlem neuzavírá, ale vzniká tzv. víření, což způsobuje rozdíl tlaku vzduchu (nad karoserií je podtlak, pod vozidlem je přetlak). Na odpor proudění má velký vliv aerodynamika vozidla a jeho čelní projekce. Odpor stoupání vzniká při stoupání a je dán tíhou vozidla a stupněm stoupání. Odpor zrychlení (setrvační síla) působí proti směru jízdy vozidla. Součet všech odporů je síla (značená jako FK ), kterou je třeba překonat, aby bylo vozidlo uvedeno do pohybu. Výkon, který musí vozidlo vynaložit, zachycuje rovnice (2.1), ze které je zřejmé, že je závislý na rychlosti vozidla a jeho odporech. PK = FK v (2.1) 14
2.2. Podélná dynamika
2.2.1
Zrychlení
Smyslem zrychlení je uvést vozidlo do pohybu, popřípadě zvýšit jeho rychlost. Na zrychlení se lze podívat ze dvou úhlů pohledu. Pokud se o něm mluví z hlediska kinematiky, je okamžité zrychlení vyjádřeno rovnicí (2.2), tedy podíl rozdílu rychlostí a rozdílu časů. ∆v (2.2) ∆t→0 ∆t Na celou situaci se lze také podívat z hlediska dynamiky. Při zrychlovaní vozidla působí proti směru pohybu setrvačná síla (odpor zrychlení). Celý případ vyjadřuje matematický výraz (2.3), kde Oz je odpor zrychlení, m je hmotnost vozidla [kg], Jc je moment setrvačnosti rotačních částí (motor, převodovka, kola, atd.)[kgm2 ], Dk je průměr kola [m]. Po úpravě výrazu lze vidět, že odpor zrychlení se odvíjí od jeho okamžitého zrychlení, hmotnosti vozidla a součinitele rotačních částí θ, který zahrnuje převodový poměr vozidla [18]. a = lim
Oz = ma + 2.2.1.1
2 dω Jc = θma Dk dt
(2.3)
Průběh zrychlení
Plynulé a progresivní zrychlování je důležitější než agresivní jízda a to nejen v klasickém provozu, kde jde převážně o spotřebu paliva, ale i na závodní dráze. Obecně platí, že přílišná agresivita se nerovná velké rychlosti. Na základě testování byl vypozorován model, který popisuje základní události během zrychlení. Model je teoretický a každé zrychlení může mít jiný průběh v závislosti na jeho okolnostech. Tento model se nejvíce podobá zrychlení na rovné, suché asfaltové vozovce beze změny směru jízdy. Schématicky zachycuje model zrychlení obr. 2.2. Protože model vznikl na základě více měření, je čas na ose X zobrazen v abstraktních jednotkách, které slouží pouze pro odkazování v grafu, a na ose Y je síla působící na vozidlo. Zrychlení lze obecně rozdělit do několika fází. Jednotlivé fáze jsou popsány na křivce mírného zrychlení (křivka modré barvy v grafu na obr. 2.2). První fáze, náběh zrychlení, se nachází v čase t ∈ (0, 4), kde v čase t = 4 dosahuje svého vrcholu. Vrchol je výrazný zejména při rozjíždění, kdy je použit ke zrychlení pedál spojky. Při jejím uvolnění se vytvoří výrazný vrchol. Druhá fáze v čase t ∈ (4, 6) je fáze zachování zrychlení. Ta většinou nastává pouze krátce nebo vůbec. Třetí fáze v čase t ∈ (6, 9) je fáze, kdy zrychlení ustává a to důsledkem uvolnění pedálu plynu. Tato fáze mívá velice prudký pokles, popřípadě se může síla projevit i opačným směrem, což je způsobeno brzděním motoru. V případě prudkého zrychlení (křivka červené barvy v grafu na obr. 2.2) je zachycen případ ztráty přilnavosti mezi pneumatikami a vozovkou. Síla působící na vozidlo pak kolísá kvůli prokluzování kol, jak je zachyceno v čase t ∈ (2, 5). 15
2. Dynamika silničních vozidel
Zrychlení
F
Prudké zrychlení Mírné zrychlení
0 0
1
2
3
4
5
6
7
8
9
t
Obrázek 2.2: Schéma průběhu zrychlení.
2.2.2
Brzdění
Za brzdění je označováno záměrné snižování rychlosti vozidla nebo zabránění samovolnému zrychlení vozidla sklonem vozovky. Brzdění lze rozdělit dle svého účelu na provozní, nouzové, parkovací a odlehčovací. Provozní brzdění umožňuje za podmínky ovládání vozidla účinně a rychle zastavit. Brzdění se nejčastěji dosáhne přivedením brzdného momentu z brzd na kola vozidla, což vytvoří sílu působící proti směru jízdy. Nouzové brzdy nahrazují provozní brzdění v případě jeho poruchy. Parkovací brzdění umožňuje zabránění rozjezdu vozidla při sklonu vozovky. Odlehčovací brzdění umožňuje omezení rychlosti. Zrychlení vozidla je během brzdění záporné stejně jako obvodové síly na kolech (brzdné síly) (2.4). Tyto síly působí na kolech ve směru vodorovném s vozovkou proti směru jízdy vozidla. Součtem obvodových sil pak dostáváme záporné zrychlení (2.5). Při brzdění, důsledkem stlačení brzdového pedálu, začnou působit brzdné momenty. BP = −HP ; BZ = −HZ
(2.4)
HP + HZ = ma
(2.5)
Snížení rychlosti vozidla lze dosáhnout rychleji než jeho zrychlení. Díky tomu lze snadněji dosáhnout ztráty kontroly nad vozidlem způsobenou zablokováním kol. Proti zablokování kol byl vyvinut Anti-lock Brake System (ABS), neboli protiblokovací systém, který udržuje míru přilnavosti mezi vozovkou a pneumatikou těsně pod hranicí její ztráty. 16
2.3. Boční dynamika
F
Brzdění
0 0
1
2
3
4
5
6
t
Obrázek 2.3: Schéma průběhu brzdění. 2.2.2.1
Průběh brzdění
Na základě testování byl vypozorován model, který popisuje základní události během brzdění. Model je teoretický a každé brzdění může mít jiný průběh v závislosti na jeho okolnostech. Tento model se nejvíce podobá brzdění na rovné, suché asfaltové vozovce beze změny směru jízdy. Schématicky zachycuje model brzdění obr. 2.3. Protože model vznikl na základě více měření, je čas na ose X zobrazen v abstraktních jednotkách, které slouží pouze pro odkazování v grafu, a na ose Y je síla působící na vozidlo. Brzdění lze obecně rozdělit do tří fází, náběh brzdění, zachování brzdění a uvolnění brzdného pedálu. Náběh brzdění je v grafu vidět v čase t ∈ (0, 1). V této fázi dochází ke snižování rychlosti nejintenzivněji. Fáze je zakončena vrcholem brzdění, kde v čase t ∈ (1, 3) volně navazuje na fázi udržování brzdění. Tato fáze se nemusí objevovat nebo je velmi krátká. V čase t ∈ (3, 6) nastává poslední fáze, uvolnění brzdného pedálu.
2.3
Boční dynamika
Odezva vozidla na natáčení vozidla se nazývá řiditelnost vozidla. Odezvou vozidlového systému je úhlová rychlost otáčení vozidla ω kolem svislé osy z, která je závislá na natočení volantu. Řiditelnost vozidla lze rozdělit na objektivní a subjektivní. O subjektivní řiditelnosti je mluveno v případě, že je vozidlo ovládáno řidičem. Objektivní řiditelnost lze označit jako odezvy vozidla na definované řídící vstupy, je tedy zanedbán vliv řidiče. Při vyšetřování dynamiky 17
2. Dynamika silničních vozidel vozidla se řidič zanedbává a je počítáno pouze s objektivní říditelností. Vlastnost vozidla udržovat směr pohybu i při působení vnějších vlivů a momentů se nazývá směrová stabilita. Jedním z vnějších vlivů, které směrovou stabilitu ovlivňují je boční vítr. Míru ovlivnění zkoumá aerodynamická stabilita vozidla. Nechť těžiště vozidla T se pohybuje rychlostí v. Vektor rychlosti v s osou x svírá úhel směrové odchylky těžiště α. Úhel , který svírá osu x a souřadnicovou osu x0 se nazývá úhel stáčení. V případě, že se vozidlo pohybuje po zakřivené dráze s poloměrem křivosti trajektorie R, vzniká dostřediví zrychlení ad (2.6). Jelikož je R vetšinou neznámé, vyjadřuje se dostředivé zrychlení pomocí derivací α0 a 0 podle času (2.7). ad =
v2 R
ad = v(α0 + 0 )
(2.6)
(2.7)
Na vozidlo působí dostředivá síla Fd , která je kolmá na vektor rychlosti v. Tato síla způsobuje změnu směru vektoru rychlosti v a tím také zakřivení trajektorie. Podle 3. Newtonova zákona (zákon akce a reakce) musí na těžiště T působit síla stejně velká, ale v opačném směru, odstředivá síla (2.8). Fo = Fd = mad =
2.3.1
mv 2 = mω 2 r R
(2.8)
Průběh zatáčení
Na základě testování byl vypozorován model, který popisuje základní události během zatáčení. Model je teoretický a každé zatáčení může mít jiný průběh v závislosti na jeho okolnostech. Tento model se nejvíce podobá zatáčení na rovné, suché asfaltové vozovce beze změny rychlosti vozidla. Schématicky zachycuje model zatáčení obr. 2.4. Protože model vznikl na základě více měření, je čas na ose X zobrazen v abstraktních jednotkách, které slouží pouze pro odkazování v grafu, a na ose Y je síla působící na vozidlo. Zatáčení lze obecně rozdělit do několika fází. První fáze je zobrazena v čase t ∈ (0, 1), jedná se natáčení volantu. Fáze je zakončena vrcholem zatáčení, kdy se natočení volantu dostane do takové polohy, že je možné zatáčku projet trajektorií o konstantním poloměru zaoblení, jak je vidět v čase t ∈ (2, 4). Ve vrcholu zatáčení dochází k největšímu klopení vozidla a tedy i přenosu váhy. V poslední části zatáčky se volant natáčí zpět do původní polohy, jak ukazuje graf v čase t ∈ (4, 6), a klesá míra klopení vozidla a přenosu váhy. Po projetí zatáčky nastává jev, který je vidět v čase t ∈ (6, 8). Vozidlo provádí klonění v opačném směru a přenáší tak i svoji váhu. Tento jev je tím výraznější, čím prudčeji je volant natáčen do původní polohy v předchozí fázi. 18
2.4. Svislá dynamika
F
Zatáčení
0
0
1
2
3
4
5
6
7
8
t
Obrázek 2.4: Schéma průběhu zatáčení.
2.4
Svislá dynamika
Do svislé dynamiky lze zařadit svislé kmitání (nadnášení), podélné kmitání (houpání) a příčné kmitání (kolébání). Všechna tři kmitání jsou nežádoucí. Při kmitání vozidla se mění svislé zatížení mezi pneumatikou a vozovkou. Změny mohou být tak velké, že svislé zatížení kola bude nulové a hrozí ztráta kontroly nad vozidlem. Kmitání mohou způsobovat nejen vlivy vozovky, ale i vlivy vozidla jako například geometrický tvar kol, nerovnoměrnost pneumatik, vyváženost rotačních částí motoru a převodu. Při výpočtech se volí model odpružení. Modelů odpružení existuje celá řada v závislosti na povaze vyšetřované úlohy. S podélným kmitání se lze setkat při zrychlení a brzdění. Nejvýrazněji ho lze zaznamenat právě při brzdění, kdy se váha vozidla přenese k jeho přední části. S příčným kmitáním se lze setkat při zatáčení a přenášení váhy v rámci zatáčení. Přílišné houpání, klonění a kolébání může být známkou agresivní jízdy.
19
Kapitola
OBD Kromě akcelerometru popsaného v kapitole 1.4.2, lze k analýze jízdního stylu použít data získaná pomocí protokolu OBD. OBD je zkratkou spojení OnBoard-Diagnostic, tedy palubní diagnostika. Původní záměr, pro který byl systém vytvořen, byl snížení emisí a sledování výkonu jednotlivých součástí motoru. Systém se skládá z několika hlavních součástí. Řídící jednotky (ECU), která komunikuje s ostatními součástmi a zajišťuje komunikaci s čtecím zařízením. Sbírá data z různých senzorů (např. senzor kyslíku), elektronických aktuátorů (např. vstřikovaní paliva), a jejich skládáním vytváří kompletní informace o výkonu motoru. Jednou z dalších schopností systému OBD je čtení chybových kódů systémů vozidla. Pro tuto schopnost je hojně využíván automechaniky a autotroniky pro diagnostiku závad. Pro načítání dat ze systému se využívá konektor DLC, který spolu se skenovacím zařízením dokáže u moderních vozidel přistupovat ke stovkám parametrů. Systém schématicky znázorňuje obr. 3.1.
3.1
OBD-I
OBD-I se vztahuje na systémy OBD první generace, které byly vytvářeny mezi roky 1981 a 1996. Tyto prvotní systémy využívaly proprietární konektory, hardware rozhraní a protokoly. Mechanik, který chtěl přistupovat k diagnostickým informacím, musel mít zakoupený skenovací nástroj pro každé vozidlo zvlášť. Skenovací nástroje, které se byly schopné připojit k více systémům OBD-I, byly běžně dodávány se sadou různých kabelů. Z tohoto důvodu byl později vyvinut systém OBD-II. 21
3
3. OBD
Obrázek 3.1: Schématické znázornění systému OBD [13].
3.2
OBD-II
V roce 1996 společnost SAE a organizace ISO vydaly sadu norem (ISO9141, J1962, J1850 a ISO-15765) [4], které popisovaly komunikaci řídících jednotek a skenovacích nástrojů. Všechna vozidla, která jsou OBD-II kompatibilní, musí používat standardizovaný konektor pro diagnostiku (SAE J1962) [13], a komunikovat jedním ze standardizovaných komunikačních protokolů. Pro komunikaci PC-OBD se nejčastěji používá naprogramovaný mikrokontrolér ELM327 společnosti ELM Electronics. Protokol příkazů ELM327 je nejpoužívanějším protokolem pro komunikaci s OBD-II a je implementován i jinými dodavateli. ELM327 představuje nízkoúrovňový protokol a jednoduché rozhraní pro diagnostické zařízení, počítač, mobilní zařízení nebo jiné zařízení, připojené pomocí USB, bluetooth nebo RS-232. OBD-II komunikuje pouze s ECU emisního systému. Pro spojení s jinými ECU jako jsou palubní počítač, navigace, radia a airbagy slouží speciální diagnostické programy. OBD-II pracuje na základě deseti módů [5]. • Mód 1 slouží ke zjištění, které informace hnacího systému jsou danému skenovacímu nástroji k dispozici. Je možné zobrazit data z dostupných senzorů a další hodnoty. • Mód 2 slouží pro pokročilou diagnostiku. Vytváří otisk všech dat napříč systémem, vyvolaný událostí (nejčastěji chybou). • Mód 3 slouží ke skenování chybových kódů ECU. • Mód 4 slouží k vymazání chybových kódů. 22
3.3. OBD-II příkazy • Mód 5 slouží k diagnostice problémů kyslíkových senzorů, problémů bohatosti palivové směsi nebo testování lambda sond. • Mód 6 slouží k testování provedených oprav prováděním nesouvislých monitorových testů. • Mód 7 slouží ke čtení chybových kódů souvisejících s emisemi. • Mód 8 slouží k oboustranné komunikaci mezi skenovacím nástrojem a ECU. Využívá se k pouštění self-testů ECU. • Mód 9 slouží ke čtení informací o vozidle jako je např. VIN kód. • Mód 10 slouží ke čtení chybových kódů uložených v EEPROM paměti. Vozidlo nemusí podporovat všechny módy kromě módu 1, který musí podporovat každé OBD-II kompatibilní vozidlo. Ne všechna skenovací zařízení také podporují všechny módy. Všechny módy podporují převážně profesionální skenovací nástroje.
3.3
OBD-II příkazy
OBD-II komunikace probíhá pomocí příkazů. Každý příkaz má svoje identifikační číslo (PID). Tímto číslem v šestnáctkové soustavě se identifikuje při dotazu i při odpovědi. Před zahájením dotazování je třeba ELM327 inicializovat. To se provede několika po sobě odeslanými příkazy. Aby vše proběhlo v pořádku je doporučeno mezi jednotlivými příkazy nechat určitý časový úsek. Inicializace ELM327 probíhá dle ukázky 3.1. send_data ( "AT Z " ) ; sleep (2000); send_data ( "AT E0 " ) ; sleep (1000); send_data ( "AT L0 " ) ; sleep (500); send_data ( "ATH1 " ) ; sleep (500); send_data ( "AT S P 5 " ) ; sleep (500); send_data ( " 0 1 0 0 " ) ; sleep (500); Listing 3.1: Inicializace ELM327. Příkaz ATZ resetuje ELM327. Příkazy ATE0 a ATL0 zakážou rozšířené odpovědi, z důvodu jednoduššího zpracování. Příkaz ATH1 zapne u odpovědí hlavičky. Je pak jednodušší s nimi pracovat a navzájem je rozeznávat. Příkaz 23
3. OBD ATSP volí příslušný protokol ATSP, který je číslován 1-5 a závisí na konkretním vozidle. Nejjednodušší způsob jak vybrat protokol je příkaz „ATSP 0“, který si protokol sám vybere. Příkaz „0100“ je ukázkou již klasické komunikace. Tento příkaz slouží ke kontrole spojení. Po příchozí odpovědi lze začít posílat jednotlivé příkazy. Rychlost komunikace není přesně definovaná. Dle dokumentace je doporučeno dodržování odstupu 200 ms mezi jednotlivými dotazy. Při nastavení zmíněném v inicializaci probíhá komunikace vždy tak, jak ukazuje výpis 3.2. Každý příkaz je dlouhý 2 bajty. První bajt označuje číslo módu, druhý bajt označuje PID příkazu. Příkaz „010C“ zjišťuje aktuální otáčky motoru. Hodnota bajtu 01 znamená, že je příkaz v módu 1 a hodnota bajtu 0C je PID příkazu, v tomto případě aktuální otáčky motoru. Odpověď obsahuje hlavičku (2 bajty), v tomto případě je to hodnota „010C“, a samotná data (1 bajt - 21 bajtů), v tomto případě 2 bajty s hodnotami 2F a 3D. Odpověď příkazu na aktuální stav otáček je definována jako výsledek výrazu ((A ∗ 256) + B)/4, kde A je první bajt dat a B je druhý bajt dat. Po dosazení lze z odpovědi získat aktuální stav otáček, v tomto případě 3023, 25 ot./m. Většina hodnot musí být kvůli rozsahu hodnot vypočítána dle vztahu uvedeného v dokumentaci. >010C >010C2F3D Listing 3.2: Průběh komunikace v protokolu ELM327 mód 1. Mezi další hodnoty, které je možné měřit patří např. vytížení motoru [%], rychlost vozidla [km/h], pozice pedálů [%], teploty kapalin vozidla [ ◦ C], teplota motoru [ ◦ C] a další. Podrobný popis protokolu ELM327 je popsán v jeho dokumentaci [8], ze které bylo čerpáno.
24
Kapitola
Analýza problému Cestu od počátku, kdy se data zaznamenávají, až po výslednou analýzu lze rozdělit do tří kroků: • sběr dat zařízením se zkalibrovanými senzory, • předzpracování nasbíraných dat, • rozbor naměřených dat a vytvoření závěru. V této kapitole jsou body z teoretického hlediska postupně rozebrány a je nastíněno několik způsobů jejich řešení.
4.1
Kalibrace akcelerometru
Jak bylo popsáno v kapitole 1.4.2, na akcelerometr neustále působí gravitační síla. Ta je nežádoucí a je třeba ji z dat vyloučit. Další operace, která usnadní pozdější analýzu dat, je transpozice souřadnicového systému. Je třeba rozvrhnout manévry na jednotlivé osy souřadnicového systému. Při rozvrhování se vychází ze schématu na obr. 1.3, a z předpokladu, že nejčastěji bude zařízení umístěno v držáku v poloze landscape. Nechť jsou manévry rozděleny na zatáčení, zrychlení, brzdění a jízdu po nerovné vozovce, pak je rozvržení os následující: • osa X - nerovnosti vozovky (pohyby nahoru/dolů), • osa Y - zatáčení (pohyby doprava/doleva), • osa Z - zrychlení a brzdění (pohyby dopředu/dozadu). 25
4
4. Analýza problému
4.1.1
Simulace lineárního akcelerometru
Při simulaci lineárního akcelerometru se předpokládá pevně daná poloha zařízení v držáku, která se po kalibraci již nebude měnit. Aby bylo možné vytvořit postup kalibrace, je třeba odvodit určité vztahy. Vektor gravitace určuje polohu zařízení v držáku. Vektor gravitace a osa Z (osa projekce) spolu svírají úhel α, o který je třeba všechna data pocházející z akcelerometru otočit. Na závěr se od vektoru odečte gravitace a tím je odsimulován lineární akcelerometr spolu s transpozicí souřadnicového systému. Nechť gravitace je značena ~g = (g1 , g2 , g3 ); g1 ∈ R, g2 ∈ R, g3 ∈ R. Nechť ~o = (o1 , o2 , o3 ) je označena osa projekce, která se vypočítá ze vztahu (4.1). Osa projekce je vektor, na který se snažíme původní gravitaci transformovat. ~o = (|~g |, 0, 0)
(4.1)
Úhel rotace α je úhel, který svírá vektor gravitace a osa projekce, a vypočítá se ze vztahu (4.2). cos α =
~g · ~o g1 o1 + g2 o2 + g3 o3 q =q |~g| · |~o| 2 g1 + g22 + g32 · o21 + o22 + o23
(4.2)
Nechť ~r = (r1 , r2 , r3 ) je osa rotace, která se vypočítá ze vztahu (4.3). Osa rotace je vektorovým součinem gravitace a osy projekce. Výsledný vektor je s nimi lineárně nezávislý. ~r = ~g × ~o = [g2 o3 − o2 g3 , g3 o1 − o3 g1 , g1 o2 − o1 g2 ]
(4.3)
Pro rotaci vektorů lze použít rotační matici (4.4). Do rotační matice R je třeba dosadit vektor ~r v normalizovaném tvaru. Normalizovaný vektor je takový, že |~n| = 1. Je třeba provést normalizaci (4.5). cos α + n21 (1 − cos α) R = n2 n1 (1 − cos α) + n3 sin α n3 n1 (1 − cos α) − n2 sin α
"
n1 n2 (1 − cos α) − n3 sin α cos α + n22 (1 − cos α) n3 n2 (1 − cos α) + n1 sin α
n1 n3 (1 − cos α) + n2 sin α n2 n3 (1 − cos α) − n1 sin α cos α + n23 (1 − cos α) (4.4)
~n = (n1 , n2 , n3 ); (n1 )2 + (n2 )2 + (n3 )2 = 1 r1 r2 r3 ~n = ( , , ) |~r| |~r| |~r|
#
(4.5)
Výsledný transformovaný vektor ~t lze získat vynásobením vektoru ~x, získaného z akcelerometru, a rotační matice R (4.6). Po odečtení vektoru gravitace od transformovaného vektoru se získá výsledný vektor ~a, který odpovídá transformovanému lineárnímu zrychlení (4.7).
26
~t = R · ~x
(4.6)
~a = ~t − ~g
(4.7)
4.2. Předzpracování dat
4.1.2
Lineární akcelerometr
Lineární akcelerometr je senzor, který určuje lineární zrychlení, tedy zrychlení neobsahující gravitační zrychlení. Lineární akcelerometr je tzv. „fused“8 senzor. Funguje na principu spojení několika senzorů dohromady. Tento senzor nemá definovanou implementaci, záleží tedy na konkretním zařízení. Některá používají akcelerometr a magnetometr, jiná používají zase akcelerometr a gyroskop, případně senzor gravitace. Dokumentace senzor frameworku uvádí, že platí vztah (4.8), kde A je vektor zrychlení, G je vektor gravitace a AL je vektor lineárního zrychlení. A = G − AL
(4.8)
Za předpokladu využití lineárního akcelerometru, který k určení směru gravitace používá senzor gravitace, je třeba data transformovat tak, že se jednotlivé jízdní manévry projeví na své vlastní ose. Princip transpozice je stejný jako při použití akcelerometru s rozdílem vektoru gravitace, který se získá pomocí senzoru gravitace, a nutností vytvářet rotační matici s každou transpozicí. Při použití toho principu lze měřit lineární zrychlení i na vozovce se sklonem. Kalibrace se provádí neustále a to za jízdy. Nevýhodou může být ztráta přesnosti.
4.2
Předzpracování dat
Po zkalibrování senzorů a transformaci os tak, aby byly v potřebném směru, lze začít sbírat data. Na vizualizaci dat z obr. 4.1 lze vidět jednotlivé tři osy senzorů. Jedná se o data ze senzoru v závislosti na čase. Na křivce lze vidět (čas 2 s - 4 s), zatáčku vlevo (čas 8 s - 20 s) a brzdění (čas 20 s - 24 s). Při algoritmické analýze jízdního stylu je však naráženo na problém šumu v datech. Tento šum vzniká z mnoha důvodů: • chyba senzoru, • nerovnosti vozovky, • vibrace vozidla, • vibrace držáku zařízení, • a další. Šum je nutné odfiltrovat co nejvíce, ale zároveň neztratit důležité informace z dat. Pro filtrovaní signálu existuje mnoho metod. Nejčastěji jsou to lineární filtry, které fungují na principu klouzavého okénka. Existují i jiné metody filtrování jako např. metoda nejmenších čtverců na které je založen SavitzkyGolay polynomiální filtr. 8
Spojení pochází ze slovesa „fuse“, které v překladu znamená spojit, sloučit, splynout
27
4. Analýza problému
DriveIT testing sensors 4
Hrboly Zatáčení Akcelerace / Brzdění
3
Zrychlení
2 1 0 -1 -2 -3 -4
0
2
4
6
8
10
12
14
16
18
20
22
24
26
28
Čas
Obrázek 4.1: Vizualizace naměřených dat. Rozjezd, zatáčka vlevo, brzdění.
4.2.1
Metoda klouzavého průměru
Klouzavé průměry se nejčastěji používají v ekonomické sféře k vizualizaci dlouhodobých tržních trendů, jelikož dobře odstraňují denní šum. Není však v rozporu ho použít k vyhlazení jakýchkoli dat jako například u šumu z akcelerometru. Jeho princip spočívá v rozdělení dat na menší celky. Jejich hodnota se určí metodou aritmetického průměru jednotlivých hodnot. Menší celky se nazývají okénka. Velikost okénka určuje míru vyhlazení na datech. Pokud je okénko příliš malé, k vyhlazení výkyvů nedojde nebo dojde v nedostatečné míře. Pokud je naopak okénko příliš velké, může dojít k vyhlazení tak radikálnímu, že se ztratí dynamika a význam původních dat. Odhadnout velikost okénka je tedy problém a nevýhoda této metody. Nejčastěji se manuálně vyzkouší jeho velikost a rozhodne se, která velikost se pro daný typ dat hodí. Druhá možnost je podle typu dat vytvořit odhad velikosti okénka. Existují tři základní typy klouzavých průměrů. Jsou to jednoduchý klouzavý průměr, vážený klouzavý průměr a exponenciální klouzavý průměr, které jsou popsány dále.
4.2.1.1
Jednoduchý klouzavý průměr
Jednoduchý klouzavý průměr (SMA) dává všem hodnotám při vytváření průměru stejnou váhu. V případě, že jsou krajní hodnoty okénka extrémní (příliš vysoké nebo příliš nízké), může to negativně ovlivnit vyhlazování. Tento nedostatek odstraňují metody uvedené níže. Hodnota okénka se vypočítá podle 28
4.2. Předzpracování dat matematického vztahu (4.9), kde SM A je hodnota okénka, X0 , X1 , ..., Xn jsou jednotlivé hodnoty okénka a n je velikost okénka. n P
SM A =
Xi
i=1
(4.9) n Okénka se mohou překrývat, což je zásadní pokud není okénko relativně malé (nenastane redukce dat). Nevýhodou je však nutnost data zpracovávat proudově, je tedy téměř nemožné vytvořit paralelní algoritmus. Časová složitost algoritmu je O(N ), kde N je délka dat. Paměťová složitost algoritmu je O(n), kde n je šířka okénka. Jedná se o lineární složitost. 4.2.1.2
Vážený klouzavý průměr
Vážený klouzavý průměr (WMA) je podobný jednoduchému klouzavému průměru s rozdílem, že jednotlivým hodnotám jsou přidělovány váhy. Váhy je možné volit jakkoliv. Například při vyhlazování v ekonomice se větší váhy dávají nejaktuálnějším hodnotám. Hodnota okénka W M A se počítá podle vztahu (4.10), kde X1 , X2 , ..., Xn jsou jednotlivé hodnoty, w1 , w2 , ..., wn jsou váhy jednotlivých hodnot a n je velikost okénka. n P
WMA =
Xi ∗ wi
i=1 n P
(4.10) wi
i=1
Jednou z možností jak rozložit váhy, je využití Gaussovy křivky. V podstatě se jedná o jednorozměrný Gaussův filtr nebo také Gaussovo rozostření. Gaussova křivka je definována vztahem (4.11). Jelikož µ je v podstatě posunutí Gaussovy křivky na ose x, lze v tomto případě počítat s µ = 0. Parametr σ se nazývá směrodatná odchylka a σ 2 se nazývá rozptyl. 2 2 1 G(x) = √ e−(x−µ) /2σ σ 2π
(4.11)
Pro výpočty je nutné převést Gaussovu funkci na diskrétní body. Gaussova funkce je definována pro x ∈ (−∞, ∞), teoreticky tedy vyžaduje okénko nekonečné délky. Z předpokladu, že hodnoty Gaussovy funkce prudce klesají, ji lze ořezat. Nejčastěji je ořezávána na interval x ∈ (−3σ, 3σ) [6]. Při takovém intervalu je plocha pod křivkou přibližně 0.997, což je zanedbatelná ztráta. Samotné filtrování probíhá následovně: 1. jsou vypočítány diskrétní hodnoty Gaussovy funkce Gn , 2. je vypočítáno měřítko k =
P
Gn , 29
4. Analýza problému 3. jsou vypočítány váhy okénka G0n =
Gn k ,
4. pro každý prvek dat je postupováno tak, jak je popsáno v (4.10). Časová složitost algoritmu je O(N ), kde N je délka dat. Před začátkem provádění algoritmu jsou spočítány váhy okénka. Paměťová složitost algoritmu je O(2n) = O(n), kde n je šířka okénka. Je třeba si pamatovat váhy okénka. 4.2.1.3
Exponenciální klouzavý průměr
Exponenciální klouzavý průměr (EMA), někdy také exponenciální vážený klouzavý průměr (EWMA), dává větší váhu posledním hodnotám. Vzhledem k váhám je EMA v podstatě speciální případ WMA. Tento filtr je vhodný například pro pohyby na burze, kde se poklesy musí projevit rychleji a je na ně možno rychleji zareagovat. V této práci není tento filtr příliš využitelný, proto je vysvětlen pouze teoreticky a není testován. Nechť Xi , kde i ∈ N, jsou hodnoty dat, na které se filtr aplikuje. Nechť EM Ai , kde i ∈ N, jsou výsledky po vyhlazování filtrem. Koeficient α ∈ (0, 1) 2 vyjadřuje exponenciální konstantu, která je vypočítána dle vztahu α = n+1 , kde n je velikost okénka. Výpočet EM Ai je definován vztahem (4.12). EM Ai = EM Ai−1 + α(Xi − EM Ai−1 )
(4.12)
Časová složitost algoritmu je O(N ), kde N je délka dat. Paměťová složitost algoritmu je O(n + 1) = O(n), kde n je šířka okénka.
4.2.2
Jednoduchý klouzavý medián
Jednoduchý klouzavý medián (SMM) má podobný princip jako jednoduchý klouzavý průměr, ale jinou funkci vyhodnocování okénka. Na rozdíl od SMA, který vyhodnocuje okénko aritmetickým průměrem, vyhodnocuje okénko funkcí mediánu. Je tedy třeba hodnoty seřadit dle velikosti a pak je výslednou hodnotou prostřední hodnota okénka (4.13). Wv = M edian(X1 , X2 , ..., Xn )
(4.13)
Časová složitost algoritmu je O(N ) · O(Sort(n)) = O(N · n log n), kde N je délka dat a n je šířka okénka. Pro výpočet funkce mediánu je třeba data v okénku seřadit. Složitost algoritmu lze zlepšit upraveným řazením vkládáním. Paměťová složitost algoritmu je O(n), kde n je šířka okénka.
4.2.3
Dolní propusť
Šum v datech má většinou vysokou frekvenci. Principem filtru dolní propusť (Low Pass filter) je ořezání vyšších frekvencí. Tento filtr existuje v několika implementacích od velmi jednoduchých po složité využívající Fourierovu 30
4.3. Vyhodnocení dat transformaci. Jako jeden příklad za všechny lze uvést implementaci v software Mathematica 9 [20]. Dle dokumentace metody LowPassFilter [21], se využívá jádro filtru nejmenších čtverců a Hammingovo okno, kde je využita rychlá Fourierova transformace.
4.3
Vyhodnocení dat
Pro vyhodnocení dat je vytvořen vlastní model. Jeho výstupem je procentuální vyjádření agresivity jízdy. Čím vyšší je výsledek, tím agresivnější jízda je. Pro znovupoužitelnost je využit vážený průměr menších celků, které jsou nazývány moduly. Díky váhám je možné zvýhodnit (popř. znevýhodnit) nebo přidávat (popř. ubírat) jednotlivé moduly a tím upravit celkový model a jeho výsledek povaze testu. Nechť M je označení modelu. m1 , m2 , . . . , mn jsou výsledky jednotlivých modulů a c0 , c1 , . . . , cn jsou jejich váhy, kde n je počet použitých modulů. Pak lze model M vyjádřit vztahem (4.14). Jednotlivé moduly jsou: • modul zrychlení, • modul brzdění, • modul zatáčení, • modul OBD-II. n P
M=
ci ∗ mi
i=1
(4.14) n Pro vyhodnocování agresivity na základě dat ze senzorů je třeba jednotlivé jízdní manévry rozeznat a následně ohodnotit. Jízda bez provádění manévrů nijak neovlivní výsledek. Kvůli tomu nejsou znevýhodněni řidiči, kteří provádí jízdní manévry častěji.
4.3.1
Rozeznání manévru
Jednotlivé manévry se projevují na osy tak, jak byly rozděleny v kapitole 4.1, v důsledku kalibrace senzoru. Pro rozeznání manévru je nejprve nutné rozpoznat jeho počáteční a koncový bod. Počáteční bod je okamžik, kdy na zařízení začne působit síla, a koncový bod je okamžik, kdy na zařízení síla působit přestane. Obecně lze říci, že pokud plocha pod (popř. nad) křivkou překročí určitou mez, lze tento jev označit jako jízdní manévr. Je zřejmé, že manévr nelze rozeznat již v jeho počátečním bodě, ale až v jeho průběhu. Počáteční a koncový bod je nutné označit dodatečně tak, že jejich hodnoty jsou v blízkém okolí nulových hodnot. Při použití simulace lineárního zrychlení nelze hodnoty porovnávat přímo s 0 kvůli možnému naklonění vozidla. 31
4. Analýza problému
4.3.2
Modul zrychlení
Při rozlišování agresivního jízdního manévru zrychlení od neagresivního je třeba zaměřit se na jejích charakteristiky. Při agresivním zrychlení řidič sešlapuje plynový pedál prudce a prudce ho uvolňuje na rozdíl od zrychlení neagresivního, kdy řidič sešlapuje pedál progresivně bez zbytečně rychlých pohybů. Síla působící na vozidlo se při agresivním zrychlení kumuluje rychleji a do větší míry. Křivku, kterou agresivní zrychlení vytváří na ose Z akcelerometru, lze tedy popsat jako prudce stoupající, s vysokými maximálními hodnotami, působící na kratším časovém úseku s případnými ostrými zlomy. Modul zrychlení vyjadřuje poměr agresivně klasifikovaných manévrů zrychlení vůči neagresivně klasifikovaným.
4.3.3
Modul brzdění
Při rozlišování agresivního jízdního manévru brzdění od neagresivního jsou charakteristiky podobné jako u jízdního manévru zrychlení. Při agresivním brzdění řidič sešlapuje brzdný pedál prudce a prudce ho uvolňuje. Neagresivní brzdění je progresivní a neobsahuje prudké změny míry brzdění. Stejně jako u agresivního zrychlování se u agresivního brzdění síla působící na vozidlo rychle kumuluje a stoupá do větší míry. Křivku, kterou vytváří agresivní brzdění na ose Z akcelerometru, lze tedy popsat jako prudce stoupající, s vysokými maximálními hodnotami, působící na krátkém časovém úseku s případnými ostrými zlomy. Modul brzdění vyjadřuje poměr agresivně klasifikovaných manévrů brzdění vůči neagresivně klasifikovaným.
4.3.4
Modul zatáčení
Při rozlišování agresivity zatáčení jsou veličiny popisující křivku, kterou vytváří zatáčení na ose Y akcelerometru, podobné. Při agresivním zatáčení je rychlost vozidla často nepřiměřeně velká vůči poloměru zatáčky a na akcelerometr působí celkově vyšší odstředivá síla. Jako agresivní zatáčení lze také označit neprogresivní a rychlé pohyby volantem vozidla, které způsobují prudké změny v křivce. Neagresivně projetá zatáčka má progresivní průběh bez výrazných změn v růstu hodnot akcelerometru. Modul zatáčení vyjadřuje poměr agresivně klasifikovaných manévrů zatáčení vůči neagresivně klasifikovaným.
4.3.5
Modul OBD-II
Pro výpočet agresivity jízdy z dat získaných pomocí protokolu OBD-II jsou použity veličiny otáček motoru a relativní pozice plynového pedálu. Pro agresivní jízdu je třeba využít vyšších otáček motoru, kde je jeho výkon vyšší. S růstem otáček motoru se zvyšuje také hluk motoru a spotřeba paliva. Relativní agresivitu jízdy v závislosti na otáčkách motoru lze tedy vyjádřit výrazem (4.15), kde Vi , i ∈ N jsou naměřené hodnoty, Mrpm jsou maximální otáčky motoru 32
4.3. Vyhodnocení dat a n je počet naměřených hodnot. Při agresivní jízdě dosahuje relativní pozice plynového pedálu vyšších hodnot. Agresivitu jízdy z hlediska pozice plynového pedálu lze tedy ohodnotit jako aritmetický průměr relativních pozic plynového pedálu v průběhu jízdy. Pn
OBDrpm =
4.3.6
· Mrpm n
i=1 Vi
(4.15)
Klasifikace agresivity manévru
Je zřejmé, že míru agresivity manévru určuje hodnota vrcholu křivky, směrnice rostoucích a klesajících částí grafu. Na těchto veličinách přímo závisí délka vykonávání zrychlení, kdy průběh agresivního zrychlení trvá kratší časový úsek, než u zrychlení neagresivního a progresivního. Z těchto tří veličin lze získat několik atributů, které slouží k vytvoření klasifikačního modelu pro rozeznávání agresivity. Vytvářením klasifikačního modelu na základě reálných hodnot se zabývá kapitola 5.4. 4.3.6.1
Atributy klasifikace
Nejjednodušším vyjádřením růstu či poklesu křivky je pomocí směrnice křivky. Směrnici křivky v daném bodě lze získat pomocí numerické derivace. Numerická derivace může být jednostranná (4.16) nebo symetrická (4.17), kde h je blízké okolí 0. Konkrétněji v tomto případě označuje h (popř. 2h) šířku okénka, přes které se směrnice určuje. Symetrická derivace je v tomto případě vhodnější, kde klíčové je zvolení vhodné šířky okénka h. y 0 (n) = lim
h→0
x(n + h) − x(n) h
(4.16)
x(n + h) − x(n − h) (4.17) h→0 2h Celková směrnice vzrůstu křivky kv lze vyjádřit jako (4.18), kde Vv je hodnota vrcholu, Vp je hodnota počátku a n je počet bodů určující křivku. V rámci normalizace hodnot je hodnota n zvolena jako čas, který uplynul mezi hodnotou počátku a hodnotou vrcholu, vyjádřený v milisekundách. Obdobně je to u celkové směrnice poklesu kp (4.19), kde Vk je hodnota počátku a n je čas uplynulý mezi vrcholem a koncem křivky. Celková směrnice vzrůstu a celková směrnice poklesu jsou atributy klasifikace. y 0 (n) = lim
kv =
Vv − Vp n
(4.18)
kp =
Vk − Vp n
(4.19)
33
4. Analýza problému Další atributy jsou: • maximální (u záporných hodnot minimální) směrnice křivky, • hodnota vrcholu křivky, • délka trvání křivky, • obsah pod křivkou, • obsah pod křivkou v závislosti na celkové směrnici.
34
Kapitola
Realizace Pro realizaci bylo třeba implementovat aplikaci pro OS Android, která slouží pro interakci s řidičem a sbírání dat ze senzorů. Android aplikace provádí pouze kalibraci a sběr dat. Data, která jsou uložena v souborech a SQLite databázi, jsou následně odeslána serverové aplikaci, která je zpracovává. Zdrojové kódy Android aplikace a serverové aplikace jsou k nalezení na přiloženém CD. V této kapitole jsou rozebrána navrhovaná řešení z kapitoly 4. Kapitola obsahuje testy a diskuzi jednotlivých řešení.
5.1
Podmínky testování
Následující testy jsou vytvořeny pomocí telefonu LG Nexus 4 E960. K testovacím jízdám bylo použito vozidlo Škoda Octavia Combi 1.6 MPI 75 kW. Všechny testy a měření byly prováděny na suché vozovce asfaltového povrchu. Pro testování agresivní jízdy byly využity velké asfaltové plochy, např. parkoviště, aby nebyl ohrožen provoz na pozemních komunikacích.
5.2
Kalibrace senzorů
Pro kalibraci senzorů byla využita simulace lineárního akcelerometru a také lineární akcelerometr samotný. Po testech lze tyto metody porovnat a zhodnotit jejich výhody a nevýhody. Při registraci posluchače změn se nastavuje, jak rychle se mají data ze senzoru získávat. Dle dokumentace [11] existují čtyři možná nastavení: • SENSOR DELAY FASTEST, data jsou získávána nejrychleji, jak je to možné, • SENSOR DELAY GAME, data jsou získávána tak, aby bylo možné použít je pro ovládání her, 35
5
5. Realizace • SENSOR DELAY NORMAL, data jsou získávána tak, aby bylo možné rozeznávat rotaci obrazovky, • SENSOR DELAY UI, data jsou získávána tak, aby nebylo zatěžováno vlákno UI. Byla testována nastavení SENSOR DELAY NORMAL a SENSOR DELAY GAME. Není vhodné získávat data co nejrychleji, protože může docházet k přehlcení informacemi9 . Pokud je rychlost získávání dat příliš vysoká, je většina hodnot nevyužita. Aplikace je příliš zatěžována. Existuje velké množství dat, která musejí být uložena. Analýza dat u serverové aplikace trvá déle. Na obrázcích 5.1 a 5.2, lze porovnat tato nastavení. Při použití nastavení rychlosti senzoru na SENSOR DELAY GAME popisují data po vyhlazení manévr lépe, vyhlazování však trvá déle. Při tvorbě atributů nebyl kromě obsahu pod křivkou vidět znatelný rozdíl. DriveIT testing sensors 4
Hrboly Zatáčení Akcelerace / Brzdění
3 2
Zrychlení
1 0 -1 -2 -3 -4 -5 -6 -7 3000
6000
9000
12000
15000
18000
21000
24000
Čas [ms]
Obrázek 5.1: Nastavení rychlosti senzoru SENSOR DELAY NORMAL. Při výchozím nastavení posluchače na změny senzoru přicházejí data z akcelerometru přibližně 20-krát za sekundu. Za předpokladu, že pro uložení jednoho bodu ze senzoru je třeba 20 bajtů (3-krát 4 bajty pro uložení souřadnic, 8 bajtů časový otisk), není třeba data ukládat do souboru v průběhu měření a tím uvolňovat alokovanou paměť. Při 60 minutovém měření je pro uložení dat ze senzoru třeba alokovat přibližně 1440 kB. Při nastavení SENSOR DELAY GAME přicházejí data z akcelerometru přibližně 50-krát za sekundu. 9 Velké množství dat musí být zpracováno. Informační zisk dat s jejich množstvím již neroste (dosáhl své hranice).
36
5.2. Kalibrace senzorů
DriveIT testing sensors 6
Hrboly Zatáčení Akcelerace / Brzdění
4
Zrychlení
2 0 -2 -4 -6 -8 3000
6000
9000
12000
15000
18000
21000
24000
Čas [ms]
Obrázek 5.2: Nastavení rychlosti senzoru SENSOR DELAY GAME.
5.2.1
Simulace lineárního akcelerometru
Po spuštění měření nové jízdy je třeba senzory zkalibrovat. Existují dvě hlavní nevýhody toho řešení. Vozidlo je třeba kalibrovat na rovné vozovce s nulovým sklonem. V případě, že by byla provedena kalibrace vozidla ve špatné poloze, je možné, že by naměřená data mohla obsahovat nesprávné výsledky. Druhou nevýhodou je nemožnost správné analýzy při jízdě na naklopené vozovce. Aby se vyloučila chyba, je na data při analýze a rozeznávání manévru aplikován filtr (5.1). Aplikováním tohoto filtru se lze vyrovnat se sklonem vozovky přibližně 8.5%, jak vyplynulo z testů. (
f (n) =
n , n ≥ 0.8 0 , n < 0.8
(5.1)
Ukázka dat naměřených pomocí simulace lineárního akcelerometru je zachycena na obrázku 5.2.
5.2.2
Lineární akcelerometr
Při použití lineárního akcelerometru vlákno uživatelského rozhraní (UI) nedokáže zároveň obsluhovat příchozí data ze senzoru a plynule vykreslovat vizualizaci dat v grafu. Z tohoto důvodu je nutné zpracovávat příchozí data ze senzoru ve vlastním vlákně na pozadí. Ukázka dat naměřených pomocí simulace lineárního akcelerometru je zachycena na obrázku 5.3. V poslední části grafu lze pozorovat úsek, kde jsou data nezkalibrované. To je způsobeno přetvořením rotační matice díky změně 37
5. Realizace gravitace. Senzor gravitace reaguje na změny pomaleji než akcelerometry, proto se mohou objevit nezkalibrované úseky. Tyto jevy mají pouze krátké trvání. DriveIT testing sensors 6
Hrboly Zatáčení Akcelerace / Brzdění
5 4 3 Zrychlení
2 1 0 -1 -2 -3 -4
0
3000
6000
9000
12000
15000
18000
21000
Čas [ms]
Obrázek 5.3: Použití lineárního akcelerometru.
5.2.3
Porovnání metod kalibrace
Na obrázcích 5.2 a 5.3 lze pozorovat zajímavý jev. Vrchol křivky zatáčení při použití lineárního akcelerometru nedosahuje tak vysokých hodnot jako při použití normálního akcelerometru. To je způsobeno průběžnou kalibrací senzoru. Klopení vozidla mění data ze senzoru gravitace, který lineární akcelerometr při kalibraci využívá, a tím je ovlivněna i rotační matice. Podobný problém, ale méně výrazný, se může objevit i u zrychlení a brzdění. Opačný jev nastává při simulaci lineárního akcelerometru, kdy se kvůli klopení vozidla projevuje zatáčení výrazněji. Tento jev může být při hodnocení agresivity zatáčení pozitivní, jelikož se agresivní zatáčení projeví razantněji.
5.3
Předzpracování dat
Pro vyhlazení šumů z dat bylo vybráno několik vyhlazovacích algoritmů. Je třeba z nich vybrat nejlepší z hlediska schopnosti data vyhladit a zároveň neztratit významnou informační složku z dat. Na základě dohody s vedoucím práce nebyly algoritmy implementovány, ale byly testovány pomocí software Wolfram Mathematica 9 [20]. 38
5.3. Předzpracování dat
5.3.1
Metoda klouzavého průměru
Při použití jednoduchého klouzavého průměru je klíčové zvolení šířky okénka. Vyhlazování v závislosti na šířce okénka je zachyceno na obrázku 5.4. Byly použity šířky okének liché délky kvůli zachování symetrie kolem počítaného bodu. Při použití šířky okénka 3 (červená křivka na obr. 5.4) jsou ořezány výrazné výkyvy, ale vyhlazení není dostačující. Při použití šířky okénka 11 (zelená křivka na obr. 5.4) dochází k posuvům křivky na časové ose a ke snížení maximálních hodnot. Šířka okénka 5 (modrá křivka na obr. 5.4) je pro SMA ideální. Vyhlazuje výkyvy v grafu, přesto křivku nedeformuje. Pro šířku okénka 7 platí stejné vlastnosti jako pro okénko šířky 11, a proto není na obrázku vyobrazena. Šedá křivka na obr. 5.4 vyobrazuje původní nevyhlazená data. Zrychlení 10
8
Original Window = 3
6
Window = 5
4
Window =11 2
Data 50
100
150
200
Obrázek 5.4: Jednoduchý klouzavý průměr v závislosti na velikosti okénka.
5.3.2
Porovnání vyhlazovacích metod
Na data byly aplikovány vyhlazovací metody: klouzavý průměr s velikostí okénka 5 (zelená křivka na obr. 5.5), Gaussův filtr (červená křivka na obr. 5.5) a dolní propusť (modrá křivka na obr. 5.5). Křivka, která vyobrazuje původní data, je zachycena šedou barvou. Na obr. 5.5 je vidět, že při použití filtru dolní propusť dochází ke ztrátě informací. Při nastavení frekvence větší než 1 Hz nedochází k dostatečnému vyhlazení. Z tohoto důvodu je jeho použití nevyhovující. Lépe dopadl klouzavý průměr s velikostí okénka 5. Ačkoliv dochází k posuvu křivky, nedochází ke ztrátě informací jako u filtru dolní propusť. Nejlépe ze zkoumaných metod vychází Gaussův filtr. Při jeho použití nedochází k posuvu křivky, ani ke ztrátě informací. Je také lépe odolný vůči prudkým změnám. 39
5. Realizace Zrychlení 10
8
Original GaussianFilter
6
LowPassFilter
4
MovingAverage 2
Data 50
100
150
200
Obrázek 5.5: Porovnání vyhlazovacích metod
5.4
Vyhodnocení dat
Pro vyhodnocování stylu jízdy je použit klasifikační model. Pro vytvoření klasifikačního modelu bylo třeba nasbírat data, na kterých se model naučí manévry hodnotit. K tomu byla vytvořena testovací aplikace pro OS Android, která slouží k hodnocení manévrů v reálném čase. K vytvoření trénovacích dat byl použit následující postup. Testovací aplikace se připojí k měřící aplikaci pomocí bezdrátové technologie bluetooth. Při provedení manévru obdrží testovací aplikace zprávu o typu manévru a o čase, kterým se manévr identifikuje. Uživatel testovací aplikace hodnotí manévry binárními hodnotami, tedy zda je daný manévr agresivní či nikoliv. Jelikož je možné rozeznat zároveň zatáčení a zrychlení nebo brzdění, jsou požadavky zpracovávány ve frontě, tedy přístup FIFO10 . Při analýze dat na straně serveru jsou rozeznány jízdní manévry, u nichž jsou vypočítány hodnoty atributů klasifikačního modelu a jsou jim přiřazeny binární hodnoty agresivity jízdy. Tato data jsou následně vložena do jednoho z algoritmů pro tvorbu klasifikačního modelu. Při testování klasifikačního modelu byla využita křížová validace a to zejména kvůli nedostatku dat. Z klasifikačních modelů byly vybrány rozhodovací strom a Bayesova klasifikace a to zejména díky jejich interpretovanosti. Pro tvorbu a testování klasifikačních modelů byl využit software RapidMiner [15]. Pro komunikaci s OBD-II bohužel neexistuje žádné oficiální API. Pokus o komunikaci s OBD-II nebyl úspěšný, a tak nemohl být otestován. 10 First In First Out (první dovnitř, první ven) je přístup ke frontě, kde se položky fronty zpracovávají v pořadí vkládání do fronty.
40
5.4. Vyhodnocení dat
5.4.1
Rozeznání manévru
Pro rozeznávání manévru byly testovány dva algoritmy. Principem prvního algoritmu bylo zjišťování aritmetického průměru měřených hodnot. Jakmile tento průměr překročil určitou hodnotu, byl označen manévr a byl odeslán dotaz do pomocné hodnotící aplikace. Tento postup se neosvědčil. Aritmetický průměr je velmi náchylný k šumu. Nebylo zcela možné rozeznat zda se jedná o manévr či šum. Z tohoto důvodu byl aritmetický průměr nahrazen kumulováním hodnot a kontrolou na překročení určité hodnoty. I tato metoda může být náchylná ke špatnému vyhodnocení z důvodu šumu, ale protože se manévr rozeznává až v jeho pozdějším průběhu, je náchylná méně. Na podobném principu je založeno rozeznávání manévru serverovou aplikací. Ta musí rozeznat i počátek a konec manévru. Následně lze vypočítat jednotlivé atributy, které se používají pro tvorbu klasifikačního modelu a samotnou klasifikaci.
5.4.2
Rozhodovací strom
Pro tvorbu rozhodovacích stromů existuje několik algoritmů (CHAID, CART, ID3, GUIDE, aj.) [3]. Obecně se při tvorbě stromu pomocí konstrukce shora dolů postupuje následovně. 1. Procházením trénovacích dat se nalezne atribut, který nejlépe rozdělí data do tříd. 2. Data se rozdělí dle hodnoty tohoto atributu. 3. Rekurzivně se zpracovává každá skupina dat, dokud není složena jen z jedné třídy. Při sestavování stromu se řeší dva hlavní problémy a to mechanismus dělení do tříd (míra entropie, informační zisk, atd.) a podmínka zastavení dělení (zastavovací pravidlo nebo prořezávání po sestavení). Rozhodovací strom je obecně velmi náchylný k přeučení. Přeučení klasifikačního modelu znamená, že je model naučen velmi dobře pro trénovací data, ale na testovacích datech je jeho úspěšnost mnohem menší. K tomuto jevu dochází například tehdy, není-li jeho zastavovací podmínka dostatečná. Strom pak vytváří zbytečně uzly, které se týkají jen konkrétních trénovacích dat. Vhodná zastavovací podmínka je minimální počet případů v daném uzlu pro schopnost dělení. K přeučení docházelo i v případě trénování na datech z aplikace. Tento jev byl způsobený nedostatečným množstvím dat, kdy se pro naučení modelu použila data z jedné či dvou jízd. Při použití většího množství dat by byl rozhodovací strom dobrá volba. Přibližně 1000 jízdních manévrů z každé třídy by mohlo postačovat k vytvoření nepřeučeného klasifikačního modelu. 41
5. Realizace
5.4.3
Bayesova klasifikace
Bayesova klasifikace využívá statistických metod. Je založena na Bayesově větě o podmíněné pravděpodobnosti (5.2). Principem Bayesova klasifikátoru je vypočítání hustoty pravděpodobnosti daného jevu za určité podmínky. Jev je pak popsán Gaussovou křivkou (či více Gaussovými křivkami dle nastavení algoritmu pro tvorbu klasifikátoru), která popisuje pravděpodobnost, že jev nastane. P (B|A) · P (A) P (A|B) = (5.2) P (B) Na data z aplikace se více, než rozhodovací strom hodí právě Bayesova klasifikace a to z několika důvodů. Bayesova klasifikace je odolnější vůči šumu a to nejen v datech ze senzoru, ale i v rozhodování o agresivitě. V případě, že by trénovací data byla vytvořena více hodnotiteli, je vhodnější použít Bayesovu klasifikaci. Jelikož ani pro uživatele hodnotícího agresivitu manévrů není jednoduché určit přesnou hranici mezi agresivními a neagresivními manévry, dochází k překrývání dat právě poblíž této hranice. Není triviální určit přesnou hranici a s tímto problémem si Bayesova klasifikace díky podmíněným pravděpodobnostem poradí lépe, než rozhodovací strom.
5.4.4
Zhodnocení klasifikace
Je možné vypočítat váhy jednotlivých atributů z hlediska jejich informačního zisku. Váha atributu představuje jeho významnost. Čím vyšší je váha, tím je atribut významnější. Váhy atributů jsou zobrazeny v tabulce 5.1. „maxSlope“ je atribut největší (nejmenší) směrnice. „totalSlopeI“ ( „totalSlopeD“) je směrnice rostoucí (klesající) části křivky, „maxValue“ je nejvyšší hodnota křivky, „sum“ je obsah plochy pod křivkou, „time“ je čas manévru a „slopeSumI“ („slopeSumD“) je obsah pod rostoucí (klesající) částí křivky vydělený směrnicí rostoucí (klesající) části křivky. Atribut maxSlope totalSlopeI maxValue totalSlopeD slopeSumI sum time slopeSumD
Informační zisk 0.480 0.472 0.311 0.233 0.189 0.177 0.106 0.038
Tabulka 5.1: Atributy zvážené dle jejich informačního zisku. 42
5.4. Vyhodnocení dat Při použití rozhodovacího stromu bylo dosaženo přesnosti klasifikace 75%. Rozhodovací strom je zachycen na obrázku 5.6. Jako rozhodovací kriterium byl použit poměr informačního zisku. Při tvorbě rozhodovacího stromu nebyly využity všechny atributy, což může způsobovat buď jejich malý informační zisk nebo malé množství trénovacích dat. Pro tvorbu byly vybrány atributy: maximální směrnice, celková směrnice rostoucí části křivky a doba vykonávání manévru. Atributy byly vybírány z hlediska schopnosti rozlišení agresivních manévrů od neagresivních. Některé atributy nebyly využity z důvodu jejich nízkého informačního zisku a závislosti na ostatních atributech. Tabulka 5.2 zachycuje poměry pozitivních, negativních, falešně pozitivních a falešně negativních klasifikací. maxSlope
> 7.712
7.712
true
totalSlopeI
> 0.002
0.002
true
maxSlope
> 3.276
3.276
false
time
> 2240.500 2240.500
true
false
Obrázek 5.6: Rozhodovací strom
negativní (předp.) pozitivní (předp.) citlivost třídy
negativní 12 4 75.00%
pozitivní 4 12 75.00%
přesnost třídy 75.00% 75.00%
Tabulka 5.2: Výsledky klasifikace pomocí rozhodovacího stromu. Při použití Bayesova klasifikátoru bylo dosaženo vyšší přesnosti klasifikace a to 79,17%. Pro tvorbu byl použit naivní Bayesův klasifikátor nastavený tak, 43
5. Realizace aby bylo dosaženo větší přesnosti. Nevýhodou naivního Bayesova klasifikátoru je předpoklad lineární nezávislosti atributů. Na obrázcích 5.7 a 5.8 jsou zachyceny Gaussovy křivky pro atributy maximální směrnice a maximální hodnoty. Obsahují pravděpodobnostní křivky klasifikace v závislosti na atributu. Křivky se skládají ze dvou různých Gaussových křivek, jak bylo nastaveno v kernelu klasifikátoru. Na obrazcích lze také pozorovat přeučení klasifikátoru. Tabulka 5.3 zachycuje poměry pozitivních, negativních, falešně pozitivních a falešně negativních klasifikací.
Obrázek 5.7: Bayesův klasifikátor, atribut maximalní směrnice. Červená křivka znázorňuje agresivní jízdu. Modrá křivka znázorňuje neagresivní jízdu.
Obrázek 5.8: Bayesův klasifikátor, atribut maximální hodnoty. Červená křivka znázorňuje agresivní jízdu. Modrá křivka znázorňuje neagresivní jízdu. Bylo experimentováno s klasifikátorem neuronové sítě. S ním bylo dosaženo přesnosti 83, 33%. Tento klasifikátor však nelze interpretovat. Tabulka 5.4 zachycuje poměry pozitivních, negativních, falešně pozitivních a falešně negativních klasifikací. Lze pozorovat zvýšení přesnosti při klasifikaci neagresivních manévrů. 44
5.4. Vyhodnocení dat
negativní (předp.) pozitivní (předp.) citlivost třídy
negativní 13 3 81.25%
pozitivní 4 12 75.00%
přesnost třídy 76.47% 80.00%
Tabulka 5.3: Výsledky klasifikace pomocí Bayesova klasifikátoru.
negativní (předp.) pozitivní (předp.) citlivost třídy
negativní 15 1 93.75%
pozitivní 4 12 75.00%
přesnost třídy 78.95% 92.31%
Tabulka 5.4: Výsledky klasifikace pomocí Neuronové sítě. Modely byly pro zjednodušení vytvářeny pro všechny jízdní manévry najednou. Tím je snížená jejich přesnost. Například pro zatáčení dosahují maxima křivek vyšších hodnot než zrychlení. Při vytvoření modelu pro každý manévr zvlášť by se jejich přesnost zvýšila. Je ale zapotřebí vetší množství dat pro učení klasifikačního modelu (přibližně 1000 manévrů z každé třídy).
45
Závěr Cílem této bakalářské práce bylo vytvoření aplikace, která má řidiče uvést do povědomí o jejich stylu jízdy. Primárně bylo nutné otestovat, zda je akcelerometr v telefonu schopný rozeznat jízdní manévry. Do první verze aplikace bylo implementováno vykreslovaní dat z akcelerometru do grafu. Po provedení několika testů bylo zřejmé, že jsou jednotlivé manévry od sebe rozeznatelné. Pro provoz aplikace bylo třeba vytvořit systém kalibrace senzorů a transformaci souřadnicových os. Byly navrhnuty, implementovány a otestovány dvě techniky (simulace lineárního akcelerometru a lineární akcelerometr). Z testů vyšlo najevo, že je možné použít obě techniky. Každá z nich má své výhody a nevýhody. Při využití simulace lineárního akcelerometru jsou naměřená data přesnější, ale je problém při sklonu vozovky. Naopak při použití lineárního akcelerometru je možné měřit data i při jízdě po vozovce se sklonem, ale naměřená data jsou méně přesná. Po naměření dat bylo třeba vyhladit šum v datech. Bylo testováno několik metod, z nichž nejlépe dopadl Gaussův filtr. V případě, že jsou váhy okénka váženého průměru předpočítány, je složitost vyhlazování lineární. Další jeho výhodou je, že se při jeho užití data nedeformují a neztrácejí se důležité informace. Po naměření dat a odstranění šumu je možné klasifikovat jízdu jako agresivní nebo neagresivní. Pro klasifikaci se používá jeden z klasifikačních modelů. Byly testovány klasifikační modely: neuronová síť, Bayesův klasifikátor a rozhodovací strom. Při učení klasifikačního modelu docházelo k jeho přeučení. Přeučení bylo způsobeno nedostatkem dat. Některé atributy použité pro klasifikaci nebyly dostatečně významné a klasifikační modely je nevyužily, proto mohou být z výpočtů vyřazeny. Nízký informační zisk atributů může být způsoben velkou lineární závislostí mezi atributy. Ačkoliv aplikace není kompletně implementována, je vytvořen analytický základ. Před nasazením aplikace do reálného provozu je třeba implementovat plnou automatizaci. Serverová aplikace by měla data zpracovávat a vyhodnocovat plně automaticky. Existuje více možností jak docílit plné auto47
Závěr matizace. Nejlepší možností je implementovat algoritmy přímo v serverové aplikaci. Kromě implementace lze užít v rámci automatizace externí software (např. RapidMiner). Pro vytvoření kvalitního klasifikačního modelu je třeba nasbírat velké množství dat. Vytváření a testování klasifikačního modelu bylo prováděno na relativně malých vzorcích dat, a proto docházelo k přeučení modelu a snížení jeho přesnosti. Při učení klasifikačního modelu na větším množství dat se tomuto jevu předchází.
48
Literatura [1]
AAA Foundation for Traffic Safety: Aggressive driving: Research update [online]. 2009, [cit. 2014-0228]. Dostupné z: http://www.aaafoundation.org/pdf/ AggressiveDrivingResearchUpdate2009.pdf
[2]
Achari, S.: DVM vs JVM [online]. 2011, [cit. 2014-02-28]. Dostupné z: http://crazyaboutandroid.blogspot.cz/2011/12/dvm-vs-jvm.html
[3]
Akthar, F.; Hahne, C.: Rapid Miner 5: Operator Reference. 2012. Dostupné z: http://docs.rapid-i.com/r/rm-reference-en
[4]
AutoTap: OBD-II Background. 2011, [cit. 2014-04-27]. Dostupné z: http: //www.obdii.com/background.html
[5]
Carley, L.: What is Mode $06 and the other OBD II Modes? [online]. 2010, [cit. 2014-03-27]. Dostupné z: http://www.underhoodservice.com/Article/70409/ what_is_mode_06_and_the_other_obd_ii_modes.aspx
[6]
Chernenko, S.: Gaussian filter, or Gaussian blur [online]. 2013, [cit. 201404-17]. Dostupné z: http://www.librow.com/articles/article-9
[7]
Chroust, M.: Google mění Android: přepněte si na ART [online]. 2013, [cit. 2014-02-28]. Dostupné z: http://www.mobilmania.cz/ bleskovky/google-meni-android-prepnete-si-na-art/sc-4-a1325316/default.aspx
[8]
Elm Electronics: ELM327 v2.0 OBD to RS232 Interpreter [online]. [cit. 2014-03-25]. Dostupné z: http://www.elmelectronics.com/DSheets/ ELM327DS.pdf
[9]
Google Inc: Sensors overview [online]. 2013, [cit. 2014-02-28]. Dostupné z: http://developer.android.com/guide/topics/sensors/ sensors_overview.html 49
Literatura [10] Google, Inc: Dashboards [online]. 2014, [cit. 2014-03-15]. Dostupné z: http://developer.android.com/about/dashboards/index.html [11] Google Inc: Reference [online]. 2014, [cit. 2014-02-28]. Dostupné z: http: //developer.android.com/reference/index.html [12] Karnopp, D.: Vehicle dynamics, stability, and control. Boca Raton, FL: CRC Press, druhé vydání, 2013. [13] OBD Solutions: What is OBD [online]. [cit. 2014-03-08]. Dostupné z: http://www.obdsol.com/articles/on-board-diagnostics/ what-is-obd [14] Prof. Ing. Miroslav Husák, C.: Akcelerometry [online]. 2009, [cit. 201403-08]. Dostupné z: http://www.micro.feld.cvut.cz/home/X34SES/ prednasky/08%20Akcelerometry.pdf [15] RapidMiner: RapidMiner [Computer software]. 2013, 5.3.013. Dostupné z: http://rapidminer.com/ [16] Tinysine Electronics: Triple Axis Accelerometer ADXL345[online]. 2014, [cit. 2014-04-17]. Dostupné z: http://www.tinyosshop.com/ index.php?route=product/product&product_id=161 [17] tutorialspoint: Android Architecture. 2014, [cit. 2014-0427]. Dostupné z: http://www.tutorialspoint.com/android/ android_architecture.htm [18] Vlk, F.: Dynamika motorových vozidel. Prof. Ing. František Vlk, DrSc., nakladatelství a vydavatelství, vyd. 2. vydání, 2006. [19] Wikipedia Foundation: Android (operating system). 2014, [cit. 2014-04-20]. Dostupné z: http://en.wikipedia.org/wiki/ Android_(operating_system) [20] Wolfram Research, Inc: Wolfram Mathematica 9 [Computer software]. 2012, 9.0.0.0. Dostupné z: http://www.wolfram.com/mathematica/ [21] Wolfram Research, Inc: LowpassFilter [online]. 2014, [cit. 2014-0416]. Dostupné z: http://reference.wolfram.com/mathematica/ref/ LowpassFilter.html
50
Příloha
Seznam použitých zkratek ABS Anti-lock Brake System API Application Programming Interface DLC Data Link Connector DVM Dalvik Virtual Machine ECU Electronic Control Unit EMA Exponential Moving Average EWMA Exponentially Weighted Moving Average ISO International Standardization Organization JVM Java Virtual Machine OBD On Board Diagnostic OS Operační systém PID Parameter ID SAE Society of Automotive Engineers SMA Simple Moving Average WMA Weighted Moving Average
51
A
Příloha
Obsah přiloženého CD
data...........................................datové soubory aplikací mathematica.nb ................. notebook do programu Mamthematica process.rmp.............................soubor programu RapidMiner process.properties.....................soubor programu RapidMiner readme.txt .................................. stručný popis obsahu CD src impl...................................zdrojové kódy implementace application.......................zdrojové kódy měřící aplikace responder ...................... zdrojové kódy hodnotící aplikace server..........................zdrojové kódy serverové aplikace thesis ...................... zdrojová forma práce ve formátu LATEX text ....................................................... text práce thesis.pdf ............................. text práce ve formátu PDF thesis.ps ................................ text práce ve formátu PS 53
B