Jak radzić sobie z przesłuchem sonaru


10

Nasz robot ma okrągły układ 12 czujników sonaru, który wygląda następująco:

wprowadź opis zdjęcia tutaj

Same czujniki sonaru są całkiem dobre. Używamy filtra dolnoprzepustowego do radzenia sobie z hałasem, a odczyty wydają się dość dokładne. Jednak gdy robot napotyka płaską powierzchnię, jak ściana, dzieje się coś dziwnego. Sonary nie pokazują odczytów wskazujących na ścianę, lecz wyglądają jak zakrzywiona powierzchnia.

Poniższa fabuła została wykonana, gdy robot był skierowany w stronę ściany. Zobacz krzywą w niebieskich liniach w porównaniu do prostej czerwonej linii. Czerwona linia została wytworzona za pomocą kamery do wykrywania ściany, gdzie niebieskie linie pokazują odczyty sonaru filtrowanego.

wprowadź opis zdjęcia tutaj

Uważamy, że ten błąd jest spowodowany przesłuchem, w którym puls jednego czujnika sonaru odbija się od ściany pod kątem i jest odbierany przez inny czujnik. Jest to błąd systematyczny, więc nie możemy sobie z nim poradzić tak, jak z hałasem. Czy są jakieś rozwiązania, aby to naprawić?


powiązane: „Pytanie dotyczące wielu ultradźwiękowych dalmierzy” . Czy powinienem skopiować i wkleić własną odpowiedź stamtąd tutaj?
David Cary,

Odpowiedzi:


10

Jest to powszechny problem i jeden z wielu. Wykrywanie akustyczne jest skomplikowanym obszarem badań, którego znaczna część jest poświęcana zgadywaniu, jaką ścieżkę wybrała fala dźwiękowa między wysyłaniem a odbieraniem. Jak zauważyłeś, założenie, że poszło od razu i wróciło, przyniesie dziwne wyniki w praktyce.

Aby to naprawdę rozwiązać, musisz użyć systemu, który umieszcza unikalną częstotliwość i / lub długość tonu na każdym czujniku. Można to doprowadzić do znacznych ekstremów, np. Modulacji szerokości impulsu pseudo-losowego przeskoku częstotliwości w celu wyeliminowania przesłuchu czujników sonaru w robotach mobilnych .

Istnieje również rozwiązanie niskiej technologii, które jest dość proste w koncepcji. Jeśli chcesz po prostu wykryć przesłuch, byłoby to kwestią wystrzelenia impulsu jednego czujnika pomiędzy wystrzeliwanie impulsów wszystkich czujników. Jeśli wykryjesz puls powrotny za pomocą dowolnego innego czujnika, wiesz, że jesteś w sytuacji przesłuchu.

W praktyce jest to dość marnotrawstwo: zauważ, że skutecznie zmniejsza to o połowę liczbę próbek, które możesz pobrać. Możesz więc ulepszyć implementację, dzieląc czujniki na grupy, w których każdy członek grupy jest wystarczająco daleko od innych, aby nie odbierał przesłuchów. Najbardziej niezawodną wersją tego podejścia jest sprawienie, aby same grupy były pseudolosowe, co nie tylko pozwala na uśrednienie błędów w czasie, ale pomaga w wykrywaniu przesłuchów na podstawie poszczególnych czujników.

W twoim szczególnym przypadku dodatkową zaletą czujnika kamery, który pokazałeś, jest zwrócenie bardziej prawidłowej wartości dla zakresów. Strategie łączenia oddzielnych (i być może sprzecznych) pomiarów w jedną dokładniejszą ocenę to jego własny bardzo szeroki temat (zwany fuzją , przykład 1 , przykład 2 ), ale bardzo istotny dla tego, co tutaj robisz.


5

Niektóre czujniki, takie jak Maxbotix MB1200 XL-MaxSonar-EZ0, mają wbudowany system łączenia łańcuchowego, w którym jeden czujnik wyzwala następny czujnik po zakończeniu pomiaru. W ten sposób możesz mieć N czujników i upewnić się, że tylko jeden strzela jednocześnie, ale że następny czujnik strzela, gdy tylko pierwszy odbierze swój zwrot. To rozwiązanie jest proste, ale oczywiście znacznie zmniejsza ilość danych, które otrzymujesz na jednostkę czasu. Rozwiązania Iana są znacznie bliższe optymalizacji.


4

Czy możliwe jest użycie wielu czujników ultradźwiękowych na jednym robocie? Tak: „Korzystanie z wielu czujników sonaru” .

Jak już się zorientowałeś, jeden czujnik często odbiera echa pingów wysyłanych przez inny czujnik. Istnieje kilka sposobów radzenia sobie z wrażliwością krzyżową, w przybliżeniu w kolejności od najprostszych:

  • Wykonaj polecenie ping tylko jednego przetwornika na raz, ignorując wszystkie pozostałe przetworniki, czekając, aż „echo ducha” z bieżącego przetwornika ucichnie, zanim wykona polecenie ping następnego przetwornika. Jest to znacznie szybsze niż mechaniczne obracanie pojedynczego przetwornika. Być może będzie to wystarczająco szybkie, chyba że twój robot wbije się w coś z prędkością zbliżoną do prędkości dźwięku.
  • Używaj stosunkowo wąskich nadajników lub odbiorników kąta wiązki (lub obu) na czujnik i zwiększ kąt z jednego czujnika do drugiego, aby jeden czujnik nie słyszał echa od drugiego (chyba że przedmioty przed przetwornikiem powodują dziwne odbicia boczne ) - czujniki ustawione pod kątem mniej więcej tak samo jak kąt wiązki. Niestety, pozostawia to „martwe punkty” między przetwornikami, w których obiekty nie są widoczne przez żaden przetwornik.
  • Niektóre kombinacje - na przykład zwiększ kąt z jednego czujnika do drugiego, aby jeden czujnik słyszał tylko echa od swoich 2 sąsiadów (około połowy kąta wiązki); następnie na przemian pinguj nieparzyste przetworniki (ignorując nieparzyste przetworniki) i pinguj nieparzyste przetworniki (ignorując parzyste przetworniki).
  • Każdy przetwornik działa na innej częstotliwości. Niestety, wszystkie tanie przetworniki ultradźwiękowe, z kilkoma wyjątkami , są dostrojone do rezonansu przy 40 kHz. Podczas słuchania różnych sygnałów przetworniki te mogą „słyszeć” sygnały w zakresie kilku kHz do 40 kHz. Będziesz musiał zrównoważyć (a) Im dalej od 40 kHz używasz przetwornika zaprojektowanego na 40 kHz, tym jest on mniej czuły, więc potrzebujesz częstotliwości „stosunkowo bliskiej” do 40 kHz; oraz (a) im bliżej są wszystkie częstotliwości, tym trudniej jest je rozróżnić, dlatego potrzebny jest zestaw częstotliwości, które są rozłożone „stosunkowo daleko od siebie”. Nie wiem, czy istnieje dobry kompromis, czy nie - jeśli nie, utkniesz z (c) korzystaniem z droższych czujników dostrojonych do innych częstotliwości,Czujniki „szerokopasmowe” nie dostrojone do żadnej konkretnej częstotliwości.
  • Użyj różnych czasów transmisji, aby wykluczyć echa duchów. Powiedz, że transmitujesz z lewej strony, opóźnij 2 ms (nie na tyle, by echo zanikło), a następnie transmituj z prawej, ... po zaniku echa, a następnie transmituj z lewej, opóźnij 3 ms, a następnie transmituj z prawo. Jeśli prawy odbiornik otrzyma echo z powrotem 5 ms później za każdym razem, możesz być całkiem pewien, że to prawdziwe echo; jeśli prawy odbiornik odbierze echo 5 ms później za pierwszym razem, 6 ms później za drugim razem, prawdopodobnie jest to duch z lewego odbiornika. (Istnieją znacznie bardziej wyrafinowane techniki „rozproszonego widma” do oddzielania wielu nadajników, z których wszystkie używają tej samej częstotliwości w tym samym czasie.)
  • Połącz sygnały ze wszystkich odbiorników. Jeśli masz jeden centralny nadajnik, który pinguje we wszystkich kierunkach (lub równoważnie masz nadajniki skierowane we wszystkich kierunkach i pingujesz je wszystkie w tym samym momencie), a pierwsze echo, które wrócisz, uderza najpierw w lewy odbiornik (potem w prawo odbiornik słyszy echo), wiesz, że najbliższa przeszkoda znajduje się bliżej lewej strony niż prawej. (Istnieją bardziej wyrafinowane techniki „matrycy fazowej”, które łączą sygnały ze wszystkich odbiorników, a nawet bardziej wyrafinowane techniki „formowania wiązki” w celu nieznacznego dostosowania czasów transmisji wszystkich nadajników.)

PS: Czy widziałeś „podczerwień kontra ultradźwięki - co powinieneś wiedzieć” ?

(Tak, mówiłem to już wcześniej w „Pytanie o wielokrotny ultradźwiękowy dalmierz” ).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.