Nosso robô possui uma matriz circular de 12 sensores de sonar que são assim:
Os próprios sensores de sonar são muito bons. Usamos um filtro passa-baixo para lidar com o ruído, e as leituras parecem bastante precisas. No entanto, quando o robô se depara com uma superfície plana como uma parede, algo estranho acontece. Os sonares não mostram leituras que indicariam uma parede; ao contrário, parece uma superfície curva.
A plotagem abaixo foi feita quando o robô estava de frente para uma parede. Veja a curva nas linhas azuis, em comparação com a linha vermelha reta. A linha vermelha foi produzida usando uma câmera para detectar a parede, onde as linhas azuis mostram leituras filtradas do sonar.
Acreditamos que esse erro ocorre devido à diafonia, na qual o pulso de um sensor de sonar bate na parede em ângulo e é recebido por outro sensor. Este é um erro sistemático, por isso não podemos realmente lidar com isso como faríamos com o ruído. Existem soluções para corrigir isso?
fonte
Respostas:
Este é um problema comum e um de muitos. A detecção acústica é um campo de estudo complicado, parte significativa da qual é adivinhada que caminho uma onda sonora percorreu entre enviá-la e recebê-la. Como você notou, assumir que foi direto e voltou direto produzirá resultados estranhos na prática.
Para realmente resolvê-lo, você precisará usar um sistema que coloque uma frequência e / ou comprimento de tom únicos em cada sensor. Isso pode ser levado a extremos significativos, por exemplo , modulação pseudo-aleatória de largura de pulso com salto de frequência para eliminar a interferência dos sensores de sonar em robôs móveis .
Há também uma solução de baixa tecnologia, que é bastante direta em conceito. Se você quisesse simplesmente detectar a diafonia, seria uma questão de disparar o pulso de um único sensor entre o disparo de todos os pulsos dos sensores. Se você detectar o pulso de retorno com qualquer outro sensor, saberá que está em uma situação de diafonia.
Na prática, isso é um grande desperdício: observe que isso reduz pela metade o número de amostras que você pode colher. Portanto, você pode melhorar a implementação dividindo os sensores em grupos em que cada membro do grupo está longe o suficiente dos outros para que não receba diafonia. A versão mais robusta dessa abordagem é fazer com que os grupos sejam pseudo-aleatórios, o que não apenas permite a média dos erros ao longo do tempo, mas também ajuda na detecção de diafonia em uma base de sensor individual.
No seu caso particular, você tem o benefício adicional de um sensor de câmera que você mostrou retornando um valor mais correto para os intervalos. As estratégias para combinar medições separadas (e possivelmente conflitantes) em uma única estimativa mais precisa são seu próprio tópico muito amplo (chamado de fusão , exemplo 1 , exemplo 2 ), mas muito relevante para o que você está fazendo aqui.
fonte
Alguns sensores, como o Maxbotix MB1200 XL-MaxSonar-EZ0, possuem um sistema de encadeamento integrado onde um sensor aciona o próximo sensor após o término da medição. Dessa forma, você pode ter N sensores e garantir que apenas um esteja disparando ao mesmo tempo, mas que o próximo sensor seja acionado assim que o primeiro receber seu retorno. Essa solução é simples, mas obviamente reduz bastante a quantidade de dados que você obtém por unidade de tempo. As soluções de Ian estão muito mais próximas do ideal.
fonte
É possível usar vários sensores ultrassônicos em um único robô? Sim: "Usando vários sensores de sonar" .
Como você já descobriu, um sensor geralmente recebe ecos de pings enviados por outro sensor. Existem várias maneiras de lidar com a sensibilidade cruzada, aproximadamente pela ordem mais simples:
PS: Você já viu "Infravermelho vs. Ultrassônico - o que você deve saber" ?
(Sim, eu já disse isso antes, na "Multiple Ultrasonic Rangefinder Question" .)
fonte