Introduction à l’identification du système
Qu’est-ce que « l’identification du système ? »
In Control Theory, system identification is the process of determining a mathematical model for the behavior of a system through statistical analysis of its inputs and outputs.
This model is a rule describing how input voltage affects the way our measurements (typically encoder data) evolve in time. A « system identification » routine takes such a model and a dataset and attempts to fit parameters which would make your model most closely-match the dataset. Generally, the model is not perfect - the real-world data are polluted by both measurement noise (e.g. timing errors, encoder resolution limitations) and system noise (unmodeled forces acting on the system, like vibrations). However, even an imperfect model is usually « good enough » to give us accurate feedforward control of the mechanism, and even to estimate optimal gains for feedback control.
Assumed Behavioral Model
If you haven’t yet, read the full explanation of the feedforward equations used by the WPILib toolsuite in The Permanent-Magnet DC Motor Feedforward Equation.
The process of System Identification is to determine concrete values for the coefficients in the model that best-reflect the behavior of your particular real-world system.
To determine numeric values for each coefficient in our model, a curve-fitting technique (such as least-squares regression) is applied to measurements taken from the real mechanism. Careful selection of the data-producing experiments helps improve the accuracy of the curve-fitting.
Once these coefficients have been determined, we can then take a given desired velocity and acceleration for the motor and calculate the voltage that should be applied to achieve it. This is very useful - not only for, say, following motion profiles, but also for making mechanisms more controllable in open-loop control, because your joystick inputs will more closely match the actual mechanism motion.
Certains des outils de cette suite logicielle introduisent des termes supplémentaires dans l’équation ci-dessus pour tenir compte des différences connues par rapport au cas simple décrit ci-dessus - les détails pour chaque outil peuvent être trouvés ci-dessous:
L’outil d’identification du système WPILib (SysId)
L’outil d’identification du système WPILib se compose d’une application qui s’exécute sur le PC de l’utilisateur et d’un code robot correspondant qui s’exécute sur le robot de l’utilisateur. L’application PC enverra des signaux de contrôle au robot via NetworkTables, tandis que le robot renverra des données à l’application. L’application traite ensuite les données et détermine les paramètres du modèle pour le mécanisme du robot de l’utilisateur, ainsi que la production de tracés de diagnostic. Les données peuvent être enregistrées (au format JSON) pour une utilisation future, si vous le souhaitez.
Outils inclus
Note
Avec un peu d’ingéniosité, ces outils peuvent être utilisés pour caractériser avec précision une variété étonnamment large de mécanismes de robots. Même si votre mécanisme ne semble évidemment correspondre à aucun des outils, une compréhension des équations du système révèle souvent que l’une des routines incluses fera l’affaire.
La suite d’outils d’identification du système prend actuellement en charge :
Configurations de simples moteurs
Bases pilotables
Élevateurs
Bras
Plusieurs de ces options utilisent un code côté robot identique et ne diffèrent que par la routine d’analyse utilisée pour interpréter les données.
Identification simple du moteur
L’outil d’identification de moteur simple détermine les paramètres les mieux adaptés à l’équation :
où \(V\) est la tension appliquée, \(d\) est le déplacement (position) du variateur, \(\dot{d}\) est sa vitesse, et \(\ddot{d}\) est son accélération. Il s’agit du modèle pour un moteur à courant continu à aimant permanent sans charge autre que le frottement et l’inertie, comme mentionné ci-dessus, et ceci est un modèle précis pour les volants d’inertie, les tourelles et les curseurs linéaires horizontaux.
Identification de la base pilotable
L’outil d’identification de la base pilotable détermine les paramètres les mieux adaptés à l’équation :
où \(V\) est la tension appliquée, \(d\) est le déplacement (position) du variateur, \(\dot{d}\) est sa vitesse et \(\ddot{ d}\) est son accélération. Il s’agit de la même équation de modélisation que celle utilisée dans l’identification simple du moteur - cependant, l’outil d’identification de la base pilotable est spécifiquement configuré pour fonctionner sur des entraînements différentiels et caractérisera chaque côté de l’entraînement indépendamment si vous le souhaitez.
L’outil d’identification de la transmission peut également déterminer la largeur de voie effective de votre robot à l’aide d’un gyroscope. Plus d’informations sur la façon d’exécuter l’identification sont disponibles dans l’article identification de la largeur de piste.
Identification d’élévateur
L’outil d’identification d’élévateur détermine les paramètres les mieux adaptés à l’équation :
where \(V\) is the applied voltage, \(d\) is the displacement (position) of the elevator, \(\dot{d}\) is its velocity, and \(\ddot{d}\) is its acceleration. The constant term (\(kG\)) is added to correctly account for the effect of gravity.
Identification du bras
L’outil d’identification de bras détermine les paramètres les mieux adaptés à l’équation :
où \(V\) est la tension appliquée, \(\theta\) est le déplacement angulaire (position) du bras, \(\dot{\theta}\) est sa vitesse angulaire et :math: ddot{theta} est son accélération angulaire. Le terme cosinus (\(kG\)) est ajouté pour tenir compte correctement de l’effet de la gravité.
Installation de l’outil d’identification du système
L’outil d’identification du système (également appelé sysid
) est inclus avec le programme d’installation de la WPILib.
Note
L’ancien outil de caractérisation programmé en Python des années précédentes n’est plus pris en charge.
Lancement de l’outil d’identification du système
L’outil d’identification du système peut être ouvert à partir de l’option Start Tool
dans VS Code ou en utilisant le raccourci à l’intérieur du dossier de bureau WPILib Tools (Windows).