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.

Open experiment panel in a new tab

Download reproduction source

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.

Lorsque l'ajout de capteurs dégrade la localisation, le filtre n'est pas le seul suspect. Les mesures ne peuvent être comparées directement si leurs temps, images ou unités diffèrent. Vérifiez chaque entrée, puis les limites de fusion.

Corriger l'ordre de diagnostic

Diagram 1 · Use the button to switch views
Vérifier les entrées individuelles, puis le temps, les images et enfin la fusion

Réutilisez un journal court et examinez les roues individuellement, l'IMU individuellement, puis les deux. Modifier simultanément le plancher ou la vitesse de déplacement masque la cause. Consultez les principes de fondamentaux de la fusion de capteurs.

L'erreur de synchronisation devient une erreur de mouvement

À une vitesse constante de 1 m/s, une erreur d'horodatage de 50 ms crée un déplacement apparent de 1\times0.05=0.05 m. À 90 degrés/s, la même erreur crée un décalage de rotation de 4,5 degrés. Ces calculs sont effectués pour un mouvement constant et ne représentent pas les tolérances recommandées.

Déterminez si l'horodatage d'un message correspond à une acquisition par capteur ou à une réception par pilote. Un délai de transmission fixe peut être géré avec des horodatages d'acquisition corrects ; les décalages d'horloge entre les hôtes constituent un problème différent. Une file d'attente plus longue ne corrige pas le décalage d'horloge. Lors de la relecture, assurez-vous que tous les nœuds concernés utilisent la même configuration de simulation.

Vérification des axes et des origines

Les repères ROS du corps utilisent généralement x vers l'avant, y vers la gauche et z vers le haut ; les repères optiques de la caméra utilisent z vers l'avant, x vers la droite et y vers le bas. Consultez les conventions dans REP-103. Renommer un repère ne modifie pas ses valeurs.

Transformez un point de capteur à l'aide de p_b=R_{bs}p_s+t_{bs}. La rotation et la translation sont toutes deux importantes. La translation inverse est -R^Tt, et non simplement -t. Notez si l'étalonnage applique une correspondance entre le capteur et le corps ou entre le corps et le capteur.

Les décalages de montage modifient également le mouvement

Pour un corps rigide, la vitesse au niveau du capteur est v_s=v_b+\omega\times r . Avec un décalage perpendiculaire de 0,2 m et une vitesse angulaire de 1 rad/s, la différence de vitesse est de 0,2 m/s. Un capteur éloigné du centre de rotation se déplace même lors d'un virage sur place.

Incluez les virages et les translations dans les diagnostics. Un étalonnage extrinsèque complet nécessite un mouvement suffisamment informatif ; la conduite en ligne droite seule peut ne pas identifier tous les degrés de liberté. Comparez les responsabilités du repère avec REP-105.

Examiner les résidus et la covariance en dernier

Symptôme Hypothèse Comparer ensuite
L'erreur augmente avec la vitesse Décalage temporel Même itinéraire à différentes vitesses
L'erreur augmente dans les virages Axes, décalage ou synchronisation À l'arrêt, en ligne droite et virages à gauche/droite
Sauts d'estimation lors de l'ajout d'une entrée Repère, unités ou surconfiance Entrée brute et résidu de prédiction
Dérive lente Biais ou glissement Moyennes brutes et directions observables

Un résidu correspond à la différence entre l'observation et la prédiction. Une covariance plus faible renforce la fiabilité ; elle ne corrige cependant pas les erreurs d'axes ou d'horodatage. Considérer la position et la vitesse issues du même encodeur comme des observations fortement indépendantes peut également entraîner un surcomptage d'informations. Examinez la sélection des entrées et la gestion des images dans l'implémentation officielle de robot_localization.

Vérifier une cause à la fois

Modifiez un paramètre, comparez le journal avec le même résultat, puis confirmez avec une nouvelle exécution. Des valeurs stationnaires plausibles n'excluent pas une synchronisation dépendante du mouvement ni des erreurs de montage. Avant l'évaluation SLAM, enregistrez simultanément la sémantique des horodatages, les unités, les éditeurs TF et la direction d'étalonnage.

Related reading

Evaluate the corrected systemComment évaluer le SLAM — ATE, RPE, temps d’exécution et défaillancesExplore another aspect of this fieldDe la cartographie à la navigation dans ROS 2 — une procédure minimale Jazzy et Nav2Explore another aspect of this fieldTransformations de coordonnées du robot : matrices, quaternions et TF