La forma más primitiva para que un robot sepa que "se movió 1 m a la derecha y 2 m hacia adelante" es sumando continuamente su propio desplazamiento. Integra el número de rotaciones de las ruedas, la velocidad de los motores y las velocidades angulares de la IMU a lo largo del tiempo para estimar su posición actual. Este método se denomina navegación a estima. Sigue funcionando incluso cuando el GPS o la cámara no están disponibles temporalmente, pero un pequeño deslizamiento de las ruedas o una desviación del sensor se convierte en un error de posición que aumenta con el tiempo.

Topógrafo usando un receptor GNSS RTKObservación GNSS absoluta
Módulo IMU GY-521 con un MPU-6050Ejemplo de IMU de bajo costo

Imágenes: Surveyor Usando un receptor GNSS con solución RTK (SweetCanadianMullet, CC BY 4.0) / GY-521 Módulo MPU-6050 (Nevit Dilmen, CC BY-SA 3.0), Wikimedia Commons. Sensores representativos, no se requiere un emparejamiento de hardware obligatorio.

Resumen de 30 segundos

  • La navegación a estima predice el estado actual a partir del estado anterior más el desplazamiento medido. Puede actualizarse a alta velocidad incluso sin observaciones.

  • En un robot de tracción diferencial, la diferencia entre el desplazamiento de las ruedas izquierda y derecha determina el ángulo de giro, y su promedio determina la distancia de avance. El error en el radio de la rueda y el ancho de la banda de rodadura se manifiesta como una curva sistemática.

  • El error de odometría se acumula mediante la integración. Para obtener una posición absoluta se requiere corrección a partir de observaciones como GNSS, LiDAR, cámara o marcadores reflectantes.

  • Una IMU es robusta ante cambios de actitud a corto plazo, pero la posición se desvía rápidamente cuando la aceleración se integra dos veces. La fusión de ruedas y una IMU mediante un filtro de Kalman extendido (EKF) o un gráfico factorial es el enfoque común.

  • En la implementación, las marcas de tiempo, los sistemas de coordenadas, las convenciones de signo izquierda/derecha, el radio de la rueda, la detección de deslizamiento y la covarianza deben definirse correctamente desde el principio; si esto falla, ni siquiera los sensores más costosos podrán solucionarlo.

1. Cinemática de la transmisión diferencial

Sea r el radio de las ruedas izquierda y derecha, b la distancia entre las ruedas (banda de rodadura) y \omega_L,\omega_R las velocidades angulares izquierda y derecha. Las velocidades lineales de las ruedas son v_L=r\omega_L y v_R=r\omega_R, por lo que la velocidad de traslación del centro del vehículo v y la velocidad de guiñada \dot{\theta} son:

v=\frac{v_R+v_L}{2},\qquad \dot{\theta}=\frac{v_R-v_L}{b}

Si la pose en el instante k es (x_k,y_k,\theta_k) y el periodo de muestreo es \Delta t, la integración de Euler simple da como resultado:

x_{k+1}=x_k+v\cos\theta_k\Delta t,
y_{k+1}=y_k+v\sin\theta_k\Delta t, \qquad \theta_{k+1}=\theta_k+\dot{\theta}\Delta t

Al conducir en un arco a velocidad constante, el uso de la integración exacta (la transformación exponencial en coordenadas del cuerpo) mantiene el error pequeño incluso a baja velocidad y alta velocidad de giro.

Diagram 1 · Use the button to switch views
Vehicle centerLeft wheel vLRight wheel vR Tread b vInstantaneous center of rotationIf vR > vL, turns left
¿La rotación precisa de la rueda elimina el error de posición?

Persisten el deslizamiento y los errores en la geometría de la rueda o del montaje.

La precisión del sensor y la validez del modelo de movimiento son cuestiones distintas. ## 2. ¿Por qué se produce la deriva de la odometría? Si el radio de la rueda tiene un error del 1 % y se asume que izquierda y derecha son iguales durante la conducción, el robot girará gradualmente incluso cuando crea que va en línea recta. La resolución del codificador izquierda/derecha, el juego de engranajes, las irregularidades del suelo, el desgaste de los neumáticos y la deformación inducida por la carga se convierten en errores sistemáticos. Si una rueda resbala sobre un suelo mojado o grava, la rotación medida y el desplazamiento real ya no coinciden. El error de actitud \delta\theta produce un error de posición lateral. Para la distancia hacia adelante s, una aproximación a corto plazo da como resultado:
\delta y\approx s\,\delta\theta
Al recorrer 1 km con un error angular de 0,5 grados, el desplazamiento lateral alcanza aproximadamente 8,7 m. Expresar el error de posición simplemente como "tantos cm por segundo" no permite capturar las diferentes estructuras de error al conducir en línea recta, girar o derrapar. La covarianza de la odometría de las ruedas propaga la incertidumbre del desplazamiento lateral a la pose y la actualiza en consecuencia. En la implementación, la covarianza se incrementa durante los giros o cuando se detecta derrape, para que la fusión de sensores posterior no confíe excesivamente en la odometría. ## 3. Adición de una IMU La integración de la velocidad angular \omega_z del giroscopio de la IMU da como resultado:
\theta(t)=\theta_0+\int_0^t(\omega_z(\tau)-b_g-n_g)\,d\tau
donde b_g es el sesgo del giroscopio y n_g es el ruido. Incluso en el instante en que una rueda patina, el cambio a corto plazo en la velocidad angular aún se puede medir, lo que proporciona una estimación de actitud más precisa que con las ruedas solas. Al realizar una doble integración de la aceleración para obtener la velocidad y la posición, el error debido al sesgo b_a aumenta como:
\delta p(t)\simeq\frac{1}{2}b_a t^2
por lo tanto, una IMU por sí sola no puede funcionar como un sensor de posición de larga duración. Combinación de ruedas y una IMU: las ruedas gestionan el desplazamiento de baja frecuencia, y la IMU gestiona la velocidad angular y la aceleración de alta frecuencia. El balanceo y el cabeceo se inicializan desde la dirección de la gravedad, y cuando se dispone de un magnetómetro o GNSS, también se añade una referencia de guiñada absoluta. ## 4. Corrección con un EKF o un grafo factorial Un ejemplo de vector de estado es:
\mathbf{x}=[x,y,\theta,v,b_g,b_a]^T
En la etapa de predicción, se calcula un modelo de movimiento no lineal f a partir de las ruedas y la IMU; cuando llega una observación, el residuo se utiliza para corregirlo.
\mathbf{x}_{k+1}=f(\mathbf{x}_k,\mathbf{u}_k)+\mathbf{w}_k,
\mathbf{z}_k=h(\mathbf{x}_k)+\mathbf{v}_k
El filtro de Kalman extendido (EKF) linealiza localmente el modelo no lineal mediante el jacobiano. La posición GNSS, la coincidencia de escaneos LiDAR, los puntos característicos de la cámara y las poses de marcadores conocidos se pueden incorporar como observaciones \mathbf{z}. Para bucles grandes o revisitaciones, las poses y observaciones anteriores se almacenan en un grafo factorial y todo el sistema se optimiza posteriormente. Para ROS 2 (suponiendo las definiciones de mensajes estándar de Jazzy), el mensaje `nav_msgs/msg/Odometry` de la rueda, el `sensor_msgs/msg/Imu` de la IMU y la transformación TF `odom` → `base_link` deben usar una base de tiempo común. Estos tipos de mensajes corresponden a las grafías de ROS 1 `nav_msgs/Odometry` y `sensor_msgs/Imu`, pero los detalles de implementación de ROS 2, la calidad de servicio (QoS) y la configuración de la distribución deben verificarse por separado. El filtro de Kalman extendido (EKF) de `robot_localization` es un buen punto de partida para la implementación, pero anular las covarianzas o introducir la misma información dos veces hace que la estimación sea artificialmente rígida. ## 5. Cómo se usa esto en los robots actuales Los robots móviles autónomos (AMR) de interior utilizan constantemente codificadores de rueda y una IMU, restableciendo la deriva mediante LiDAR o la coincidencia de mapas de cámara. En la conducción autónoma, la velocidad de las ruedas, el ángulo de dirección, la IMU, el GNSS y el LiDAR se combinan para que la estimación se mantenga durante segundos o decenas de segundos, incluso cuando el GNSS falla en un túnel o bajo una estructura elevada. En los robots agrícolas, el barro, los surcos y las pendientes aumentan el deslizamiento de las ruedas, por lo que se combinan RTK-GNSS, IMU y sensores de fuerza de implementos. Los robots submarinos y las naves espaciales operan durante largos periodos sin GNSS. Se añade un registrador de velocidad Doppler (DVL), un rastreador de estrellas o un sistema de ajuste del terreno como observación absoluta de baja frecuencia para controlar la covarianza de la navegación a estima. Lo importante es transmitir la estimación a planificación y control junto con la pregunta: "¿Qué tan seguros estamos de esto?". ## 6. Lista de verificación de implementación 1. Convertir las marcas de tiempo de los sensores a un reloj común y medir la latencia. 2. Dibuje los sistemas de coordenadas `base_link`, `odom` y `map`, así como sus convenciones de signos dextrógiras. 3. Identifique el radio de la rueda, la banda de rodadura y la resolución del codificador mediante pruebas de conducción reales. 4. Evalúe el error por separado para la conducción en línea recta, giros estables, figuras en ocho, baches y superficies de baja fricción. 5. Aumente la covarianza cuando se detecten deslizamientos o pérdidas de datos, y corríjala cuando se reciba una observación absoluta. 6. Reproduzca los registros para confirmar que la misma entrada produce la misma estimación. Durante las pruebas, registre no solo el error de posición del punto final, sino también el error de actitud, el error máximo, el percentil 95 y la tasa de deriva durante las pérdidas de datos. Una estimación que suele ser precisa, pero que ocasionalmente se desvía mucho, no puede utilizarse para una planificación de trayectoria segura. ## Resumen La navegación a estima es la técnica fundamental para estimar el movimiento de un robot con el menor retraso posible. Integra el desplazamiento de la rueda y la velocidad angular de la IMU, suprimiendo la deriva con observaciones absolutas de GNSS, LiDAR o cámara. Antes de añadir más sensores, es fundamental que el modelo de movimiento, las marcas de tiempo, los sistemas de coordenadas y la covarianza sean correctos para garantizar la precisión y la repetibilidad.
Comprueba tu comprensión
¿La rotación precisa de la rueda elimina el error de posición?

Persisten el deslizamiento y los errores en la geometría de la rueda o del montaje.

La precisión del sensor y la validez del modelo de movimiento son cuestiones distintas. ## Referencias - [ROS 2 — documentación de tf2](https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Tf2.html) - [ROS 2 — localización de robots](https://github.com/cra-ros-pkg/robot_localization) - [localización de robots — nodos de estimación de estado y parámetros del sensor](https://docs.ros.org/en/noetic/api/robot_localization/html/state_estimation_nodes.html) - [REP-105 — Marcos de coordenadas para plataformas móviles](https://www.ros.org/reps/rep-0105.html) - [Interfaces comunes de Jazzy de ROS 2 — paquetes de mensajes estándar](https://github.com/ros2/common_interfaces/tree/jazzy) - [Definición de Imu/mensajes de sensor de Jazzy de ROS 2](https://github.com/ros2/common_interfaces/blob/jazzy/sensor_msgs/msg/Imu.msg) - [Definición de odometría/mensajes de navegación de Jazzy de ROS 2](https://github.com/ros2/common_interfaces/blob/jazzy/nav_msgs/msg/Odometry.msg) - [T. D. Barfoot, Estimación de estado para robótica (https://asrl.utias.utoronto.ca/~tdb/bib/barfoot_ser17.pdf) - Sociedad de Robótica y Automatización del IEEE (https://www.ieee-ras.org/) D. Barfoot, Estimación de estado para robótica

Related reading

Explore another aspect of this fieldPor qué falla ICP: inicialización, valores atípicos y geometría simétricaExplore another aspect of this fieldDesde la cartografía hasta la navegación en ROS 2: un procedimiento mínimo con Jazzy y Nav2.