Problèmes de réglage de boucles de contrôle communs

Plusieurs problèmes courants peuvent survenir lors du réglage de contrôleurs prédictifs et à rétroaction

Emballement du terme Intégral

Sachez que si \(K_i\) est trop grand, un emballement intégral peut se produire. Suite à un changement important du Point de consigne, le terme intégral peut accumuler une erreur plus grande que l’ Entrée contrôlée maximale. Par conséquent, le système dépasse les bornes et continue d’augmenter jusqu’à ce que cette erreur accumulée soit supprimée.

Il y a quelques manières de limiter cela:

  1. Diminuer la valeur de \(K_i\), à zéro, si possible

  2. Ajouter un contrôle logique pour retourner le terme intégrateur à zéro, si le output est trop éloigné du setpoint. Certains contrôleurs de moteurs intelligents et la classe PIDController de WPILib implémentent ceci avec une méthode setIZone().

  3. Limiter l’intégrateur à une valeur maximale. Le PIDController de la WPILib implémente ceci avec la méthode setIntegratorRange().

Important

La plupart des mécanismes en FRC ne nécessitent aucun contrôle intégral et les systèmes qui semblent nécessiter un contrôle intégral pour répondre de manière adéquate utilisent probablement un modèle prédictif imprécis.

Affaissement du voltage

Lorsque nous opérons des mécanismes sur notre robot, nous débitons du courant de sa batterie. Ceci cause une baisse dans le voltage disponible sur le bus d’alimentation commun du robot. Cela signifie que la performance de nos mécanismes va varier selon la charge et l’action du robot - cela n’est pas idéal.

Pour remédier à ceci, la plupart des contrôleurs de tension offrent un réglage «compensateur de tension» pour leur boucles de contrôle interne qui maintient la tension de sortie constante, malgré des changements de tension dans le bus commun. La classe MotorController de la WPILib offre une méthode setVoltage qui peut effectuer la même chose si les boucles de contrôle sont exécutées sur le RIO (supposant que vous l’appelez à chaque itération de la boucle robot).

Gardez en tête que la compensation de tension ne peut pas augmenter la tension appliquée au moteur plus haut que ce qui est disponible sur le bus - si votre actuateur est en saturation (décrit ci-bas), vous devrez prendre cela en compte séparément.

Saturation de l’actuateur

Un contrôleur calcule sa sortie en fonction de l’erreur entre la Référence et l’ état actuel de l’Usine. Dans une application réelle, nous n’avons pas un contrôle illimité disponible au contrôleur. Lorsque les limites de l’actionneur sont atteintes, le contrôleur agit comme si le gain avait été temporairement réduit.

Si nos gains de contrôle sont trop agressifs, notre algorithme de contrôle pourrait tenter de bouger le mécanisme plus loin que son étendue de mouvement. Dans ce cas, le mécanisme va se « saturer » et se comporter comme si les gains de contrôle étaient plus petits qu’ils ne le sont. Cela peut négativement impacter la réponse adverse de contrôle (ex: résulter en des erreurs et une instabilité).

Si vous rencontrez des problèmes de saturation d’actuateur, pensez à modifier votre mécanisme, en changeant son rapport d’engrenage ou en l’alimentant par un moteur plus puissant.