Mendelova univerzita v Brně Provozně ekonomická fakulta
Testování sonaru s nastavitelnými parametry
Vedoucí práce:
Jméno a příjmení autora:
Ing. Jiří Fejfar, Ph.D.
Dalibor Novotný
Brno 2012
Zadání
Na tomto místě bych chtěl poděkovat Ing. Jiřímu Fejfarovi, Ph.D., vedoucímu práce, za odbornou pomoc při vypracování bakalářské práce. Dále také panu Ing. Janu Kolomazníkovi za zapůjčení sonaru Ultrasonic senzor stavebnice Mindstorm k porovnání výsledků. V poslední řadě nesmím zapomenout poděkovat rodičům za jejich neutuchající podporu ve studiu.
Prohlašuji, že jsem bakalářskou práci na téma „Testování sonaru s nastavitelnými parametry“ vypracoval samostatně pod vedením Ing. Jiřího Fejfara, Ph.D. a s použitím uvedené literatury. V Brně dne
__________________
Abstract Novotný, D., Sonar testing with adjustable parameters. Bachelor thesis. Brno: MENDELU, 2012. The bachelor thesis deals with sonar testing with adjustable parameters. For testing there was created the program and after that tests were performed. The bachelor thesis consists of a theoretical part, where basic principles are explained and a practical part, where testing of sonar is described and compared. Keywords Thesis, sonar, testing, ultrasonic, sensor, SRF08.
Abstrakt Novotný, D., Testování sonaru s nastavitelnými parametry. Bakalářská práce. Brno: MENDELU v Brně, 2012. Bakalářská práce se věnuje testování sonaru s nastavitelnými parametry. Pro testování byl vytvořen program a následně prováděny jednotlivé testy. Bakalářská práce se skládá z části teoretické, kde jsou vysvětleny základní principy a části praktické, kde je popsáno testování sonaru a jeho porovnání. Klíčová slova Bakalářská
práce,
sonar,
testování,
ultrazvuk,
senzor,
SRF08.
Obsah
6
Obsah 1
2
Úvod a cíl práce
9
1.1
Úvod .......................................................................................................... 9
1.2
Cíl práce .................................................................................................... 9
Literární rešerše
10
2.1
Sonar ........................................................................................................10
2.2
Základní fyzika.........................................................................................10
2.2.1 2.3
Šíření zvuku...................................................................................... 11
Ultrazvuk..................................................................................................12
2.3.1
Využití ultrazvuku............................................................................12
2.4
Echolokace ...............................................................................................12
2.5
Rozdělení sonarů .....................................................................................13
2.6
Sonary v robotice .....................................................................................14
2.7
Přehled sonarů dostupných na trhu ........................................................16
2.7.1
SRF01 ...............................................................................................16
2.7.2
SRF02...............................................................................................16
2.7.3
SRF05...............................................................................................16
2.7.4
SRF06...............................................................................................16
2.7.5
SRF08............................................................................................... 17
2.7.6
SRF10 ............................................................................................... 17
2.8
Sonar SRF08............................................................................................ 17
2.8.1
Příkazy..............................................................................................18
2.8.2
Start měření .....................................................................................19
2.8.3
Zesílení analogového zesilovače ......................................................19
2.8.4
ANN mód (Artificial Neutral Network) .......................................... 20
2.8.5
Registr rozsahu ................................................................................21
2.9
Modul USB-I2C........................................................................................21
2.9.1
Připojení.......................................................................................... 22
2.9.2
Příkazy............................................................................................. 23
Obsah
3
7
Vlastní práce
24
3.1
Výběr sonaru........................................................................................... 24
3.2
Propojení................................................................................................. 25
3.3
Nastavení komunikace s PC ................................................................... 25
3.4
Příkazy..................................................................................................... 26
3.4.1
Zápis ................................................................................................ 26
3.4.2
Čtení ................................................................................................ 27
3.5
Testování................................................................................................. 27
3.6
Testovací program .................................................................................. 27
3.7
Metody testovacího programu................................................................ 28
3.7.1
Nastavení COM portu (setupComPort).......................................... 28
3.7.2
Nastavení analogového zesílení (setupAnalogGain) ...................... 28
3.7.3
Nastavení měřícího rozsahu (setupRange) .................................... 28
3.7.4
Výpis výsledků na obrazovku (printRange) ................................... 29
3.7.5
Výpis z módu ANN (printANN)...................................................... 30
3.7.6
Uložení do souboru (saveToFile).................................................... 30
3.7.7
Start měření (startRanging) ............................................................31
3.8
Testování při výchozím nastavení ...........................................................31
3.9
Testování při manuálním nastavení....................................................... 33
3.9.1
Test maximálního úhlu ................................................................... 35
3.9.2
Test více echo .................................................................................. 36
3.9.3
Test ANN......................................................................................... 36
3.9.4
Testování v µs...................................................................................37
3.9.5
Závislost identifikace na velikosti předmětu...................................37
3.9.6
Testování maximální vzdálenosti ................................................... 38
3.10 Testování sonaru Ultrasonic senzor ....................................................... 38 3.10.1
Přesnost měření .............................................................................. 38
3.10.2 Závislost identifikace na velikosti předmětu.................................. 39 3.10.3 Maximální vzdálenost ..................................................................... 39 3.11 Porovnání sonaru SRF08 a Ultrasonic senzoru..................................... 39 3.11.1
Porovnání přesnosti měření ........................................................... 40
3.11.2
Porovnání závislosti identifikace na velikosti předmětu ................41
Obsah
8
3.11.3
Porovnání maximální vzdálenosti ...................................................41
3.11.4
Porovnání maximálního úhlu ......................................................... 42
4
Závěr
43
5
Literatura
44
Úvod a cíl práce
9
1 Úvod a cíl práce 1.1
Úvod
Sonary jsou zařízení na principu radaru, využívající ultrazvuku místo rádiových vln. Nejčastěji jsou používány pod vodní hladinou. Důvodem je větší dosah zvuku pod vodou než na souši, přičemž u rádiových vln je tomu naopak. Historicky jsou spojovány s I. a II. světovou válkou, konkrétně v souvislosti s ponorkami. Sloužily k identifikaci zvuků pod vodou a měly za úkol odhalit lodě a jiné ponorky v okolí. V současnosti lze na trhu najít mnoho sonarů, lišící se svou funkcionalitou a cenou. S neustále se rozvíjejícím oborem informačních technologií a v souvislosti s relativně nově vzniklou oblastí robotika našel sonar uplatnění i nad hladinou vody. V robotice lze využít několik senzorů pro mapování prostředí a orientaci, jako např. radar, infračervený senzor, ale i zmiňovaný sonar. Další využití zaznamenává sonar například v lékařství při analýze plodu v matčině těle, ve strojírenství při zjišťování vady materiálu či v rybolovu při mapování prostoru pod vodní hladinou a hledání oblastí s největším výskytem ryb. Na základě sonaru lze rovněž pořídit hlubinné snímky mořského dna, využívané například k lokalizaci potopených vraků lodí. Sonary značně usnadňují práci a nacházejí využití v široké škále odvětví. Za přírodní verzi sonaru lze považovat echolokaci některých savců, kteří principu ozvěny využívají k orientaci v prostoru. Letouni a kytovci pomocí svého vlastního tělesného sonaru vyhledávají potravu a komunikují s okolím. Bakalářská práce je rozdělena na část teoretickou a praktickou. V teoretické části je krátce a stručně pojednáno o vlastnostech zvuku, využití ultrazvuku, který je využíván právě sonarem, zpracování přehledu o sonarech dostupných na trhu a popis vybraného sonaru. Část praktická se věnuje nastavení vybraného sonaru pro správnou funkčnost, jeho testování, porovnání se sonarem používaném v laboratoři Ústavu informatiky (dále jen ÚI) na Provozně ekonomické fakultě (dále jen PEF) a následným doporučením na základě získaných výsledků.
1.2 Cíl práce Cílem práce je vypracovat přehled sonarů dostupných na trhu a na základě vypracovaného přehledu vybrat sonar s vhodnými parametry. Vybraný sonar zprovoznit a otestovat. Dále zpracovat výsledky testů a určit, zda je sonar vhodný pro použití v navigaci mobilního robota používaného na ÚI PEF. K dosažení cíle práce byly zvoleny následující dílčí cíle: • nastudování teoretických východisek pro zpracování tématu, • analýza parametrů dostupných sonarů za účelem výběru vhodného přístroje, • otestování vybraného a laboratorního sonaru, • porovnání získaných dat.
Literární rešerše
10
2 Literární rešerše 2.1 Sonar Sonar je zkratka pro SOund NAvigation and Ranging. Tato technologie využívá, jak už je právě z názvu patrné, zvuk, a to jeho šíření pro navigaci a detekci objektů. Jsou dvě technologie, které nesou jméno sonar. Pasivní – přijímá zvuk; aktivní – vysílá pulsy zvuků a následně přijímá jejich ozvěny. Sonar se používá obvykle pod hladinou nebo na úrovni hladiny vody. Můžeme ho také použít ve vzduchu pro navigaci robotů. Termín sonar je také používán pro zařízení používané k výrobě a přijímání zvuku (Ainslie, 2010).
2.2 Základní fyzika Zvuk obecně můžeme definovat jako mechanické kmitání, které je charakterizováno parametry pohybu částic pružného prostředí nebo u vlnového pohybu parametry zvukového pole. Část zvuků se projevuje jako slyšitelný zvuk, což je akustické kmitání pružného prostředí v pásmu frekvencí od 16 Hz do 20 kHz, schopné vyvolat zvukový vjem. Frekvenční závislost definice slyšitelného zvuku je silně individuální, jen málokdo je schopen vnímat celé pásmo frekvencí (především horní hranice je velmi proměnná a závislá mj. na věku). Zvuky mimo toto pásmo neslyšíme, přesto jsme schopni je vnímat a mohou mít i nepříznivý vliv na zdraví či psychiku. Zvuky pod slyšitelnou hranicí (0,7–16 Hz) označujeme jako infrazvuk (velmi nízké frekvence, lidské tělo je vnímá hmatem, jsou schopny rozvibrovat celý povrch těla či bránici), zvuky nad slyšitelnou hranicí jako ultrazvuk (Bernat, 2011).
Obr. 1
Zvukové spektrum (Olympus, 2011)
Jednotky používané v oblasti zvuku: Perioda T [s] – čas, za který soustava provedla jeden kmit Frekvence f=1/T [Hz] – počet kmitů za sekundu Rychlost zvuku c [m/s] – rychlost zvuku se mění s teplotou a prostředím Vlnová délka λ = c/f [m] – určuje vzdálenost dvou nejbližších bodů vlny se stejnou fází a amplitudou. V oblasti zvuku se často používá logaritmická jednotka Decibel (dB), která určuje hladinu intenzity zvuku a značí se L (Bernat, 2011).
Literární rešerše
Obr. 2
Znázornění sluchového pole (Bernat, 2011)
Obr. 3
Zvuková vlna (Bernat, 2011)
2.2.1
Šíření zvuku
11
Podle Bernata (2011) se zvuk ve volném prostoru šíří od zdroje všemi směry volně a jeho šíření můžeme popsat tzv. vlnoplochami (spojnicemi všech míst zvukového pole, které mají v daný okamžik stejné parametry). Je-li zdroj zvuku malý (bodový), mají vlnoplochy tvar koule, je-li zdrojem např. rozměrná deska, jsou vlnoplochy rovinné (za rovinné považujeme i vlnoplochy ve velké vzdálenosti od bodového zdroje, poloměr pomyslné koule už je tak velký že její výseč ve sledovaném bodě může být nahrazena rovinnou plochou). Šíření zvukových vln v prostoru popisuje celá řada fyzikálních principů. Vlny se v prostoru odrážejí, lámou i ohýbají, sčítají se s jinými vlnami, podléhají tlumení atd. (Bernat, 2011). Dopadá-li zvuková vlna na překážku, dojde k jejímu odrazu. Na vlastnostech překážky závisí průběh odražené vlny (Bernat, 2011).
Literární rešerše
12
2.3 Ultrazvuk Ultrazvukem je nazýváno akustické vlnění, jehož frekvence leží nad hranicí slyšitelnosti. Mezní hodnota frekvence pro toto akustické vlnění je tedy udána hodnotou 20 kHz (Švehla, 1984). Nicméně omezení, zda člověk slyší frekvenci 20 kHz, v závislosti na fyziologii těla a některých faktorech vnějšího prostředí. Ultrazvuk se používá v mnoha různých oblastech, jako jsou například lékařství, průmysl, vojenská technika atd. Dále je využíván také zvířaty (netopýři, hmyz, psi, delfíny, velryby) k orientaci v prostoru a rozeznání předmětu na určitou vzdálenost (Novelline, 1997). 2.3.1
Využití ultrazvuku
Sonografie Ultrazvuk se dá využít například při lékařském vyšetření. Ultrazvukové vlny procházejí tělem a odrážejí se od jednotlivých orgánů, respektive od přechodů mezi tkáněmi s různou akustickou impedancí (Rosina, 2006). Echolokace Polohu a vzdálenost různých těles s pomocí ultrazvuku zjišťuje sonar. Používanému postupu se říká echolokace (Jones, 2005). Čištění ultrazvukem Princip čištění ultrazvukem je založen na principu kavitace, což je mechanické narušování povrchu prudkým nárazem kapaliny na předmět (Novelline, 1997).
2.4 Echolokace Echolokace je způsob prostorové orientace některých živočichů. Užívají ji druhy s noční aktivitou nebo žijící v jeskyních či kalné vodě. Setkáme se s ní např. u některých druhů ryb, ptáků, savců (hmyzožravci, netopýři, delfíni). Zjednodušeně můžeme říci, že živočich vydává zvuky (zpravidla ultrazvuky) a zachycuje jejich ozvěnu (echo), tedy signál odražený od předmětu v prostoru. Echolokace se vyvíjela postupně u více druhů živočichů, dnes jsou v této oblasti nejvíce specializováni netopýři a kytovci (Jones, 2005). K orientaci netopýra v prostoru slouží přírodní sonar, jehož princip práce dobře vyjadřuje souborné označení tohoto způsobu orientace – echolokace (echo = ozvěna, lokace = zjišťování místa). Netopýři tedy vydávají hlasové signály a na základě zhodnocení jejich ozvěny určují svoji pozici v prostoru, tvar a rozmístění překážek, jejich pohyb i mnoho dalších prvků, často až překvapivě jemných (Jones, 2005). Echolokaci u netopýrů lze rozdělit do dvou skupin podle používaného sonaru na:
Literární rešerše
13
1. CF (constant frequency) Pracuje s konstantní, pro daný druh specifickou frekvencí (vydávané hlasy tvoří vždy čistý tón). Tento vysoce specializovaný CF sonar používá zpravidla velmi vysoké frekvence, které poskytují informace sice neobyčejně detailní, ale jen na krátké vzdálenosti (Thomas, 2004). 2. FM (frequency modulated) Sonar mění výšku tónu v průběhu pulzu od vysokých po nízké. Frekvenční rozsah zvuku v rámci jediného výkřiku pak může dosahovat 0-60 kHz. FM netopýři svým hlasem projíždějí celé úseky nižší části frekvenčního spektra. Získávají tedy spíše rámcový obraz zohledňující však i situaci širšího okolí. U FM sonaru se frekvenční struktura signálů může plasticky modifikovat podle momentálních okolností a potřeb. Je možné, aby netopýr při pohybu na otevřeném prostranství vydával jen energeticky méně náročné zvuky a k intenzivnější echolokaci přešel až při styku s překážkou nebo kořistí (Thomas, 2004). Vydávaný signál: je standardizovaný zvukový puls o frekvenci 20–160 kHz, délce 0,7–60 ms a opakuje se 5–150krát za sekundu. Zvukové vlny mají tlak 0,1–30 Pa a vlnovou délku 0,6–5 mm. Intenzita vydávaného zvuku dosahuje 40–150 dB (decibelů), pro srovnání – normální lidská řeč se pohybuje kolem 50 dB (Thomas, 2004). Příjem a analýza ozvěny: Celkový rozsah slyšitelnosti je 0,2– 200 kHz. Prahová citlivost pro jednotlivé frekvence je značně proměnlivá, nejvyšší zpravidla mezi 20–120 kHz, u mnohých forem nalézáme několik zón zvýšené citlivosti. Sluchové vnímání vlastních hlasů (tj. zvýšení citlivosti pro ozvěnu) je možno zeslabit o 20–30 dB, pomocí rychlých stahů středoušních svalů (Thomas, 2004). Operační vlastnosti netopýřího sonaru: Rozlišovací schopnost dosahuje až 0,05 mm (různá u jednotlivých druhů a nepřímo úměrná ke vzdálenosti překážky). Dosah činí 5–500 m, závisí na parametrech daného sonaru a podmínkách prostředí – vzdušné vlhkosti (vlhký vzduch je lehčí, a tím se zvyšuje i rychlost přenášeného signálu), teplotě (rychlost zvuku při 0°C, za normálního tlaku je 331,7 m/s; při každém stupni se zvyšuje o 0,6 m/s, takže při 20°C je rychlost 343,7 m/s) apod. Úhlová rozlišovací schopnost je zcela běžně 5°, v řadě případů i pod 1° (Thomas, 2004).
2.5 Rozdělení sonarů Pasivní – skládá se jen z přijímače. Ten je navržen tak, aby přijímal všechny ultrazvukové vlny, které přichází. Zesilovače a různé filtry se starají o to, aby přijali všechny složité vlny. Např. v ponorkách je zvuk digitalizován a různé programy pomáhají filtrovat a identifikovat specifický zvuk. Mnoho lodí vytváří jedinečný zvuk, který může být dál zpracován a uložen pro případnou pozdější identifikaci nebo porovnání s ostatními zvuky (Frenzel, 2010).
Literární rešerše
Obr. 4
14
Pasivní sonar (U.S. Navy Museum, 2011)
Aktivní – narozdíl od pasivního sonaru obsahuje jak přijímač, tak i vysílač. Je podobný radaru, kde je vysokofrekvenční puls převeden na ultrazvukovou vlnu. Tato ultrazvuková vlna putuje pryč od vysílače a až se odrazí od předmětu, vrací se zpět k přijímači. Následně lze vypočítat vzdálenost předmětu podle rychlosti zvuku v daném prostředí a časového intervalu mezi vysláním a přijmutím ultrazvukové vlny (Frenzel, 2010).
Obr. 5
Aktivní sonar (U.S. Navy Museum, 2011)
2.6 Sonary v robotice Snímač se obvykle skládá ze dvou částí – vysílač, přijímač. Vysílač vysílá zvuk na definované frekvenci (obvykle 40 kHz) a přijímač přijímá zvuk od odražené překážky. Vzdálenost se vypočte na základě doby přijmutí odraženého zvuku od překážky (Generation Robots, 2007).
Literární rešerše
15
Při měření může nastat několik situací (viz Obr. 6):
Obr. 6
Možné situace při měření (Generation Robots, 2007)
V situaci na levém obrázku budeme dostávat správnou informaci o vzdálenosti překážky, jelikož je senzor kolmo k překážce. U prostředního obrázku budou vráceny také správné hodnoty, protože je senzor opět kolmo na překážku. Rozdíl bude pouze v tom, že bude přijata vzdálenost bližší ze dvou překážek. Na obrázku vpravo je znázorněna situace, kdy bude senzor vracet nepřesné hodnoty. Představme si, podle kapitoly 2.2.1, kde je stručně popsáno šíření zvuku, jak putuje zvuková vlna v této situaci. Dospějeme k závěru, že v kolmém směru se vlna odrazí a putuje mimo dosah senzoru. Naopak přímo k senzoru se odrazí vlna, jak je znázorněna na obrázku (Generation Robots, 2007). Některá omezení ultrazvukových senzorů (viz Obr. 7):
Obr. 7
Některá omezení ultrazvukových senzorů (Generation Robots, 2007)
Jak znázorňuje výše uvedený obrázek, je třeba vzít v úvahu možné tvary překážek nebo natočení senzoru oproti překážce. Obrázek vlevo znázorňuje, že se zvuková vlna odrazí od překážky mimo dosah senzoru. U této situace záleží také na konstrukci daného sonaru, a to konkrétně pod jakým úhlem je schopen signál přijmout. Na obrázku uprostřed je vidět, že v situaci, kdy má překážka tvar podobný trojúhelníku a je svým vrcholem natočená k senzoru, se ultrazvukové vlny odráží opět mimo dosah senzoru. Na posledním, pravém obrázku vzniká situace, kdy zvukový signál sice přijmeme, ale dostáváme nepravdivou vzdálenost překážky, jelikož dochází k vícenásobnému odrazu.
Literární rešerše
16
Dále pak musíme počítat s povrchem překážky (koberec bude odrážet vlny méně než hladká stěna) nebo např. s více sonary vedle sebe se stejnou frekvencí (jeden sonar může přijmout signál od druhého) (Generation Robots, 2007).
2.7 Přehled sonarů dostupných na trhu 2.7.1
SRF01
SRF01 je sonar s velice dobrými parametry, hlavně co se týče rozsahu měření. Ty jsou po kalibraci velmi kvalitní na krátké vzdálenosti. Kalibrace je ovšem nutností, bez ní sonar měří překážky až od 18 cm. Nejdelší možnou překážku je tento sonar schopen zachytit ve vzdálenosti 6 m. Propojit tento sonar můžeme pomocí sériového kabelu a modulu Acroname S22 nebo S27. Testovat sonar můžeme pomocí programu napsaného v C#, který je volně ke stažení na internetu (Robot electronics, 2004). 2.7.2
SRF02
Sonar SRF02 obsahuje výstupy I2C interface a asynchronním sériovým interface. Na obou typech výstupů je možno adresovat až 16 zařízení. Tento sonar je určen spíše k měření větších vzdáleností, jelikož má rozsah měření mezi 16 cm až 6 m. Z důvodu, že by sonar nezachytil překážky ve vzdálenosti menší než uvedených 16 cm, by nebylo vhodné měření v malých prostorech. Sonar lze s PC propojit USB kabelem s USB-I2C modulem a také lze stáhnout program pro jeho obsluhu přímo z internetu (Robot electronics, 2004). 2.7.3
SRF05
S tímto sonarem lze měřit vzdálenosti již od 1 cm, což je žádoucí parametr pro měření velmi blízkých překážek. Nejvzdálenější předmět by měl být zachycen ve vzdálenosti okolo 4 m. Existují však i sonary, které dovedou měřit vzdálenější překážky. Sonar SRF05, jak uvádí výrobce, umí měřit ve dvou módech. První mód používá oddělené piny pro trigger a echo, což je jednodušší na obsluhu. Mód 2 tyto dva piny slučuje do jednoho. Propojit tento sonar s PC lze opět např. pomocí USB kabelu a modulu USB-I2C (Robot electronics, 2004). 2.7.4
SRF06
SRF06 je sonar, který lze pořídit za relativně nízkou cenu. Obsahuje proudový výstup 4–20 mA a rozsah měření je mezi 2 cm až 5,1 m. Vzdálenost je vyhodnocována právě pomocí proudového výstupu. Záleží na tom, jak velký proud výstupem teče. Např. proudu 20 mA odpovídá vzdálenost 5,1 m (Robot electronics, 2004).
Literární rešerše
2.7.5
17
SRF08
Sonar SRF08 dokáže měřit vzdálenosti od 3 cm až po 6 metrů. Komunikaci můžeme provádět pomocí USB kabelu a modulu USB-I2C. Dále je tento sonar vybaven módem ANN (Artificial Neural Network), který dovoluje měřit více ozvěn a je navržen tak, aby vytvářel jednodušší vstup do neuronové sítě. Součástí sonaru je i světelný senzor. Měřit můžeme v jednotkách cm, palce a mikrosekundy (Robot electronics, 2004). 2.7.6
SRF10
Tento sonar můžeme srovnat s předchozím sonarem SRF08. Mají podobné parametry a propojit je můžeme stejně. Zatímco SRF08 dovoluje měřit od 3 cm, SRF10 měří vzdálenosti od 6 cm, ale disponuje lepším vyzařovacím úhlem s hodnotou 72◦. Tento sonar naopak neumí měřit v módu ANN. Jinak jsou tyto sonary parametry velmi srovnatelné (Robot electronics, 2004).
2.8 Sonar SRF08 Sonar SRF08 se jeví jako soubor 36 registrů číslovaných od 0 do 35. Ze všech těchto registrů je možné číst, zapisovat lze jen do některých. Následující tabulka znázorňuje význam daných registrů. Např. čtení z lokace 0 vrátí verzi softwaru. V registru 2 můžeme číst hodnotu světelného senzoru. Tyto data jsou aktualizována při každém měření. Ve výchozím nastavení je doba měření nastavena na 65 ms. Tu lze změnit zapsáním do registru rozsahu, který je dostupný v lokaci 2. Na dalších pozicích 2 a 3 je umístěn výsledek prvního echa uloženého jako 16ti bitové číslo bez znaménka, které je rozděleno na vyšší a nižší bajt. Hodnota výsledku může být do těch registrů uložena buď jako výsledek v cm, palcích nebo časová hodnota v µs (Robot electronics, 2004).
Literární rešerše
18
Obr. 8
Sonar SRF08 (Robot electronics, 2004)
Tab. 1
Přehled registrů sonaru SRF08 (Novák, 2005; vlastní návrh tabulky)
Lokace 0 1 2 3 ~ 34 35 2.8.1
Čtení Verze softwaru Světelný senzor Vyšší bajt echa č. 1 Nižší bajt echa č. 1 ~ Vyšší bajt echa č. 17 Nižší bajt echa č. 17
Zápis Příkazový registr Registr max. zesílení Registr rozsahu ~ -
Příkazy
Jsou tři příkazy k zahájení měření (80-82), které určují, v jakých jednotkách bude vrácen výsledek. K dispozici je také mód ANN (Artificial Neutral Network), který bude dále popsán. Jako poslední lze změnit adresu I2C.
Literární rešerše Tab. 2
Příkazy zahájení měření a změna adresy I2C (Novák, 2005; vlastní návrh tabulky)
Decimálně 80 81 82 83 84 85 160 165 170 2.8.2
19
Příkaz Hexadecimálně 0x50 0x51 0x52 0x53 0x54 0x55 0xA0 0xA5 0xAA
Význam Start měření s výsledkem v palcích Start měření s výsledkem v cm Start měření s výsledkem v µs ANN mód – první echo výsledek v palcích ANN mód – první echo výsledek v cm ANN mód – první echo výsledek v µs 1. sekvence pro změnu I2C adresy 3. sekvence pro změnu I2C adresy 2. sekvence pro změnu I2C adresy
Start měření
K inicializaci startu měření je potřeba zapsat jeden z výše uvedených příkazů do příkazového registru a následně ze sonaru přečíst hodnotu. Echo buffer je vymazán před každým měřením. První echo je uloženo v registrech 2, 3, druhé v registrech 4, 5, atd. Pokud se v tomto páru registrů nachází hodnota 0, nemá smysl číst z dalších registrů, jelikož zbytek bude také 0. Výchozí a doporučovaná délka mezi každým měřením je 65 µs (Novák, 2005). 2.8.3
Zesílení analogového zesilovače
Pomocí vnitřního registru zesílení (adresa 0x01) lze nastavit maximální zesílení zesilovače signálu přijatého echa. Na začátku měření je tato hodnota nastavena na 94 (viz Tab. 3). Tato hodnota je inkrementována každých 70 µs až na maximální hodnotu. Důvodem k volbě maximálního zesílení je umožnit uživateli častější komunikaci se sonarem než standardních 65 ms. Tím se potlačí možný hazard způsobený příjmem echa iniciovaného předchozím měřením (Novák, 2005). V módu ANN je zesílení řízeno automaticky bez ohledu na obsah tohoto registru (Novák, 2005).
Literární rešerše Tab. 3
Tabulka určující význam hodnoty registru analogového zesílení (Robot electronics, 2004; vlastní návrh tabulky)
Registr zesílení Decimálně Hexadecimálně 0 0x00 1 0x01 2 0x02 3 0x03 4 0x04 5 0x05 6 0x06 7 0x07 8 0x08 9 0x09 10 0x0A 11 0x0B 12 0x0C 13 0x0D 14 0x0E 15 0x0F 16 0x10 17 0x11 18 0x12 19 0x13 20 0x14 21 0x15 22 0x16 23 0x17 24 0x18 25 0x19 26 0x1A 27 0x1B 28 0x1C 29 0x1D 30 0x1E 31 0x1F 2.8.4
20
Maximální analogové zesílení Nastavení max. analogového zisku na 94 Nastavení max. analogového zisku na 97 Nastavení max. analogového zisku na 100 Nastavení max. analogového zisku na 103 Nastavení max. analogového zisku na 107 Nastavení max. analogového zisku na 110 Nastavení max. analogového zisku na 114 Nastavení max. analogového zisku na 118 Nastavení max. analogového zisku na 123 Nastavení max. analogového zisku na 128 Nastavení max. analogového zisku na 133 Nastavení max. analogového zisku na 139 Nastavení max. analogového zisku na 145 Nastavení max. analogového zisku na 152 Nastavení max. analogového zisku na 159 Nastavení max. analogového zisku na 168 Nastavení max. analogového zisku na 177 Nastavení max. analogového zisku na 187 Nastavení max. analogového zisku na 199 Nastavení max. analogového zisku na 212 Nastavení max. analogového zisku na 227 Nastavení max. analogového zisku na 245 Nastavení max. analogového zisku na 265 Nastavení max. analogového zisku na 288 Nastavení max. analogového zisku na 317 Nastavení max. analogového zisku na 352 Nastavení max. analogového zisku na 395 Nastavení max. analogového zisku na 450 Nastavení max. analogového zisku na 524 Nastavení max. analogového zisku na 626 Nastavení max. analogového zisku na 777 Nastavení max. analogového zisku na 1025
ANN mód (Artificial Neutral Network)
Tento mód je navržen tak, aby poskytnul data více echo v jednodušší formě právě pro neuronové sítě. Jelikož má sonar SRF08 36 registrů a od 0 do 4 jsou obsazené (tyto registry jsou použity vždy stejně při jakémkoliv módu), zbývá 32 registrů pro mód ANN. Těchto 32 bajtů je rozděleno na stejné úseky a to 65536 µs (maximální délka) děleno 32. Tím vzniká z jednoho úseku 2048µs, což
Literární rešerše
21
je ekvivalent k 352 mm. Když sonar zachytí překážku v určitém úseku, je do něj nastavena nenulová hodnota, v opačném případě je zde nastavena 0. V registrech 2, 3 je uložena hodnota prvního echa v cm, palcích nebo µs, podle zvoleného módu (Novák, 2004). 2.8.5
Registr rozsahu
Maximální rozsah sonaru je nastaven vnitřním časovačem. Výchozí hodnota je 65 ms, což je ekvivalent k 11 m. Zápisem do registru 2 můžeme tento rozsah změnit. Rozsah lze měnit po krocích odpovídajících přibližně 43 mm až do 11 m. Tento registr má rozsah 0–255. Hlavním důvod, proč měnit tento rozsah je, že bychom chtěli dostávat výsledky rychleji nebo vysílat impuls rychleji než je právě 65 µs (Novák, 2004). Pro výpočet tohoto rozsahu existuje vzorec: (registr _ rozsahu × 43) + 43 = rozsah [mm]
(1)
Následující tabulka ukazuje několik užitečných hodnot tohoto registru. Tab. 4
0 23 46 69 92 116 139 255
Tabulka určující maximální rozsah, který přísluší hodnotě registru rozsahu
Hodnota registru Decimálně Hexadecimálně 0 17 2E 45 56 74 8B FF
Rozsah do [mm] 43 1032 2021 3010 3999 5031 6020 11008
2.9 Modul USB-I2C Tento modul poskytuje kompletní rozhraní mezi PC a sběrnicí I2C Modul je samostatně napájen z kabelu USB a může dodávat až 70 mA na 5 V pro externí obvody ze standardního 100 mA USB portu (Robot electronics, 2004).
Literární rešerše
2.9.1
22
Připojení
Níže uvedené schéma znázorňuje I2C připojení.
Obr. 9
Připojení I2C (Robot electronics, 2004)
0V Gnd Input1 SCL a SDA +5V
– musí být připojený k 0 V (zem) na I2C zařízení. – je vlastně resetovací linka a používá se k programování procesoru pro finální použití. – tyto dva piny slouží k připojení I2C sběrnice. Měly by být připojeny k pinům SCL A SDA na vašem zařízení. – je napájení z USB-I2C modulu, který může dodávat až 70mA pro externí zařízení. Pokud I2C zařízení vyžaduje více než 5V, zůstává tento pin nepřipojený. Důležité je, nepřipojovat na tento pin vlastní napájení s 5 V (Robot electronics, 2004).
Literární rešerše
2.9.2
23
Příkazy
Modul USB-I2C se stará o všechny požadavky I2C sběrnice jako je start, reset a stop sekvence a zajišťuje zpracování cyklů. Jediné, co je potřeba, je dodat řetězec bajtů, aby modul věděl, co má dělat (Robot electronics, 2004). Tab. 5
Příkazové registry modulu USB-I2C (Robot electronics, 2004; vlastní návrh tabulky)
Příkaz I2C_SGL
Hodnota 0x53
I2C_MUL 0x54 I2C_AD1
0x55
I2C_AD2
0x56
I2C_USB
0x5A
Popis Registr pro čtení/zápis jednoho bajtu pro zařízení jako je např. čip Philips PCF8574 I/O Přečte více bajtů bez nastavení nové adresy (EEPROM, tlakové senzory od Honeywell, atd) Registr pro čtení/zápis jednoho nebo více bajtů pro jednobajtové adresované zařízení Registr pro čtení/zápis jednoho nebo více bajtů pro dvoubajtové adresované zařízení Registr pro několik příkazů modulu USB-I2C
Příkazy modulu USB-I2C, které můžeme použít na adrese 0x5A, popisuje následující tabulka. Tab. 6
Příkazy modulu USB-I2C (Robot electronics, 2004; vlastní návrh tabulky)
Hexadecimální adresa 0x01
Počet vrácených bajtů
Příkaz
0x03
REVISION 1 NEW_ADD 1 RESS UNUSED 1
0x04
SCAN1
6
0x05
SCAN2
9
0x06 0x07 0x08 0x09 0x0A 0x0B 0x10 0x11 0x12
SCAN3 SCAN4 SCAN6 SCAN8 SCAN12 SCAN16 SETPINS GETPINS GETAD
12 15 21 27 39 51 1 1 4
0x02
Význam Vrátí USB-I2C číslo firmwarové revize Změna I2C adresu sonaru SRF08 Nevyužitý, vrací pouze 0x00 Vrátí stav baterie, kompasu a data sonaru Stejné jako SCAN1, ale pro 2 sonary SRF08 3 sonary SRF08 4 sonary SRF08 6 sonarů SRF08 8 sonarů SRF08 12 sonarů SRF08 16 sonarů SRF08 Nastavení I/O pinů Vrátí stavy I/O pinů Vrátí analogové hodnoty I/O2 a I/O3
Vlastní práce
24
3 Vlastní práce 3.1 Výběr sonaru Tab. 7
Parametry jednotlivých sonarů (Robot electronics, 2004; vlastní návrh)
Frekvence [kHz] Vyzařovací úhel [◦] Napájení [V] Rozsah [m] Rozměr [mm] Cena s DPH [Kč]
SRF01 40 55 3,3–12 0,18–6 16x12 910
SRF02 40 55 5 0,16–6 24x20x17 616
SRF05 40 55 5 0,01–4 43x20x16 –
SRF06 40 55 5 0,02–5,1 43x20x16 616
SRF08 40 55 5 0,03–6 43x20x16 1366
SRF10 40 72 5 0,06–6 32x15x10 1366
Výběr sonaru probíhal na základě parametrů jednotlivých sonarů a dalších dílčích požadavcích. Jedním z požadavků byla komunikace přes sběrnici I2C pro efektivnější práci se sonarem. Komunikací přes tuto sběrnici disponují sonary SRF02, SRF05, SRF08 a SRF10. Z výběru tedy vypadly sonary SRF01 a SRF06. Sonar SRF02 měří vzdálenost až od 16 cm, proto je nutno vybrat mezi SRF05, SRF08 a SRF10. Nejdříve došlo k rozhodování mezi sonary SRF08 a 10, jelikož si jsou velice podobné. SRF10 má lepší vyzařovací úhel 72◦ oproti 55◦ druhého sonaru. Velké plus sonaru SRF08 lze spatřovat v možnosti měření v módu ANN, který je určen k následnému snadnějšímu zpracování dat vícenásobného echa neuronovou sítí, které může být v budoucnu využitelné. K výběru zbývá ještě sonar SRF05, který dokáže sice měřit od 1 cm, ale díky možnému zpracování vícenásobného echa a módu ANN je k testování nakonec vybrán sonar SRF08. Dále je potřeba pro propojení a práci s vybraným sonarem modul USB-I2C. Tento modul poskytuje kompletní rozhraní mezi PC a sběrnicí I2C. K připojení k počítači slouží kabel USB, ze kterého je modul také napájen. Na trhu nebyly dostupné žádné sonary, které by umožňovaly měnit frekvenci, amplitudu nebo délku vyslaného pulsu.
Vlastní práce
25
3.2 Propojení Při propojení sonaru s modulem USB-I2C je nutno dbát na správné připojení pinů (viz Obr. 10).
Obr. 10
Propojení modulu USB-I2C se sonarem SRF08 (Robot electronics, 2004; vlastní úprava obrázku)
Následně je potřeba mít kabel USB A-B pro připojení k modulu USB-I2C a počítači (viz Obr. 11).
Obr. 11
Propojovací kabel USB A-B (Alza.cz, 2012)
3.3 Nastavení komunikace s PC Pro komunikaci mezi PC a sonarem je zapotřebí mít modul USB-I2C. Tento modul se připojí pomocí USB kabelu k počítači. Jako první je zapotřebí nainstalovat ovladač, aby bylo možné skrze tento modul komunikovat. Ovladač je volně dostupný ke stažení na stránkách výrobce. Ovladač je možné stáhnout pro různé operační systémy (Windows, Apple, Linux a Open BSD). Modul byl testován na
Vlastní práce
26
operačním systému Windows 7, proto zde bude popsáno nastavení právě v tomto systému. Po úspěšném nainstalování ovladače musíme vybrat COM port, přes který budeme komunikovat. Při tomto kroku musíme mít modul USB-I2C připojený k počítači. Po připojení musíme přejít do nabídky Správce zařízení (Ovládací panely->Všechny položky Ovládacích panelů->Systém->Správce zařízení), kde v menu Porty (COM & LPT) nalezneme položku USB Serial Port (COMxx). Tato položka je právě náš modul. Ve vlastnostech můžeme změnit číslo portu a to pod záložkou Nastavení portu->Rozšířené. V této části nalezneme položku Číslo COM portu. Pro správnou komunikaci je zapotřebí mít nastaveno několik parametrů a to: přenosová rychlost, počet datových bitů, paritu a počet stop bitů. Přenosová rychlost musí být nastavena na 19 200 bits/s, počet datových bitů na 8, parita žádná a 2 stop bity. Po nastavení těchto parametrů je modul USB-I2C nachystaný ke správné komunikaci.
3.4 Příkazy Při komunikaci se sonarem je nutno dodržovat jistou koncepci příkazů, aby sonar správně komunikoval, vracel správné hodnoty a byla zde jistota, že je nastaven tak, jak bylo požadováno. 3.4.1
Zápis
Tab. 8
Příklad zápisu do sonaru SRF08 (Robot electronics, 2004; vlastní návrh tabulky)
Příklad Význam
Primární USB-I2C příkaz 0x55 I2C_AD1
Adresa zařízení 0xE0 Adresa zařízení
Interní registr zařízení 0x00 Příkazový registr SRF08
Počet bajtů 0x01 Bude následovat jeden příkazový bajt
Datový bajt 0x52 Start měření v µS
Pro zápis je důležité, aby posloupnost jednotlivých bajtů byla podle Tab. 8, která navíc uvádí příklad sekvence a popisuje význam pětibajtové sekvence zasílané do modulu USB-I2C. Je nutné, aby všech 5 bajtů bylo posláno v jedné sekvenci na USB-I2C modul. Tato sekvence zapíše do příkazového registru na adrese 0x00 číslo 0x52. Jedná se o zařízení, které se nachází na adrese 0xE0.
Vlastní práce
3.4.2
27
Čtení
Pokud chceme z daného zařízení číst, je to velmi podobné jako zápis. Je však důležité přičíst +1 k adrese zařízení. Sekvence se skládá ze 4 bajtů. Jak může příkaz vypadat, popisuje Tab. 9. Tab. 9
Příklad čtení ze sonaru SRF08 (Robot electronics, 2004; vlastní návrh tabulky)
Příklad
Primární USB-I2C příkaz 0x55
Význam
I2c_AD1
Adresa zařízení
Registr čtení
0xE0+1=0xE1 0x01 Adresa Světelný zařízení senzor SRF08
Počet vrácených bajtů 0x01 Čtení 1 bajtu
Z tabulky lze vyčíst, že adresa zařízení je 0xE1, proto tento příkaz bude číst ze zařízení připojeného na adrese 0xE0. Dále vidíme, že nám bude vrácen jeden bajt s hodnotou intenzity světelného senzoru. Pokud bychom chtěli, aby bylo vráceno více bajtů, zapíšeme do čtvrtého registru (počet vrácených bajtů) vyšší číslo. Změna tohoto bajtu na hodnotu např. 0x03 při výše uvedeném příkazu, by znamenala, že bude čteno od registru 0x01 až po registr 0x03. V tomto případě by nám byly vráceny hodnoty světelného senzoru, vyšší a nižší bajt prvního echa.
3.5 Testování Pro testování bylo zapotřebí vytvořit program, který bude komunikovat se sonarem. Pro vytvoření tohoto programu autor zvolil programovací jazyk C, z důvodu kladných zkušeností a dostačujících funkcí. Samotný program je sestaven z několika metod, které se starají o nastavení COM portu, nastavení analogového zisku, nastavení měřícího rozsahu, start měření, výpis vzdálenosti na obrazovku, výpis z módu ANN a uložení do souboru.
3.6 Testovací program V programu je definován výčtový typ, pro komunikaci se sonarem pomocí modulu USB-I2C. Jaké příkazy jsou přístupné, je popsáno v Tab. 6. Na základě těchto informací byl vytvořen následující výčtový typ. enum cmds {nop=0, VERSION, NEW_ADDRESS, BATTERY, SCAN1};
Pro práci s jedním sonarem SRF08 nebylo nutné vytvářet výčtový typ pro všechny hodnoty z Tab. 6. Dále byly definovány konstanty pro práci s USB-I2C modulem podle Tab. 6. #define I2C_CMD 0x55 //čtení zápis přímo se zařízením SRF08 #define CM02_CMD 0x5a //příkazy USB-I2C modulu – použití výše uvedených příkazů z výčtového typu cmds
Vlastní práce
28
3.7 Metody testovacího programu Jak už bylo popsáno výše, testovací program se skládá z několika metod, které se starají o správnou komunikaci se sonarem. 3.7.1
Nastavení COM portu (setupComPort)
Tato metoda slouží k nastavení parametrů u předem určeného portu. Jak se nastaví číslo portu, přes který bude sonar s PC komunikovat je popsáno výše. Metoda na vstupu přebírá parametr číslo COM portu. Zde musí být zadáno stejné číslo, jako má připojený modul. V opačném případě program s tímto modulem nebude komunikovat. Samotná metoda nastaví požadované parametry na správné hodnoty. Parametry lze nastavit i ve vlastnostech, jak je popsáno výše. Je však vhodné tyto parametry nastavit právě touto metodou a mít tak jistotu správného nastavení. Proto je tato metoda také vytvořena. 3.7.2 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Nastavení analogového zesílení (setupAnalogGain) void setupAnalogGain(short int analogGain){ serialBuffer[0] = I2C_CMD; serialBuffer[1] = 0xE0; serialBuffer[2] = 0x01; serialBuffer[3] = 0x01; serialBuffer[4] = analogGain; WriteFile(hCom, &serialBuffer, 5, &n, NULL); ReadFile(hCom, &serialBuffer, 1, &n, NULL); }
Tato posloupnost příkazů nám říká, že budeme pracovat s příkazovým registrem na adrese, která je definována konstantou I2C_CMD, dále jako další následuje adresa zařízení sonaru SRF08 a to 0xE0. Následně je do pole serialBuffer uložena hodnota 0x01, což odpovídá registru analogového zesílení. Předposlední hodnota, která je do pole uložena říká, že bude následovat jeden příkazový bajt. Jako poslední je hodnota analogového zisku, která je přebrána z parametru této metody. Jaké hodnoty a co znamenají, je popsáno v Tab. 3. Funkce WriteFile se postará o poslání této 5 bajtové sekvence do USB-I2C modulu. Pokud zápis proběhne v pořádku, je vráceno pomocí funkce ReadFile hodnota 1, v opačném případě hodnota 0. 3.7.3
Nastavení měřícího rozsahu (setupRange)
U sonaru lze také nastavit měřící rozsah zapsáním do registru rozsahu. Tato metoda zajišťuje správné zapsání do tohoto registru. Pokud tedy chceme tento rozsah změnit, stačí zapsat do vstupního parametru hodnotu z Tab. 4. 1.
void setupRange(short int range){
Vlastní práce 2. 3. 4. 5. 6. 7. 8. 9. 10.
29 serialBuffer[0] serialBuffer[1] serialBuffer[2] serialBuffer[3] serialBuffer[4]
= = = = =
I2C_CMD; 0xE0; 0x02; 0x01; range;
WriteFile(hCom, &serialBuffer, 5, &n, NULL); ReadFile(hCom, &serialBuffer, 1, &n, NULL); }
Tato metoda pro nastavení měřícího rozsahu je stejná jako předchozí, která se stará o nastavení analogového zisku. Rozdíl je na řádku č. 4, kam je uložena hodnota 0x02, která odpovídá registru měřícího rozsahu. 3.7.4
Výpis výsledků na obrazovku (printRange)
Metoda přečte výsledky, které jsou uloženy v registrech sonaru. Výsledek echa je uložen do dvou jednobajtových čísel (vyšší bajt a nižší bajt). Proto je nutné tyto čísla převést na jedno dvoubajtové, co právě tato metoda řeší. Abychom věděli, v jakých jednotkách jsou zobrazeny výsledky, přebírá tato metoda ve vstupním parametru hodnotu, která určuje, v jakých jednotkách bude měřeno. Podle této hodnoty je na obrazovku vypsána měřící jednotka. Jako druhý parametr přebírá počet ozvěn, který chceme zobrazit. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
void printRange(short int unit, short int numOfEchos){ short int result[numOfEchos]; float resultSec; int k; int j = -1; serialBuffer[0] serialBuffer[1] serialBuffer[2] serialBuffer[3]
= = = =
I2C_CMD; 0xE1; 2; numOfEchos*2;
WriteFile(hCom, &serialBuffer, 4, &n, NULL); ReadFile(hCom, &serialBuffer, numOfEchos*2, NULL);
&n,
for(k=0;k
Vlastní práce
30
V této metodě je důležitý řádek č. 8, na kterém je adresa pro čtení ze sonaru 0xE1, která přísluší zařízení na adrese 0xE0. Je zde právě přičtena hodnota +1, jak je popsáno v kapitole 3.4.2. Na řádku č. 10 je do proměnné uložena hodnota, která odpovídá počtu vrácených ozvěn vynásobená číslem 2. Je to z toho důvodu, že každá ozvěna se skládá z vyššího a nižšího bajtu. O zpracování ozvěn se stará jeden for cyklus, ve kterém je na řádku č. 17 uložen výsledek do proměnné. Jak je vidět, je zde použit posun vyššího bajtu vrácené ozvěny o 8 bitů doleva. Dále je v této metodě už jen výpis na obrazovku, který nebyl do výše uvedeného kódu zahrnut. 3.7.5
Výpis z módu ANN (printANN)
Tato metoda vypíše na obrazovku hodnoty 32 registrů. Tyto registry mohou nabývat hodnoty 0, pokud není v dané vzdálenosti překážka, nebo větší než 0, když se zde překážka nachází. Princip je stejný jako předchozí metoda výpisu, liší se jen výpisem na obrazovku. 3.7.6
Uložení do souboru (saveToFile)
Jak už název napovídá, jedná se o uložení výsledku do souboru, které je vhodné pro další zpracování a vyhodnocení výsledků. Do souboru je vždy uloženo číslo echa, vyšší, nižší bajt a výsledek každého měření. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
void saveToFile(unsigned char lowByte, unsigned highByte, short int result, short int numOfEcho){ FILE *fw; int c; fw=fopen("vzorky.txt", zápis fprintf(fw, fprintf(fw, fprintf(fw, fprintf(fw,
"a+");//otevření
souboru
char
pro
"%d. ", numOfEcho); "%d ", highByte); "%d ", lowByte); "%d\n", result);//zápis do souboru
fclose(fw); }
Jak lze vyčíst z kódu, metoda přebere ze svých parametrů nižší, vyšší bajt, výsledek a číslo echa a následně se postará o uložení těchto hodnot do textového souboru.
Vlastní práce
3.7.7
31
Start měření (startRanging)
Spuštěním této metody začneme s měřením. Ze vstupního parametru je převzata hodnota, která určuje, v jakých jednotkách bude sonar vracet výsledky a v jakém režimu bude pracovat. Druhý vstupní parametr určuje, kolik ozvěn bude zpracovávat. Tato hodnota je vložena do příkazového registru. Po tomto nastavení je spuštěna metoda printRange nebo printANN (podle toho v jakých jednotkách je měřeno), která zpracuje výsledky, následně je vypíše na obrazovku a uloží do souboru pomocí metody saveToFile. 1. 2. 3. 4. 5. 6. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
void startRanging(short serialBuffer[0] = serialBuffer[1] = serialBuffer[2] = serialBuffer[3] = serialBuffer[4] =
int unit, short int numOfEchos){ I2C_CMD; 0xE0; 0x00; 0x01; unit;
WriteFile(hCom, &serialBuffer, 5, &n, NULL); ReadFile(hCom, &serialBuffer, 1, &n, NULL); Sleep(70); if(unit >=0x50 && unit <=0x52){ if(numOfEchos == 1){ printRange(unit, numOfEchos); }else{ printf("Pocet vracenych ech: %d\n", numOfEchos); printRange(unit,numOfEchos); } }else if(unit >=0x53 && unit <= 0x55){ printANN(unit); } }
V metodě je také použita funkce Sleep na řádku č. 12, která tvoří smyčku 70 ms, a tím je zaručeno, že sonar nepřijme „falešný“ odraz. Po této časové smyčce následuje rozhodování, v jakém módu bylo měřeno, aby bylo zaručené korektní vypsání výsledků na obrazovku.
3.8 Testování při výchozím nastavení Aby při testování nedocházelo k příjmům ozvěn z předchozího měření, musí být časový rozdíl mezi každým vysláním zvukového signálu minimálně 65 ms, což uvádí dokumentace. Po tuto dobu zvuk urazí, podle níže uvedeného výpočtu, vzdálenost 22,1 m.
Vlastní práce
32
Obecný vzorec pro výpočet dráhy: s = v × t [ m]
(2)
Pro aktivní sonar, obsahující vysílač i přijímač, musí být vzorec poupraven, jelikož zvuk putuje tam i zpět. Upravený vzorec pro aktivní sonar: Tento vzorec je upravený pro aktivní sonar s vysílačem a přijímačem na jedné součásti. s=
v×t [m] 2
(3)
s=
340 × 0,065 = 11,05m 2
(4)
Výpočet:
Sonar by podle tohoto výpočtu měl teoreticky zaznamenat překážku do vzdálenosti 11 m. Při výchozím nastavení jsou registry zesílení a rozsahu nastaveny na svou maximální hodnotu, tudíž by měl sonar měřit v celém svém rozsahu. Test toto však nepotvrdil. Z Tab. 10 můžeme vidět, že pro měření ve výchozím nastavení sonar vrací přesné výsledky až do hodnoty 60 cm. Od 70 cm se přesnost snižuje, avšak u této hodnoty rozdíl mezi skutečnou a naměřenou hodnotou není ještě tak výrazný. Postupně při oddalování sonaru od překážky se rozdíl zvyšuje daleko masivněji. Z Tab. 10 je více než prokazatelná nepřesnost od 140 cm. Dále už si sonar s rozeznáním překážky neví rady a přesnou vzdálenost téměř nevrátí.
Vlastní práce Tab. 10
33
Výsledky měření ve výchozím nastavení sonaru
Skutečná vzdálenost [cm] 3-70 80 100 120 130 140 150 160 170 180
Průměr ze 100 měření [cm] 3-70 79,96 99,49 119,43 129,15 134,60 136,17 134,76 137,38 136,75
Rozdíl [cm] 0,00 -0,04 -0,51 -0,57 -0,85 -5,40 -13,83 -25,24 -32,62 -43,25
Na základě těchto výsledků byl vytvořen test, při kterém je sonar namířen do volného prostoru, aby byl vyloučen příjem „falešných“ odrazů. Tento test ukázal, že chybné výsledky nejsou zapříčiněny „falešnými“ odrazy, jelikož sonar vracel hodnotu překážky v rozmezí 108-146 cm. V této situaci by měly být hodnoty registrů, kde je uložené echo, prázdné. Tab. 11
Výsledky měření ve volném prostru s žádnou překážkou
Pořadí měření. 1 2 3 4 5 6 7 8 9 10
Zaznamenaná překážka [cm] 133 109 131 123 138 146 142 133 108 136
Skutečná překážka [cm] -
Zda-li sonar dokáže změřit maximální vzdálenost překážky, která je psána v dokumentaci, nemělo ve výchozím nastavení smysl, jelikož byla patrná nepřesnost již při nižších vzdálenostech. Proto ostatní testy nemohly probíhat ve výchozím nastavení a přistoupilo se k nastavení manuálnímu.
3.9 Testování při manuálním nastavení Manuálně sonar nabízí měnit tyto parametry:
Vlastní práce
34
• analogový zisk, • rozsah měření, • režim, ve kterém je měřeno.
Nastavení maximálního rozsahu měření pracuje správně a nevrací vzdálenost překážky za touto hodnotou. Dále pak sonar umožňuje měřit v různých jednotkách. Změna těchto parametrů nečiní sonaru žádné problémy a pracuje zcela korektně. Proto první parametr, který byl nastaven ručně, byl registr analogového zisku (analog gain). Do tohoto registru byla uložena hodnota 0x00, což odpovídá analogovému zisku 94. Aby bylo zřejmé, jaký vliv má tento parametr na měření, byl opakován stejný test jako ve výchozím nastavení. Jeho výsledky jsou zaznamenány v Tab. 12. Tab. 12
Výsledky měření s nastavením analogového zisku na 0x00
Skutečná vzdálenost [cm] 3-70 80 100 120 130 140 150 160 170 180
Průměr ze 100 měření [cm] 3-70 80 100 120 130,15 140,17 150,94 160,84 170,88 181
Rozdíl [cm] 0,00 0,00 0,00 0,00 +0,15 +0,17 +0,94 +0,84 +0,88 +1,00
Jak je vidět, oproti měření ve výchozím nastavení, sonar nemá sebemenší problém překážku zachytit. Co se týče přesnosti v tomto testu, kde byla maximální překážka postavena do vzdálenosti 180 cm, vykazovala průměrnou hodnotu 99,86 %. Grafické znázornění odchylek jednotlivých měření znázorňuje Obr. 12.
Vlastní práce
Obr. 12
Grafické znázornění přesnosti měření ve výchozím a manuálním nastavení
3.9.1
Test maximálního úhlu
35
Sonar dokáže zachytit překážku, která je od něj pod vodorovným úhlem 34° a kolmá na přímku vedenou pod tímto úhlem. Tento úhel je však hraniční a hodnoty nejsou úplně přesné. Při posunování překážky po přímce pod tímto úhlem vznikal problém. Do zhruba 20 cm sonar překážku zaznamenal, od této hodnoty nastalo „hluché místo“ až do 40 cm, dále už byly překážky opět rozeznány. Pokud by byla překážka na stejné úrovni, ale pod menším úhlem, byla by zachycena, jelikož je blíže k sonaru. Jak je situace měřena, znázorňuje Obr. 13 Při rozestavění překážky pod nižším úhlem než zmiňovaných 34°, nevznikají žádné problémy se zachycením ozvěny.
Vlastní práce
36
Obr. 13
Ilustrační obrázek měření pod úhlem
3.9.2
Test více echo
Při testování vícenásobného echa bylo zjištěno, že pokud jsou od sebe vzdáleny dva sousedící předměty méně než cca 66 cm, jsou výsledky nepřesné. Když je mezi tuto vzdálenost vložen další předmět, sonar ho nezaznamená a je pro něj neviditelný. Jinak sonar dokáže překážky zachytit a vrací jejich vzdálenost od sonaru. Pokud už se za poslední překážkou další nenachází, je jako další ozvěna vrácena hodnota 0. 3.9.3
Test ANN
Při měření v módu ANN je čteno z 32 registrů. Jedná se o registry 4-35 a každý odpovídá vzdálenosti 352 mm. Pokud se nachází v daném rozmezí překážka, je do registru uložena hexadecimální hodnota FF (255) pokud ne, nachází se v něm hodnota 0. Tab. 13
Možný výstup v módu ANN
Registr 4 5 6 7 8 9
Vzdálenost [m] 0–0,352 0,353–0,705 0,706–1,058 1,059–1,411 1,412–1,764 1,765–2,117
Hodnota 0 255 255 0 255 0
Z Tab. 13 je patrné, že první překážka se nachází v rozmezí 35–70 cm, druhá v 70–105 cm a třetí ve vzdálenost 141–176 cm.
Vlastní práce
37
Při měření více překážek je nutné si uvědomit, že bližší překážka nemůže být větší než překážka za ní. Pokud by tomu tak bylo, sonar ji nedokáže zachytit, jelikož se k ní zvukový signál nemůže dostat. Tento mód dokázal rozeznat překážky vzdálené od sebe 40 cm. V případě, že řada několika za sebou jdoucích registrů má po přečtení hodnotu 0, je pravděpodobné, že se zde nachází stěna nebo velký předmět, za který už vyslaný signál nemůže putovat a tím pádem zaznamenat další překážky. 3.9.4
Testování v µs
Sonar SRF08 nabízí jako další možnost nastavení měření v µs, zápisem do příkazového registru hodnoty 0x52. Při možnosti práce s časovým úsekem, jsem ji chtěl využít k přesnějšímu měření vzdálenosti. Možnost práce s časovým úsekem měla být původně využita k přesnějšímu měření vzdálenosti. Přepočítat tuto hodnotu nebyl problém, výsledky však nedopadly podle očekávání. Na centimetry sonar vzdálenost změřil, ale milimetry už byly nepřesné. 3.9.5
Závislost identifikace na velikosti předmětu
Pro zobrazení této závislosti, bylo změřeno několik hodnot, ze kterých byl následně vytvořen graf (viz Obr. 14).
Obr. 14
Závislost identifikace na velikosti předmětu
Z grafu je patrné, že sonar SRF08 nedokáže zachytit překážku do velikosti menší než 2 mm. Od této hodnoty již překážku dokáže identifikovat, avšak jen na určitou vzdálenost. Rapidní rozdíl mezi maximální naměřenou hodnotou je právě mezi velikostmi předmětu 2 mm a 5 mm a to přesně 112 cm. Mezi ostatními velikostmi je už tento rozdíl postupný. Z tohoto testu tedy vyplývá, že velikost předmětu má vliv na maximální vzdálenost, ve které je překážku možno zachytit.
Vlastní práce
3.9.6
38
Testování maximální vzdálenosti
Sonar by měl podle dokumentace zaznamenat překážku ve vzdálenosti 6 m. Ve skutečnosti je to za touto hranicí a to 690 cm s přesností okolo 3 cm. Do této vzdálenosti můžeme sonar považovat za spolehlivý. Za touto hranicí vzdálenost ne vždy vrátí nebo ji vůbec nezaznamená.
3.10 Testování sonaru Ultrasonic senzor Abychom mohli provést následné doporučení sonaru pro použití v navigaci mobilního robota používaného v laboratoři ÚI PEF, bylo potřeba otestovat stávající sonar v této laboratoři a to Ultrasonic senzor ze stavebnice Mindstorms. 3.10.1
Přesnost měření
Tab. 14
Přesnost měření sonaru NXT (Ultrasonic senzor)
Skutečná vzdálenost [cm] 3 5 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180
Průměr ze 100 měření [cm] 5 6,31 10,45 20,82 29 38,97 49,03 58,88 69 79,2 88,94 98 108,33 119,51 129,27 139,02 148,28 158,02 169,41 178
Rozdíl [cm] +2,00 +1,31 +0,45 +0,82 -1,00 -1,03 -0,97 -1,12 -1,00 -0,08 -1,06 -2,00 -1,67 -0,49 -0,73 -0,98 -1,72 -1,98 -0,59 -2,00
Z Tab. 14 je patrné, že sonar nedokáže změřit předmět vzdálený méně než 5 cm a do naměřené vzdálenosti vrací právě tuto hodnotu. Od této vzdálenosti nemá problém překážku identifikovat, přesnost však kolísá a sonar nedokáže
Vlastní práce
39
změřit žádnou vzdálenost s nulovou odchylkou. Průměrná odchylka od měřené hodnoty je u tohoto sonaru okolo -0,69 cm. 3.10.2 Závislost identifikace na velikosti předmětu Tato závislost byla měřena stejně jako u sonaru SRF08.
Obr. 15
Závislost identifikace na velikosti předmětu
3.10.3 Maximální vzdálenost Při měření maximální vzdálenosti, kterou je sonar schopen zachytit, byl od předmětu sonar postupně oddalován až do maximální vzdálenosti. Aby bylo jasné, jak se sonar chová při nezachycení překážky, byl namířen do volného prostoru. Při této situaci vrací hodnotu 255. Z toho můžeme také usoudit, že vzdálenost se zapisuje do jednobajtového registru a sonar by měl tedy změřit maximální překážku ve vzdálenosti 255 cm. Výsledkem tohoto měření byla hodnota 247 cm. Při větších vzdálenostech se sonar nechoval standardně a občas překážku změřil nebo vrátil hodnotu 255.
3.11 Porovnání sonaru SRF08 a Ultrasonic senzoru Pro porovnání těchto dvou senzorů byla použita data z jednotlivých testů této práce. Měřené situace byly pro oba sonary prováděny stejně, jinak by porovnání nemělo smysl.
Vlastní práce
3.11.1
Porovnání přesnosti měření
Obr. 16
Porovnání přesnosti sonarů SRF08 a Ultrasonic senzoru
40
Z Obr. 16 je patrné, že přesnější je sonar SRF08, nicméně rozdíl mezi oběma sonary není velký. SRF08 měří s průměrnou odchylkou 0,21 cm a Ultrasonic senzor -0,69 cm. Z toho plyne, že první zmiňovaný vzdálenost přeměřuje, druhý naopak podměřuje. Největší rozdíl je však v tom, že sonar SRF08 je přesný do 120 cm s odchylkou 0 cm, naopak Ultrasonic senzor nevrací přesné hodnoty v celém svém rozsahu.
Vlastní práce
3.11.2
Porovnání závislosti identifikace na velikosti předmětu
Obr. 17
Porovnání závislosti identifikace na velikosti předmětu
41
V tomto testu je jednoznačně vidět značný rozdíl mezi oběma sonary. Ačkoliv oba sonary dovedou předměty se stejnou velikostí zaznamenat, velký rozdíl je ve vzdálenostech, na kterou je dovedou identifikovat. Od předmětu s velikostí 0,5 cm se tento rozdíl pohybuje okolo jednoho metru ve prospěch sonaru SRF08. 3.11.3
Porovnání maximální vzdálenosti
Z testů vyplynulo, že sonar SRF08 dokáže spolehlivě zachytit překážku ve vzdálenosti 690 cm. Rozdíl maximální vzdálenosti obou sonarů je tedy více než 4 m (viz Obr. 18).
Obr. 18
Porovnání maximální vzdálenosti sonaru SRF08 a Ultrasonic senzoru
Vlastní práce
3.11.4
42
Porovnání maximálního úhlu
Tento test ukázal výhodu Ultrasonic senzoru, který dokáže zaznamenat překážku pod maximálním úhlem 39° oproti SRF08, kde je tento úhel 34°. Přestože je tato výhoda zřejmá, v konečném důsledku není až tak podstatná, jelikož např. při mapování prostředí dochází nejčastěji k měření v přímém směru, ne při uvedených úhlech.
Závěr
43
4 Závěr Cílem bakalářské práce bylo testování vybraného sonaru, který byl vybrán na základě vypracovaného přehledu dostupných sonarů na trhu, a následné doporučení pro použití sonaru v navigaci mobilního robota. V literární rešerši bylo vysvětleno několik pojmů pro uvedení do této problematiky a zároveň vytvořen přehled sonarů dostupných na trhu. V neposlední řadě je popsán sonar SRF08, který byl vybrán pro testování. Jsou popsány příkazy, propojení s počítačem a všechny sounáležitosti k tomu, aby bylo možno se sonarem pracovat. V praktické části je popsán výběr sonaru a jeho testování. Aby bylo možné sonar testovat, musel být vytvořen program na testování. Ten je v této kapitole popsán a je na něm vysvětleno několik příkazů pro práci se sonarem, které byly teoreticky popsány v literární rešerši. Následně probíhalo testování samotného sonaru. Bylo provedeno několik testů, ze kterých byla vytvořena a následně zpracována data. Aby bylo možné provést doporučení, byl také otestován sonar používaný v laboratoři ÚI na PEF. Tento sonar byl testován ve stejných situacích jako SRF08. Po otestování obou zmiňovaných sonarů bylo provedeno porovnání. Ačkoliv sonar Ultrasonic senzor ze stavebnice Mindstorm disponuje dostačujícími parametry, sonar SRF08 jej předčil v několika ohledech. V první řadě je přesnější, což lze považovat za velký přínos. Navíc dokáže měřit menší vzdálenosti a také umožňuje zachytit daleko více vzdálené předměty. Dále dokáže zachytit menší překážky na delší vzdálenosti, rozdíl činí zhruba 1 m. V neposlední řadě umožňuje měření v módu pro zpracování vícenásobného echa a módu ANN, které však v některých situacích nepracuje zcela precizně. Při zavedení omezujících požadavků, lze v těchto módech spatřovat určitý potenciál využití.
Literatura
44
5 Literatura AINSLIE, MICHAEL A. Principles of sonar performance modelling. Heidelberg [Germany]: Springer, 2010. ISBN 35-408-7661-8. BERNAT, PETR. Akustika, vznik a šíření zvuku, frekvenční analýza a syntéza, sluchový vjem zvukového signálu [online]. 2011 [cit. 2012-04-02]. Dostupné z: http://homen.vsb.cz/~ber30/texty/varhany/anatomie/pistaly_akustika.ht m. Elements of Submarine Operation. U.S. Navy museum [online]. 2011 [cit. 201204-07]. Dostupné z: http://www.history.navy.mil/branches/teach/dive/elem.htm. FRENZEL, LOUIS E. Electronics explained: the new approach to learning electronics. Boston [Massachusetts, USA]: Newnes, ©2010, xxvii, 329 p. ISBN 18-561-7700-9. JONES, GARETH. Echolocation. Current Biology [online]. 2005, roč. 15, č. 13 [cit. 2012-04-02]. ISSN 09609822. Dostupné z: http://linkinghub.elsevier.com/retrieve/pii/S096098220500686X. NOVÁK, PETR. Mobilní roboty: pohony, senzory, řízení. Vyd. 1. Praha: BEN – technická literatura, 2005, 247 s. ISBN 80-730-0141-1. NOVÁK, PETR. Ultrazvukové sonary [online]. 2004 [cit. 2012-04-07]. Dostupné z: http://www.odbornecasopisy.cz/index.php?id_document=32330. NOVELLINE, ROBERT A. A LUCY FRANK SQUIRE. Square’s fundamentals of radiology. 5th ed. Cambridge, Mass.: Harvard University Press, 1977, xiv, 621 p. ISBN 06-748-3339-2. OEM USB 2.0 propojovací 1.8m A-B - bílý. Alza.cz [online]. 2012 [cit. 2012-0407]. Dostupné z: http://www.alza.cz/kabel-usb2-0-propojovacid39974.htm. ROSINA, J., H. KOLÁŘOVÁ A J. STANEK. Biofyzika pro studenty zdravotnických oborů. Vyd. 1. Praha: Grada, 2006, 230 s. ISBN 80-247-1383-7. SRF08 Ultrasonic range finder: Technical Specification. Robot electronics [online]. 2004 [cit. 2012-04-07]. Dostupné z: http://www.robotelectronics.co.uk/htm/srf08tech.html. ŠVEHLA, ŠTEFAN A ZDENKO FIGURA. Ultrazvuk v technologii. Vyd. 1. Bratislava: Alfa, 1984, 528 s. ISBN 63-482-84. Theory of Operation. Olympus [online]. 2004 [cit. 2012-04-02]. Dostupné z: http://www.olympus-ims.com/pt/ndt-tutorials/thicknessgage/introduction/operation. THOMAS, J. A., C. MOSS A M. VATER. Echolocation in bats and dolphins. Chicago: The University of Chicago Press, ©2004, xxvii, 604 p. ISBN 0226795993.
Literatura
45
Ultrasonic sonar sensors. Generation Robots [online]. 2007 [cit. 2012-04-07]. Dostupné z: http://www.generationrobots.com/ultrasonic-sonar-sensorsfor-robots,us,8,19.cfm. USB-I2C USB to I2C Communications Module: Technical Specification. Robot electronics [online]. 2004 [cit. 2012-04-07]. Dostupné z: http://www.robot-electronics.co.uk/htm/usb_i2c_tech.html.
Seznam obrázků
46
Seznam obrázků Obr. 1
Zvukové spektrum
10
Obr. 2
Znázornění sluchového pole
11
Obr. 3
Zvuková vlna
11
Obr. 4
Pasivní sonar
14
Obr. 5
Aktivní sonar
14
Obr. 6
Možné situace při měření
15
Obr. 7
Některá omezení ultrazvukových senzorů
15
Obr. 8
Sonar SRF08
18
Obr. 9
Připojení I2C
22
Obr. 10
Propojení modulu USB-I2C se sonarem SRF08
25
Obr. 11
Propojovací kabel USB A-B
25
Obr. 12 Grafické znázornění přesnosti měření ve výchozím a manuálním nastavení
35
Obr. 13
Ilustrační obrázek měření pod úhlem
36
Obr. 14
Závislost identifikace na velikosti předmětu
37
Obr. 15
Závislost identifikace na velikosti předmětu
39
Obr. 16 Porovnání přesnosti sonarů SRF08 a Ultrasonic senzoru
40
Obr. 17 Porovnání závislosti identifikace na velikosti předmětu
41
Obr. 18 Porovnání maximální vzdálenosti sonaru SRF08 a Ultrasonic senzoru
41
Seznam tabulek
47
Seznam tabulek Tab. 1
Přehled registrů sonaru SRF08
18
Tab. 2
Příkazy zahájení měření a změna adresy I2C
19
Tab. 3 Tabulka určující význam hodnoty registru analogového zesílení
20
Tab. 4 Tabulka určující maximální rozsah, který přísluší hodnotě registru rozsahu
21
Tab. 5
Příkazové registry modulu USB-I2C
23
Tab. 6
Příkazy modulu USB-I2C
23
Tab. 7
Parametry jednotlivých sonarů
24
Tab. 8
Příklad zápisu do sonaru SRF08
26
Tab. 9
Příklad čtení ze sonaru SRF08
27
Tab. 10
Výsledky měření ve výchozím nastavení sonaru
33
Tab. 11 Výsledky měření ve volném prostru s žádnou překážkou
33
Tab. 12 Výsledky měření s nastavením analogového zisku na 0x00
34
Tab. 13
Možný výstup v módu ANN
36
Tab. 14
Přesnost měření sonaru NXT (Ultrasonic sezsor)
38
Přílohy
48
Přílohy Příloha č. 1
Zdrojový kód testovacího programu (viz CD na zadním obalu práce)