Contents — find the section you need
La méthode la plus rudimentaire pour qu'un robot sache qu'il s'est déplacé de 1 m à droite et de 2 m vers l'avant consiste à calculer son propre déplacement. Elle intègre le nombre de rotations des roues, la vitesse des moteurs et la vitesse angulaire de l'unité de mesure inertielle (IMU) au fil du temps pour estimer sa position actuelle. Cette méthode est appelée navigation à l'estime. Elle reste fonctionnelle même en cas d'indisponibilité temporaire du GPS ou d'une caméra, mais un léger patinage des roues ou un biais du capteur se traduit par une erreur de position qui s'accroît avec le temps.
Observation GNSS absolue
Exemple d'IMU à faible coûtImages : Surveyor Utilisation d'un récepteur GNSS avec solution RTK (SweetCanadianMullet, CC BY 4.0) / GY-521 Module MPU-6050 (Nevit Dilmen, CC BY-SA 3.0), Wikimedia Commons. Capteurs représentatifs, matériel non obligatoire.
Résumé en 30 secondes
-
La navigation à l'estime prédit l'état actuel à partir de « l'état précédent et du déplacement mesuré ». Elle peut se mettre à jour rapidement, même sans observations.
-
Sur un robot à entraînement différentiel, la différence de déplacement entre les roues gauche et droite détermine l'angle de braquage, et leur moyenne détermine la distance parcourue. Les erreurs de rayon et de largeur de voie des roues se traduisent par une courbe systématique.
-
L'erreur d'odométrie s'accumule par intégration. L'obtention d'une position absolue nécessite une correction à partir d'observations telles que GNSS, LiDAR, caméra ou marqueurs réfléchissants.
-
Une centrale inertielle (IMU) est robuste face aux variations d'attitude à court terme, mais la position dérive rapidement lorsque l'accélération est doublement intégrée. La fusion des données des roues et de l'IMU via un filtre de Kalman étendu (EKF) ou un graphe de facteurs est l'approche courante. Lors de la mise en œuvre, les horodatages, les repères de coordonnées, les conventions de signe gauche/droite, le rayon des roues, la détection de glissement et la covariance doivent tous être correctement définis dès le départ ; une erreur à ce niveau, même des capteurs coûteux, ne pourra rien y changer.
1. Cinématique de la transmission différentielle
Soit r le rayon des roues gauche et droite, b la distance entre les roues (voie de roulement) et \omega_L,\omega_R les vitesses angulaires gauche/droite. Les vitesses linéaires des roues sont v_L=r\omega_L et v_R=r\omega_R, donc la vitesse de translation du centre du véhicule v et son taux de lacet \dot{\theta} sont :
En notant la pose à l'instant k (x_k,y_k,\theta_k) et la période d'échantillonnage \Delta t, une simple intégration d'Euler donne :
Lors du déplacement sur un arc à vitesse constante, l'utilisation d'une intégration exacte (l'application exponentielle dans les coordonnées du véhicule) permet de maintenir une faible erreur même à basse vitesse et à fort rayon de braquage.
Figure 1 — En entraînement différentiel, la différence de vitesse entre les roues gauche et droite crée une vitesse de lacet. L'arrêt d'une roue permet au robot de pivoter autour d'elle.
2. Pourquoi l'odométrie dérive-t-elle ?
Si le rayon de chaque roue présente une erreur de 1 % et que vous supposez que la gauche et la droite sont identiques pendant la conduite, vous tournerez progressivement, même lorsque vous pensez aller tout droit. La résolution des codeurs gauche/droite, le jeu des engrenages, les irrégularités du sol, l'usure des pneus et la déformation induite par la charge deviennent autant de sources d'erreur systématique. Si une roue patine sur un sol mouillé ou gravillonné, la rotation mesurée et le déplacement réel ne correspondent plus.
L'erreur d'attitude \delta\theta produit une erreur de position latérale. Pour la distance parcourue s, une approximation à court terme donne :
Parcourez 1 km avec une erreur angulaire de 0,5 degré, et le décalage latéral atteint environ 8,7 m. Exprimer simplement l'erreur de position en « centimètres par seconde » ne permet pas de rendre compte des différentes structures d'erreur liées à la conduite en ligne droite, aux virages et aux dérapages.
La covariance de l'odométrie des roues propage l'incertitude du déplacement gauche/droite dans la pose et la met à jour en conséquence. En pratique, la covariance est augmentée lors des virages ou en cas de détection de dérapage, afin que la fusion de capteurs en aval ne se fie pas excessivement à l'odométrie.
3. Ajout d'une centrale inertielle (IMU)
L'intégration de la vitesse angulaire \omega_z mesurée par le gyroscope de l'IMU donne :
où b_g représente le biais du gyroscope et n_g le bruit. Même au moment où une roue patine, la variation de vitesse angulaire à court terme reste mesurable, offrant une estimation d'attitude plus précise que celle obtenue avec les roues seules. Lors de la double intégration de l'accélération pour obtenir la vitesse et la position, l'erreur due au biais b_a augmente comme
une IMU seule ne peut donc pas servir de capteur de position sur une longue durée.
Combinaison de roues et d'une IMU : les roues gèrent les déplacements basse fréquence, tandis que l'IMU gère la vitesse angulaire et l'accélération haute fréquence. Le roulis et le tangage sont initialisés à partir de la direction de la gravité. Lorsqu'un magnétomètre ou un système GNSS est disponible, une référence de lacet absolu est également ajoutée.
4. Correction par EKF ou graphe de facteurs
Un exemple de vecteur d'état est :
Lors de l'étape de prédiction, un modèle de mouvement non linéaire f est calculé à partir des données des roues et de l'IMU. Lorsqu'une observation est reçue, le résidu est utilisé pour la corriger.
Le filtre de Kalman étendu (EKF) linéarise localement le modèle non linéaire via le jacobien. La position GNSS, la correspondance des scans LiDAR, les points caractéristiques de la caméra et les poses des marqueurs connus peuvent être intégrés comme observations \mathbf{z}. Pour les grandes boucles ou les revisites, les poses et observations passées sont conservées dans un graphe de facteurs, et l'ensemble est réoptimisé par la suite.
Pour ROS 2 (en supposant l'utilisation des définitions de messages standard Jazzy), les messages nav_msgs/msg/Odometry de la roue, sensor_msgs/msg/Imu de l'IMU et la transformation TF odom → base_link doivent utiliser une base temporelle commune. Ces types de messages correspondent aux orthographes nav_msgs/Odometry et sensor_msgs/Imu de ROS 1, mais les détails d'implémentation, la QoS et les paramètres de distribution de ROS 2 doivent être vérifiés séparément. L'EKF de robot_localization constitue un point de départ raisonnable pour l'implémentation, mais l'annulation des covariances ou la double injection des mêmes informations rend l'estimation anormalement rigide.
5. Utilisation dans les robots actuels
Les robots mobiles autonomes (AMR) d'intérieur utilisent en permanence les codeurs de roue et une IMU, corrigeant la dérive par correspondance avec une carte LiDAR ou une caméra. En conduite autonome, la vitesse des roues, l'angle de braquage, l'IMU, le GNSS et le LiDAR sont fusionnés afin que l'estimation reste valable pendant plusieurs secondes, voire plusieurs dizaines de secondes, même en cas de perte de signal GNSS dans un tunnel ou sous une structure surélevée. Pour les robots agricoles, la boue, les ornières et les pentes augmentent le patinage des roues ; c'est pourquoi le RTK-GNSS, l'IMU et les capteurs de force de l'outil sont combinés.
Les robots sous-marins et les engins spatiaux peuvent naviguer sur de longues distances sans GNSS. Un loch Doppler (DVL), un système de suivi stellaire ou un système de correspondance de terrain est ajouté comme observation absolue à basse fréquence afin de limiter la covariance de la navigation à l'estime. L'important est de transmettre l'estimation à la planification et au contrôle, en précisant le niveau de confiance associé.
6. Liste de vérification pour la mise en œuvre
-
Convertir les horodatages des capteurs à une horloge commune et mesurer la latence.
-
Définissez les repères
base_link,odometmapainsi que leurs conventions de signe directes. -
Déterminez le rayon de la roue, la profondeur de la bande de roulement et la résolution de l'encodeur par des essais de conduite réels.
-
Évaluez l'erreur séparément pour la conduite en ligne droite, les virages à vitesse constante, les figures en huit, les bosses et les surfaces à faible adhérence.
-
Augmentez la covariance en cas de détection de glissement ou de perte de signal, et corrigez-la dès qu'une observation absolue est disponible.
-
Relisez les enregistrements pour vérifier que la même entrée produit la même estimation.
Lors des essais, enregistrez non seulement l'erreur de position du point final, mais aussi l'erreur d'attitude, l'erreur maximale, le 95e percentile et le taux de dérive lors des pertes de signal. Une estimation généralement précise, mais parfois très erronée, ne peut être utilisée pour une planification de trajectoire sûre.
Résumé
La navigation à l'estime est la technique fondamentale pour estimer le mouvement d'un robot avec un délai minimal. Elle intègre le déplacement des roues et la vitesse angulaire de l'IMU, en supprimant la dérive grâce à des observations absolues provenant d'un GNSS, d'un LiDAR ou d'une caméra. Avant d'ajouter d'autres capteurs, la précision et la répétabilité sont déterminées par la définition correcte du modèle de mouvement, des horodatages, des repères et de la covariance.
Une rotation précise des roues élimine-t-elle l'erreur de position ?
Le glissement et les erreurs de géométrie des roues ou de montage persistent.
La précision des capteurs et la validité du modèle de mouvement sont deux choses distinctes. ## Références - [ROS 2 — documentation tf2](https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Tf2.html) - [ROS 2 — robot_localization](https://github.com/cra-ros-pkg/robot_localization) - [robot_localization — nœuds d'estimation d'état et paramètres des capteurs](https://docs.ros.org/en/noetic/api/robot_localization/html/state_estimation_nodes.html) - [REP-105 — Systèmes de coordonnées pour plateformes mobiles](https://www.ros.org/reps/rep-0105.html) - [ROS 2 Jazzy common_interfaces — paquets de messages standard](https://github.com/ros2/common_interfaces/tree/jazzy) - [ROS 2 Jazzy sensor_msgs/Définition Imu](https://github.com/ros2/common_interfaces/blob/jazzy/sensor_msgs/msg/Imu.msg) - [ROS 2 Jazzy nav_msgs/Définition Odometry](https://github.com/ros2/common_interfaces/blob/jazzy/nav_msgs/msg/Odometry.msg) - [T. D. Barfoot, Estimation d'état pour la robotique](https://asrl.utias.utoronto.ca/~tdb/bib/barfoot_ser17.pdf) - [IEEE Robotics and Automation Society](https://www.ieee-ras.org/)
Commentaires
Veuillez vous connecter.
Aucune entrée pour le moment.