Sélection d'un accéléromètre pour le calcul déduit

11

Je n'ai jamais utilisé d'accéléromètre auparavant, mais je sais qu'ils sont livrés avec des sorties I2C, SPI et analogiques. Si je choisis d'utiliser un appareil I2c ou SPI, vais-je accumuler des erreurs dues au temps de communication?

L'échantillonnage rapide d'un signal analogique est-il susceptible de m'obtenir une position déduite plus précise que l'utilisation du I2C?

Est-ce que cela sera vrai pour

  1. Un robot se déplaçant dans une pièce
  2. Un robot se déplaçant sur un terrain extérieur et est susceptible de glisser et de rouler sur une pente.

De plus, je n'ai aucun sens de Gs. J'ai essayé de bouger rapidement ma main avec mon téléphone exécutant un andro-capteur dans mon poing et j'ai vu que les lectures étaient saturées à 20 m / s 2 . À quoi puis-je m'attendre de la part de mon robot s'il est touché par un autre gros robot en mouvement ou heurté par un humain qui marche rapidement?

Lord Loh.
la source

Réponses:

5

L'augmentation de la fréquence d'échantillonnage du capteur n'améliore pas sa précision ou sa précision. C'est une caractéristique du capteur que vous ne pouvez généralement pas modifier. Si vous essayez d'estimer votre position en intégrant les accélérations seul, vous avez certainement vous accumulez erreur au fil du temps, parce que chaque capteur est bruyant. Si vous souhaitez utiliser les accéléromètres pour déterminer la position ou la vitesse, vous devez les combiner avec un autre capteur qui mesure réellement la position (même avec une précision inférieure) ou la vitesse. Ensuite, vous pouvez combiner ces différents signaux de capteur avec un filtre de Kalman pour obtenir une estimation raisonnable de l'endroit où vous vous trouvez et de la vitesse à laquelle vous vous déplacez.

En considérant les forces G, considérons que 1 G est 9,81 m / s ^ 2, ce qui me semble beaucoup, dans le contexte de petits robots amateurs, au moins pour les robots d'intérieur. L'extérieur pourrait être une autre histoire, selon la puissance de votre moteur. Une saturation à 20m / s ^ 2 devrait suffire.

Daniel Eberts
la source
4

Pensez en termes de vitesse de votre boucle de contrôle. Une vitesse de boucle de contrôle rapide typique est de 1 kHz. Certains robots utilisent un taux plus rapide, certains plus lent. Habituellement, la vitesse de votre boucle de contrôle est plus élevée que ce dont vous avez vraiment besoin.

Ainsi, chaque trame de contrôle dure 1000us. Dans ce cadre de contrôle, vous devez:

  • Testez vos capteurs
  • Effectuer les calculs de contrôle
  • Envoyer les nouvelles sorties aux moteurs

Tant que vous pouvez faire tout cela confortablement dans le délai imparti, vous n'avez aucun problème. Alors, combien de temps faut-il pour lire l'accéléromètre? S'il s'agit d'un appareil à 3 axes, utilisant 400kbps I2C, alors il pourrait prendre environ 160us pour lire les données. Cela vous laisse 840us pour effectuer le calcul et mettre à jour les moteurs. Même un PIC 8 bits peut gérer cela.


À propos des forces G. Lors d'un impact, ils peuvent être étonnamment élevés. Par exemple, dans quelle mesure pensez-vous qu'il faudrait pour casser un disque dur? Probablement pas tant que ça. Eh bien, un disque dur que j'avais récemment dit qu'il était évalué pour une accélération maximale de 75G. Attendez-vous donc à ce que deux robots entrent en collision pour produire au moins plusieurs G. Il est impossible d'estimer avec précision car cela dépend énormément de la conception mécanique des robots. S'ils sont tous les deux complètement solides comme des boules de billard, alors vous pouvez vous attendre à des accélérations très élevées. S'ils ont une sorte de coque flexible, cela réduira considérablement l'accélération. Mais, la question est, avez-vous vraiment besoin de connaître la valeur réelle de l'accélération lors d'un impact?

Rocketmagnet
la source
1

D'après votre question, je suppose que vous essayez d'obtenir votre position à partir des accéléromètres. Jetez un œil à ce genre d' erreursvous vous attendez avant, puis peut-être reconsidérer. L'estimation de position comporte de très grandes erreurs, principalement en raison de l'incertitude de l'orientation. L'application dans des navires, des avions, des fusées, etc. utilise des IMU de navigation de haute précision très coûteuses. La latence, à laquelle se résume votre question, n'est pas vraiment un problème. Plus pertinente est la synchronisation entre vos autres capteurs (par exemple Gyros). Les accéléromètres ne sont généralement pas utilisés pour l'estimation de la position (il y a des cas où cela aide, mais seulement pour de courtes périodes), mais plutôt pour compenser la dérive gyroscopique dans l'estimation de l'orientation. Vous pouvez également les utiliser directement pour estimer votre orientation, mais votre estimation est alors perturbée par des accélérations dynamiques.

Jakob
la source