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

Postup stavby, dotazy, úspěchy, slepé uličky a zkušenosti
Pirx
Příspěvky: 109
Registrován: 24 úno 2013, 16:29
Kontaktovat uživatele:

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

Příspěvek od Pirx » 18 říj 2015, 17:29

V reakci na dotaz k řešení sonarů s jedním měničem - nevím jak přesně SRF02, ale přepíná se buzení měniče při zatlumeném (odpojeném) snímacím vstupu a po ukončení vysílacího burstu (dokmitání membrány) se připojí snímací vstup zpět.

Sonary SRF02 používám už třetí sezónu bez větších problémů. Jejich omezení spočívá v minimální detekovatelné vzdálenosti dané dobou nutnou k přepnutí měniče z vysílání na příjem - měnič musí dokmitat po vysílacím pulsu. V dokumentaci je uvedeno, že se minimální vzdálenost mění v rozsahu 15 - 18 cm podle teploty. Doba pro jedno měření je podle dokumentace 66 ms a zjevně nemá smysl snažit se o častější měření. Aktuální minimální vzdálenost lze kdykoliv vyčíst z registrů 4 a 5 (I2C mode).

Něco málo k mým zkušenostem se sonary:
Domnívám se, že pravděpodobností model sonaru je jediná cesta, jak uchopit vyhýbání se překážkám pomocí tohoto senzoru !!!

Původně mě zlákala myšlenka umístění sonarů na serva a skenování okolí s relativně jemným úhlovým rozlišením. Bohužel jsem byl zklamán. Umístil jsem vždy dva sonary na držák po devadesáti stupních. tuto sestavu jsem umístil na servo a to celé dvakrát na robota.
Serva.jpg
Serva.jpg (3.12 KiB) Zobrazeno 1275 x
Pro jednu polohu serv jsem tedy získal 4 vzdálenosti po devadesáti stupních. Potom jsem otočil serva o stejný malý úhel (tuším jsem zkoušel 15°) a provedl další scan.
Bylo to zoufale pomalé a nepoužitelné pro rozumně rychlou jízdu.

Z tohoto důvodu jsem systém překonstruoval na stacionární verzi pouze pro čelní hemisféru.
Použil jsem pět sonarů a ty umístil ve vějíři po 45 stupních. Pro skenování perimetru používám jednotlivá měření, a proto na jeden scan potřebuji cca 5x 66ms = 330 ms, což jsou nevalné cca 3 Hz.
SRF02_Mount.jpg
Není to ideální (očekávám mezery v pokrytí prostoru), ale funguje to poměrně dobře.
Pro vyhodnocení dat používám lehce zkriplovaný Virtual Force Field algoritmus.

http://www-personal.umich.edu/~johannb/vff&vfh.htm

Protože na robotovi nemám odometrii (časem určitě nějaká bude), nemohl jsem jednoduše (a rychle) použít mřížku nutnou u VFH metody a proto jsem ji z algoritmu odstranil. Výsledek přesně odpovídá omezení, které tím vzniklo - nemůžu pro zpracování dat ze sonarů použít pravděpodobnostní model popsaný v sekci Vector Field Histogram citovaného článku. Zbylo mi tedy namodelování virtuálních repulzivních sil z jednotlivých sonarů a atraktivní síly, kterou představuje cílový azimut (vektor).
Po provedení výpočtů je výsledkem řídící vektor, určující azimut a rychlost pohybu, který předám modulu pro ovládání pohybu robota.

Celé to pracuje přibližně takto:
- Vějíř pětice sonarů je umístěn do nuly kartézského souřadného systému - souřadný systém robota.
- Na pozadí běží periodický scan vzdáleností ze sonarů a výsledky se ukládají do pole.
- Mám určenou maximální vzdálenost, ve které ještě beru odraz jako překážku - cokoliv vzdálenějšího je "nekonečno" a nezajímá mě.
- Kromě dat ze sonarů je další vstupní hodnota normalizovaný vektor, který reprezentuje požadovaný směr jízdy v souřadném systému sonarů, tedy míří vždy kolmo "vpřed".

1. Vezmu aktuální vzdálenosti ze sonarů, provedu normalizaci a úpravu na převrácenou hodnotu druhé mocniny změřené vzdálenosti.
Tím získám výraznější odezvu na blízké překážky.
Úhly těchto vektorů se umístí do III. a IV. kvadrantu.
SonarVector.jpg
SonarVector.jpg (8.17 KiB) Zobrazeno 1275 x
2. Vektor směru jízdy míří kolmo "nahoru". Provedu vektorový součet všech vektorů. Výsledkem je vektor určující směr a rychlost pohybu robota.
3. Provedu test na minimální velikost výsledného vektoru (bez zavedení minimální velikosti = rychlosti se robot samozřejmě zastavoval).
4. Výsledný azimut a rychlost převedu do souřadného systému Země a odešlu do modulu řídícího pohyb robota.
5. GoTo 1.

Tento postup samozřejmě vykazuje přesně takové chování, jaké je popsáno v ostavci "Problems with Potential Field Methods" citovaného dokumentu, tedy oscilace v úzkém prostoru apod., ale ukázal se jako dostačující pro první přiblížení vyhýbání překážkám ve venkovním prostředí.

Plánovaná vylepšení:
- Pravděpodobnostní model - zatím věřím každé hodnotě ze sonaru, což nesmím! Odlehlé hodnoty se teď "filtrují" setrvačností hmoty celého robota. Vyžádá si odometrii a úpravu algoritmu na VFH.
- Umístění vějíře sonarů na větší rádius, takže sice nepokryje boky +/- 90°, ale zato nebude mít mezery v pokrytí prostoru
- Umístění vějíře sonarů blíže středu robota - nebudu muset provádět korekce polohy středu sonarů a geometrického středu robota.
Solder fumes makes you stronger!

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti