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:
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.
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 .
la source
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.
la source