Simulador de planificación de rutas de cobertura
Compara rebote aleatorio, espiral y barrido en un laboratorio que mide cada estrategia frente a la distancia que requeriría una cobertura perfecta.
- Categoría
- Robots autónomos
- Tiempo
- 20–40 min
- Plataforma
- Browser · Arduino · Raspberry Pi
01 / Empieza aquí
Introducción
Cubrir una superficie no es lo mismo que desplazarse a un destino. Un planificador de trayectorias halla una ruta hacia una meta; un planificador de cobertura debe tocar cada punto accesible, y su medida real es la distancia recorrida por metro cuadrado limpiado. Este simulador ejecuta rebote aleatorio, espiral y barrido sistemático en una habitación, comparándolos contra el óptimo teórico.
Live lab / Coverage path planning
Coverage path planning simulator
Three ways to cover a floor — random bounce, expanding spiral, and a planned boustrophedon sweep — measured against the one number that matters: the distance a perfect robot would need.
Shaded floor is covered. The thin line is where the robot has driven, the circle is its brush. Below, the same run plotted as coverage against distance — the dashed straight line is a perfect sweep, the dashed curve is the theory for random sweeping. Drag furniture to rebuild the room.
- Covered floor
- Furniture (drag it)
- Path driven
- Perfect sweep
- Covered
- 0%
- Distance
- 0.00× optimal
- Half the floor
- —
- 90% covered
- —
- 99% covered
- —
- Bumps
- 0
Keyboard: focus the room, then Space to run/pause, N to step, R to reset, M for a new room, F for full screen. Press 1–4 to pick a piece of furniture and the arrow keys to move it.
Controles
Estrategia permite alternar entre los tres algoritmos. La habitación se reconstruye y la ejecución se reinicia de inmediato, pues una métrica de cobertura solo tiene validez en el contexto del entorno específico en que fue medida.
Arrastra cualquier mueble con el cursor, o presiona 1–4 para seleccionarlo y moverlo con las flechas del teclado. La simulación se reinicia mientras arrastras. Coloca una mesa en el centro de la sala y observa cómo aumenta la distancia recorrida en el barrido sistemático mientras disminuye su cobertura efectiva.
Nueva habitación distribuye el mobiliario al azar. Velocidad de ejecución cambia suavidad visual por rapidez: el método aleatorio requiere miles de movimientos para concluir, por lo que conviene iniciarlo a velocidad alta.
Teoría
Un planificador de rutas responde a cómo llegar hasta allí. Un planificador de cobertura responde a cómo recorrerlo todo, y ambos problemas tienen principios muy distintos.
El único parámetro de comparación objetivo es la distancia que necesitaría un robot ideal. En un suelo de área A con un cepillo de ancho w, barrer cada cuadrícula una sola vez sin repetición requiere:
d_optima = A / w
Todas las métricas reportadas en el simulador son múltiplos de ese valor. Una estrategia en 1.2× invierte el 20 % de su tiempo en repasar áreas previamente cubiertas; una en 8× desperdicia siete octavos de su energía.
El rebote aleatorio sigue una función cerrada desalentadora. Un robot desprovisto de mapa descubre suelo nuevo en proporción directa al área que permanece sin cubrir, de modo que la superficie pendiente disminuye de forma exponencial:
cubierto(d) ≈ 1 − e^(−d / d_optima)
Esa es la curva discontinua del gráfico. Tres puntos característicos: 63 % del suelo cubierto tras una distancia óptima, 90 % tras 2.3× y 99 % tras 4.6×. El último décimo de la habitación cuesta el doble que los tres primeros cuartos combinados: el dilema del coleccionista de cupones aplicado a un cepillo.
La cobertura sistemática es lineal, finalizando en 1× más las pérdidas derivadas del espaciado de filas y las maniobras de giro. En este laboratorio, dicho sobrecosto ronda el 35 %.
Las mediciones experimentales concuerdan con la formulación teórica. Donde difieren, lo hacen en la dirección esperada: un paseo aleatorio físico reexplora zonas contiguas en lugar de teletransportarse, rindiendo ligeramente peor que la curva de muestreo independiente ideal.
Algoritmo
Rebote aleatorio. Avanzar recto. Ante un choque, elegir un nuevo rumbo al azar y verificar que esté despejado. Eso es todo: requiere un único bit de información sensorial y carece de memoria.
Espiral y reubicación. Girar con un ángulo inversamente proporcional a la distancia recorrida desde el centro, trazando una espiral expansiva. Ante un choque, desplazarse en línea recta una distancia fija e iniciar una nueva espiral. Resulta excelente en espacios abiertos —con solapamiento casi nulo— pero inútil en estancias abarrotadas, donde cada espiral se trunca tras pocos giros.
Serpentina planificada. Tres etapas consecutivas:
- Inflado. Dilatar cada obstáculo según el radio del robot más un margen de seguridad. El espacio restante delimita por dónde puede circular el centro del robot.
- Segmentación. Recorrer el mapa inflado en franjas separadas por el ancho del cepillo. Cada fila se descompone en uno o más tramos libres.
- Conexión. Visitar los tramos en orden de serpentina, conectando tramos consecutivos mediante la trayectoria más corta en espacio libre, de modo que el robot rodee los obstáculos en lugar de chocar.
El paso 3 introduce el sobrecosto de distancia, motivo por el cual un entorno denso penaliza mucho más a un planificador sistemático que a un espacio despejado.
Código fuente
El método aleatorio es el primero que conviene implementar en hardware real, ya que opera con sensores básicos:
// Random-bounce coverage. Two bump switches, no map, no encoders.
const uint8_t BUMP_L = 2, BUMP_R = 3;
const uint16_t CRUISE = 170; // PWM
unsigned long turnUntil = 0;
int turnDir = 1;
void loop() {
bool left = digitalRead(BUMP_L) == LOW; // switches are active-low with pull-ups
bool right = digitalRead(BUMP_R) == LOW;
if (millis() < turnUntil) { // still executing a bounce
drive(turnDir * CRUISE, -turnDir * CRUISE);
return;
}
if (left || right) {
// Back off first — turning while wedged against a chair leg does nothing.
reverseFor(320);
// A random turn between 90 and 270 degrees. The randomness is what stops the
// robot tracing the same closed loop around the room forever.
turnDir = right ? -1 : 1;
turnUntil = millis() + random(420, 1250);
return;
}
drive(CRUISE, CRUISE);
}
El ángulo de giro tras un choque debe ser aleatorio. Un ángulo de rebote especular fijo transforma la habitación en una mesa de billar, donde una trayectoria cerrada omite permanentemente la mayor parte del espacio.
El barrido planificado exige el algoritmo de inflado, corte y enlace junto con una odometría lo bastante precisa para mantener filas paralelas. Valídalo en este entorno de simulación antes de comprometer hardware avanzado.
Suposiciones y diferencias con el hardware
El simulador asume odometría perfecta, un mapa conocido a priori, giros instantáneos sobre el propio eje y un cepillo con huella circular perfecta. Una máquina física no cuenta con esas ventajas.
El deslizamiento de las ruedas y la deriva giroscópica desvían las pasadas en unas diez filas, razón por la cual los robots comerciales se relocalizan contra paredes, techos o balizas ópticas. Los giros reales consumen tiempo que aquí no penaliza en distancia. Además, un cepillo barre una franja rectangular trasera, por lo que retroceder sobre suelo ya transitado no aporta limpieza útil.
Aun así, la ventaja comparativa se mantiene: si un planificador supera al rebote aleatorio por un factor de 3× en simulación, lo superará por 2× en hardware real; el orden de eficiencia no varía.
Diagrama de circuito
Los sensores se agrupan en tres funciones, de las cuales solo la primera es indispensable:
Choque. Dos microinterruptores en un parachoques frontal flotante con resorte, cableados en configuración activo-bajo con resistencias pull-up internas habilitadas. Permiten el rebote aleatorio y constituyen la protección más robusta del sistema.
Desnivel. Sensores de reflectancia orientados hacia el suelo en las esquinas frontales, leídos en cada ciclo. Una rutina de cobertura recorre todo el espacio, incluyendo desniveles de escaleras; el cálculo del frenado seguro antes del borde está detallado en este tutorial.
Posición. Encoders en cuadratura en ambas ruedas y un giróscopo para mantener trayectorias paralelas. Solo el método sistemático requiere esta instrumentación.
Para construir un robot con estas características, consulta el proyecto del robot de cobertura de habitaciones; para la capa reactiva de evasión, el simulador de evitación de obstáculos detalla umbrales y barridos de proximidad.
Lista de hardware
Componentes
- Base de tracción diferencial con ancho de cepillo medible
- Sensores de choque capaces de soportar colisiones con mobiliario
- Encoders si el robot ejecuta una trayectoria planificada
- Sensores de desnivel para evitar caídas en escaleras
Explora el grafo
Dónde se usa este simulador
Los proyectos, rutas de aprendizaje y tutoriales que se basan en este laboratorio.
Sigue construyendo
Descargar recursos
Usa estas referencias de la página mientras trabajas en el proyecto. Los paquetes descargables del proyecto se añadirán solo cuando se publiquen su código fuente y su versión.
Preguntas comunes
Preguntas frecuentes
¿Por qué las aspiradoras robot económicas rebotan de forma aleatoria?
Porque el rebote aleatorio no precisa mapa, encoders ni localización: la estrategia completa consiste en avanzar en línea recta y girar un ángulo aleatorio al chocar. Esto cabe en un microcontrolador de 8 bits con dos interruptores de choque. El simulador muestra su costo: la primera mitad de la habitación se cubre tan rápido como con un barrido planificado, pero alcanzar el 90 % exige tres veces la distancia ideal y el 99 % requiere seis o más. El robot cumple la tarea al final, y por eso el método perdura, aunque dedique una hora a lo que requiere veinte minutos.
¿Por qué la cobertura es tan lenta al final y tan rápida al principio?
Porque un robot que barre sin mapa cubre suelo nuevo en proporción directa al área que aún no ha visitado. Al inicio casi cada baldosa que pisa es inédita; al final casi todo es repetición. Esto genera una aproximación exponencial clásica (cobertura aproximada a 1 menos e elevado a menos d sobre el óptimo), ilustrada como curva de referencia discontinua. Es el problema matemático del coleccionista de cupones: el último décimo de la sala cuesta más que los tres primeros cuartos.
¿Si el barrido sistemático es superior, por qué el simulador lo detiene al 90 %?
Porque un planificador debe evitar que el chasis colisione, trazando rutas que guardan un margen de seguridad frente a paredes y patas de mesas; jamás cubre lo que no puede pisar de forma segura. En este simulador, 130 de las 133 casillas que el barrido sistemático omite están a menos de dos celdas de un obstáculo. Por ello, las aspiradoras comerciales incorporan cepillos laterales que sobresalen del chasis y realizan una pasada perimetral dedicada. El rebote aleatorio llega a esos bordes con el tiempo, meramente por probabilidad.
¿Qué necesita el barrido planificado que no requiera el aleatorio?
Necesita saber dónde está. Una trayectoria en serpentina solo tiene sentido si el robot puede mantener líneas rectas, girar ángulos precisos y desplazarse lateralmente un ancho exacto de cepillo: esto requiere odometría, y la odometría acumula deriva. El simulador calcula sobre un mapa perfecto con un robot ideal; considera su factor de 1.35× el óptimo como el límite inferior teórico. Si añades deslizamiento y deriva del giróscopo, las filas dejan de ser paralelas en unas diez pasadas.
¿Qué anchura deben tener las pasadas de barrido?
Un ancho de cepillo, restando un solapamiento definido. Si las separas exactamente un ancho, cualquier mínimo error de rumbo dejará una franja sin limpiar entre filas. Con un solapamiento del 10 % al 20 %, esas franjas se eliminan a cambio de incrementar la distancia recorrida en ese mismo porcentaje. El simulador espacia las filas al mayor número entero de celdas que cubre el cepillo, por lo que la distancia resulta en 1.35× el óptimo.
¿Se aplica esto a otras máquinas además de aspiradoras?
Es el mismo problema para cortacéspedes robóticos, limpiafondos de piscinas, fregadoras de pisos, pulverizadores agrícolas y drones de prospección. Todos poseen un ancho útil de trabajo, un área a cubrir y un presupuesto energético limitado. La diferencia radica en si la máquina puede costear los sensores necesarios para ubicarse: un dron de mapeo dispone de GPS y siempre planifica; un limpiafondos carece de sensores y siempre deambula.
Lecturas adicionales
Referencias
Fuentes autorizadas para profundizar más allá del modelo educativo acotado de este simulador.