Réglage des paramètres PID avec SmartDashboard

Le PID (Proportionnel, Intégral, Dérivé) est un algorithme permettant de déterminer, par exemple, la vitesse d’un moteur en se servant d’une boucle de rétroaction à partir du signal d’un capteur pour atteindre une valeur désirée, la cible, le plus rapidement possible. Ainsi, un robot avec un mécanisme élévateur qui se déplace vers une position prédéterminée devrait s’y rendre aussi vite que possible, puis s’arrêter sans dépassement excessif conduisant à une oscillation. C’est par réglage du PID de l’élévateur qu’on peut arriver à ce résultat. L’idée derrière le PID est de calculer, pour un paramètre donné, la position d’un bras par exemple, une valeur d’écart qui est la différence entre la valeur actuelle de l’élément de rétroaction du mécanisme et la valeur souhaitée (cible). Dans le cas du bras, l’élément de rétroaction peut être un potentiomètre relié à un canal analogique qui fournit une tension qui est proportionnelle à la position du bras. La valeur souhaitée est la tension prédéterminée du potentiomètre pour que le bras se trouve à la position voulue, et la valeur actuelle est la tension correspondant à la position réelle du bras au moment précis où la mesure est prise.

Détermination des valeurs cibles avec LiveWindow

Setting a motor's speed with LiveWindow.

Créez un sous-système PID pour chaque mécanisme pourvu d’une boucle de rétroaction. Les sous-systèmes PID contiennent un actionneur (moteur) et un capteur de rétroaction (potentiomètre dans le cas présent). Vous pouvez utiliser le mode Test pour afficher les valeurs des capteurs et actionneurs du sous-système. À l’aide du curseur, contrôlez manuellement l’actionneur à chaque position souhaitée. Notez les valeurs du capteur (2) pour chacune des positions prédéterminées. Celles-ci serviront de cibles pour le contrôleur PID.

Affichage du PIDController dans LiveWindow

Contrôle d’un PIDController dans LiveWindow.

En mode Test, les sous-systèmes PID affichent leurs paramètres P, I et D qui ont été définies dans le code. Les valeurs P, I et D sont les poids appliqués à l’écart calculé (P), la somme des écarts au fil du temps (I) et le taux de changement des écarts (D). Chacun de ces termes est multiplié par le poids correspondant et, additionnés ensemble, ils forment la valeur envoyée au moteur. Choisir les valeurs optimales de P, I et D peut être difficile et nécessite beaucoup d’essais et erreurs. En opérant le robot en mode Test, on peut modifier ces valeurs et observer la réponse du mécanisme.

Important

The enable option does not affect the PIDController introduced in 2020, as the controller is updated every robot loop. See the example here on how to retain this functionality.

Réglage du Contrôleur PID

Utilisation du PIDController pour régler la commande PID.

Tuning the PID controller can be difficult and there are many articles that describe techniques that can be used. It is best to start with the P value first. To try different values fill in a low number for P, enter a setpoint determined earlier in this document, and note how fast the mechanism responds. If it responds too slowly, perhaps never reaching the setpoint, increase P. If it responds too quickly, perhaps oscillating, reduce the P value. Repeat this process until you get a response that is as fast as possible without oscillation. It’s possible that having a P term is all that’s needed to achieve adequate control of your mechanism. Further information is located in the Tuning a Flywheel Velocity Controller document.

Une fois que vous avez déterminé les valeurs de P, I et D, elles peuvent alors être insérées dans votre programme. Plus précisément soit dans les propriétés du PIDSubsystem dans RobotBuilder, soit dans le constructeur du sous-système PID dans votre programme du robot.

Le terme F (feedforward) est utilisé pour le contrôle de la vitesse avec un contrôleur PID.

Plus d’informations peuvent être trouvées à Contrôle PID dans WPILib.