Comment puis-je ajuster automatiquement les paramètres PID à la volée?

15

J'ai un système d'asservissement simple qui utilise un contrôleur PID implémenté dans un MCU pour effectuer la rétroaction. Cependant, les propriétés du système changent de manière dynamique et les paramètres PID ne peuvent donc jamais être ajustés dans toutes les circonstances.

Mon robot est un bras léger avec des moteurs électriques à entraînement arrière, semblable à celui-ci:

Bras de robot léger

Le bras accomplit plusieurs tâches, notamment ramasser des poids lourds, pousser et tirer des objets sur le bureau. Chacune de ces tâches nécessite différents paramètres de réglage PID que je ne peux pas facilement prédire.

Ce que j'aimerais vraiment, c'est une fonction de niveau supérieur qui puisse ajuster soigneusement les paramètres en réponse au comportement du bras. Par exemple, s'il remarque que le bras oscille, il peut réduire P et augmenter D. Ou s'il constate que le bras n'atteint pas sa cible, il peut augmenter I.

De tels algorithmes existent-ils? Je serais heureux même si l'algorithme ne perfectionnait pas immédiatement les paramètres. Par exemple, le bras pouvait osciller plusieurs fois avant que les paramètres soient ajustés à leurs nouvelles valeurs.

Rocketmagnet
la source

Réponses:

10

Un collègue et moi avons une fois mis en œuvre un algorithme simplex pour le réglage à la volée des paramètres PID d'une boucle de contrôle de courant pour un moteur. Essentiellement, l'algorithme modifierait un paramètre à la fois, puis collecterait des données sur un paramètre de rétroaction qui était notre mesure de la bonté. Le nôtre était un écart en pourcentage par rapport à un point de consigne cible actuel. Selon que le paramètre de rétroaction s'est amélioré ou s'est dégradé, le paramètre suivant a été modifié en conséquence.

Ou, sur Wikipédia, parlez:

Soit un programme linéaire donné par un tableau canonique. L'algorithme simplex procède en effectuant des opérations de pivot successives qui donnent chacune une solution de base réalisable améliorée; le choix de l'élément pivot à chaque étape est largement déterminé par l'exigence que ce pivot améliore la solution.

Techniquement, nous avons utilisé la méthode Nelder-Mead qui est un type de simplex. Il peut également être décrit comme un algorithme d'escalade si vous observez comment il modifie ses paramètres d'entrée alors qu'il recherche un paramètre de sortie optimal.

Animation de Nelder-Mead

Nedler-Mead a mieux fonctionné dans notre cas, car il peut poursuivre un point de consigne. C'était important car notre point de consigne cible actuel a changé à mesure que la demande de couple augmentait.

la technique de Nelder – Mead est une méthode de recherche heuristique qui peut converger vers des points non stationnaires

embedded.kyle
la source
pourriez-vous lier votre approche et vos résultats s'ils sont disponibles?
SPRajagopal
@SPRajagopal Désolé mais non. Je ne travaille plus pour cette entreprise et je n'ai accès à aucune des données.
embedded.kyle
4

Une bonne approche pour un tel problème est appelée contrôle adaptatif. En bref, c'est une méthodologie de contrôle qui suppose que le modèle est connu, mais les paramètres du modèle (masse, inertie, etc.) ne le sont pas. Son travail consiste à estimer les paramètres inconnus. Une brève introduction peut être trouvée sur wikipedia . Le texte Robotique: modélisation, planification et contrôle par Siciliano et al. couvrir le sujet de manière plus approfondie.

Modifier en réponse à la requête @Rocketmagnets:

En bref, vous devez avoir un modèle mathématique de votre système, c'est-à-dire les équations qui décrivent comment votre système évolue dans le temps lorsqu'il est forcé ou non, mais vous n'avez pas besoin de connaître les paramètres dynamiques tels que la masse des différents composants, leur inertie, etc. .. C'est le travail du contrôleur adaptatif d'estimer ces paramètres. Vous devez cependant lui donner une estimation initiale pour chacun des paramètres inconnus. Ensuite, lorsque le système fonctionne, il utilise les signaux de contrôle, les signaux de sortie et une méthode comme la régression linéaire ou la descente de gradient pour mettre à jour les valeurs de paramètres inconnues. Au fil du temps, les paramètres convergeront vers des valeurs qui se traduiront par un état stable, bien qu'ils ne correspondent pas aux paramètres réels, c'est-à-dire que la masse peut être incorrecte, mais la valeur fonctionnera toujours.

De là, je conseillerais de se référer à un texte qui discute de la méthode. Je viens de remarquer par exemple que le Dr Marc Bodson propose une copie de son texte Adaptive Control: Stability, Robustness, and Convergence en format PDF sur son site Web .

DaemonMaker
la source
Pouvez-vous expliquer la méthode?
Rocketmagnet
1
Je doute que je puisse lui rendre justice étant donné que je n'ai appris que récemment la méthode. De plus, ce n'est pas une méthode unique, mais une collection de techniques qui ont été développées au cours des 50 dernières années. Cependant, je vais modifier ma réponse pour élaborer un peu plus.
DaemonMaker
2

Le processus que vous décrivez est appelé PID adaptatif.

Cela semble un peu exagéré. J'ai trouvé que le PID est assez robuste lorsqu'il s'agit de perturbations externes et les tâches que vous décrivez ne semblent pas dépasser les capacités d'un seul ensemble de gains.

user65
la source
Ce sont plus que de simples perturbations externes. Ce sont des changements dans les caractéristiques de l'articulation. Le doublement de la masse du robot par exemple conduit à un dépassement.
Rocketmagnet