Tutorial · Intermedio · 21 min de lectura
SLAM, generación de mapas, localización y deriva odimétrica
Odometría y sensores de distancia combinados para SLAM, en qué difiere la localización del mapeo y cómo diagnosticar la deriva y el cierre de lazos.
Un robot móvil necesita dos respuestas relacionadas: ¿qué aspecto tiene el entorno, y dónde está el robot dentro de él? La localización y mapeo simultáneos (SLAM) estima ambas cosas mientras el robot explora. Una vez que existe un mapa estable, un sistema de localización puede estimar la pose contra ese mapa fijo sin reconstruirlo.
SLAM no es un sustituto de la odometría. Usa estimaciones locales de movimiento para conectar observaciones del sensor, y luego corrige su deriva acumulada cuando el entorno aporta suficientes pruebas.
Separa los cuatro trabajos
Los términos son más fáciles cuando cada uno tiene una salida clara:
- Odometría: movimiento local suave a partir de encoders de rueda, sensado inercial, movimiento visual, o su fusión. Deriva con el tiempo.
- Mapeo: construir una representación como una rejilla de ocupación a partir de observaciones del sensor y poses.
- Localización: estimar la pose del robot en un mapa existente.
- SLAM: construir el mapa mientras estima poses y revisa estimaciones pasadas.
La navegación añade planificación y control por encima. Un buen mapa no genera por sí solo una orden de velocidad segura.
Sigue la información a través del sistema
Para SLAM 2D en interiores, un flujo de datos habitual es:
- Los encoders de rueda y una unidad de medición inercial estiman el movimiento local.
- Un lidar publica barridos de rango con marcas de tiempo y un marco del sensor.
- TF2 relaciona el sensor con
base_linky la pose local conodom. - El emparejamiento de barridos alinea observaciones nuevas con barridos recientes o con el mapa que crece.
- El backend optimiza un grafo de poses y restricciones.
- Una rejilla de ocupación se actualiza a partir de las poses corregidas y de los datos de rango.
La odometría aporta una estimación inicial útil. Sin ella, el emparejamiento de barridos puede tener que buscar en un espacio mucho mayor o alinearse con la estructura repetida equivocada. Sin observaciones externas, los errores de odometría no tienen cota. Esa cota es lo que decide si un robot puede barrer un suelo en filas paralelas: las filas dejan de ser paralelas a los diez aproximadamente, y por eso una máquina que planifica su cobertura también lleva un giroscopio, una cámara de techo o un balizador. Al aire libre ese mismo trabajo le toca a un GPS, fusionado en vez de simplemente seguido.
Entiende el emparejamiento de barridos y el cierre de bucle
El emparejamiento de barridos encuentra una pose relativa que alinea lo mejor posible las medidas de rango actuales con la estructura existente. Puede corregir pequeños deslizamientos de rueda y errores de escala, pero necesita rasgos geométricos. Un pasillo largo sin rasgos, una pared de cristal, una multitud en movimiento o estanterías muy repetitivas pueden hacer que varias poses parezcan iguales.
Un cierre de bucle ocurre cuando el sistema reconoce un sitio visitado antes y añade una restricción entre la pose actual y una pose más antigua. Optimizar esa restricción puede repartir el error acumulado a lo largo de la trayectoria y volver a alinear las paredes.
Un cierre de bucle no es correcto automáticamente. Una coincidencia falsa en dos pasillos parecidos puede doblar o rasgar el mapa. Los sistemas robustos usan comprobaciones geométricas, puntuaciones y umbrales de aceptación configurables. Revisa las correcciones grandes sospechosas en vez de celebrar cada bucle cerrado.
Prepara el robot antes de ajustar SLAM
SLAM no puede compensar un contrato de entrada roto. Verifica esto primero:
- dirección, escala y marcas de tiempo de los encoders;
- odometría local razonable en pruebas de ida recta y de giro;
- transformadas
odom → base_link → sensorcorrectas; - datos de rango en las unidades correctas con las lecturas inválidas identificadas;
- acuerdo de reloj entre nodos;
- un soporte de sensor rígido;
- rango y campo de visión suficientes para el entorno.
Conduce despacio mientras estableces la línea base. La distorsión por movimiento y los barridos dispersos se acentuan al aumentar la velocidad angular. Si el sensor o el driver admite compensación temporal, configúrala a partir del comportamiento medido en vez de asumir que no hace falta.
Construye el mapa deliberadamente
Empieza en un sitio con muchos rasgos y muévete formando bucles en vez de solo trayectos largos de ida y vuelta. Gira con suavidad para que el escáner observe las mismas estructuras desde puntos de vista solapados. Evita llevar o mover objetos grandes junto al robot durante el mapeo.
Vigila el mapa en vivo para detectar paredes duplicadas, esquinas difuminadas, saltos y salas desconectadas. Son pruebas, no problemas cosméticos:
- paredes paralelas duplicadas sugieren error de pose o de temporización;
- paredes curvadas al girar sugieren malas transformadas o distorsión por movimiento;
- deriva gradual de escala sugiere calibración de ruedas o restricciones de barrido débiles;
- reorganización global repentina sugiere un cierre de bucle, correcto o falso.
Guarda el mapa solo después de comprobar que los pasillos importantes siguen siendo transitables a la resolución elegida. Una rejilla más fina consume memoria y puede conservar el ruido del sensor; una rejilla más gruesa puede cerrar pasos estrechos.
Localízate en el mapa guardado
Después de mapear, cambia a modo localización contra el mapa guardado. Un localizador por filtro de partículas como la Localización de Monte Carlo Adaptativa (AMCL) estima la pose a partir de observaciones de rango y movimiento. Sigue necesitando un modelo de sensor razonable, transformadas y odometría.
Dale una pose inicial lo bastante cerca para que el sistema identifique la ubicación correcta, especialmente en entornos simétricos. Prueba la recuperación empezando con errores de pose pequeños y luego mayores. La recuperación del «robot secuestrado» es un requisito aparte, no algo que se dé por hecho porque el seguimiento normal funcione.
En el modelo de marcos estándar, la odometría local publica odom → base_link, mientras que SLAM o la localización publica map → odom. La transformada global corrige la deriva sin forzar al marco de control localmente suave a que salte.
Mide la precisión y la repetibilidad
Usa hitos físicos con posiciones levantadas o cuidadosamente medidas. Registra la pose estimada cuando el robot se detiene en cada hito desde distintas direcciones de aproximación. Separa:
- repetibilidad en la misma ubicación;
- deriva local a corto plazo;
- consistencia global del mapa después de un bucle;
- tiempo de recuperación tras una pérdida temporal del sensor.
Compara el mapa con distancias conocidas, pero no juzgues solo por una imagen visualmente agradable. La navegación necesita espacio libre correcto, límites de obstáculo y estabilidad de pose más que un grosor de pared bonito.
Registra barridos, odometría, transformadas y salidas de SLAM para que un fallo se pueda reproducir. Un problema que solo aparece en vivo es muchísimo más difícil de diagnosticar.
Diagnostica los fallos habituales de SLAM
- Las paredes se duplican yendo recto: la escala de la odometría, el tiempo del sensor, o el emparejamiento de barridos son inconsistentes.
- El mapa se dobla al girar: la transformada del sensor, la odometría angular, o la distorsión por movimiento están mal.
- La pose salta en pasillos repetitivos: el emparejamiento de barridos o el cierre de bucle aceptaron una alineación ambigua.
- No se cierra ningún bucle: a la trayectoria le falta solapamiento, las observaciones son demasiado dispersas, o los umbrales de aceptación son demasiado estrictos.
- La localización solo funciona cerca de la pose inicial: el entorno es simétrico o la recuperación global no está configurada.
- El mapa parece correcto pero la navegación recorta las paredes: la huella, la inflación o la configuración del mapa de costes está mal.
- Ajustar cada parámetro de SLAM no cambia nada: el contrato de odometría/TF/sensor aguas arriba sigue roto.
Empieza por la calibración de encoders en cuadratura y la odometría de tracción diferencial, y luego usa marcos de coordenadas TF2 de ROS 2 para verificar la cadena geométrica. El Sensor Simulator muestra por qué el sesgo y la deriva no se pueden quitar solo con suavizado.
Explora el grafo
Forma parte de estos montajes
Proyectos y rutas de aprendizaje que incluyen este tutorial.
Lecturas adicionales