Nasz robot ma okrągły układ 12 czujników sonaru, który wygląda następująco:
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.
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ć?
źródło
Odpowiedzi:
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.
źródło
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.
źródło
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:
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” ).
źródło