Contents — find the section you need
Change parameters and verify
Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.
Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.
The experiment controls are in English.
Explore timing, mounting position and axes in your browser
Use the panel above to compare ideal examples without ROS or local Python. These calculations explain different sources of disagreement; they do not run a fusion filter, estimate calibration or diagnose a robot. The original diagnostic procedure remains below.
Time offset: Δt is the time of the compared value minus the reference time. The displayed differences are x(t+Δt)−x(t)=vx Δt and heading(t+Δt)−heading(t)=yaw_rate Δt. Positive Δt compares a later value; negative compares an earlier value. At 1 m/s, 90 deg/s and +50 ms, the differences are +0.05 m and +4.5°. These are separate constant-axis translation and constant-angular-rate examples, not an integrated turning trajectory or a prediction of filter error. Time offset is not automatically transport latency or a timestamp-sign convention for a particular driver. Zero motion can hide timing disagreement. No tolerance is recommended.
Mounting position: the lower diagrams describe velocities at one instant. Body axes use x forward, y left, z up; positive yaw is counterclockwise viewed from +z. The supplied base-point velocity is v_base=(vx,0) in body axes. The lever arm r=(rx,ry) points from that base origin to the sensor origin, also in body axes. With ω=yaw_rate × π/180, the mounting-point velocity difference is ω×r=(-ω ry, ω rx) m/s. Thus v_sensor_body=v_base+ω×r. The position plot uses metres; the velocity plot uses m/s with separate scales. Sensor-axis arrows have a display length of 0.15 m. The velocity plot places vectors at a common origin to compare their components, not to depict where the robot travels.
Mounting orientation: R_bs rotates sensor components into body components. The model constructs hypothetical sensor-point linear velocity as v_sensor_components=R_bsᵀ v_sensor_body. Rotating it back gives the velocity of the sensor point, still not the base point. Only after subtracting the known ω×r term does this ideal algebra recover the supplied base velocity. Reuse of the known exact geometry is not a calibration estimate. This is a hypothetical velocity measurement, not raw IMU acceleration or gyro output; acceleration lever-arm effects are not modeled.
The “raw component mismatch” deliberately subtracts sensor-axis numbers from base-axis numbers at another point. It is an example of an invalid comparison, not a filter innovation. Its norm may even cancel to zero for some wrong comparisons. The algebraic recovery residual measures floating-point roundoff after using the same exact model; it is not localization accuracy or evidence that real calibration is correct. The table labels every vector by its point and axes.
Try in-place rotation, zero lever arm, a sensor on the left, reversed rotation and a 90° sensor mounting. Changing mounting yaw changes sensor components but leaves physical body-frame velocity unchanged. Changing Δt affects only the timing exercise. By default the lever arm is 0.2 m and the rate is 90 deg/s, so the lever-arm speed is about 0.314 m/s; the article's separate 1 rad/s example gives 0.2 m/s. Do not confuse degrees/s with radians/s.
All inputs are synthetic and exact. No covariance, noise, observability test, slip, bias, interpolation, TF lookup, clock synchronization, ROS execution or fusion estimator is included. A/B uses matching position and velocity scales; slider limits are teaching choices. For point transforms, use the separate coordinate-transform Lab; for replay conditions, use the replay Lab.
References reviewed 2026-09-20: REP-103 coordinate conventions and Modern Robotics: rigid-body point velocity. The browser uses the site's existing planar rotation helper and the planar form of the rigid-body velocity relation.
Cuando añadir sensores empeora la localización, el filtro no es el único culpable. Las mediciones no se pueden comparar directamente si sus tiempos, fotogramas o unidades difieren. Verifique cada entrada y, a continuación, los límites donde entra en la fusión.
Corrija el orden de diagnóstico
Reutilice un registro corto e inspeccione las ruedas por separado, la IMU por separado y, finalmente, ambas. Cambiar el suelo o la velocidad de conducción al mismo tiempo enmascara la causa. Revise los principios en Fundamentos de fusión de sensores.
El error de temporización se convierte en error de movimiento
A una velocidad constante de 1 m/s, un error de marca de tiempo de 50 ms crea un desplazamiento aparente de 1\times0.05=0.05 m. A 90 grados/s, el mismo error crea una discrepancia de rotación de 4,5 grados. Estos son cálculos de movimiento constante, no tolerancias recomendadas.
Determine si la marca de tiempo de un mensaje indica la adquisición del sensor o la recepción del controlador. Un retardo de transmisión fijo puede ser manejable con marcas de tiempo de adquisición correctas; las discrepancias en los relojes entre hosts representan un problema diferente. Una cola más larga no corrige el desfase del reloj. Durante la reproducción, asegúrese de que todos los nodos relevantes utilicen la misma configuración de tiempo de simulación.
Comprobar ejes y orígenes
Los sistemas de coordenadas del cuerpo en ROS normalmente utilizan x hacia adelante, y hacia la izquierda y z hacia arriba; los sistemas de coordenadas ópticas de la cámara utilizan z hacia adelante, x hacia la derecha e y hacia abajo. Consulte las convenciones en REP-103. Cambiar el nombre de un sistema de coordenadas no rota sus valores.
Transforme un punto del sensor utilizando p_b=R_{bs}p_s+t_{bs}. Tanto la rotación como la traslación son importantes. La traslación inversa es -R^Tt, no simplemente -t. Registre si la calibración mapea el sensor al cuerpo o el cuerpo al sensor.
Los desplazamientos de montaje también modifican el movimiento
Para un cuerpo rígido, la velocidad en el sensor es v_s=v_b+\omega\times r. Con un desplazamiento perpendicular de 0,2 m y una velocidad angular de 1 rad/s, la diferencia de velocidad es de 0,2 m/s. Un sensor alejado del centro de rotación se mueve incluso durante un giro en el mismo lugar.
Incluya los giros y la traslación en el diagnóstico. La calibración extrínseca completa requiere un movimiento suficientemente informativo; la conducción en línea recta por sí sola puede no identificar todos los grados de libertad. Compare las responsabilidades del sistema de coordenadas con REP-105.
Inspeccione los residuos y la covarianza al final
| Síntoma | Hipótesis | Comparar a continuación |
|---|---|---|
| El error aumenta con la velocidad | Desajuste de sincronización | Misma ruta a diferentes velocidades |
| El error aumenta durante los giros | Ejes, desplazamiento o sincronización | Parado, en línea recta y giros a izquierda/derecha |
| Estime los saltos al añadir una entrada | Marco, unidades o exceso de confianza | Entrada sin procesar y residuo de predicción |
| Deriva lenta | Sesgo o deslizamiento | Promedios sin procesar y direcciones observables |
El residuo es la diferencia entre la observación y la predicción. Una menor covarianza aumenta la confianza; no corrige ejes ni marcas de tiempo erróneos. Tratar la posición y la velocidad derivadas del mismo codificador como observaciones fuertemente independientes también puede sobreestimar la información. Inspeccione la selección de entrada y el manejo del marco en la implementación oficial de robot_localization.
Confirmar una causa a la vez
Cambie una configuración, compare el mismo registro y luego confirme con una nueva ejecución. Los valores estacionarios plausibles no descartan la sincronización dependiente del movimiento ni los errores de montaje. Antes de la evaluación SLAM, registre la semántica de la marca de tiempo, las unidades, los publicadores TF y la dirección de calibración.
Comentarios
Inicia sesión para continuar.
Todavía no hay datos.