Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Postup stavby, dotazy, úspěchy, slepé uličky a zkušenosti
Uživatelský avatar
gilhad
Příspěvky: 263
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od gilhad »

Napíšu, co mě k tomu napadá, aby mi to buď někdo zkušenější vyvrátil či potrvrdil, nebo aby si případně někdo mohl naopak říct "to je zajímavý náhled, nad tím se zamyslím".

Ultrazvuk funguje tak, že senzor nejdřív vyšle nějaký signál a potom čeká, až takovýto signál přijde a z doby odezvy a rychlosti zvuku spočte vzdálenost, kterou signál urazil - tedy obvykle součet cesty tam a zpět, i když u různých odrazů to může být zcela jinak, a půlku té vzdálenosti považuje za vzdálenost od překážky.
Když je senzorů víc, tak je potřeba brát v úvahu jejich rozmístění a z něj plynoucí nestejnost délky cesty tam a cesty zpátky.
Navíc se ultrazvuk šíří v kuželu a odráží ode všech možných překážek, ale senzor obvykle vyhodnotí jen první zaznamenaný odraz, tedy první překážku.
Chytrý senzor může vyhodnotit těch odrazů víc a dva chytré senzory z toho můžou vypočítat souřadnice "všech překážek v doslechu" (no aspoň pár nejbližších a největších) - viz Petr Kubáč
http://petr-kubac.blog.cz/1212/sonary-1 ... ne-nedelat
http://petr-kubac.blog.cz/1212/sonary-2 ... le-spravne
http://petr-kubac.blog.cz/1212/sonary-3 ... -ultrazvuk
http://petr-kubac.blog.cz/1212/sonary-4 ... a-moznosti
http://petr-kubac.blog.cz/1211/vidlakov ... ovac-s-avc
http://petr-kubac.blog.cz/1211/proc-sta ... ni-senzory

Když jsou dva roboti vedle sebe (nebo jeden s mnoha čidly), tak může snadno dojít k tomu, že jeden pískne, pak pískne ten druhý a pak ten druhý uslyší prvního (a najednou má překážku takhle strašně blízko), a pak ten první uslyší druhého (a má překážku sice dál, ale pořád ještě blíž, než tvrdí realita) a teprve pak k nim dorazí ty jejich vlastní hvizdy, ale jako druhé a vícté v řadě už jsou ignorovány.

Tady by pomohlo, kdyby každý hvízdal na jiné frekvenci a tak byl schopen rozlišit cizí a svoje, ale jedna řada čidel asi pojede na stejné frekvenci, takže tohle moc nepomůže. A i kdyby si to ladil každý sám, nikde není záruka, že se mu do stejného ladění netrefí i někdo jiný. Takže rozumnou šanci by mělo až náhodné skákání po několika (hodně) frekvencích, kde šance, že někdo jiný bude sledovat dostatečně stejný vzorec je dostatečně nepatrná.

Nedokonalým přiblížením by mohlo být aspoň pískání v nepravidelných intervalech a použití podobného triku, jako u měření svítivými diodami, kde robot provede delší sérii měření při vlastnoručním blikání ledkou a tím, že od sebe odečte signály při svítící a při zhasnuté ledce, tak mu zbudou jen ty signály, které se mění stejně rychle, jako bliká ta jeho ledka - s trochou štestí tedy jen jeho vlastní signál a vše ostatní se poodčítá. Jenže ultrazvukem se nedá "blikat" tak rychle jako světlem a pořád je potřeba blikat jinak, než kdokoli jiný.

Pokud by někdo zvládnul Kubáčovy stereoskopické ultrazvuky, tak má velkou šanci použít extra chytrý postup, kdy ta měření dělá nepravidelně a spočte celou mapu a pokud se mu na několika mapách určitá měření vždy shodují, tak jsou nejspíš pravá a pokud se některá nahodile objevují a mizí, tak jsou nejspíš fantómová - ale pořád je potřeba použít jiné pískací schéma, než kdokoli jiný a nejlépe i než libovolná kombinace ostatních.

Problém je v tom, že už jeden stereo ultrazvuk dá procesoru docela zabrat a natož více takových a u každého porovnávání řady minulých map - to už je pomalu na výpočetní cluster arduin.

Pokud bych chtěl mít spoustu chytrých senzorů okolo robota, tak bych asi dal přednost centrálnímu všesměrovému pískání ze středu robota, nejlépe ze stožáru (a buď všesměrovým reproduktorem, nebo hodně silným nahoru , nejlépe do zavěšené koule, co to odrazí do všech stran stejně, nebo kruhu vzájemně spojených malých repráčků, co každý pokrývá jednu z překrývajících se výsečí - a zesílený signál vedl jedním drátem až k nim a až mezi nimi to rozdělil pomocí hvězady stejně dlouhých drátů už bez další elektroniky) , a senzorům rozmístěným po obvodu kruhu, protože to aspoň některé výpočty zjednoduší - a stačí mi generovat jednu náhodnou sekvenci a nemusím řešit vzájemné ovlivňování svých senzorů mezi sebou..

---
Tolik mé úvahy a varování na závěr: zatím jsem experimentálně jen ověřil, že ze senzoru mi na stole lezou nějaká data, která občas nejsou v křiklavém rozporu s realitou, čili u mě jde jen o teoretické úvahy nepodložené praxí.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1523
Registrován: 16 úno 2013, 14:26

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex »

Úvahy jsou to zajímavé, takže mám další materiál k přemýšlení ;)

Vím, že ultrazvuky nejsou ani zdaleka dokonalé, jak to ale tedy z dostupných prostředků vyřešit lépe? Zadání je vcelku prosté, potřebuji vyřešit detekci překážek v okolí robota :)
"all your robots are belong to us"
robodoupe.cz
Uživatelský avatar
gilhad
Příspěvky: 263
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od gilhad »

Rekl bych, ze "spravne" je udelat nekolik stereo mericu rizenych nahodnymi sekvencemi z centralniho majaku s promenlivou frekvenci - ale to je teda megaprojekt.

Asi by stalo za to aspon kuchnout ty senzory a udelat tam elektroniku, ktera bude hlasit nejen tu nejblizsi prekazku, ale aspon takovych 5, nebo do rozumne vzdalenosti (co ja vim, treba metr, to uz by se melo dat uridit vyhybani) - dat centralni majak na nahodne piskani a z nekolika mereni po sobe vyhodit vsechny prekazky, ktere v nekterych chybely (s toleranci aspon dvojnasobku vzdalenosti, nez ten robot za tu dobu ujel).

minimalisticky aspon dat centralni zdroj nahodnych pulzu a posilat to na neupravene senzory bud po jednom, nebo v nejakem vtipnem obrazci, aby se nerusily (tedy pokud jsou dost blizko, bliz nez meri, tak to poslat sousednim a doufat, ze to jeste bude v pasmu "pocatecniho sebeohluseni" a tudiz preslechy budou jen odrazy od prekazek a nebo to v pripade velkeho a pomaleho robota dat na opacne konce, s tim, ze clovek bud dokaze ty repraky odrusit, nebo riskuje fiktivni prekazku z primeho preslechu v pulce vzdalenosti senzoru, ale u velkeho a pomaleho by mohlo stacit detekovat jen blizsi a vcas zastavit. A mit v podmince, ze pokud hlasi prekazku v PRAVE te vzdalenosti (a nakalibrovane na volne plose), tak to brat, ze nenameril nic.

A ted me napadla jeste varianta treti - naopak dat vsechny senzory doprostred robota, mezi ne delici odhlucnena kridla (tenky polystyren, nebo tak) a nechat je vsechny pisknout naraz, s tim, ze jsou dost blizko, aby se neslysely diky ohluseni a tudiz sejmou cely perimetr naraz - ale pak je potreba vyresit, aby nesejmuly i vlastniho robota (coz by mohlo byt tak, ze by byly na vrcholku oble zrcadlove kopule robota kryjiciho, ktera vse odrazi jinam do prostoru a tak neni sama slyset.
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od AlesH »

Osobně si dovedu představit pár dalších použitelných principů. Dovedu si představit něco jako mechanické "kočičí vousy" vystrčené do prostoru kolem robota a reagující na lehký dotek (prakticky ale nevím, jak na to). Dovedu si představit použití několika kvalitních lidarů (ale to je pro mne komerčně moc drahé). Dovedu si představit otáčející se "radar" složený ze sonaru, infradálkoměru a případně i laserového dálkoměru (to už je na mne dost složité, ale snad by se to ještě dalo zvládnout). Dovedu si představit i vizuální detekci překážek čistě jen jednou kamerou (porovnáváním několika po sobě jdoucích snímků při pohybu robota). A samozřejmě jsem už viděl i detekci překážek stereo kamerami (dvojicí kamer). To s tou kamerou, nebo kamerami mi připadá relativně jednoduché a perspektivní, tak to možná zkusím. Určitě mi ale pár týdnů potrvá, než budu mít nějaké výsledky. Pokud se do toho pustím, tak tady dám vědět.
MartinL
Příspěvky: 252
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od MartinL »

Dávám za pravdu, že vyřešit "spolehlivě" detekci překážek není žádná sranda. Když pominu laser (který má kromě ceny, také má své mouchy), tak pro venkovní prostředí opravdu zbývá asi jen ten ultrazvuk.
Kdysi jsem zkoušek stereoultrazvuk podle idei Petra Kubáče. Na stole to fungovalo velmi pěkně (kreslilo mapu), ale venku to byla katastrofa. Testováno na Robotour 2008, odrazy od nerovností cesty způsobily, že mapa byla téměř plná překážek. Asi by to šlo nějak filtrovat opakovaným měřením, ale k tomu jsem se už nedostal.
Já bych v první fázi raději použil sonary namířené do různých stran tak, aby se jejich "zorné" pole částečně překrývalo a tím získal hodně hrubou mapu překážek.

Na to bych navázal dotazem. Nevíte někdo, jak jsou elektricky řešené sonary jen s jedním měničem (např. SFR02)?

Abych úplně nezavrhl jiná řešení, tak detekci překážek z obrazu řešil Martin Dlouhý na quadrokoptéře. Kompletní dokumentace je na robotika.cz. Nějak mu to chodilo, ale jestli se to ještě vyvíjí, nevím. Já sám si na zpracování obrazu netroufám.

Z mého pohledu absolutně nejspolehlivější je mechanický nárazník (ale pro Robotour jej nelze použít, pravidla dotyk nepřipouštějí). Pokud bych chtěl řešit detekci kolize z libovolného směru, pružně bych upevnil kolem robota "obruč", která by byla opřená o spínače. Tak je možné hrubě určit směr kolize.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1523
Registrován: 16 úno 2013, 14:26

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex »

Já právě také vidím ultrazvuky jako základní řešení, které prostě zkusím a budu doufat ;)

Pokud jde o mechanickou detekci nárazu, tak Jirka Rotta před časem zkoušel senzory tlaku za rozumné peníze. Po straně robota by se natáhla hadička, na jednom konci by se utěsnila a na druhém by byl senzor. Stačí jí zmáčknout a máme info o nárazu. Hadička pochopitelně nemusí být jedna. Je možné mít jednu vpředu, jednu vzadu atd.

Náraz by také mělo být možné detekovat tak, že dramaticky vzroste proud tekoucí do motoru. Ten ale pochopitelně roste třeba i při jízdě do kopce, s nákladem atd. Doplňková varianta to ale je.
"all your robots are belong to us"
robodoupe.cz
Uživatelský avatar
jrt
Příspěvky: 1921
Registrován: 17 úno 2013, 17:13

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od jrt »

MartinL píše:Na to bych navázal dotazem. Nevíte někdo, jak jsou elektricky řešené sonary jen s jedním měničem (např. SFR02)?
Jak je to u SRF02 nevím, ale do defektoskopických UZ sond se pouští napěťový impulz v řádu desítek voltů, pak se budič odpojí a sonda přepne na vstup zesilovače. Vzniká tím mrtvé pásmo, ale to u dvouměničového ultrazvuku vzniká taky.
Dex píše:Já právě také vidím ultrazvuky jako základní řešení, které prostě zkusím a budu doufat
Před nějakou dobou jsem zkoušel ten nejjednodušší detektor překážky na IR principu a pokud je detektor - v tomhle případě fototranzistor - utopen dostatečně hluboko v krytu (trubce) funguje to i za přímého slunečního svitu. LED jsem procesorem (no tak dobře, ne procesorem, ale PICAXE :D ) zapínal a vypínal, za detektorem byl pochopitelně ještě zesilovač, a vyhodnocoval jsem rozdíl mezi svítí a nesvítí. Pokud se pamatuju, tak to fungovalo na 200 mm docela dobře.
Ultrazvuk je z principu náchylný na falešné indikace (i v té defektoskopii) a pokud bys měl dosáhnout rozumných výsledků, musel bys asi velmi sofistikovaně zpracovávat signál přímo z přijímače.

Toto doporučuji ke ctěné pozornosti.
jrt
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1523
Registrován: 16 úno 2013, 14:26

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od Dex »

Co znamená "dostatečně hluboko"? Aby se mi to vešlo na 4kolku! :D
"all your robots are belong to us"
robodoupe.cz
Uživatelský avatar
jrt
Příspěvky: 1921
Registrován: 17 úno 2013, 17:13

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od jrt »

To už si přesně nepamatuju, ale odhadem 30 mm.
jrt
Uživatelský avatar
jrt
Příspěvky: 1921
Registrován: 17 úno 2013, 17:13

Re: Antisrážkový systém aneb jak obsloužit hodně ultrazvuků

Příspěvek od jrt »

Tak mi to nakonec nedalo a udělal jsem pokus, použil jsem zapojení z jiného vlákna, rezistor R3 zmenšil na 56k , fototranzistor ohnul na ležato a zastínil shora kouskem kancelířského papíru. Jako zdroj světla jsem použil 1mW červený laser, svítící tak, aby bod byl v zorném poli fototanzistoru. Kupodivu, tohle funguje tak na 50 mm i při plném osvětlení pracovní lampou ze vzdálenosti 15 cm na lesklých, matných, bílých i černých odrazných plochách. Očekávám tedy, že se zesilovačem, kvalitnějším vyhodnocením a výkonnějším laserem by to mohla být cesta k bezkontaktním nárazníkům. Upozorňuju ale, že to funguje jednak bodově a jednak se musí nastavit vzdálenost detekce. Samozřejmě je možno laser rozmítat a celý detektor ještě natáčet, protože tohle - na rozdíl od UZ - funguje okamžitě.
A speciálně pro Aladina: Fototranzistor musí být v zapojení se společným kolektorem (emitorový sledovač), nikoli se společným emitorem (spínač).
Jak bude čas, udělám nějaké seriózní pokusy, ale teď jdu do pelechu.
jrt
Odpovědět