Décompte à mort avec accéléromètre et gyroscope. Possible?

11

J'ai un accéléromètre 3 axes et un gyroscope 3 axes. J'ai été chargé de développer un système de calcul à l'aide de ce matériel.

Essentiellement, ce dont j'ai besoin, c'est de développer du code pour suivre la position dans l'espace 3D de la carte en temps réel. Donc, si je commence avec la planche sur une table et que je la soulève d'un mètre vers le haut, je devrais pouvoir voir ce mouvement sur l'écran. Les rotations doivent également être prises en compte, donc si je retourne la planche à mi-chemin à travers le même mouvement, elle devrait toujours afficher le même résultat à 1 mètre vers le haut. Il en va de même pour tout mouvement complexe sur une période de quelques secondes.

Ignorer les calculs nécessaires pour calculer et faire pivoter des vecteurs, etc., est-ce même possible avec un appareil aussi peu coûteux? Pour autant que je sache, je ne pourrai pas éliminer la gravité avec une précision de 100%, ce qui signifie que mon angle par rapport au sol sera désactivé, ce qui signifie que mes rotations vectorielles seront désactivées, ce qui conduit à une mesure de position incorrecte.

Je dois également tenir compte du bruit de l'accéléromètre et du biais gyroscopique.

Cela peut-il être fait?

user41883
la source
2
Il peut être effectué jusqu'à la précision autorisée par les capteurs. Les erreurs de position s'accumuleront avec le temps. Que la précision soit suffisante pour votre projet dépend.
Wouter van Ooijen
1
Les mathématiques avancées sont ce qui va rendre le projet possible. Vous devrez utiliser des quaternions, un filtre de Kalman et un schéma ZUPT ou ZARU. De là, oui, vous pouvez le suivre avec précision pendant plusieurs secondes. Je parle d'expérience directe.
Samuel
J'ai une merveilleuse citation de Lord Kelvin accrochée au mur de mon bureau pendant quelques décennies: "Les quaternions sont venus de Hamilton ... et ont été un mal sans mélange pour ceux qui les ont touchés de quelque manière que ce soit. Le vecteur est une survie inutile ... et n'a jamais été de la moindre utilité pour aucune créature. "
Scott Seidman
Les quaternions @ScottSeidman ne sont pas si mauvais si vous les envisagez en termes de rotations autour des vecteurs unitaires. Ensuite, vous n'avez besoin que d'un peu de trigonométrie pour convertir vers / depuis la forme quaternion.
JAB
@JAB, évidemment, elles (ou une autre approche) sont nécessaires car les rotations ne font pas la navette, ce qui met des nuances plutôt intéressantes sur les mathématiques.
Scott Seidman

Réponses:

11

Les réponses et commentaires que vous obtenez sont excellents bien sûr, mais je peux ajouter un peu de couleur.

Pour ce qu'il vaut, notre système neurosensoriel utilise à peu près les mêmes outils, et n'obtient pas toujours la bonne réponse! Nous avons des accéléromètres 3D (les organes des otolithes) et des "gyroscopes" 3D (vélocitomères angulaires, les canaux semi-circulaires), et pourtant nous souffrons de toutes sortes d'illusions lorsque le système n'est pas en mesure d'obtenir la bonne "réponse", comme l'illusion d'ascenseur et l'illusion oculogravique. Ces défaillances se produisent souvent lors d'accélérations linéaires à basse fréquence, difficiles à distinguer de la gravité. Il fut un temps où les pilotes plongeaient dans l'océan pendant les décollages de catapultes sur les porte-avions en raison de la forte perception du tangage résultant de l'accélération à basse fréquence associée au lancement, jusqu'à ce que les protocoles de formation leur apprennent à ignorer ces perceptions.

Certes, les capteurs physiologiques ont des seuils de fréquence et des seuils de bruit différents de ceux des capteurs MEMS, mais nous avons également un énorme réseau neuronal jeté sur le problème - bien que peu de pression évolutive pour résoudre correctement le problème à ces extrêmes de basse fréquence, tant que les lancements de catapultes sont assez rares ;-).

Imaginez ce problème de "calcul à l'estime" de bon sens que beaucoup ont connu, cependant, et je pense que vous verrez comment cela se répercute sur le monde MEMS. Vous montez dans un jet, décollez en Amérique du Nord, accélérez à la vitesse de croisière, traversez l'océan, décélérez et atterrissez en Europe. Même en supprimant les ambiguïtés de translation d'inclinaison du problème et en supposant une rotation nulle, il y aurait très peu d'espoir d'une réelle mise en œuvre d'une double intégration des profils d'accélération produisant un profil de position n'importe où presque suffisamment précis pour vous dire que vous avez atteint l'Europe . Même si vous aviez un gyroscope / accéléromètre à 6 axes très précis assis sur vos genoux pendant le voyage, cela aurait aussi ses problèmes.

C'est donc un extrême. De nombreuses preuves suggèrent que pour les comportements quotidiens, les animaux utilisent une hypothèse simple selon laquelle les accélérations à basse fréquence détectées sont probablement causées par des réorientations par rapport à la gravité. Une combinaison de gyroscopes et d'accéléromètres qui ont des réponses en fréquence plus larges que notre oreille interne peut résoudre le problème beaucoup mieux, bien sûr, mais aura toujours des problèmes extrêmes en raison du bruit de fond, des seuils, etc.

Ainsi, pour les époques courtes avec des accélérations non triviales, le calcul à mort avec la bonne instrumentation n'est pas un si mauvais problème. À long terme, avec de petites accélérations et des accélérations à basse fréquence, le calcul des morts est un gros problème. Pour toute situation donnée, vous devez déterminer où se situe votre problème particulier sur ce spectre et à quel point vos besoins de calcul sont précis afin de déterminer si le mieux que vous pouvez faire est assez bon. Nous appelons cela l'ingénierie des processus.

Scott Seidman
la source
Merci pour cette réponse éclairante. Cependant, je me pose quelques questions: 1) qu'entendez-vous par accélérations à basse fréquence? 2) Si le problème était réduit de la position 3D au déplacement latéral (ignorer Z), est-ce plus facile? et 3) Qu'en est-il d'un mouvement lent dans l'eau de mer, où l'effet de la gravité est réduit? Tous les conseils pour lire du matériel sur ces calculs seraient appréciés.
achennu
En fait, les systèmes de navigation intertiels à l'ancienne seraient précis à quelques milles près d'un long vol. Ils devaient être extrêmement précis. (Ils vivaient dans une boîte assez grande.) La technologie a été développée dans les années 1950 pour guider les ICBM.
Tuntable
9

Le principal problème que j'ai constaté lors d'un projet de conception senior similaire au vôtre est qu'un accéléromètre ne mesure que l'accélération. Vous devez intégrer une fois pour obtenir la vitesse plus une constante C. Ensuite, vous devez à nouveau intégrer pour obtenir la position + Cx + D. Cela signifie qu'une fois que vous calculez la position à partir des données d'un accéléromètre, vous vous retrouvez avec un décalage, mais vous avez également une erreur qui croît linéairement avec le temps. Pour le capteur du MEM que j'ai utilisé, en 1 seconde, il s'est calculé à au moins un mètre de l'endroit où il se trouvait réellement. Pour que cela soit utile, vous devez généralement trouver un moyen de supprimer très souvent les erreurs afin d'éviter l'accumulation d'erreurs. Certains projets peuvent le faire, mais beaucoup ne le sont pas.

Les accéléromètres donnent un joli vecteur de gravité qui ne monte pas en erreur au fil du temps et les boussoles électroniques donnent une orientation sans accumuler d'erreur, mais dans l'ensemble, le problème des calculs morts n'a pas été résolu par des tonnes d'argent dépensées par la marine pour des tonnes de capteurs sur les navires . Ils sont meilleurs que ce que vous pouvez faire, mais la dernière fois que j'ai lu, ils se sont tout de même retrouvés à être distants de 1 km lorsqu'ils parcouraient 1000 km. C'est en fait assez bon pour les morts, mais sans leur équipement, vous ne pourrez rien faire de proche.

Horta
la source
Certes, l'erreur est le carré de la distance / temps? L'erreur de vitesse sera linéaire, donc le déplacement du carré. Ce qui est intéressant et non abordé, c'est à quel point ces accélérateurs bon marché sont bons.
Tuntable
@Tuntable J'espère que vous avez un accéléromètre qui n'est pas si mauvais que vous avez un décalage d'accélération constant significatif . Si vous en avez un aussi mauvais, alors oui, vous vous retrouverez avec une erreur carrée avec la distance / le temps.
horta
7

Vous aurez également des biais dans les accéléromètres et du bruit dans les gyroscopes à gérer également.

Et la gravité ne devrait pas introduire d'erreurs dans les mesures d'angle; au contraire, le vecteur de gravité fournit une "référence absolue" qui vous aide à mettre à zéro le biais accumulé des angles "tangage" et "roulis".

Oui, ce que vous voulez faire est possible, mais les mauvaises performances des appareils MEMS à faible coût signifient que les erreurs s'accumulent rapidement - à la fois les changements de biais et la "marche aléatoire" générée par le bruit (à la fois dans les accéléromètres et les gyroscopes) entraînera les résultats à s'écarter de la réalité en quelques secondes ou minutes.

Pour résoudre ce problème, vous devez intégrer des capteurs supplémentaires dans votre système qui ne souffrent pas de ce type d'erreurs. Comme je l'ai mentionné ci-dessus, l'utilisation de l'angle du vecteur de gravité est un moyen de corriger certaines erreurs gyroscopiques, mais vous devez savoir quand vous avez une mesure de gravité précise (les systèmes ne sont pas accélérés autrement) avant de pouvoir utiliser il.

Une autre façon de corriger la dérive angulaire consiste à incorporer un magnétomètre pour mesurer le champ magnétique terrestre. Les magnétomètres ont des erreurs relativement importantes, mais ils ne souffrent pas de dérive à long terme.

La correction des erreurs de position créées par les composantes de dérive des lectures de l'accéléromètre nécessite une référence de position absolue quelconque. Le GPS est couramment utilisé (lorsqu'il est disponible), mais vous pouvez également utiliser d'autres capteurs, tels que des baromètres (pour l'altitude), des odomètres (si vous avez des roues au sol), des capteurs de distance à ultrasons ou infrarouges, ou même des capteurs d'image.

Quelle que soit la combinaison de capteurs que vous utilisez, toutes ces données doivent être «fusionnées» dans un modèle logiciel auto-cohérent de l'état du système, qui comprend non seulement la position et l'attitude actuelles, mais également des estimations du biais actuel. , facteur d'échelle et niveaux de bruit des capteurs eux-mêmes. Une approche courante consiste à utiliser un filtre de Kalman, qui peut être montré pour fournir une estimation "optimale" (c'est-à-dire la meilleure estimation disponible) de l'état du système pour un ensemble donné de lectures de capteur.

Dave Tweed
la source
4

La réponse courte est "pas exactement". La réponse longue est que vous pouvez former des déclarations telles que "Compte tenu de mes lectures de gyroscope, je suis convaincu à 95% que l'appareil a été tourné entre 28 degrés et 32 ​​degrés depuis ma dernière lecture".

dθ(t)dt=r(t)
d2p(t)dt2=r(t)
r(t)t

Ces équations différentielles "bruyantes" sont généralement appelées "équations différentielles stochastiques" où le bruit est supposé être le bruit blanc généré par une marche aléatoire. Les mathématiques peuvent être généralisées à d'autres situations où le bruit ne provient pas d'une marche aléatoire. Dans tous les cas particuliers, le bruit aura une distribution qui peut être déterminée expérimentalement, dont les paramètres dépendront de votre appareil et de votre application spécifiques. En raison de l'accumulation de bruit, peu importe ce que vous faites pour obtenir de bonnes estimations sur des périodes de temps relativement longues, vous devrez toujours calibrer périodiquement une position connue. Les bases fixes, les relevés de boussole et la gravité sont des exemples de références fixes.

Si vous décidez de poursuivre dans cette voie, vous devez décider quelques choses:

  • Qu'est-ce qu'un niveau d'erreur acceptable? Voulez-vous être sûr à 95% qu'il est à moins d'un degré après 2 secondes ou voulez-vous être sûr à 80% qu'il est à 5 degrés après 2 secondes?

  • Prenez quelques lectures de votre gyroscope / accéléromètre. Ceci peut être utilisé pour calculer la distribution empirique du bruit qui estime le bruit réel. Utilisez-le pour résoudre votre équation différentielle bruyante et calculer vos intervalles de confiance.

  • De ce qui précède, il devrait être clair comment la précision de lecture (variance) de la fiche technique affecte la solution de votre équation différentielle bruyante. Il sera également clair comment cela affecte vos intervalles de confiance.

  • Choisissez un appareil avec des paramètres acceptables pour obtenir les intervalles de confiance que vous vouliez dans la première étape. Vous pouvez trouver que les paramètres de précision de l'appareil que vous voulez / besoin ne correspondent pas à ce qui est disponible et / ou à votre budget. D'un autre côté, vous pourriez être surpris des résultats que vous obtenez pour des appareils moins chers.

SomeEE
la source
Le problème (ou un problème) réside dans le fait que l'accéléromètre est sensible à plus de p (t). Il est également sensible aux changements de thêta autour de certains axes.
Scott Seidman
Je suis d'accord. C'est pourquoi il est toujours préférable d'utiliser des vecteurs lors de toute analyse d'un système multiparamétrique. La généralisation à partir des processus stochastiques à valeurs vectorielles du cas à variable unique est triviale par rapport au reste des problèmes.
SomeEE