Upside Up - Robot équilibrage revisité (5 / 6 étapes)

Étape 5: Optimisation de Balance

Et maintenant nous arrivons à la partie intéressante – comment améliorer le robot d’équilibrer les performances. J’ai eu quelques idées sur l’endroit où commencer à chercher, mais comme avec n’importe quel système, il est difficile de savoir ce que les variables traversent les dépendances sont. Alors plutôt qu’obtenir trop analytique, j’ai juste sauté dans.

Intervalle de temps de boucle contrôle

J’ai commencé en faisant varier l’intervalle de temps au cours de laquelle le PID équilibrage a été évalué. J’ai mesuré la période par défaut de Arduino 101 PWM à 2mS, et mon projet précédent avait utilisé une valeur de 20 ms, alors j’ai commencé à 5mS et doublé l’intervalle jusqu'à ce que le robot ne pouvait pas équilibrer. À 5mS, le robot a été en mesure d’équilibrer, mais il semblait être trop active et oscillait avec une période d’approximativement 120mS. À 10mS, c’était à nouveau en mesure d’équilibrer, mais les oscillations ralentissent à s 280mS. À 20mS, la plateforme oscillante période choisi remonter à environ 180mS, mais plutôt que de l’actif, la réponse semblait morose. À 40mS, la réponse est devenue encore plus lent, l’équilibrage erratique et le robot n’était pas toujours en mesure de rester en équilibre. Ma conclusion a été que, tandis que l’intervalle d’évaluation de PID peut certainement une influence sur le comportement du robot, et je devais en effet être au-dessus de certains taux minimal pour pouvoir équilibrer, il n’était pas la solution miracle. Pour le reste de mes tests, j’ai utilisé un intervalle de boucle de commande de 5mS.

Filtre de fusion de capteurs

Ensuite, je me suis déplacé pour le filtre de fusion du capteur. Pourquoi avons-nous besoin de toute façon un filtre de fusion ? Pour répondre à cette question, nous devons examiner le cœur d’un système de balancier, l’IMU (unité de mesure inertielle). L’IMU est constitué de deux types de capteurs : un gyroscope et un accéléromètre. Le gyromètre mesure la vitesse angulaire du changement, ou vitesse angulaire. Théoriquement une bonne estimation de la position angulaire peut être générée en intégrant la sortie du gyroscope. Malheureusement, gyroscope capteurs ont un effet appelé dérive – c'est-à-dire qu'ils enregistreront une petite vitesse angulaire même lorsque assis morts encore. Donc si vous générez votre angle estimé seulement en intégrant la sortie de gyroscope, vous devriez avoir une erreur qui continuerait de croître au fil du temps – un problème qui fait une seule solution de gyroscope intenable pour l’équilibrage. Entrez l’accéléromètre. La valeur déclarée par l’accéléromètre comprendra l’effet de la gravitation, qui est constant, ainsi que toute autre accélération, qui variera basée sur le mouvement de l’appareil. Pour le Mio, il est le vecteur de la gravité que nous intéresse. L’idée d’un filtre de fusion est de générer un angle estimé en combinant ces deux capteurs. Il favorise le gyroscope sortie instantanément (passé à travers un filtre passe-haut) mais la sortie de l’accéléromètre à long terme en mesurant la direction gravitationnelle de la terre (passée à travers un filtre passe-bas) pour supprimer toute dérive.

OK, donc nous avons besoin d’un filtre de fusion, mais lequel ? Il existe des solutions très complètes et complexes. Le filtre de Kalman est l’un des plus éminents filtres fusion, mais même un diplôme d’ingénieur ne peut pas entièrement équiper vous de comprendre ce qui est dans la boîte noire. Pour ce projet, j’ai utilisé une solution similaire, mais moins mathématiquement exigeante, le filtre Madgwick. J’ai utilisé ce filtre pour une raison principale : il était livré avec le 101 Arduino ! Mais la configuration de l’UMI dans le cas d’équilibrage – seulement un degré de liberté, crée des contraintes qui nous permettent d’utiliser une solution plus simple, le filtre complémentaire. Le filtre complémentaire obtient son nom parce que les facteurs de multiplication pour chaque terme ajouter jusqu'à 1. Un schéma d’un filtre complémentaire est illustré à la Figure 1.

Il existe quelques traitements très bons sur le web pour les détails derrière le filtre complémentaire, alors avant, que j’ai juste donner l’équation de filtre. Dans l’équation, A est une constante qui détermine les caractéristiques du filtre. En outre, il convient de noter que dans les calculs d’angle accéléromètre, nous profitons du rapprochement de petit angle – une réalisation que pour des angles moins de ~ 30̊, sin(θ) ≈ θ en radians. Pour notre robot, l’angle s’approche de 30̊, it ' s Gonna bascule, afin que l’hypothèse semble valide. Ainsi, nous pouvons ignorer les sin(θ) dans ce calcul avec peu d’impact. Enfin, la constante de temps du filtre complémentaire est également reproduite ci-dessus.

J’ai testé le Madgwick et le filtre complémentaire pour voir comment il influé sur l’équilibrage du robot. Le stock Madgwick filtrer comme installé a la Beta défini sur 0,1, en utilisant une instruction #define dans le fichier d’en-tête MadgwickAHRS.h. Le robot n’aurait pas équilibrer avec ce paramètre, la réponse a été un peu trop paresseux. Après avoir joué, j’ai trouvé qu'un paramètre de 0,01 activé le meilleur équilibrage, s’il y avait un compromis dans la précision de l’angle absolu avec ce paramètre. Si vous occupé le robot à un angle pendant un moment, dire 20̊ et il retourna ensuite à la verticale, il y avait un décalage dans l’angle estimé à son retour à 0̊.

Pour le filtre complémentaire, j’ai utilisé A = 0,98, ce qui donne une constante de temps d’environ 0,25 secondes, avec dt 5 millisecondes. J’ai trouvé des résultats comparables au filtre Madgwick, et mieux que mon premier projet, mais toujours ne pas rock solide d’équilibrage. Si la recherche continue.

L’utilisation de retour positionnel (encodeurs)

Les DC motoréducteurs que j’ai choisi pour ce robot inclus encodeurs pour fournir la rétroaction sur le mouvement de l’induit du moteur. Les codeurs sont sur l’arbre du moteur avant l’engrenage ne se produise, afin de fournir une résolution assez élevée sur mouvement - avec le rapport de vitesse et roues de diamètre utilisés, j’ai déterminé que chaque transition encodeur traduit en ~0.04cm. Distance et la vitesse étaient alors assez simples de dériver, en comptant les transitions de l’encodeur sur un intervalle de temps régulier et puis en multipliant le résultat par 0,04 pour obtenir la distance et en divisant cette distance par l’intervalle de temps (20mS dans mon cas) pour obtenir la vitesse.

Je prévois mon prochain projet pour aborder plus en détail les fonctionnalités de navigation du robot, donc je n’entrerai pas dans les détails ici, mais les deux méthodes ont été utilisées pour contrôler la vitesse du robot – réglage de l’angle de la cible et l’addition directe aux valeurs PWM moteurs. Ajout de contrôle de vitesse a fait enlever le robot « errant » mais n’a pas significativement amélioré d’équilibrage. Sur la boucle de régulation.

Variables de boucle de contrôle et de la structure

La boucle de contrôle principal du robot de pondération repose sur deux éléments – le filtre de fusion afin de déterminer l’angle estimé du robot et un régulateur PID à utiliser l’angle estimé pour générer le signal de commande du moteur. L’idée derrière un régulateur PID consiste à calculer l’erreur d’un signal de commande contre un point de consigne et ensuite additionner les formes proportionnels, intégral et dérivés de cette erreur après que qu’ils ont chacun été multipliées par constantes distincts. Le très polyvalent comme un élément de commande, où l’erreur a été (I), où il est maintenant de rejoindre le contrôleur PID (P) et où il est dirigé (D). Mais soyez prévenu - il peut être une tâche très difficile d’optimiser les multiplicateurs pour les P, I et modalités D. La figure 2 est un diagramme montrant la structure et contrôle une connectivité de base et reflète la configuration initiale de ce robot.

Après inspection, vous pouvez remarquer que le terme de contrôleur D PID prend la dérivée de l’angle estimé, qui se traduit par un taux estimatif angulaire du changement. Si vous vous souvenez, le gyroscope assurait juste que, une vitesse angulaire de changement, mais c’est beaucoup plus précis. Cela nous amène à se demander comment la boucle de régulation se comporterait si la sortie de gyroscope servaient directement, plutôt que de recalculer la vitesse angulaire de l’angle estimé.

Après s’être nourries le gyroscope directement à terme D du PID, le changement à équilibrer les performances a été spectaculaire. La figure 3 donne un aperçu sur pourquoi – il montre la sortie de gyroscope à côté le terme D du PID. La vitesse angulaire du changement provenant de l’angle estimé accuse la sortie du gyroscope sur 150mS, un retard qui permet d’expliquer certains de l’oscillation dans l’équilibre de la configuration d’origine et vous fait vous demander comment il équilibré à tous.

La figure 4 montre la configuration finale, avec le gyroscope est dirigé directement vers le terme D du contrôleur de PID. Alors que toutes les zones explorées a eu des répercussions sur l’équilibre entre performance, fournissant une indication plus rapides et plus élevé de fidélité de la vitesse angulaire du gyroscope condition le changement en performance robot, que je cherchais.

Articles Liés

Baldroid v3 équilibrage Robot avec pièces de Actobotics et de IOIO-OTG

Baldroid v3 équilibrage Robot avec pièces de Actobotics et de IOIO-OTG

Salut, après la conception de prototypes un couple avec un téléphone Android + module IOIO + OTG, j'ai décidé de construire un produit fini à l'aide de pièces et composants de Actobotics / Servocity.com... Outre la qualité des produits Actobotics, la
Un pendule inversé Simple et très facile d’équilibrage Robot

Un pendule inversé Simple et très facile d’équilibrage Robot

Nous allons faire un simple robot équilibrage inversé et exploiter il.Vous avez besoin seulement d'une demi-journée à faire, si vous avez un arduino et certains matériaux.[une vidéo d'un robot que tu ferais]Introduction :Après que quelques travaillen
Équilibrage Instructable Robot

Équilibrage Instructable Robot

Dans ce Instructable je voulais vous montrer comment faire un auto équilibrage robot. Ce qui le rend unique, c'est que son extérieur est fait pour ressembler à du Instructables Robot. En interne, il fonctionne dans le principe de PID, c'est un systèm
Voiture R/C Robot d’équilibrage

Voiture R/C Robot d’équilibrage

Salut! Ce n'est Kaeru Ojisan.Nous pouvons trouver beaucoup d'équilibrage robots (même avec code source ouvert) dans le site Web.Puis j'ai essayé de trouver un équilibre robot basé sur une véritable automobile ou une voiture R/C vendus dans le commerc
Comment construire un Robot - The BeetleBot v2 (Revisited)

Comment construire un Robot - The BeetleBot v2 (Revisited)

il s'agit de l'insecte robot instructables revisité à la style bas les mythes !Initialement, j'ai fait un instructables sur ma version de robot beetle 1.Il est maintenant temps de vous montrer une nouvelle version de ce merveilleux robot. Cette nouve
Un autre plus facilement inversée pendule Robot

Un autre plus facilement inversée pendule Robot

Il s'agit d'une version améliorée de mon plus tôt instructable intitulé « A Simple et très facile inversé pendule équilibrage Robot ». Il y a quatre avantages dans cette version.Plus facile d'obtenir un matériauMoins de matières nécessairesProgramme
RB2 places en cours d’exécution.

RB2 places en cours d’exécution.

N'est pas sonner comme un « Big Deal » ?Eh bien, pour être honnête, pour moi qu'il s'est avéré pour être assez dur fonctionne. -0)Comme dans les précédents articles je ne vise un essai scientifique, mais je vais essayer d'exposer les faits, j'ai dû r
Actionnement walker dynamique passive

Actionnement walker dynamique passive

Un robot marche constitue toujours un défi. Scientifique/outilleuses-ajusteuses proposé robots basée sur marche statique (le centre de masse est toujours au-dessus du centre de pression), mais ce type de marche est très lent.Marche dynamique pourrait
Guide de gyroscope et accéléromètre avec Arduino, y compris le filtrage de Kalman

Guide de gyroscope et accéléromètre avec Arduino, y compris le filtrage de Kalman

ce guide a été publié tout d'abord lors du forum de l'Arduino et peut être trouvé ici : http://arduino.cc/forum/index.php/topic, 58048.0.htmlJ'ai juste elle publiée, donc encore plus obtiendrez utilisation de celui-ci. Le code peut être trouvé ici :h
Ultrasons, ruban à mesurer

Ultrasons, ruban à mesurer

cette fois, je vais essayer quelque chose de nouveau. Pour s'assurer que je n'oubliez pas les étapes importantes du processus de génération, alors que je suis à souder, la mesure, localisation de logiciels, je vais écrire l'instructable bugs. J'espèr
SEG... bâton.

SEG... bâton.

Bricolage self-balancing... choses... existent depuis presque aussi longtemps que les choses Self-balancing commerciales. Évidemment les versions maison ne sont pas lisses, fiable, ou failsafe comme la vraie chose, mais ils restent assez captivants.
SITWAY

SITWAY

vous n'êtes jamais à l'ancienne à apprendre et à essayer de nouvelles choses. Je pense que l'un des meilleurs jours de ma vie a été la journée que j'ai découvert le site Instructables. Il a ouvert un tout nouveau monde pour moi. C'est mon troisième i
B-robot EVO. L’auto équilibrage robot

B-robot EVO. L’auto équilibrage robot

Comment ça marche ?B-ROBOT est un individu télécommandé équilibrant arduino robot créé avec pièces imprimées en 3D. Avec seulement deux roues B-ROBOT est capable de maintenir son équilibre tout le temps à l'aide de ses capteurs internes et conduire l
Cardan sans balais équilibrage Robot

Cardan sans balais équilibrage Robot

Le projet suivant est le résultat de visionner la vidéo Cubli et devenant intéressé dans le contrôle de l'équilibre instable, à l'aide de moteurs brushless. plus simple inversé le problème du pendule a été décidée afin d'achever le projet avant de pe