Cómo lidiar con la diafonía sonar

10

Nuestro robot tiene una matriz circular de 12 sensores de sonda que se ve así:

ingrese la descripción de la imagen aquí

Los sensores del sonar son bastante buenos. Usamos un filtro de paso bajo para lidiar con el ruido, y las lecturas parecen bastante precisas. Sin embargo, cuando el robot se encuentra con una superficie plana como una pared, sucede algo extraño. Los sonares no muestran lecturas que indiquen una pared, en cambio, aparece como una superficie curva.

La siguiente trama se realizó cuando el robot estaba frente a una pared. Vea la curva en las líneas azules, en comparación con la línea roja recta. La línea roja se produjo mediante el uso de una cámara para detectar la pared, donde las líneas azules muestran lecturas de sonda filtradas.

ingrese la descripción de la imagen aquí

Creemos que este error se debe a la diafonía, donde el pulso de un sensor sonar rebota en la pared en ángulo y es recibido por otro sensor. Este es un error sistemático, por lo que realmente no podemos tratarlo como lo haríamos con el ruido. ¿Hay alguna solución para corregirlo?

Robz
fuente
relacionado: "Pregunta de telémetro ultrasónico múltiple" . ¿Debo copiar y pegar mi propia respuesta desde aquí hasta aquí?
David Cary

Respuestas:

10

Este es un problema común y uno de los muchos. La detección acústica es un campo de estudio complicado, una parte importante de la cual se dedica a adivinar qué camino tomó una onda de sonido entre enviarla y recibirla. Como habrás notado, suponiendo que salió directamente y regresó producirá resultados extraños en la práctica.

Para resolverlo realmente, deberá usar un sistema que coloque una frecuencia y / o duración de tono única en cada sensor. Esto puede llevarse a extremos significativos, por ejemplo , modulación de ancho de pulso pseudoaleatorio de salto de frecuencia para eliminar la diafonía de los sensores de sonda en los robots móviles .

También hay una solución de baja tecnología, que es bastante simple en concepto. Si simplemente quisiera detectar la diafonía, sería cuestión de disparar el pulso de un solo sensor entre el disparo de todos los pulsos de los sensores. Si detecta el pulso de retorno con cualquier otro sensor, sabe que se encuentra en una situación de diafonía.

En la práctica, esto es bastante derrochador: observe que efectivamente reduce a la mitad el número de muestras que puede tomar. Por lo tanto, puede mejorar la implementación dividiendo los sensores en grupos donde cada miembro del grupo esté lo suficientemente lejos de los demás como para que no reciba diafonía. La versión más sólida de este enfoque es hacer que los grupos sean pseudoaleatorios, lo que no solo permite que los errores se promedien con el tiempo, sino que ayuda a la detección de diafonía en función de un sensor individual.

En su caso particular, tiene la ventaja adicional de que un sensor de cámara que ha mostrado está devolviendo un valor más correcto para los rangos. Las estrategias para combinar mediciones separadas (y posiblemente conflictivas) en una sola estimación más precisa es su propio tema muy amplio (llamado fusión , ejemplo 1 , ejemplo 2 ), pero muy relevante para lo que está haciendo aquí.

Ian
fuente
5

Algunos sensores, como el Maxbotix MB1200 XL-MaxSonar-EZ0, tienen un sistema de encadenamiento integrado en el que un sensor activa el siguiente sensor una vez que ha terminado su medición. De esta forma, puede tener N sensores y asegurarse de que solo uno esté disparando a la vez, pero que el siguiente sensor se dispare tan pronto como el primero haya recogido su retorno. Esta solución es simple pero obviamente reduce en gran medida la cantidad de datos que obtiene por unidad de tiempo. Las soluciones de Ian están mucho más cerca de lo óptimo.

foobarbecue
fuente
4

¿Es posible usar múltiples sensores ultrasónicos en un solo robot? Sí: "Uso de múltiples sensores de sonda" .

Como ya ha descubierto, un sensor a menudo recibe ecos de pings enviados por otro sensor. Hay varias formas de lidiar con la sensibilidad cruzada, más o menos en el orden más simple primero:

  • Haga ping a un solo transductor a la vez, ignorando a todos los otros transductores mientras espera que los "ecos fantasmas" del transductor actual se apaguen antes de hacer ping al siguiente transductor. Esto es mucho más rápido que rotar mecánicamente un solo transductor. Tal vez esto sea lo suficientemente rápido, a menos que su robot esté golpeando cosas a casi la velocidad del sonido.
  • Use transmisores o receptores de ángulo de haz relativamente estrechos (o ambos) por sensor, y aumente el ángulo de un sensor al siguiente para que un sensor no pueda escuchar el eco de otro (a menos que las cosas en frente del transductor causen algunos reflejos laterales extraños ) - sensores en ángulo separados aproximadamente igual que el ángulo del haz. Por desgracia, esto deja "puntos ciegos" entre los transductores donde los objetos no pueden ser vistos por ningún transductor.
  • Alguna combinación: por ejemplo, aumente el ángulo de un sensor a otro para que un sensor solo escuche los ecos de sus 2 vecinos (aproximadamente la mitad del ángulo del haz); luego alterne entre hacer ping a los transductores pares (ignorando los transductores impares) y hacer ping a los transductores impares (ignorando los transductores pares).
  • Cada transductor funciona a una frecuencia diferente. Por desgracia, todos los transductores ultrasónicos de bajo costo, con pocas excepciones , están sintonizados para resonar a 40 kHz. Al escuchar una variedad de señales, estos transductores solo pueden "escuchar" señales que están dentro de unos pocos kHz de 40 kHz. Tendrá que equilibrar (a) Cuanto más lejos esté de 40 kHz que utilice en un transductor diseñado para 40 kHz, menos sensible será, por lo que desea una frecuencia "relativamente cercana" a 40 kHz; y (a) Cuanto más cercanas están todas las frecuencias, más difícil es discriminar entre ellas, por lo que desea un conjunto de frecuencias que se distribuyan "relativamente lejos". No sé si hay un buen compromiso o no; si no, estás atrapado con (c) usa sensores más caros sintonizados a otras frecuencias,sensores de "ancho de banda amplio" no sintonizados a ninguna frecuencia en particular.
  • Use varios tiempos de transmisión para descartar ecos fantasmas. Digamos que transmite desde la izquierda, demora 2 ms (no lo suficiente como para dejar que los ecos se apaguen), luego transmite desde la derecha, ... después de que los ecos se apagan, luego transmite desde la izquierda, demora 3 ms, luego transmite desde la derecha. Si el receptor derecho recupera un eco 5 ms más tarde en ambas ocasiones, puede estar seguro de que es un eco real; Si el receptor derecho recibe un eco 5 ms más tarde la primera vez, 6 ms más tarde la segunda vez, es probable que sea un fantasma del receptor izquierdo. (Existen técnicas de "espectro extendido" mucho más sofisticadas para separar muchos transmisores, todos con la misma frecuencia al mismo tiempo).
  • Combina las señales de todos los receptores. Si tiene un transmisor central que hace ping en todas las direcciones (o, de manera equivalente, tiene transmisores apuntando en todas las direcciones, y los hace ping a todos en el mismo instante), y el primer eco que obtiene golpea primero el receptor izquierdo (luego el derecho el receptor escucha un eco), usted sabe que el obstáculo más cercano está más cerca del lado izquierdo que del lado derecho. (Hay técnicas más sofisticadas de "matriz en fase" que combinan señales de todos los receptores, e incluso técnicas más sofisticadas de "formación de haz" para ajustar ligeramente los tiempos de transmisión de todos los transmisores).

PD: ¿Has visto "Infrarrojo vs. Ultrasónico: lo que debes saber" ?

(Sí, he dicho todo esto antes, en "Pregunta de telémetro ultrasónico múltiple" ).

David Cary
fuente