IMU : laissez votre hôte en veille grâce à l'apprentissage automatique embarqué

Par Steve Leibson

Avec la contribution de Rédacteurs nord-américains de DigiKey

Les unités de mesure inertielle (IMU) sont fréquemment utilisées pour fournir un flux régulier d'informations de position multi-axes à partir d'accéléromètres, de gyroscopes et d'autres capteurs. Avec les nombreux degrés de liberté (DOF) qui génèrent tous des données, les flux de données fusionnés de ces dispositifs peuvent maintenir les processeurs systèmes en mode activé constant et les taxer lorsqu'ils passent au crible les données brutes de l'IMU pour extraire les informations utiles sur les mouvements et la localisation du système. Les concepteurs ont donc besoin d'un moyen de décharger cette fonction de tri du processeur principal. L'apprentissage automatique est peut-être la solution.

Après un bref aperçu de l'utilisation des IMU, cet article présente le 6DOF LSM6DSO de STMicroelectronics. Il utilise ensuite ce dispositif pour montrer comment l'ajout et l'intégration de l'apprentissage automatique et du traitement par arbre de décision dans les IMU peuvent décharger le processeur d'application hôte du traitement des mouvements et de la position en temps réel, et montrer comment ces fonctionnalités peuvent être utilisées dans des applications réelles.

Aperçu rapide des unités de mesure inertielle

Les IMU intègrent un certain nombre de détecteurs de mouvement dans un dispositif et peuvent fournir des informations de positionnement de haute précision. Elles peuvent être utilisées pour une grande variété d'applications, notamment les applications grand public (téléphones portables), médicales (imagerie), industrielles (robotique) et militaires (détermination de la position de la tête). Elles réagissent au mouvement du capteur et intègrent un ou plusieurs des types de détecteur de mouvement suivants :

  • Les capteurs des gyroscopes mesurent les changements de position angulaire, généralement exprimés en degrés par seconde. L'intégration de la vitesse angulaire dans le temps permet d'obtenir un angle de déplacement mesuré qui peut être utilisé pour suivre les changements d'orientation. Les gyroscopes suivent les mouvements relatifs indépendamment de la gravité, de sorte que les erreurs dues à la polarisation ou à l'intégration des capteurs entraînent une erreur de position appelée « dérive », qui peut être compensée par un logiciel.
  • Les accéléromètres mesurent l'accélération linéaire, notamment les composantes de l'accélération causées par le mouvement du dispositif et l'accélération due à la gravité. L'unité de mesure de l'accélération est g, où 1 g = la force gravitationnelle de la Terre = 9,8 mètres/seconde2. Les accéléromètres sont disponibles avec un, deux ou trois axes, qui définissent un système de coordonnées X, Y, Z.
  • Les capteurs magnétiques mesurent la force de champ magnétique, dont l'unité habituelle est le microtesla (µT) ou le Gauss (100 µT = 1 Gauss). Le capteur magnétique le plus couramment utilisé pour l'électronique portable est un magnétomètre à effet Hall triaxial. En calculant l'angle du champ magnétique de la Terre détecté et en comparant cet angle à la gravité telle que mesurée par un accéléromètre, il est possible de mesurer le cap d'un dispositif par rapport au nord magnétique avec une grande précision.

Le suivi de mouvement à l'aide d'IMU a recours à la fusion de capteurs pour obtenir une estimation simple de haute précision de l'orientation et de la position relatives du dispositif, à partir d'une orientation et d'un point de départ connus. La fusion de capteurs utilise généralement un logiciel pour combiner les différentes sorties du détecteur de mouvement de l'IMU à l'aide d’algorithmes mathématiques complexes développés par le fabricant de l'IMU ou par le développeur de l'application.

Les calculs de la position à l'aide de la fusion de capteurs peuvent produire les mesures suivantes :

  • Gravité – Plus particulièrement la gravité de la Terre, qui exclut l'accélération causée par le mouvement subi par le dispositif. Un accéléromètre mesure le vecteur de gravité lorsque l'IMU est stationnaire. Lorsque l'IMU est en mouvement, la mesure de la gravité nécessite la fusion des données à partir d'un accéléromètre et d'un gyroscope, et la soustraction de l'accélération causée par le mouvement.
  • Accélération linéaire – Équivaut à l'accélération du dispositif telle que mesurée par l'accéléromètre, mais en soustrayant le vecteur de gravité à l'aide d'un logiciel. L'accélération linéaire de l'IMU peut être utilisée pour mesurer le mouvement dans l'espace tridimensionnel.
  • Orientation (attitude) – L'ensemble des angles d'Euler y compris le lacet (azimut), le tangage et le roulis, comme mesurés en degrés.
  • Vecteur de rotation – Dérivé d'une combinaison de données issues des capteurs de l'accéléromètre, du gyroscope et du magnétomètre. Le vecteur de rotation représente un angle de rotation autour d'un axe spécifié.

Sources d'erreur d'une IMU

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 des données de l'accéléromètre aux données du gyroscope permet au logiciel de réduire la polarisation du gyroscope pour 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. De plus, 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. Le filtrage de ces données améliore la précision.

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 capteur se complètent pour permettre de limiter les erreurs, mais celles-ci peuvent être réduites par d'autres méthodes.

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 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.

La puissance de calcul nécessaire pour traiter, filtrer et fusionner tous ces capteurs consomme de l'énergie, ce qui peut poser problème dans les systèmes alimentés par batterie, en particulier lorsque les informations de l'IMU ne sont pas nécessaires en flux continu. Pour de nombreuses applications intégrées, d'importantes économies d'énergie peuvent être réalisées si l'IMU peut générer une interruption qui réveille le processeur hôte du mode veille afin de pouvoir lancer le traitement ou effectuer une action à la suite de l'interruption. Pour activer cette fonction, certains fournisseurs d'IMU commencent à intégrer des fonctionnalités de traitement et de prise de décision à leurs IMU.

Laissons l'IMU se charger des tâches de réflexion

Le 6DOF LSM6DSO de STMicroelectronics fait partie de ces IMU. Il est équipé de trois gyroscopes à microsystèmes électromécaniques (MEMS) et de trois accéléromètres MEMS, et peut détecter les variations d'orientation et les mouvements sans surveillance ni assistance de la part du processeur hôte, et ce grâce au traitement embarqué. L'IMU consomme 0,55 milliampère (mA) lorsqu'elle fonctionne en mode de performances maximales.

Dans ce mode, le LSM6DSO peut surveiller continuellement sa propre attitude et ses propres mouvements dans l'espace, et peut générer une interruption selon une condition préétablie qui réveille le processeur hôte pour effectuer un traitement supplémentaire sur le flux du capteur. L'utilisation d'une IMU basse consommation qui peut rester opérationnelle en continu est bénéfique, parce qu'elle laisse le processeur hôte en veille, et ne l'active qu'en cas de nécessité. Il s'agit d'un moyen éprouvé et fiable d'économiser de l'énergie sur les systèmes alimentés par batterie.

En plus de ses capteurs de gyroscope et d'accéléromètre, l'IMU LSM6DSO contient un bloc de mise en forme des signaux et de filtrage, une machine à états finis (FSM) qui peut exécuter jusqu'à 16 programmes (partageant tous un débit de données de sortie commun et configurable) et un cœur d'apprentissage automatique. Utilisées ensemble, ces ressources peuvent générer des interruptions de détection d'événements pour les conditions suivantes :

  • Chute libre
  • Activation
  • Orientation du 6DOF
  • Détection de clic et de double clic
  • Reconnaissance d'activité/d'inactivité
  • Détection stationnaire/de mouvement

Le bloc de mise en forme des signaux applique les facteurs de conversion stockés dans ses registres de sensibilité pour mettre à l'échelle les données de capteurs brutes. Il convertit ensuite le flux de données brutes des capteurs de l'IMU en un format d'octet en virgule flottante à demi-précision (HFP) de 16 bits que la machine à états finis peut comprendre. Les capteurs MEMS de l'IMU (les accéléromètres et les gyroscopes), ainsi que deux convertisseurs analogique-numérique (CAN) et quatre blocs de filtrage sont représentés à la Figure 1. Les blocs de filtrage sont utilisés pour convertir les signaux de capteurs MEMS analogiques en flux de données numériques filtrées.

Schéma de l'IMU LSM6DSO de STMicroelectronics

Figure 1 : L'IMU LSM6DSO utilise deux CAN pour convertir les signaux analogiques de ses accéléromètres et gyroscopes MEMS internes en flux numériques. Les CAN sont suivis par quatre filtres numériques pour mettre en forme les signaux pour la prise de décision par la machine à états finis et le cœur d'apprentissage automatique internes et par le processeur hôte. (Source de l'image : STMicroelectronics)

La machine à états finis programmable est constituée d'un bloc de configuration et de seize blocs de programme. Le bloc de configuration de la machine à états finis configure et contrôle l'intégralité de la machine à états finis. Chacun des seize blocs de programme de la machine à états finis est composé d'un bloc sélecteur d'entrée et d'un bloc de code (Figure 2). Ces deux blocs sont contrôlés par des valeurs écrites dans les registres de l'IMU.

Schéma des seize blocs de programme de la machine à états finis dans l'IMU LSM6DSO de STMicroelectronics

Figure 2 : Chacun des seize blocs de programme de la machine à états finis dans l'IMU LSM6DSO est composé d'un bloc sélecteur d'entrée et d'un bloc de code. (Source de l'image : STMicroelectronics)

Le bloc sélecteur d'entrée dirige les données d'entrée sélectionnées depuis l'un des capteurs internes de l'IMU ou depuis un capteur externe connecté au concentrateur de capteurs de l'IMU vers le bloc de code. Le concentrateur de capteurs de l'IMU peut héberger jusqu'à quatre capteurs externes supplémentaires tels que des magnétomètres, qui sont connectés à l'IMU via un port l2C.

Le bloc de code de la machine à états finis contient un programme pour la machine à états. La partie fixe de la section de données du bloc de programme est composée de six octets qui définissent le nombre de paramètres de seuil, d'hystérésis, de masque et de temporisateur pour le programme. La section de données variables du bloc de programme contient les paramètres de seuil, d'hystérésis, de masque et de temporisateur pour chaque programme, tel que défini par les valeurs stockées dans la partie fixe de la section de données.

La partie fixe de la section de données définit aussi la taille de la partie variable de l'empreinte mémoire du bloc de code, un vecteur de réinitialisation programmable et un compteur de programme. Comme les valeurs sont toutes de 8 bits, chaque programme de la machine à états finis est limité à 256 octets.

La section d'instructions du bloc de programme contient le programme de la machine à états finis. Les instructions de programme incluent des codes d'opération pour vérifier les entrées des capteurs en fonction des seuils, les passages par zéro et les valeurs du temporisateur afin de comparer les délais d'attente. Les codes d'opération spécifient la condition nécessaire pour passer de l'état actuel de la machine à états finis au suivant. De plus, il existe des codes d'opération de commande pour sélectionner les seuils et les masques stockés dans la section de données variables du programme, pour paramétrer le sélecteur multiplex du concentrateur de capteurs de l'IMU afin de le connecter à l'un des quatre capteurs externes possibles, et pour l'assertion d'une interruption.

Chaque programme de la machine à états finis peut générer une interruption et modifier le contenu d'une valeur de registre correspondante selon le signal d'entrée sélectionné. Ces valeurs de registre sont utilisées pour transmettre les données de l'IMU vers le processeur hôte.

Il est utile de considérer la machine à états finis comme un microprocesseur sans l'unité arithmétique logique. La machine à états finis peut faire des sélections, effectuer des comparaisons et prendre des décisions au sujet de son prochain état, en fonction de ces comparaisons. Elle ne calcule pas d'autres valeurs que les résultats booléens obtenus à partir des comparaisons.

La machine à états finis n'est pas un microprocesseur. Elle peut faire des comparaisons et procéder à de simples modifications sur un flux de programme en fonction de ces comparaisons. Comme c'est une machine simple, elle est programmée directement avec les codes d'opération de la machine à états finis. Il n'existe pas de compilateur de langage de haut niveau pour la machine à états finis, mais les programmes sont généralement assez simples pour ne pas nécessiter de compilateur.

Utilisation de la machine à états finis

La machine à états finis de l'IMU LSM6DSO peut être programmée pour générer des signaux d'interruption activés par des schémas de mouvement prédéfinis. La machine à états finis peut exécuter simultanément jusqu'à 16 programmes indépendants pour détecter le mouvement. Chaque programme de la machine à états finis comporte une séquence d'étapes if-then-else et utilise les flux de capteurs des accéléromètres et des gyroscopes du LSM6DSO comme entrées. Si l'un des programmes de la machine à états finis détecte une correspondance avec son schéma préprogrammé, la machine à états finis peut générer une interruption au processeur hôte.

Chacun des seize programmes possibles de la machine à états finis contient trois sections de mémoire pour les données fixes, les données variables et les instructions. Un schéma du bloc de programme simple de la machine à états finis est présenté à la Figure 3.

Schéma de la machine à états finis dans l'IMU LSM6DSO de STMicroelectronics

Figure 3 : La machine à états finis dans l'IMU LSM6DSO de STMicroelectronics est constituée de seize blocs de code, dont chacun contient trois sections de mémoire pour les données fixes, les données variables et les instructions. (Source de l'image : STMicroelectronics)

La structure d'un programme simple dans un bloc de code est composée de trois sections dans un bloc de mémoire :

  • Une section de données fixes, qui a la même taille pour tous les programmes de la machine à états finis
  • Une section de données variables, dont la taille peut varier
  • Une section d'instructions, qui contient les conditions et les commandes

La programmation de chaque bloc de code de la machine à états finis implique le chargement de trois sections de mémoire avec les valeurs de programmation qui déterminent le comportement de la machine à états finis. STMicroelectronics fournit un outil de programmation de la machine à états finis dans son logiciel de développement et d'évaluation Unico téléchargeable et un environnement de développement. STMicroelectronics a également inclus plusieurs programmes de machine à états finis d'exemple avec les outils de développement Unico pour faciliter l'apprentissage de la programmation de la machine à états finis. Ces programmes d'exemple illustrent plusieurs scénarios d'interruption basés sur l'IMU, notamment :

  • Podomètre basique
  • Système en chute libre
  • Détection de mouvement simple
  • Système récupéré
  • Système secoué
  • Système stationnaire
  • Inclinaison du poignet

Les exemples de programmes de machine à états finis illustrent l'utilisation des diverses fonctionnalités de la machine à états finis. Ces programmes d'exemple peuvent être installés sur une plateforme de démonstration d'IMU, comme la carte d'évaluation eMotion STM32 STEVAL-MKI109V3, dotée d'une prise à 28 broches qui accepte la carte d'adaptateur IMU LSM6DSO STEVAL-MKI197V1. La programmation de la carte STEVAL-MKI109V2 avec l'un des programmes d'exemple ne nécessite que quelques clics dans l'environnement de développement Unico.

Cependant, le LSM6DSO offre un peu plus qu'il n'y paraît.

Le cœur d'apprentissage automatique

L'IMU LSM6DSO inclut également un moteur de filtrage programmable plus sophistiqué, appelé le cœur d'apprentissage automatique. Celui-ci permet d'identifier les classes de mouvements à l'aide des flux de données de capteurs multiples provenant des capteurs internes de l'IMU et de tous les capteurs externes associés. Les classes d'événements reconnaissables peuvent être de type stationnaire (aucun mouvement), marche, course, vélo et conduite. La classification prend la forme d'arbres de décision dans le cœur d'apprentissage automatique.

Le cœur d'apprentissage automatique est composé de trois blocs : le bloc de données de capteurs, le bloc de calcul et l'arbre de décision (Figure 4). Le bloc de données de capteurs du cœur d'apprentissage automatique regroupe les flux de données des accéléromètres et des gyroscopes internes de l'IMU et de tous les capteurs externes associés à l'IMU via l'interface l2C. Le bloc de calcul peut filtrer les données de capteurs à l'aide de paramètres de filtrage prédéfinis et calculer les statistiques en mode fenêtre, notamment la moyenne, la variance, l'amplitude crête-à-crête, le minimum, le maximum et le passage par zéro pour les données de capteurs. L'arbre de décision compare les statistiques des données de capteurs calculées avec les seuils pour classifier les données d'entrée.

Schéma d'un cœur d'apprentissage automatique dans l'IMU LSM6DSO de STMicroelectronics

Figure 4 : Le cœur d'apprentissage automatique dans l'IMU LSM6DSO de STMicroelectronics est composé de trois blocs : un bloc de données de capteurs qui regroupe les flux de données des capteurs internes et externes, un bloc de calcul qui filtre les données de capteurs et calcule les statistiques à partir de ces données de capteurs, et un arbre de décision qui classifie les événements en fonction des statistiques calculées. (Source de l'image : STMicroelectronics)

Comme pour la machine à états finis du LSM6DSO, un outil spécialisé dans l'environnement de développement Unico est utilisé pour programmer le cœur d'apprentissage automatique de l'IMU.

La machine à états finis et le cœur d'apprentissage automatique peuvent également être utilisés en conjonction avec un processeur hôte pour implémenter des algorithmes de suivi de position plus sophistiqués. Le pack logiciel téléchargeable X-CUBE-MEMS1 de STMicroelectronics pour le système de développement STM32Cube de la société inclut les routines logicielles d'exemple suivantes :

  • Reconnaissance d'activité – Fournit des informations sur le type d'activité effectué par l'utilisateur, y compris rester immobile, marcher, marcher rapidement, courir, faire du vélo ou conduire. Cet algorithme peut notamment être utilisé dans un téléphone portable ou dans n'importe quel type de dispositif portable.
  • Détection de durée de mouvement – Lorsqu'elle est associée aux données du podomètre, la détection de durée de mouvement peut être utilisée pour déterminer le nombre de secondes pendant lequel un utilisateur est actif. Cet algorithme peut notamment être utilisé dans les dispositifs portables pour le suivi de santé et d'activité physique.
  • Détection d'intensité de vibration ou de mouvement – Fournit des informations sur l'intensité de mouvement de l'utilisateur et peut distinguer l'intensité de mouvement sur une plage de 0 (immobile) à 10 (sprint). Cet algorithme peut notamment être utilisé dans un téléphone portable ou dans un dispositif corporel de fitness.
  • Reconnaissance de la position de port – Fournit des informations sur la manière dont l'utilisateur porte un dispositif et peut faire la distinction entre les positions suivantes : sur un bureau, dans la main, près de la tête, dans une poche de chemise, dans une poche de pantalon, dans une poche de veste et tenu par un bras qui se balance. Cet algorithme peut notamment être utilisé dans un téléphone portable ou sur un dispositif porté pour une activité liée à la détection de contexte.

Conclusion

La nécessité de maintenir un processeur hôte en fonctionnement pour garder une position fixe et pour détecter des mouvements et des gestes à partir des données de l'IMU peut être un objectif difficile à atteindre avec des conceptions embarquées alimentées par batterie à cause de la consommation énergétique relativement élevée du processeur hôte. Cependant, une nouvelle génération d'IMU basse consommation avec un traitement intégré suffisant pour effectuer un apprentissage automatique peut résoudre ce problème en permettant au processeur hôte de se mettre en mode veille basse consommation tant qu'il n'est pas requis.

 
DigiKey logo

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é.

À propos de l'auteur

Image of Steve Leibson

Steve Leibson

Steve Leibson a été ingénieur système pour HP et Cadnetix, rédacteur en chef pour EDN et Microprocessor Report, blogger technique pour Xilinx et Cadence (entre autres), et il est intervenu en tant qu'expert technologique dans deux épisodes de "The Next Wave with Leonard Nimoy". Il a aidé les ingénieurs de conception à développer des systèmes améliorés, plus rapides et plus fiables pendant 33 ans.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey