Unité de mesure inertielle pour localisation précise : 2e partie – Comment utiliser le logiciel IMU pour une précision accrue
Avec la contribution de Rédacteurs nord-américains de DigiKey
2019-01-24
De nombreux systèmes embarqués ont besoin de suivre leur propre localisation ou position et cap, et les concepteurs se tournent souvent vers le système GNSS en premier recours (voir l'article relatif à la conception rapide de systèmes de suivi de localisation à l'aide de modules GNSS). Cependant, le GPS ne peut pas toujours être utilisé exclusivement pour les informations de position et de cap, et ce pour plusieurs raisons, à commencer par la consommation électrique.
Les systèmes GPS consomment une quantité importante d'énergie. Pour de nombreux systèmes embarqués, particulièrement ceux alimentés par batterie, le budget énergétique nécessaire pour maintenir une position GPS en permanence est exorbitant. En outre, les systèmes GPS souffrent de nombreux inconvénients, comme des blocages du signal, une faible fréquence de mise à jour et une précision de 1 mètre (m) qui peut être insuffisante pour certaines applications.
Ces problèmes peuvent être résolus au moyen d'unités de mesure inertielle (IMU) pour compléter les données de position GNSS.
Dans un précédent article sur les IMU, il a été question de l'utilisation d'unités IMU relativement peu coûteuses basées sur la technologie MEMS pour déterminer la position et le cap (voir l'article traitant de l'utilisation d'IMU pour des données de localisation précises lorsque le GPS n'est pas suffisant). Cependant, les données de capteurs d'IMU à elles seules ne permettent pas de fournir une position absolue. Notez que les récepteurs GNSS fournissent simplement des données de localisation et qu'un traitement important par un logiciel est requis pour convertir les données de mouvement relatif de l'IMU en position absolue et en cap à l'aide du filtrage, de la fusion et de la double intégration de capteurs.
Cet article traite de l'utilisation embarquée des IMU, des sources d'erreur dans les données provenant de divers capteurs IMU et du logiciel nécessaire pour calculer les valeurs précises de localisation et de cap à partir de capteurs IMU. En outre, cet article traite également de la bibliothèque MotionFX de STMicroelectronics et de son utilisation pour transformer les données de capteurs IMU en position et en cap dans un système embarqué.
Comment les IMU complètent les récepteurs GNSS
Les problèmes avec les systèmes GNSS se résument en quatre points :
- Les signaux GNSS sont très directionnels et sont facilement bloqués par des bâtiments. Par conséquent, l'utilisation de systèmes GNSS en intérieur ou en milieu urbain avec de grands immeubles en béton peut être problématique.
- Les récepteurs GNSS présentent des temps de démarrage à chaud et à froid d'une dizaine de secondes ou plus. Si le récepteur GNSS n'est pas utilisé en continu, pour économiser de l'énergie par exemple, la lecture de chaque nouvelle position peut prendre plusieurs secondes.
- La fréquence de mise à jour de la position du récepteur GNSS est limitée à une fois par seconde. Cette fréquence de mise à jour est insuffisante pour les applications embarquées impliquant des mouvements rapides. Il existe de nombreuses applications de ce type, notamment la réalité virtuelle, la manipulation de matériaux ou encore la robotique.
- La précision des systèmes GNSS est mesurée en mètres. Cette résolution est bien trop approximative pour une utilisation dans de nombreuses applications intégrées.
Les IMU fournissent une résolution plus précise du positionnement et des fréquences de mise à jour plus rapides, qui sont des fonctionnalités requises par de nombreuses applications embarquées. En outre, les IMU fournissent des données de position relative à partir d'un point de départ connu, tandis qu'un récepteur GNSS fournit des informations de position absolue, ce qui fait que ces deux types de capteurs de position sont complémentaires. Ces caractéristiques des IMU contribuent à leur utilité dans l'amélioration des informations de positionnement fournies directement par les récepteurs GNSS (voir l'article traitant de la conception rapide de systèmes de suivi de localisation à l'aide de modules GNSS).
Les IMU sont utilisées dans l'aérospatiale depuis des dizaines d'années. Cependant, ces IMU de précision pour l'aérospatiale utilisent des gyroscopes coûteux et d'autres capteurs de grande taille, et il est difficile de les appliquer à des systèmes plus sensibles aux coûts.
Les IMU électroniques modernes sont hautement intégrées et peuvent comporter divers types de capteurs (accéléromètres, gyroscopes et magnétomètres) qui sont basés sur la technologie de microsystèmes électromécaniques (MEMS), ce qui leur confère une taille réduite, un poids léger et une relative robustesse. Ces nouvelles générations d'IMU sont disponibles sous forme de composants à montage sur carte et constituent une solution idéale pour les applications embarquées.
Les IMU sont fournies avec différentes caractéristiques en termes de degrés de liberté (DOF), mais contrairement aux récepteurs GNSS, elles ne dépendent pas de signaux radio pour les données de position. Elles consomment également très peu d'énergie et sont disponibles depuis une variété de sources avec de nombreuses spécifications de résolution et de précision.
Grâce à ces caractéristiques, les IMU peuvent être utilisées pour améliorer les informations de positionnement provenant des modules de réception GNSS (voir l'article traitant de la conception rapide de systèmes de suivi de localisation à l'aide de modules GNSS). Cependant, un traitement important avec un logiciel est toujours nécessaire pour filtrer les données des capteurs IMU, pour fusionner les données provenant des divers types de capteurs à l'intérieur de l'IMU et pour calculer une position à partir de ces données fusionnées à l'aide d'une double intégration.
Sources d'erreur d'une IMU
La combinaison de capteurs pour améliorer la précision est une pratique courante qui remonte à de nombreuses années dans le domaine de l'aérospatiale, où les accéléromètres et les gyroscopes sont largement utilisés dans des systèmes de navigation inertielle. Dans ces systèmes, les gyroscopes détectent l'orientation grâce à des variations de la vitesse angulaire, mais ont tendance à dériver au fil du temps, car ils ne détectent que les variations et n'ont aucun cadre de référence fixe. L'ajout de données d'accéléromètre aux données de gyroscope permet de réduire la polarisation du gyroscope, ce qui permet une estimation plus précise de la localisation. Les accéléromètres détectent les variations de direction par rapport à la gravité. Ces données peuvent alors être utilisées pour orienter un gyroscope.
Les accéléromètres offrent des résultats plus précis pour les calculs statiques (par rapport aux calculs dynamiques). Les gyroscopes détectent mieux l'orientation lorsque le système est déjà en mouvement. Les accéléromètres réagissent rapidement, ce qui fait que la gigue et le bruit de l'accéléromètre génèrent une accumulation d'erreurs lorsque ces données sont utilisées isolément. En outre, les accéléromètres ont tendance à déformer les accélérations en raison de forces externes, telles que les forces gravitationnelles, qui s'accumulent également dans le système sous forme de bruit.
La combinaison de la précision à court terme d'un gyroscope et des résultats de précision à long terme d'un accéléromètre permet d'obtenir des lectures d'orientation plus précises du fait que les avantages de chaque capteur annulent ou au moins atténuent les faiblesses de l'autre. Les deux types de capteurs sont complémentaires.
Filtrage fusionné nécessaire pour réduire les erreurs
Le logiciel IMU utilise le filtrage pour minimiser les erreurs de positionnement provenant des données IMU. Plusieurs méthodes de filtrage pour fusionner les données de capteurs sont disponibles, chacune ayant son degré de complexité. Un filtre complémentaire est un moyen simple de combiner les données provenant de plusieurs capteurs. Le filtrage complémentaire est une fonction linéaire qui associe le filtre passe-haut d'un gyroscope au filtre passe-bas d'un accéléromètre. Le bruit haute fréquence dans les données d'un accéléromètre est alors filtré à court terme et ajusté par les données du gyroscope.
Même si les tâches de calcul associées au filtre complémentaire sont simples, des techniques plus dynamiques, telles que le filtre de Kalman sont désormais privilégiées lors de l'utilisation d'une IMU pour obtenir une meilleure précision. Le filtre de Kalman est un algorithme de fusion de capteurs récurrent très populaire du fait qu'il nécessite peu de puissance de traitement pour créer un système de positionnement plus précis. Il existe différents types de filtrage de Kalman, y compris le filtre de Kalman standard, le filtre de Kalman étendu (EKF) et le filtre de Kalman sans parfum (UKF).
Un filtre de Kalman permet de prédire les valeurs à l'aide d'équations mathématiques en se basant sur l'hypothèse que les données filtrées suivent une distribution gaussienne à laquelle le filtre applique des équations linéaires. Cependant, les mouvements dans le monde réel ne sont pas aussi clairs que l'hypothèse du filtre de Kalman. Les mouvements dans le monde réel suivent des équations qui impliquent souvent des fonctions sinus et cosinus qui ne sont pas linéaires. Le filtre EKF utilise alors une série de Taylor et des approximations de points simples de la distribution gaussienne pour linéariser des fonctions non linéaires. Ces approximations peuvent constituer des sources d'erreur considérables.
Le filtre UKF traite ce problème d'erreur à l'aide d'une approche d'échantillonnage déterministe qui génère un ensemble de points d'échantillonnage soigneusement choisis pour représenter la distribution gaussienne des données plutôt qu'une simple approximation utilisée par le filtre EKF. Ces points d'échantillonnage permettent de déterminer entièrement les valeurs exactes de la moyenne et de la covariance des valeurs gaussiennes attendues et le résultat dans un filtrage plus précis.
Sources d'erreurs d'un magnétomètre
Une IMU standard contient trois capteurs différents : un gyroscope pour mesurer la fréquence/vitesse angulaire, un accéléromètre pour mesurer l'accélération linéaire et un magnétomètre pour mesurer la force du champ magnétique. Plus précisément, les magnétomètres de l'IMU mesurent la force du champ magnétique de la terre pour déterminer un cap par rapport au nord magnétique terrestre. Une IMU conçue pour des applications de navigation contient généralement trois capteurs de chaque type afin de couvrir les trois axes de mouvement orthogonal.
Cependant, les magnétomètres sont sensibles aux distorsions de fer dur et de fer doux. Les distorsions du champ magnétique terrestre qui surviennent en raison d'influences magnétiques externes sont généralement classées comme un effet de fer dur ou de fer doux. Si aucun effet de distorsion n'est présent, la rotation d'un magnétomètre à 360° et le tracé des données résultantes génèrent des données formant un cercle centré autour de (0, 0) (Figure 1).

Figure 1 : La rotation d'un magnétomètre à 360° et le tracé des données résultantes génèrent des données formant un cercle dont le centre se trouve à l'emplacement (0, 0), si aucune distorsion de champ local provoquée par du fer à proximité n'est présente. (Source de l'image : sensorsmag.com)
La présence d'effets de fer dur et/ou de fer doux peut perturber le cercle. Les effets de fer dur provoquent un simple décalage par rapport à l'emplacement (0, 0) (Figure 2).

Figure 2 : Un effet de distorsion de fer dur provoque un décalage des données magnétiques par rapport à l'emplacement (0, 0). (Source de l'image : sensorsmag.com)
Les effets de fer doux provoquent la déformation du cercle en ellipse (Figure 3).

Figure 3 : Un effet de distorsion de fer doux modifie les données magnétiques à 360°, et la forme passe d'un cercle à une ellipse. (Source de l'image : sensorsmag.com)
Notez que les effets de fer dur et de fer doux peuvent apparaître simultanément.
Les calculs pour compenser une distorsion de fer doux sont plus intensifs que ceux requis pour compenser une distorsion de fer dur. Par conséquent, il serait plus efficace et plus rentable de retirer simplement les matériaux en fer doux des magnétomètres d'IMU. Cependant, dans de nombreux cas, c'est inévitable et des calculs de compensation sont nécessaires.
Intégrer, puis intégrer à nouveau
Enfin, étant donné que les accéléromètres et les gyroscopes fournissent uniquement des informations concernant les forces d'accélération (linéaire et rotative) d'un objet, ces données doivent être intégrées deux fois pour générer une localisation. En effet, l'accélération correspond à la fréquence de variation de la vitesse d'un objet, et la vitesse correspond à la fréquence de variation de la position d'un objet. En d'autres termes, les données du gyroscope et de l'accéléromètre d'une IMU fournissent les dérivées secondes de la localisation absolue d'un objet.
La double intégration à elle seule nécessite pas mal de traitement, mais pour le positionnement 3D, les effets d'accélération de la gravité doivent également être supprimés. La gravité ressemble à une accélération constante que subit un accéléromètre, ce qui génère un décalage dans ses données. Les effets d'accélération de la gravité doivent généralement être étalonnés hors du système, pendant que l'IMU et l'objet contenant l'IMU sont au repos.
Notez que cette double intégration génèrera des erreurs dues à une erreur d'échantillonnage. Plus la fréquence d'échantillonnage est faible, plus l'erreur est importante.
Recommandations de conception pour un logiciel IMU
Prenez en compte les étapes et recommandations suivantes lors de l'implémentation de ces types d'algorithmes pour un logiciel IMU dans le monde réel :
- Les signaux de capteur IMU ne sont pas exempts de bruit et nécessitent un filtrage numérique. Une certaine forme de filtrage de Kalman est utilisée dans des applications IMU.
- Notez que même avec un filtrage, des sources d'erreur supplémentaires seront présentes, notamment un bruit mécanique associé à l'IMU et les distorsions de fer dur et de fer doux mentionnés ci-dessus. Ce bruit doit être filtré ou supprimé des données.
- Une routine d'étalonnage effectuée pendant que l'IMU est au repos sera requise au début de l'application. En effet, pour être aussi précis que possible, le logiciel devra connaître les valeurs relevées par le capteur lorsque l'objet n'est pas en mouvement. La valeur d'accélération réelle d'un objet en mouvement est la valeur de l'échantillon en cours provenant d'un capteur d'accélération, moins la valeur d'étalonnage.
- Après l'étalonnage, les valeurs du capteur peuvent être positives ou négatives. Par conséquent, les variables utilisées pour prendre en compte ces valeurs doivent présenter un signe.
- Une fréquence d'échantillonnage plus rapide pour les données de capteurs génère des résultats plus précis. Cependant, plus d'échantillons signifient plus de mémoire, des exigences de temporisation plus strictes et éventuellement d'autres considérations matérielles.
- La période d'échantillonnage doit toujours être exactement la même. Des périodes d'échantillonnage différentes provoqueront des erreurs de données.
- Une approximation de données linéaires entre les échantillons (interpolation) génère des résultats plus précis, mais exige également plus de temps de traitement.
À partir de ce que nous venons de voir ci-dessus, il est évident que les calculs nécessaires pour déterminer le cap, la position et le mouvement à partir des données IMU ne sont pas simples. C'est pour cette raison que les fournisseurs d'IMU proposent souvent des packs d'application logiciels afin d'exécuter ces calculs pour leurs produits. Par exemple, STMicroelectronics a développé la bibliothèque MotionFX qui étend les capacités du logiciel X-CUBE-MEMS1 téléchargeable de la société afin d'englober des fonctions d'IMU.
Le logiciel de cette bibliothèque récupère les données provenant des accéléromètres, des gyroscopes et des magnétomètres, et fournit la fusion en temps réel des données de détecteur de mouvement pour les capteurs MEMS de STMicroelectronics, y compris les IMU. Le logiciel prédictif et de filtrage MotionFX utilise des algorithmes avancés pour intégrer intelligemment des sorties provenant de plusieurs capteurs MEMS, indépendamment des conditions environnementales. Cette bibliothèque est exclusivement conçue pour les IMU MEMS de STMicroelectronics, ce qui fait que les fonctionnalités et les performances du logiciel ne sont pas garanties lors de l'utilisation d'IMU d'autres fournisseurs.
La bibliothèque MotionFX s'exécute sur divers microcontrôleurs de STMicroelectronics basés sur les cœurs de processeur Arm® Cortex®-M0+, Cortex-M3 et Cortex-M4. Des implémentations d'exemple sont disponibles pour la carte d'extension X-NUCLEO-IKS01A2 de STMicroelectronics (Figure 4), lorsqu'elle est montée sur l'un des éléments suivants :
- Carte de développement NUCLEO-F401RE basée sur un microcontrôleur STM32F4, qui intègre un cœur de processeur Arm Cortex-M4
- Carte de développement NUCLEO-L476RG basée sur un microcontrôleur STM32L4, qui intègre un cœur de processeur Arm Cortex-M4
- Carte de développement NUCLEO-L152RE basée sur un microcontrôleur STM32L1, qui intègre un cœur de processeur Arm Cortex-M3
- Carte de développement NUCLEO-L073RZ basée sur un microcontrôleur STM32L0, qui intègre un cœur de processeur Arm Cortex-M0+
La bibliothèque MotionFX de STMicroelectronics gère et fusionne les données récupérées à partir des accéléromètres, des gyroscopes et des magnétomètres d'une IMU. La bibliothèque fournit des routines pour les cas suivants :
- Fusion de données de détecteur de mouvement à 9 axes et en temps réel (accéléromètre, gyroscope, magnétomètre)
- Fusion de données de détecteur de mouvement à 6 axes et en temps réel (accéléromètre, gyroscope)
- Calcul de la rotation, des quaternions, de la gravité et des données d'accélération linéaire
- Étalonnage de la polarisation du gyroscope
- Étalonnage du fer dur du magnétomètre
Lors de l'utilisation du logiciel MotionFX, STMicroelectronics recommande une fréquence de 100 Hz pour l'échantillonnage des données de capteurs.

Figure 4 : La carte d'extension X-NUCLEO-IKS01A2 de STMicroelectronics est prise en charge par le logiciel MotionFX de la société pour les IMU. (Source de l'image : STMicroelectronics)
La bibliothèque MotionFX implémente un algorithme de fusion de capteurs pour effectuer l'estimation de l'orientation 3D dans l'espace. Elle filtre et fusionne les données provenant de plusieurs capteurs pour compenser les limites des capteurs individuels de l'IMU.
La Liste 1 fournit un code de démonstration qui montre ce qu'il faut inclure pour faire fonctionner l'IMU de STMicroelectronics.
Copier
[…]
#define VERSION_STR_LENG 35
#define MFX_DELTATIME 10
[…]
/*** Initialization ***/
char lib_version[VERSION_STR_LENG];
char acc_orientation[3];
MFX_knobs_t iKnobs;
/* Sensor Fusion API initialization function */
MotionFX_initialize();
/* Optional: Get version */
MotionFX_GetLibVersion(lib_version);
MotionFX_getKnobs(&iKnobs);
/* Modify knobs settings */
MotionFX_setKnobs(&iKnobs);
/* Enable 9-axis sensor fusion */
MotionFX_enable_9X(MFX_ENGINE_ENABLE);
[…]
/*** Using Sensor Fusion algorithm ***/
Timer_OR_DataRate_Interrupt_Handler()
{
MFX_input_t data_in;
MFX_output_t data_out;
/* Get acceleration X/Y/Z in g */
MEMS_Read_AccValue(data_in.acc[0], data_in.acc[1], data_in.acc[2]);
/* Get angular rate X/Y/Z in dps */
MEMS_Read_GyroValue(data_in.gyro[0], data_in.gyro[1], data_in.gyro[2]);
/* Get magnetic field X/Y/Z in uT/50 */
MEMS_Read_MagValue(data_in.mag[0], data_in.mag[1], &data_in.mag[2]);
/* Run Sensor Fusion algorithm */
MotionFX_propagate(&data_out, &data_in, MFX_DELTATIME);
MotionFX_update(&data_out, &data_in, MFX_DELTATIME, NULL);
}
Liste 1 : Le code de démonstration montre l'utilisation de la bibliothèque MotionFX pour extraire les informations des composants de l'IMU sur la carte d'extension X-NUCLEO-IKS01A2 de la société. (Source du code : STMicroelectronics)
Un organigramme du logiciel de démonstration est également affiché (Figure 5).

Figure 5 : Cet organigramme illustre la séquence des étapes utilisées par le code de démonstration MotionFX dans la Liste 1 pour extraire des données de la carte d'extension X-NUCLEO-IKS01A2 de STMicroelectronics et pour les fusionner dans une orientation spatiale 3D. (Source de l'image : STMicroelectronics)
Notez que les données du gyroscope peuvent dériver, ce qui peut altérer l'estimation de l'orientation spatiale 3D. Le logiciel MotionFX peut compenser cette dégradation à l'aide des données du magnétomètre, qui fournissent des informations sur l'orientation absolue. Toutefois, les magnétomètres ne génèrent pas de données de cap à hauts débits et ils sont sensibles aux perturbations magnétiques, mais les données du gyroscope peuvent compenser à leur tour ces faiblesses du magnétomètre.
Les calculs de fusion de capteurs à 9 axes du logiciel MotionFX utilisent les données provenant de l'accéléromètre, du gyroscope et du magnétomètre pour fournir une orientation absolue dans un espace 3D, y compris le cap (par rapport au nord magnétique).
Les calculs de fusion de capteurs à 6 axes du logiciel MotionFX utilisent uniquement les données de l'accéléromètre et du gyroscope. Ce niveau opérationnel présente de faibles exigences de calcul et ne fournit pas d'informations sur l'orientation absolue, mais les routines s'exécutent plus rapidement que les routines à 9 axes. La fusion de capteurs à 6 axes convient pour la mesure de mouvements rapides, pour des jeux ou des robots fixes, par exemple. Cependant, elle peut également être utilisée lorsqu'une orientation absolue n'est pas nécessaire.
Conclusion
Les IMU sont très utiles dans les applications embarquées afin de fournir des informations de localisation et de cap par elles-mêmes. Elles sont également très utiles lors d'une utilisation visant à améliorer les informations d'un récepteur GNSS lorsqu'un niveau de précision plus élevé ou des fréquences de mises à jour plus élevées sont requis. Cependant, l'intégration d'une IMU dans un système embarqué nécessite un traitement important avec un logiciel, qui est souvent proposé par les fournisseurs d'IMU afin de faciliter l'application de ces dispositifs dans le monde réel.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.




