Je fais un quadcopter. J'ai mis en place une boucle PID pour la stabiliser à un angle d'Euler donné (tangage et roulis). Le problème se pose lorsque le roulis approche à 90 degrés (45 degrés et plus). Les valeurs n'ont plus de sens à l'approche du verrouillage du cardan. J'ai l'intention de lui faire faire des manœuvres complexes comme le bouclage, etc., qui dépasse la limite de roulis de 45 degrés.
Comment puis-je utiliser des quaternions pour surmonter ce problème? (Je reçois des quaternions du MPU-9150.) J'ai lu de nombreux articles sur la question des quaternions, mais ils parlent tous de rotations dans un logiciel 3D et d'interpolation entre deux points de rotation. Cela n'a pas de sens car je ne connais pas les nombres et matrices imaginaires.
la source
Réponses:
Un quadcopter contient (entre autres) deux algorithmes distincts et indépendants: un algorithme d'estimation d'attitude et un algorithme de contrôle.
L'algorithme d'estimation d'attitude calcule des informations sur l'orientation du quadcoptère: les angles de roulis, de tangage et de lacet.
L'algorithme de contrôle est chargé de piloter les moteurs afin que l'orientation du quadcoptère corresponde à ce que le pilote (ou le logiciel du pilote automatique) attend. Cet algorithme est ce qui lirait les angles quadricoptères estimés (à partir de l'algorithme d'estimation d'attitude) et modifierait la vitesse des moteurs pour tenter de correspondre aux angles souhaités. Les PID sont un algorithme de contrôle bien adapté et courant pour les quadcoptères.
Le verrouillage du cardan est un phénomène qui peut se produire dans l'algorithme d'estimation d'attitude. Cela n'a rien à voir avec l'algorithme de contrôle. En tant que tel, vous n'avez pas besoin d'ESC, de moteurs ou d'hélices pour tester le verrouillage du cardan: vous pouvez modifier votre code pour afficher vos angles de roulis, de tangage et de lacet, et tester que les valeurs correctes sont calculées lorsque vous déplacez manuellement votre quadcopter. Vous pourrez peut-être le faire avec le quadricoptère attaché à votre ordinateur, via Bluetooth ou en utilisant d'autres méthodes en fonction de votre plate-forme.
Si les angles sont calculés correctement, vous n'avez pas à vous soucier des quaternions. S'ils ne sont pas calculés correctement, les quaternions peuventT'aider. L'algorithme d'estimation d'attitude doit produire 3 angles pour l'algorithme de contrôle à utiliser, mais il peut utiliser une représentation interne différente telle que des quaternions ou des matrices 3x3. Dans ce cas, il convertirait toujours les informations d'attitude en angles afin de fournir des données utilisables à l'algorithme de contrôle. D'une manière générale, les quaternions ne sont pas intuitifs mais efficaces en termes de calcul. Cela les rend bien adaptés aux plates-formes lentes telles que Arduino. Les matrices ou les angles peuvent être un choix plus facile pour un matériel plus rapide. Si vous avez besoin de moi pour élaborer une solution ou l'autre, veuillez me le faire savoir, mais il serait assez prématuré pour moi de donner des détails à ce stade car je ne suis pas convaincu que vous ayez besoin de mettre en œuvre des quaternions.
Enfin, si les angles sont calculés correctement, la façon de faire votre boucle quadcopter est de contrôler la vitesse angulaire plutôt que l'angle. Si vos bâtons représentent l'angle du quadcoptère, il n'y a aucun moyen de le faire faire une boucle complète: essayez de visualiser la position des bâtons pendant que le quadcoptère boucle et vous devez comprendre pourquoi. Cependant, si les bâtons contrôlent la vitesse angulaire, vous pouvez contrôler la vitesse à laquelle il boucle.
Bonne chance pour votre projet!
Remarque: Par souci de simplicité, je n'ai pas mentionné l'option théorique de manipuler les données sous forme de matrices ou de quaternions à la fois dans l'algorithme d'estimation d'attitude et l'algorithme de contrôle. Je n'ai jamais vu un quadricoptère implémenter de tels algorithmes.
la source
Tout d'abord, je pense que vous devez revenir en arrière et regarder votre code. Le verrouillage du cardan n'est un problème que lorsque vous vous approchez très près (à quelques degrés près) de 90. Si vous voyez un comportement étrange à 45 degrés, quelque chose d'autre en est la cause.
Quant à votre question, les quaternions ne sont généralement pas utilisés directement dans le contrôle PID de base car ils ont un comportement compliqué entraînant des résultats non intuitifs. Habituellement, ils sont soit convertis en angles d'Euler, puis utilisés dans le contrôleur PID normal, soit des contrôleurs non linéaires spéciaux sont conçus pour les utiliser.
Notez que pour vos manœuvres en boucle, le PID n'est généralement pas un très bon contrôleur: les gains qui fonctionnent bien près du vol stationnaire ne fonctionnent plus bien à grands angles. Habituellement, lorsque quelqu'un veut faire une boucle, il passe en "boucle ouverte", c'est-à-dire qu'il démarre la manœuvre sous contrôle, puis une fois qu'il a dépassé un certain angle, il suffit d'appliquer une série fixe de commandes jusqu'à ce qu'il ait terminé la boucle. Déterminer quelle série fixe de commandes utiliser est la partie délicate et utilise souvent l'apprentissage par renforcement (un peu comme une façon formelle de faire des essais et des erreurs).
la source
Serial Chart
( code.google.com/p/serialchart ) L'entrée est la sortie Euler directe de l'I2CDevLib (MPU-9150). Je vais tester un peu plus. L '"erreur" pourrait avoir été causée par des mouvements imprécis de ma part.Cet article, Full Quaternion Based Attitude Control for a Quadrotor par Emil Fresk et George Nikolakopoulos, montre ce que vous essayez de réaliser.
la source
Ce cours MOOC gratuit, Bienvenue sur AUTONAVx de TUMx! La navigation autonome pour les robots volants peut être utile. Cela couvre:
la source