ELAI S.r.l.

El robot cuenta bien las vueltas: ¿por qué calcula mal la posición?

Odometría diferencial con arcos exactos, error de Euler y radio incorrecto: simulación reproducible, sin mediciones de robot.

El robot cuenta bien las vueltas: ¿por qué calcula mal la posición?

Contar movimiento no basta para conocer posición

Un robot transporta piezas por pasillo industrial. Encoders cuentan giros sin perder pulsos, pero software sitúa vehículo fuera de trayectoria. Antes de añadir red neuronal explicamos giros, distancias, rotación del chasis y acumulación en mapa. Distinguimos aproximar mal movimiento correcto de integrar perfectamente movimiento estimado con parámetros erróneos: requieren remedios distintos.

Resumen. Derivamos odometría plana de dos ruedas sin deslizamiento, velocidades constantes por intervalo. Vía.5 m, izquierda 1 m y derecha 1.02 m dan ángulo.04 rad y posición(1.009731,.020197)m. Comparamos arco exacto con Euler y convergencia numérica. Otro caso: ambas recorren realmente 10 m, radio derecho software 2% mayor; integración exacta termina unos dos metros lejos. Simulación determinista, no benchmark ni seguridad.

Modelo: ruedas, chasis e hipótesis

b es distancia completa entre puntos de rodadura, no media vía. Origen entre ruedas: x adelante, y izquierda, ángulo antihorario positivo. Δl,Δr positivos al avanzar. Pose(x, y,φ) en metros y radianes. Sin aceleración, deformación, pendientes o carga. Rodadura sin deslizamiento permite deducir movimiento solo de giros.

Modern Robotics 13.4 de Kevin Lynch y Frank Park explica incrementos, chasis y exponencial de matriz; leímos explicación técnica. Nuestro caso escalar usa datos propios y b completo. Mezclar media vía y vía introduce factor dos. No ejecutamos su software ni estimación de robot EL-AI.

De rueda a arco

Radio r e incremento Δθ dan distancia rΔθ. Contar pulsos perfecto no certifica radio efectivo. Media da arco del centro; diferencia dividida por b da giro. Derecha más larga gira izquierda, según signo positivo. Geometría sin función aprendida.

Δl=r_lΔθ_l; Δr=r_rΔθ_r Δs=(Δl+Δr)/2; Δφ=(Δr−Δl)/b b=0.5m, Δl=1m, Δr=1.02m → Δs=1.01m, Δφ=0.04rad

Integrar curva, no tangente

Convertimos arco y giro en desplazamiento cartesiano. Velocidades constantes dan arco circular R=Δs/Δφ si no es cero. En marco inicial, avance RsinΔφ y lateral R(1−cosΔφ). Fórmula responde dónde termina centro al girar mientras avanza, no avanzar todo antes de girar.

u=Δs·sin(Δφ)/Δφ v=Δs·[1−cos(Δφ)]/Δφ x_next=x+cosφ·u−sinφ·v y_next=y+sinφ·u+cosφ·v φ_next=φ+Δφ

u, v son metros en marco inicial. cosφ, sinφ giran incremento al mapa antes de sumar x, y: avanzar mirando norte no es avanzar por x del mapa. Orientación suma ángulos. Conservamos φ sin envolver; trigonometría admite vueltas. Aplicación puede normalizar coherentemente.

Al tender Δφ a cero, cocientes→1 y 0: u=Δs, v=0. Código usa límite bajo 10⁻¹²rad, no divide por cero, suficiente aquí. Para ángulos pequeños sinc o series evitan pérdida por restar casi iguales en 1−cosΔφ. Sin comparar bibliotecas/hardware; derivación exacta distinta de evaluación flotante.

Desde origen φ=0: x=1.009730688 m, y=.020197307 m,φ=.04 rad. Colocar todo Δs en dirección inicial da(1.01,0)m y después actualiza giro: Euler explícito aproxima arco por tangente inicial. Método válido con error dependiente del paso. Confundirlos oculta unos dos centímetros laterales en este intervalo construido.

Un error numérico reducible

Fijamos Δl=10 m,Δr=10.2 m y N intervalos iguales: subdividimos datos constantes sintéticos, no frecuencia de encoder real. Arco termina(9.832813143,1.993209901)m, ángulo.4 rad, independiente de partición dentro tolerancia. Euler converge al aumentar N. Error es distancia euclídea final en metros, no solo lateral ni probabilidad de choque.

NError Euler (m)
12.011038172
100.200660483
1000.020065607
10000.002006560

Diez veces intervalos reduce error unas diez, coherente con convergencia Euler de primer orden aquí, no para toda conducción. Si velocidades cambian dentro intervalo, arco constante también aproxima: incrementos totales omiten orden temporal. Aislamos error de método; ahora conservamos integración exacta y cambiamos información de entrada.

Un error de calibración que integración no corrige

Escenario 2: movimiento real recto, radios reales.1 m,100 rad cada encoder,10 m cada rueda. Software usa.1 m izquierda y.102 m derecha, error 2%, deduciendo 10 y 10.2 m. Mismos datos de curva anterior, pero ahora curva estimada, no verdadera. Dos escenarios explícitos comparten entrada numérica, sin cambiar hipótesis en silencio.

Integración exacta con 100 partes estima(9.832813143,1.993209901)m frente(10,0)m y ángulo real 0: distancia 2.000209278 m. Más partes no lo elimina: integra diferencia inexistente. Giro aparente.4 rad cambia dirección del avance y acumula lateral, no equivale a sumar 2% a longitud.

Izquierda: calibración, recta verdadera y curva por radio derecho2% erróneo; ejes en metros a igual escala. Derecha: error Euler contra arco correcto en ejes logarítmicos. Comparaciones sintéticas distintas: reducir segundo error no elimina primero.
Izquierda: calibración, recta verdadera y curva por radio derecho 2% erróneo; ejes en metros a igual escala. Derecha: error Euler contra arco correcto en ejes logarítmicos. Comparaciones sintéticas distintas: reducir segundo error no elimina primero.

Qué no observan encoders

Rueda patinando puede producir pulsos iguales a rodar realmente. Encoder solo no distingue sin hipótesis. Radio efectivo/vía dependen de contacto y mecánica. No simulados, por lo que dos metros no predicen todo robot. Precisión del conteo, parámetros y localización son distintas; encoder exacto no basta.

Cámara o referencias añaden evidencia de movimiento; fusión introduce calibración, tiempo, ruido y errores comunes. No ejecutamos Kalman, localización visual ni SLAM—localización y mapa simultáneos—ni inventamos prestaciones. Odometría es entrada dependiente de modelo, no verdad absoluta.

Reproducibilidad y sistema industrial

Cada actualización tiene trabajo/memoria constantes; guardar trayectoria usa O(N). Sin azar/semilla; Python 3.14.0 y Matplotlib 3.11.2 registrados. Aserciones comprueban recta, equivalencia al subdividir y comparaciones. Código recalcula 1,10,100 intervalos para mostrar invariancia/convergencia, sin usar capturas como datos.

Prueba real separaría calibración de evaluación en rutas no usadas, registrando suelo, carga, velocidad, radios, vía, encoders e incertidumbre de referencia. Propuesta, no ejecutada. Simulación no prueba seguridad/conformidad ni operación cerca de personas. Robotica industrial/colaborativa es dirección exploratoria EL-AI, no producto, cliente o instalación demostrados.

Contar giros bien no basta: es primer eslabón. Arcos exactos resuelven integración bajo hipótesis, no parámetros erróneos o movimiento no observado. Mismos números muestran verdades distintas explícitas. Antes de pedir compensación AI, preguntar qué error es aproximación y cuál información ausente.

Kevin M. Lynch, Frank C. Park. Modern Robotics, section 13.4 Odometry. Technical transcript read 17 October 2026; independent scalar simulation, no robot measurements..

from experiment import integrate
for n in [1,10,100]:
    print(n,integrate(n,exact=True)[0],integrate(n,exact=False)[0])

Código, datos e instrucciones · JSON. Cálculos didácticos ejecutados con Python 3.14.0; figuras con Matplotlib 3.11.2. Análisis asistido por IA, sin afirmar revisión por pares ni humana. Portada original ImageGen ilustrativa: no documenta personas, sedes ni instalaciones de EL-AI. Fuentes consultadas el 17 de octubre de 2026.