SRF05 jak ho možná neznáte

Ultrazvukové čidlo vzdálenosti SRF05 patří mezi často používané senzory. Nebudeme se zde zabývat tím, jak toto čidlo ovládat či vyhodnocovat, zaměříme se jen na to, jak je schopno „vidět“ materiály ve svém okolí a co může způsobit neočekávané výstupy z hlediska uživatele.

Asi každý, kdo s tímto nebo jiným ultrazvukovým čidlem pracoval, mi dá za pravdu, že v některých situacích jsou výsledky vynikající, stabilní a přesné, v jiné situaci jsou výsledky kulantně řečeno neočekávané, překvapující a nepochopitelné. Je to vina čidla a jeho vad? Jsem přesvědčen, že drtivé většině případů ne, naopak čidlo pracuje naprosto přesně jak má a měří to co může měřit, jen my nevnímáme správně fyzikální vlastnosti prostředí, do něhož jsme čidlo dali, nebo je vnímáme, ale nerespektujeme.

Zaměřit pozornost na to, co toto čidlo (respektive ultrazvuk) zvládne, mě donutil případ, kdy malý robot celkem dobře fungoval v místnosti s podlahou pokrytou PVC, jen občas se choval podivně a místo toho, aby se rozjel do směru, kde měl nejvolnější cestu, se vydal úplně někam jinam. Přičítal jsem to zprvu nedokonalosti čidla. Stejný robot postavený na hladkou betonovou podlahu ale vůbec nebyl schopen pohybu, stále detekoval překážky kolem sebe. Ukázalo se, že příčinou je až přílišná citlivost čidla, která ve spojení s jeho jednoduchým výstupem (detekuje jen jednu nejbližší překážku), dává jiné výsledky, než čekáme.

IMGP1000b

Ultrazvukové čidlo vzdálenosti SRF05

Jak čidlo pracuje? Po spuštění pulzem vygeneruje vysílač osm impulzů, v tuto dobu je výstup příjímače zablokován. Pak se přijímač otevře a čeká na odraz. Na prvním obrázku je nahoře vysílaný signál, dole odraz snímaný přímo z přijímače bez jakéhokoli zesílení. V tomto případě byla asi 30 cm proti senzoru kolmo rovná hladká plocha, jiný odraz ani přijít nemohl. Odraz od blízké a kolmé překážky je poměrně silný, nicméně není ostře ohraničený, protože nejprve přijde odraz z místa přesně v ose senzoru (nejkratší vzdálenost), pak postupně odrazy od tohoto bodu vzdálenější (okraje laloku vyzařovací charakteristiky), pak případně i výsledky vícenásobných odrazů.

hantek527_1

Nahoře vyslaný signál, dole odraz od jediné překážky

Na dalším obrázku je podobná situace, ale 15 cm před senzorem byla postavená destičková 9V baterie a za ní ve vzdálenosti 35 cm kolmé pozadí. Odrazy jsou dva jasně odlišené. I když je baterie celkem malá, je blíž a její odraz je výraznější. Čidlo SRF05 vyhodnotí pouze první (nejbližší) odraz, i kdyby byl slabý, jakékoli další ignoruje.

hantek527_2

Dvojitý odraz – ve vzdálenosti 15 cm byla 9V baterie, ve vzdálenosti 35 cm pozadí

Ultrazvuk „vidí“ materiály zcela jinak, než jak je vnímáme my zrakem. Je-li materiál homogenní, tuhý a s hladkým povrchem, pak se ultrazvukový „paprsek“ od tohoto materiálu odrazí. Je-li překážka kolmá a rovná, má výborný odraz a je detekovatelná na velkou vzdálenost. Stejná překážka, pokud na ní ale paprsek dopadne pod úhlem, se zachová jako zrcadlo (úhel odrazu = úhel dopadu) a odrazí paprsek stranou, případně může stejným způsobem odrazit směrem zpět i odraz od jiné překážky, takže vlastně senzor „vidí za roh“. Je-li materiál měkký, pružný a jemně porézní, většinu ultrazvukové energie pohltí, má velmi slabý odraz a je detekovatelný jen na malou vzdálenost. Je-li materiál nehomogenní (obsahuje praskliny, zrna, bubliny, ….), pak energii ultrazvuku částečně pohltí, částečně odrazí, ale spíše rozptýlí do okolí. Důsledkem je to, že překážka má sice slabší odraz (je detekovatelná na menší vzdálenost), ale neumožní „vidět za roh“, naopak se dobře vyhodnotí, i když na ní dopadá paprsek pod ostrým úhlem.

Co se vlastně stalo při původních pokusech s robotem? „Zmatkování“ na podlaze pokryté PVC způsobilo to, že čidlo někdy vyhodnotilo jako překážku spáry mezi pruhy podlahové krytiny, nehomogenitu, na které nastával odraz. Zejména pokud jel robot kolmo na tuto spáru, i když byla správně zavařená provazcem PVC a nijak nevystupovala ani nevytvářela štěrbinu, viděl ji jako nehomogenitu a považoval za masivní překážku. Senzor fungoval zcela správně, ale byl pro danou situaci až příliš citlivý.

Na betonu byla situace podobná, odrazy způsobil už hrubý povrch betonu, takže měl robot „pocit“ že stále naráží vpředu na překážku. Když jsem citlivost snížil, rozjel se, ale vyhýbal se každé prasklině v betonu, i takovým, do kterých by se sotva podařilo zasunout okraj listu papíru.

Dál jsem se zaměřil na vyzkoušení různých materiálů ve dvou situacích, jednak ve funkci podkladu, po kterém robot jede, přitom jeho SRF05 míří rovnoběřně s povrchem a je ve výšce 2, 4, 6 nebo 8 cm nad ním, za druhé na případ, kdy je před senzorem rovná překážka (mantinel, hrazení) pod úhlem 45º, což sice není nejhorší případ, ale je poměrně častý.

srf05_1

Zkoušení materiálu podkladu

První situaci ukazuje obrázek. Ve vzdálenosti přesně 150 cm byla kolmá rozměrná deska, takže když senzor určil jako překážku přímý odraz od podložky, detekoval příslušně (výrazně) menší vzdálenost, když naopak došlo k výraznému zrcadlovému odrazu od podložky a následně od desky, byla vzdálenost o několik málo centimetrů delší. A toto jsou výsledky pro 2 / 4 / 6 / 8 cm výšky senzoru nad povrchem:

PVC (mimo spáry)             153 / 150 / 150 / 150 - při malé výšce zrcadlový odraz, jinak není vidět
koberec (Jekor)              150 / 150 / 150 / 150 - není vidět
dřevo hoblované (nelak)      150 / 150 / 150 / 150 - není vidět, ale parkety by vyšly jinak!
sklo                         152 / 150 / 150 / 150 - při malé výšce zrcadlový odraz, jinak není vidět
komatex (mikropěna PVC)      154 / 150 / 150 / 150 - při malé výšce zrcadlový odraz, jinak není vidět
reklamní PVC folie hladká    153 / 150 / 150 / 150 - při malé výšce zrcadlový odraz, jinak není vidět
hliníkový plech lakovaný     152 / 150 / 150 / 150 - při malé výšce zrcadlový odraz, jinak není vidět
papír (karton)               152 / 150 / 150 / 150 - při malé výšce zrcadlový odraz, jinak není vidět
molitan (deska 1cm)          150 / 150 / 150 / 150 - není vidět                 
polystyren (bílý, deska 1cm)   7 /  12 /  18 / 150 - materiál silně odráží (rozptyluje) i postranní 
                                                     vyzařování vysílače, jako podklad nevhodný
lepenka (dvojvrstvá vlnitá)    5 /   7 /  11 /  14 - materiál silně odráží (rozptyluje) i postranní 
                                                     vyzařování vysílače, jako podklad nevhodný

Co to v praxi znamená? V tomto případě je žádoucí, aby ani při malé výšce senzoru nad podložkou neodrážel materiál podložky signál přímo zpět, tomu vyhověly kromě pěnového (kuličkového) polystyrénu a vlnité lepenky všechny zkoušené materiály. Podmínkou ale je, aby byl materiál homogenní beze spár, jinak to dopadne jako na betonu s drobnými prasklinami. Podobně keramické dlaždice, které se jednotlivě chovají jako sklo, vytvoří na spárách odrazy jako od překážek.

Možnosti, jak se zbavit nežádoucích odrazů od spár, jsou nejméně dvě.  V první vyjdeme z toho, že tyto odrazy jsou relativně slabé, ale problém je, že přijdou dřív, než odraz od skutečné překážky. Musíme tedy snížit citlivost senzoru respektive omezit výkon vyzařování ultrazvuku. To se dá udělat třeba tak, že před výstup vysílače nalepíme tenký molitan, něco mezi 5 a 10 mm. Celkově se tím sníží dosah senzoru, ale na krátké vzdálenosti pak „vidí“ jen to, co má. Druhá možnost je nasměrovat senzor mírně nahoru tak, aby se podložky jen dotkl spodní okraj vyzařovacího laloku. Nevýhodou je, že se tím významně sníží dosah viditenosti nízkých překážek.

srf05_2

Zkoušení odrazu od překážky

Druhý pokus se zaměřil na detekování překážky nastavené pod úhlem 45º. V podstatě mohou nastat tři možnosti. Překážka uktrazvuk odráží a rozptyluje, takže ji senzor „vidí“ správně a změřená vzdálenost odpovídá, i když podle intenzity signálu může být v určité toleranci – když je odraz silný, změří se menší vzdálenost proti bodu, kde okraj laloku narazí na překážku, když je slabý, vzdálenost proti (téměř) středu laloku v ose senzoru.

Druhou možností je, že se signál odrazí jako od zrcadla a putuje dál, pak se může odrazit od jiné překážky a vrátit stejnou cestou k senzoru, takže vlastně „vidíme za roh“ a něco úplně jiného, než čekáme. Tato možnost se ukázala jako velmi častá u všech materiálů, které dobře zrcadlově odrážely a byly vhodné jako podložky. Například 0,5 m vzdálená deska pod úhlem 45º spolehlivě odrážela paprsek do stropu, který byl 2 m nad ní. Detekovaná vzdálenost překážky byla 2,5 m a nešlo nijak zjistit, že je to měřené po zalomené dráze „za roh“.

Třetí možnost je, že materiál ultrazvuk pohltí a rozptýlí tak účinně, že senzor nic nevidí a signalizuje volný prostor. Takových materiálů není mnoho, ale může takto fungovat sestava tří plátů měkkého molitanu o tloušťce 1 cm ve vzdálenosti kolem 10 cm za sebou. Jeden plát je prakticky „průhledný“, signál jen zeslabí, ale víc plátů s mezerami jej pohltí a odrazí se jen minimum. Kdyby ale někdo chtěl ultrazvuk opravdu dobře pohltit, je tato možnost dost nepraktická, za to výborně funguje profilovaný molitan s „vlnami“, který se používá jako výstelka například do kufrů na dražší přístroje (je na obrázku). Tento molitan není senzorem vidět ani na malou vzdálenost, je to prostě z hlediska ultrazvuku“černá díra“ už při tloušťce kolem 4 cm.

IMGP0997b

Tvarovaná molitanová výstelka s vlnami

Jak zkoušky materiálů dopadly?

PVC                          zjistí se na vzdálenost nejvýš 20 cm, dál je vidět odraz ze strany
dřevo hoblované (nelak)      dává velmi nestálé výsledky, detekují se nehomogenity ve dřevě, většinou
                             je vidět správně, ale je to nespolehlivé
sklo                         zjistí se na vzdálenost nejvýš 20 cm, dál je vidět odraz ze strany
komatex (mikropěna PVC)      zjistí se na vzdálenost nejvýš 20 cm, dál je vidět odraz ze strany
reklamní PVC folie hladká    zjistí se na vzdálenost nejvýš 18 cm, dál je vidět odraz ze strany
hliníkový plech lakovaný     zjistí se na vzdálenost nejvýš 20 cm, dál je vidět odraz ze strany
papír (karton)               zjistí se na vzdálenost nejvýš 16 cm, dál je vidět odraz ze strany
molitan (deska 1cm)          jedna vrstva 1 cm se jeví jako průhledná, od 2 cm výš částečně nespolehlivě 
                             odráží signál k senzoru, nikdy neodráží jako zrcadlo
polystyren (bílý, deska 1cm) je spolehlivě viditelný, nikdy neodráží jako zrcadlo
lepenka (dvojvrstvá vlnitá)  vždy spolehlivě viditelný, nikdy neodráží jako zrcadlo

Tyto výsledky se hodí zejména při přípravě dráhy (bludiště) pro roboty. Je-li cílem prověřit algoritmus robotů a dát jim mantinely, které se ultrazvukem vyhodnotí opravdu spolehlivě, je ideální vlnitá dvouvrstvá lepenka (samozřejmě vlnami směrem k senzoru) nebo desky pěnového polystyrénu. Oba materiály jsou dostupné a levné, lepenka se prodává v rolích od šíře 10 cm asi do metru, polystyren nejčastěji v deskách 50×100 cm. Důležité je uvědomit si, že na podložku a vertikální překážky jsou v podstatě opačné požadavky a neměly by být z podobných materiálů.

IMGP1012b

Dvouvrstvá vlnitá lepenka

Je-li naopak cílem „potrápit“ roboty a vyzkoušet jejich odolnost v různém prostředí, vynutit si spolupráci několika senzorů pracujících na různých principech, pozorovat, jak si poradí se situací, kdy každý ze senzorů hlásí něco jiného, pak stačí použít některý z prvních sedmi materiálů. Dokonalým chytákem pro ultrazvuk je překážka z profilovaného molitanu.

Výsledky lze ale použít i jinak. Už jsem zmínil možnost bez zásahu do elektroniky snížit výkon ultrazvukového vysílače a tím celkovou citlivost senzoru nalepením molitanové zátky nebo kloboučku podobného molitanovému krytu sluchátek. Další vyzkoušená možnost, které ale vyžaduje pečlivé seřízení, je malou ploškou odklonit část ultrazvukového paprsku do strany a tím rozšířit „zorný úhel“ na více než 90º, jediný senzor pak vyhodnotí menší ze vzdáleností v přímém směru nebo do boku. Mělo by jít použít i dvě plošky a „vidět“ v úhlu až 180º, ale to jsem už nezkoušel. Pro tyto účely by asi byly lepší senzory, které používají společný prvek pro vysílání i příjem (například SRF02), ale i s SRF05 to jde.