Ruta de aprendizajePrincipiante

Navegación reactiva: evasión de obstáculos en robótica

Podrá lograr que un robot detecte obstáculos y decida rumbos de forma autónoma sin mapas globales, combinando sensado limpio y control reactivo.

La navegación reactiva es la primera forma en que la mayoría de los robots aprenden a moverse: en lugar de guardar un mapa y planificar una ruta, el robot simplemente reacciona a lo que sus sensores dicen en este momento. Percibir el espacio que tiene delante, decidir, moverse y repetir, muchas veces por segundo. Es barata, robusta, y suficiente para que un robot deambule por una habitación atiborrada sin golpearse con nada: el comportamiento detrás de cada robot esquivador de obstáculos para principiantes.

Esta ruta construye esa destreza una capa a la vez. Empieza convirtiendo un pulso de ultrasonidos en bruto en una distancia en la que puede confiar, y después aprende por qué saltan las lecturas de sensor y cómo filtrarlas. Compara el ultrasonido con el tiempo de vuelo láser para saber qué sensor le miente y cuándo, añade un barrido con servo para que el robot pueda ver qué lado está despejado, envuelve todo en una máquina de estados de comportamiento y termina ajustando el lazo completo en un simulador.

Siga los nodos en orden: cada uno desbloquea el siguiente una vez completado, y su progreso se guarda en este dispositivo. Cuando esté listo para construir la cosa real, esta ruta da directamente en el proyecto del robot esquivador de obstáculos.

Antes de empezar

Necesita ser capaz de leer un sensor y manejar dos motores: la ruta de control de motores cubre la parte del movimiento. Aquí no interviene mapa, ni localización, ni algoritmo de planificación; eso es deliberado, y es lo que hace de la navegación reactiva el primer enfoque adecuado.

Lo que podrá hacer

  • Convertir un pulso de ultrasonidos en una distancia sobre la que pueda actuar, con un tiempo límite para que un eco ausente no detenga el bucle y un filtro de mediana para que una mala lectura no desvíe al robot.
  • Decir qué sensor confiar para una superficie dada, y por qué un sensor de tiempo de vuelo láser y uno de ultrasonidos fallan en materiales completamente distintos.
  • Barrer un sensor a lo largo de un arco y elegir el rumbo más despejado a partir de las lecturas.
  • Expresar el comportamiento como estados explícitos en vez de condicionales anidados, de modo que «qué está haciendo el robot ahora mismo» siempre tenga respuesta.

Dónde se atasca la gente

Leer el sensor antes de que el servo haya terminado de moverse. La medición vuelve referida a lo que el sensor señalaba a mitad de barrido, así que el robot gira con toda confianza hacia una pared. Añada un retardo de estabilización después de mandar el ángulo y antes de lanzar el pulso.

Sin tiempo límite en el eco. Si no vuelve nada —y contra una superficie blanda o en ángulo muchas veces no vuelve nada— un pulseIn ingenuo bloquea el bucle entero. El robot parece congelarse al azar.

Confiarse en una sola lectura. Los sensores de ultrasonidos producen valores disparatados ocasionales. Una lectura espuria de 20 cm en espacio abierto basta para provocar un giro de emergencia. Tome tres y use la mediana.

Superficies en ángulo y blandas. El sonido se refleja en una pared encontrada con un ángulo empinado en dirección contraria al sensor, así que una pared a 45° puede leerse como espacio abierto. Los cojines y las cortinas absorben el pulso por completo. Esto es un límite físico, no un fallo: diseñe el comportamiento para sobrevivirlo.

Oscilar en un umbral. Con una única distancia de parada, un robot que ronda cerca de ella alterna entre avanzar y girar muchas veces por segundo. Use dos umbrales: parar más cerca, reanudar más lejos, de modo que el comportamiento tenga histéresis y se comprometa con una decisión.

Qué necesita

Qué Por qué lo necesita esta ruta Notas
Un HC-SR04 o un VL53L0X El sentido de distancia sobre el que se construye toda la ruta Unos 2 $ y unos 5 $ respectivamente
Un servo de hobby Para que el sensor pueda mirar a otro sitio que no sea recto hacia delante Un SG90 sobra para un cabezal de sensor
Un microinterruptor de palanca, o dos El único sensor que nunca miente sobre una colisión Seguro barato contra todos los fallos de distancia que vienen después
Una base móvil manejable Dos motores y un driver que ya sepa mandar La ruta de control de motores le trae hasta aquí
Un suelo atiborrado El entorno de prueba, y debe incluir una superficie blanda y otra en ángulo Un cojín y una puerta abierta son los dos mejores obstáculos de prueba

Por qué la ruta sigue este orden

Percibir antes de decidir, siempre. Casi todo comportamiento de evasión que se comporta mal está actuando correctamente sobre una mala lectura. Hasta que una medida de distancia sea de fiar —tiempo límite para un eco ausente, mediana de tres contra picos— ninguna cantidad de lógica de comportamiento producirá un robot que se comporte bien. Depurar en el orden contrario significa sospechar de su máquina de estados por un fallo que vive en el sensor.

Comparar sensores antes de comprometerse con uno. El nodo de comparación existe porque el sonar y el láser fallan en materiales completamente distintos, y cuál de los dos es el correcto depende enteramente de la habitación en la que esté circulando. Tomar esa decisión a conciencia, una sola vez, es mucho más barato que descubrirla después de haber construido un chasis alrededor del sensor equivocado.

Filtrar antes de barrer. Un barrido con servo multiplica la tasa de error de su sensor por el número de ángulos que muestrea. Si una sola lectura no es fiable, un barrido de nueve puntos le da nueve ocasiones de elegir la dirección equivocada, y el robot gira con confianza hacia una pared.

Barrer antes de decidir. Un robot que solo ve hacia delante tiene exactamente dos opciones: pararse o girar a ciegas. Poder medir varios rumbos convierte la evasión de un reflejo en una elección, y es el punto donde el comportamiento empieza a parecer inteligente.

La máquina de estados antes que el algoritmo. El algoritmo de evasión es una máquina de estados; aprender la estructura por separado hace que el nodo final trate de robótica y no de desenredar un flujo de control.

Detección de contacto a lo largo de toda la ruta. El interruptor de golpe es deliberadamente el que no va al final. Todo sensor de distancia de esta ruta tiene superficies que no puede ver, así que un robot sin detección de contacto está a una cortina de empujar hasta que algo se rompa. Es la fiabilidad más barata de todo el robot.

Puntos de control: cómo saber que una etapa caló

Etapa La comprobación Qué es un aprobado
Lectura de distancia Apunte el sensor a una pared a 30 cm e imprima durante un minuto Estable dentro de un centímetro o dos, sin ceros y sin bloqueos cuando lo apunta al techo
Tiempo límite Apunte el sensor al aire libre y observe la tasa del bucle El bucle mantiene su intervalo: la ausencia de eco no puede significar un robot congelado
Filtro de mediana Pase una mano repetidamente por el haz Los valores disparatados ocasionales desaparecen de la salida; el acercamiento real sigue apareciendo
Comparación de sensores Mida un cojín, una pared a 45° y una superficie oscura mate Puede predecir qué sensor falla en cuál, antes de medir
Barrido con servo Barra e imprima la distancia por ángulo a través de un vano abierto El vano es visiblemente el máximo, y las lecturas son repetibles de un barrido a otro
Retardo de estabilización Quite su retardo de estabilización a propósito Las lecturas se emborronan entre ángulos: ahora sabe cómo se ve ese fallo
Máquina de estados Imprima el estado actual en cada vuelta del bucle Siempre puede nombrar qué está haciendo el robot, y cada transición tiene una causa visible
Interruptor de golpe Presiónelo despacio y cuente los eventos Una pulsación produce exactamente un evento, no los nueve que genera un interruptor en crudo
Comportamiento completo Ejecútelo en una habitación atiborrada durante cinco minutos Sobrevive, y cuando se atasca puede decir en qué estado estaba

Dónde termina esta ruta

La navegación reactiva tiene un techo duro, y conviene decirlo sin rodeos: un robot reactivo no puede enviarse a ninguna parte. No tiene memoria, así que no puede ir a la cocina, no puede prometer que ha recorrido todo el suelo, y no puede evitar la esquina en la que se atascó la última vez. Eso no son huecos de implementación: es lo que significa no tener mapa.

La ruta también se queda corta de dos cosas que querrá después. El seguimiento de paredes es la extensión natural, y es el primer comportamiento que empieza a parecer un plan, porque un robot que mantiene una distancia fija de una pared a un lado recorrerá una habitación entera de forma determinista. Y la cobertura —barrear de verdad un área en vez de deambular por ella— es donde la falta de memoria por fin se vuelve intolerable.

Cuando lo sea, la respuesta es la planificación de rutas y el mapeo, y esta ruta es lo correcto que hacer primero: todo robot que mapea sigue necesitando los reflejos construidos aquí para el momento en que su mapa resulte estar equivocado.

Ruta de aprendizaje

La ruta

Sigue los nodos en orden: cada uno desbloquea el siguiente cuando lo completas. Tu progreso se guarda en este dispositivo.

0 / 11 completados

100%
Tutorial

Medición de distancia por ultrasonidos

20 min

Abrir tutorial
Componente

Incorporación de sensores de contacto físico

Componente

Ver componente
Tutorial

Selección del sensor de distancia adecuado

Concepto

Abrir tutorial
Tutorial

Filtrado y acondicionamiento de señales

Concepto

Abrir tutorial
Tutorial

Exploración angular mediante servomotor

18 min

Abrir tutorial
Tutorial

Filtrado antirrebote de conmutadores mecánicos

25 min

Abrir tutorial
Componente

La alternativa de medición láser

Componente

Ver componente
Simulador

Visualización de ruido y filtrado interactivo

Interactivo

Abrir simulador
Tutorial

Máquinas de estados finitos para comportamiento

Concepto

Abrir tutorial
Simulador

Validación interactiva en el simulador

Interactivo

Abrir simulador

Preguntas comunes

Preguntas frecuentes

¿Qué define a la navegación reactiva en robótica móvil?

Es la navegación desprovista de mapa global y sin planificación previa. El robot sondea el entorno inmediato mediante sus sensores, decide una acción correctora, ejecuta el movimiento motriz y repite el ciclo continuamente (típicamente entre 20 y 50 veces por segundo). Al prescindir de estimación de posición global, es computacionalmente ligera, robusta frente a incertidumbre y económica, a costa de carecer de memoria espacial: no puede guiarse hacia coordenadas específicas y puede quedar confinada en recintos cóncavos.

¿Por qué un robot evasor de obstáculos llega a colisionar frontalmente?

Casi siempre por limitaciones físicas de los transductores y no por errores de lógica. Un sensor ultrasónico que incide contra una pared con un ángulo oblicuo (por ejemplo, a 45°) refleja la onda acústica especularmente alejándola del receptor, registrando falsamente espacio despejado. Superficies blandas (cortinas o tapicerías) absorben el sonido por completo. Asimismo, leer el sensor antes de que el servo de barrido concluya su giro produce lecturas desfasadas. Incorpore siempre un sensor de contacto de impacto como seguro final.

¿A qué se debe el traqueteo o vacilación continua del robot ante un obstáculo?

A la utilización de un umbral único de distancia. Cuando el robot se sitúa en torno a esa cota, pequeñas fluctuaciones de ruido alternan la orden entre avanzar y girar varias veces por segundo. La solución técnica es definir una ventana de histéresis con dos umbrales separados: detenerse a 20 cm y no reanudar la marcha hacia adelante hasta que la distancia supere los 30 cm.

¿Cuándo conviene utilizar sensores ultrasónicos frente a tiempo de vuelo láser?

Sus limitaciones son complementarias. El sensor ultrasónico proyecta un cono de emisión amplio (unos 15° de semiángulo), lo que le permite detectar patas delgadas de sillas aunque no precise su orientación angular exacta; sin embargo, falla ante esquinas y telas. El sensor láser ToF (como el VL53L0X) emite un haz muy estrecho y preciso, ideal para medir con exactitud, pero puede pasar por alto obstáculos delgados situados ligeramente fuera de su eje y pierde alcance ante superficies oscuras mates o iluminación solar directa.

¿Por qué es imprescindible una máquina de estados finitos?

Porque un comportamiento reactivo supera de inmediato los dos estados elementales: avanzar, frenar, rastrear ángulos, virar, retroceder y maniobrar de desatasco. Codificar esto mediante instrucciones 'if-else' anidadas genera código ininteligible e impide responder con claridad a la pregunta '¿qué estado activo tiene el robot ahora mismo?'. Con una máquina de estados explícita, dicha condición se consulta de manera unívoca mediante una variable legible.

¿Puede un robot puramente reactivo quedar atrapado indefinidamente?

Sí, es una limitación intrínseca al paradigma sin memoria y no un fallo de código. En un rincón cóncavo o pasillo sin salida en forma de U, el robot virará hacia el lado más despejado, avanzará y retornará inevitablemente a la trampa en un ciclo sin fin. Para mitigar esto se introducen giros estocásticos aleatorios y detectores de bloqueo tras múltiples intentos fallidos. La solución definitiva exige incorporar cartografía espacial en memoria.