Logotipo de sheen.bot

← Ideas y reflexiones

Por qué fallan los sensores de ultrasonidos cuando varios robots comparten una sala

17 oct 2026·Sheen Robotics
Por qué fallan los sensores de ultrasonidos cuando varios robots comparten una sala

Cuando varios robots emiten pulsos a 40 kHz en la misma sala, la diafonía acústica provoca obstáculos fantasma erráticos y colisiones contra paredes. Descubre cómo solucionarlo mediante código y hardware.

Los sensores de ultrasonidos fallan en entornos con múltiples robots debido a la diafonía acústica (crosstalk): prácticamente todos los sensores educativos estándar emiten pulsos idénticos y sin codificar a unos 40 kHz. El robot no puede distinguir el eco reflejado de su propio pulso del ping disparado por el chasis de un compañero en la pista, o de un rebote en una pared desnuda del aula. El resultado son obstáculos fantasma en espacios vacíos y colisiones a gran velocidad contra superficies sólidas.

Cómo calculan la distancia los sensores de ultrasonidos

Para entender el fallo, conviene analizar el funcionamiento físico del sensor. Un módulo de ultrasonidos como el conocido HC-SR04, o las unidades de distancia integradas en los kits educativos, consta de un emisor (altavoz piezoeléctrico) y un receptor (micrófono piezoeléctrico). Al activarse, el emisor lanza una ráfaga de ocho ciclos de ultrasonidos a 40 kHz. El módulo pone su pin echo en nivel alto y se queda a la escucha. En cuanto el receptor detecta energía sonora entrante a esa misma frecuencia, el pin echo pasa a nivel bajo.

El microcontrolador mide el tiempo de vuelo de ida y vuelta en microsegundos (μs) y calcula la distancia a partir de la velocidad del sonido en el aire (aproximadamente 343 metros por segundo a 20°C):

Distancia (cm) = (Tiempo en μs × 0,0343) ÷ 2

Este cálculo matemático se basa en una premisa fundamental: que cada onda a 40 kHz que llega al receptor corresponde exactamente al pulso que el emisor envió unos milisegundos antes. En una prueba individual, esa premisa se cumple. En un aula con diez robots activos en el suelo, se desmorona por completo.

Los dos modos clásicos de fallo por diafonía

La diafonía acústica se manifiesta en dos comportamientos distintos y frustrantes en el aula:

  • La parada fantasma: el robot A emite un ping dirigido a un obstáculo situado a 1,5 metros. El eco debería regresar en aproximadamente 8,7 milisegundos. Sin embargo, el robot B está operando cerca y dispara su propio sensor directamente hacia el robot A apenas 1 milisegundo después del pulso del robot A. El receptor del robot A detecta la onda del robot B, registra un tiempo transcurrido de 1 ms y calcula un obstáculo a 17 cm. El robot se detiene, gira o realiza una maniobra de evasión en un espacio completamente despejado.
  • La embestida a ciegas: cuando varios frentes de onda ultrasónica se cruzan, pueden generar interferencias destructivas que atenúan la señal por debajo del umbral del receptor. Por otro lado, un sensor que recibe un murmullo acústico constante puede sufrir la saturación del control automático de ganancia o ser incapaz de aislar un flanco discreto. Si el eco nunca llega a registrarse dentro de la ventana de tiempo de espera del sensor (normalmente 30 milisegundos, o unos 5 metros de recorrido), el firmware interpreta que está en el rango máximo o que no hay obstáculos, enviando al robot directo contra una pared a toda velocidad.

Este problema se agrava con la arquitectura habitual de los colegios. Un aula con paredes de ladrillo visto, suelos de baldosas lisas y filas de taquillas metálicas actúa como una cámara de eco acústica. Los pulsos de ultrasonidos rebotan tres o cuatro veces antes de caer por debajo del umbral de ruido del receptor, perdurando mucho más de lo que prevé el ciclo de muestreo del sensor.

Cómo solucionar la diafonía mediante código

No se puede modificar la frecuencia acústica de transductores ultrasónicos económicos, pero sí cómo el software muestrea y valida las lecturas.

1. Aleatorizar el intervalo entre pings (jitter)

La mayor parte del código que escriben los estudiantes sondea los sensores dentro de un bucle rígido y constante:

loop {
  distance = read_ultrasonic();
  delay(50ms);
}

Si cinco robots ejecutan bucles con retardos idénticos de 50 ms, sus ciclos de emisión terminan inevitablemente sincronizándose en fase, corrompiendo de forma continua las lecturas entre sí. Se puede romper este acoplamiento armónico inyectando una variación aleatoria (jitter) en el intervalo de muestreo:

loop {
  distance = read_ultrasonic();
  delay(40ms + random(0, 30ms));
}

Al variar el tiempo de espera entre 40 y 70 milisegundos, dos robots podrían interferir entre sí una vez, pero no lo harán en el ciclo siguiente.

2. Implementar un filtro de mediana de tres valores

Nunca se deben tomar decisiones de control de motores basándose en una sola lectura de ultrasonidos. En su lugar, almacena las tres últimas lecturas en un búfer circular y calcula la mediana:

  • Lectura 1: 140 cm (distancia real)
  • Lectura 2: 18 cm (pulso de interferencia de un robot cercano)
  • Lectura 3: 138 cm (distancia real)

Calcular la media daría 98,6 cm, lo que seguiría arruinando la navegación. Tomar la mediana aísla los 138 cm y descarta limpiamente el pulso ajeno como un valor atípico. Exige que un obstáculo se confirme a lo largo de dos ciclos de mediana consecutivos antes de activar una rutina de evasión.

Alternativas en hardware: cuándo prescindir del sónar

Si te estás preparando para una prueba en la que varios robots compiten simultáneamente en un espacio reducido, las soluciones por software tienen un límite. La opción más limpia consiste en cambiar el principio físico de medición.

Sensor TypeInterference SourceClassroom RangeBest Application
Ultrasonic (40 kHz)Acoustic crosstalk, sound-absorbing surfaces (felt/carpet)2 cm – 300 cmLow-cost basic ranging; solo robot labs
Infrared (Triangulation)Direct sunlight, ambient fluorescent ballast flicker10 cm – 80 cmShort-range obstacle avoidance; immune to sound
Optical Time-of-Flight (Laser)Highly reflective specular mirrors, extreme dust3 cm – 200 cmDense multi-robot navigation; tight arenas

Los sensores ópticos de tiempo de vuelo (ToF, por sus siglas en inglés), como los de las familias VL53L0X o VL53L1X, miden el tiempo de desplazamiento de fotones infrarrojos a 940 nm en lugar de ondas de sonido. Los fotones viajan alrededor de un millón de veces más rápido que el sonido, por lo que la medición se completa en microsegundos y no en milisegundos. Y lo que es más importante: la luz de un robot no presenta el patrón de reverberación acústica que rebota por toda la estancia, y los sensores ópticos ofrecen un campo de visión mucho más estrecho (por lo general de 25°) en comparación con el amplio cono acústico de 60° de los ultrasonidos.

Para aquellos programas educativos de robótica que busquen actualizar su hardware de navegación o montar sistemas de sensores capaces de rendir en espacios de competición con múltiples equipos, explorar los kits específicos en Sheen Robotics Store permite acceder a opciones fiables de ToF óptico y sensado filtrado.

Si es imprescindible seguir utilizando módulos de ultrasonidos debido a las limitaciones del kit, enseña al alumnado a asumir las interferencias como una restricción de ingeniería real. Introduce retardos aleatorios en los sondeos, programa filtros de mediana y estrecha el cono físico del sensor colocando fundas de espuma termorretráctil alrededor de los cilindros emisores. Aprender a gestionar el ruido de los sensores es una de las competencias computacionales más valiosas que un estudiante de robótica puede adquirir.

#robótica#sensores#programación#stem#resolución de problemas

Más de Ideas y reflexiones