Parte: 11 — IA encarnada, robótica y uso de computadores
Nivel: experto · Horas estimadas: 6
Laboratorio: robotics · Estado: EXECUTABLE_CORE
Comprender localización, mapeo y slam dentro de la evolución de la inteligencia artificial, implementar un experimento mínimo verificable y distinguir qué parte constituye evidencia frente a una afirmación todavía no comprobada.
Al finalizar podrás:
- Explicar localización, mapeo y slam usando los conceptos
localization,mapping,SLAM,uncertainty. - Ejecutar el laboratorio con una semilla explícita y revisar su contrato JSON.
- Identificar al menos un supuesto, una limitación y un riesgo de aplicación.
- Comparar el enfoque con la etapa anterior de la ruta de aprendizaje.
- Producir una evidencia reproducible y una conclusión que no exceda los datos.
localization, mapping, SLAM, uncertainty
Con sensores calibrados y fusión (clase 137), el robot puede estimar cuánto se movió; pero para navegar necesita saber dónde está y cómo es el mundo. SLAM (Simultaneous Localization And Mapping) resuelve ambas preguntas a la vez y es uno de los logros centrales de la robótica probabilística: sin él no hay aspiradoras que mapean casas, ni coches autónomos, ni realidad aumentada estable. La pose y el mapa que produce son la entrada directa de la planificación de movimiento (clase 139).
- Localización: dado un mapa conocido, estimar la pose
(x, y, θ)del robot a partir de sensores. Resoluble con filtros (Kalman, partículas — Monte Carlo Localization). - Mapeo: dada una trayectoria conocida, construir el mapa (rejilla de ocupación o conjunto de landmarks).
- SLAM: ninguna de las dos cosas se conoce. Para localizarse hace falta el
mapa; para mapear hace falta la pose. La solución es estimar conjuntamente
la distribución
p(pose, mapa | observaciones, controles).
La odometría integra el movimiento (encoders, IMU): cada paso añade error, y el error se acumula sin cota. Un error angular pequeño es el más dañino: desvía toda la trayectoria posterior de forma proporcional a la distancia recorrida (ver ejemplo trabajado). Por eso la odometría sola nunca basta: hace falta anclar la trayectoria a referencias externas (landmarks) y, sobre todo, cerrar lazos: reconocer un lugar ya visitado y corregir de golpe toda la deriva acumulada.
EKF-SLAM extiende el filtro de Kalman (clase 137) a un estado aumentado que contiene la pose del robot y las posiciones de los N landmarks:
estado: X = [x, y, θ, l1x, l1y, l2x, l2y, ..., lNx, lNy] dimensión 3+2N
creencia: N(X̂, P) con P de tamaño (3+2N)×(3+2N)
por cada paso:
1. PREDICCIÓN: propaga la pose con el modelo de movimiento; P crece.
2. ASOCIACIÓN DE DATOS: ¿qué landmark corresponde a cada observación?
3. CORRECCIÓN: la observación (distancia/ángulo a un landmark) corrige
la pose Y el landmark; las correlaciones en P propagan la corrección
al resto del mapa.
Dos propiedades clave: (1) la incertidumbre del mapa está correlacionada con la de la pose — observar bien un landmark mejora la estimación de otros a través de P; (2) el coste es O(N²) por paso por el tamaño de P, lo que motivó alternativas (FastSLAM con partículas, graph-SLAM con optimización de grafos, que es lo que usan los sistemas modernos como Cartographer u ORB-SLAM).
Cuando el robot reconoce un lugar visitado (por apariencia o por geometría), se añade una restricción entre dos poses lejanas en el tiempo. En graph-SLAM esa restricción redistribuye el error por toda la trayectoria: el mapa "encaja" de golpe. Un cierre de lazo falso (asociar mal dos lugares parecidos) es catastrófico: corrompe el mapa entero. La asociación de datos es el talón de Aquiles de todo SLAM.
- Rejilla de ocupación: cada celda guarda p(ocupada); ideal para LiDAR 2D y planificación. Memoria proporcional al área.
- Mapa de landmarks: lista de puntos distintivos; compacto, requiere buenos detectores y asociación.
- Mapas densos / nubes de puntos / mallas (SLAM visual 3D): más ricos y más costosos.
Deriva por error angular. Un robot recorre un cuadrado de 10 m de lado usando solo odometría. Su giróscopo tiene un sesgo minúsculo: cada giro de 90° lo ejecuta/mide como 91° (error de 1°).
Tras la primera esquina el rumbo lleva 1° de error; en 10 m de tramo la desviación lateral es aproximadamente:
desvío ≈ d·sin(ε) = 10·sin(1°) ≈ 0.175 m
Los errores angulares se suman esquina tras esquina (1°, 2°, 3°, 4°), y cada tramo hereda el rumbo acumulado. Desvíos laterales por tramo: ~0.175, ~0.349, ~0.523, ~0.698 m. Al "cerrar" el cuadrado, el robot no vuelve al origen: queda a más de 1 m del punto de partida (≈1.2 m combinando componentes), con un error de rumbo final de 4°. Con 0.1° de sesgo por giro el error final sería ~0.12 m: la deriva escala linealmente con el sesgo, pero nunca es cero.
Si el robot observa un landmark conocido en el origen (una baliza en la esquina de partida), la corrección tipo Kalman con esa observación reduce el error final al nivel del ruido del sensor de la baliza (~centímetros): esto es, en miniatura, un cierre de lazo.
| Enfoque | Estado estimado | Coste por paso | Maneja ambigüedad | Uso típico |
|---|---|---|---|---|
| Odometría pura | Pose (sin mapa) | O(1) | No; deriva sin cota | Estimación a corto plazo |
| Localización MCL (partículas) | Pose con mapa dado | O(partículas) | Sí (multimodal) | Robot en mapa conocido |
| EKF-SLAM | Pose + N landmarks | O(N²) | No (unimodal) | Mapas pequeños de landmarks |
| FastSLAM | Partículas × mapas | O(P·log N) | Sí | Landmarks, mapas medianos |
| Graph-SLAM (moderno) | Grafo de poses | Optimización dispersa | Con robustez extra | Cartographer, ORB-SLAM |
flowchart TD
O[Odometría<br/>predicción de pose] --> S[Estado conjunto<br/>pose + mapa]
Z[Observaciones<br/>landmarks / scan] --> DA{Asociación<br/>de datos}
DA -->|landmark conocido| C[Corrección EKF<br/>pose y mapa]
DA -->|landmark nuevo| A[Aumentar estado<br/>añadir landmark]
DA -->|lugar ya visitado| L[Cierre de lazo<br/>redistribuye el error]
C --> S
A --> S
L --> S
S -->|mapa y pose| P[Planificación<br/>clase 139]
- "Con buenos encoders no hay deriva." La deriva es estructural a la integración de ruido: mejores sensores la reducen, jamás la eliminan.
- "SLAM = construir un mapa." Sin la estimación conjunta de la pose no es SLAM; el acoplamiento pose-mapa es precisamente la dificultad.
- "El GPS resuelve SLAM." En interiores no hay GPS; en exteriores su error (metros, multipath) y su frecuencia no bastan para mapear con precisión — se usa como un sensor más dentro de la fusión.
- "Más landmarks siempre ayudan." En EKF-SLAM el coste crece O(N²) y cada landmark añade riesgo de asociación errónea; la calidad y distintividad importan más que la cantidad.
- "Un cierre de lazo siempre mejora el mapa." Uno falso lo corrompe por completo; los sistemas reales verifican geométricamente cada cierre antes de aceptarlo.
Un SLAM operativo exige: asociación de datos robusta (descriptores visuales, verificación geométrica), gestión de mapas de larga duración (el mundo cambia: muebles, iluminación, estaciones), relocalizacón tras secuestro o reinicio, presupuesto de cómputo en el robot (graph-SLAM disperso, no EKF denso) y métricas de calidad del mapa (ATE/RPE contra ground truth). Herramientas como Cartographer, RTAB-Map u ORB-SLAM3 encapsulan una década de ingeniería que el modelo conceptual de esta clase solo esboza.
python lab.pyEl laboratorio llama a ai_evolution.labs.run_lab("robotics"). Esta
decisión evita 183 implementaciones divergentes: cada clase tiene un entrypoint
propio, pero los motores didácticos se prueban como una biblioteca común.
- tipo de laboratorio y semilla;
- entradas o decisiones observables;
- resultado estructurado;
- lista
evidencecon hechos que pueden inspeccionarse; - lista
limitationsque impide presentar la demo como producción.
- 📓
notebook.ipynb: recorrido guiado con la materia resumida. - ✍️
notebook_student.ipynb: ejercicios para resolver. - ✅
notebook_solution.ipynb: solución de referencia explicada.
| Criterio | Peso |
|---|---|
| Comprensión conceptual | 25 % |
| Ejecución reproducible | 25 % |
| Interpretación basada en evidencia | 25 % |
| Riesgos, límites y mejora propuesta | 25 % |
Consulta assessment.md para preguntas y criterio de aceptación.
| Síntoma | Causa probable | Corrección |
|---|---|---|
| El código corre, pero no hay conclusión | Se confundió ejecución con aprendizaje | Explica qué demuestra y qué no demuestra |
| El resultado cambia sin explicación | No se registró semilla o configuración | Conserva semilla, versión y parámetros |
| Se promete uso real | Se extrapoló desde una demo educativa | Declara entorno, datos, límites y revisión humana |
| Se copia una métrica aislada | No existe baseline ni costo de error | Añade comparación y criterio de decisión |
¿Debo usar una API comercial?
No. El núcleo funciona localmente. Las extensiones LIVE se documentan por separado.
¿El laboratorio representa una implementación industrial?
No por sí solo. Enseña el contrato y el patrón; producción exige integración,
seguridad, observabilidad, pruebas y operación.
¿Dónde profundizo?
Revisa las especializaciones enlazadas en el README raíz y la ruta siguiente.
- Thrun, S., Burgard, W. & Fox, D. Probabilistic Robotics — caps. 7-10 (localización y SLAM) — uso: referencia consultada en su fuente original
- Durrant-Whyte, H. & Bailey, T. (2006). Simultaneous Localization and Mapping: Part I. IEEE Robotics & Automation Magazine. DOI 10.1109/MRA.2006.1638022 — uso: fuente primaria del mecanismo estudiado
- Cadena, C. et al. (2016). Past, Present, and Future of SLAM. IEEE Trans. on Robotics. arXiv:1606.05830 — uso: fuente primaria del mecanismo estudiado
- Siciliano, B. & Khatib, O. (eds.). Springer Handbook of Robotics, 2e — cap. de SLAM — uso: referencia consultada en su fuente original
- Nav2 — documentación de localización y mapas — uso: referencia consultada en su fuente original
- Cartographer (Google) — documentación oficial — uso: referencia consultada en su fuente original
Bloque generado por
python scripts/link_papers_to_classes.py. La fuente espapers/catalog/papers.json.
| Paper | Año | Qué desbloqueó | Miniatura |
|---|---|---|---|
| P99 · Localización y mapeo simultáneos: parte I | 2006 | Formaliza el problema circular de la robótica móvil: no se puede localizar sin mapa ni mapear sin localización, y hay que resolver ambos a la vez. | notebook |
Cada ficha explica el problema anterior, la matemática mínima, los límites y los errores de atribución más frecuentes. Para leerlas con método: cómo leer un paper de IA · anexos matemáticos.
Bloque generado por
python scripts/link_sources_to_classes.py. Cada obra lleva su localizador verificado ensources/bibliography.json.
Los papers dicen de dónde salió el mecanismo. Estas obras lo desarrollan con el espacio que una clase no tiene: teoría completa, demostraciones y ejercicios.
| Obra | Edición | Localizador | Papel en esta clase |
|---|---|---|---|
| Sebastian Thrun — Probabilistic Robotics | 2005 | ISBN 9780262201629 · web de la obra | citada en las referencias de esta clase · caps. 7-10 · obra de referencia de la parte 11 |