Étape 1 : Caractérisation de l’entraînement de votre robot
Note
For detailed instructions on using the System Identification tool, see its dedicated documentation.
Note
Le processus d’identification du lecteur nécessite suffisamment d’espace pour que le robot puisse conduire. Assurez-vous d’avoir au moins un espace de 10” (idéalement plus proche de 20”) dans lequel le robot peut conduire pendant la routine d’identification.
Note
Les données d’identification de ce didacticiel ont été généreusement fournies par l’équipe 5190, qui les a générées dans le cadre d’une démonstration de cette fonctionnalité lors de l’atelier P2P 2019 de la North Carolina State University.
Avant de suivre avec précision une trajectoire avec un robot, il est important d’avoir un modèle précis de la façon dont le robot se déplace en réponse à ses entrées de commande. La détermination d’un tel modèle est un processus appelé « identification du système ». L’outil d’identification du système de WPILib peut déterminer avec précision un tel modèle.
Collecte des données
Nous commençons par rassembler nos données d’identification de disque.
Analyse des données
Once the identification routine has been run and the data file has been saved, it is time to open it in the analysis pane.
Vérification des diagnostics
Per the system identification guide, we first view the diagnostics to ensure that our data look reasonable:
Comme nos données semblent raisonnablement linéaires et que les mesures d’ajustement se situent dans des paramètres acceptables, nous passons à l’étape suivante.
Enregistrer les gains de commande Feedforward
Note
Les gains de commande prédictive ou Feedforward ne se transfèrent pas, en général, entre les robots. Aussi, n’utilisez pas les gains de ce tutoriel pour votre propre robot.
Nous enregistrons maintenant les gains de commande prédictive calculés par l’outil :
Puisque notre diamètre de roue a été spécifié en mètres, nos gains de prédiction sont dans les unités suivantes:
kS
: VoltskV
: Volts * Seconds / MeterskA
: Volts * Seconds^2 / Meters
Si vous avez correctement spécifié vos unités, vos gains de commande prédictive seront probablement dans un ordre de grandeur de ceux du présent tutoriel (une exception possible existe pour kA
, qui peut être beaucoup plus petite si votre robot est léger). Si ce n’est pas le cas, il est possible que vous ayiez incorrectement spécifié un de vos paramètres du système d’entraînement lors de la génération de votre projet de robot. Pour cela, un bon test est de calculer la valeur « théorique » de kV
, qui est de 12 volts divisé par la vitesse libre théorique de votre base pilotable (qui est, à son tour, la vitesse libre du moteur multipliée par la circonférence de la roue divisée par le rapport d’engrenage). Cette valeur devrait être très proche du kV
mesuré par l’outil - si ce n’est pas le cas, vous avez probablement fait une erreur quelque part.
Calculer les gains de rétroaction
Note
Les gains de rétroaction ne se transfèrent pas, en général, entre les robots. Aussi, n’utilisez pas les gains de ce tutoriel pour votre propre robot.
We now calculate the feedback gains for the PID control that we will use to follow the path. Trajectory following with WPILib’s RAMSETE controller uses velocity closed-loop control, so we first select Velocity
mode in the identification tool:
Puisque nous utiliserons lePIDController WPILib pour notre boucle de vitesse, nous sélectionnons en outre l’option WPILib (2020-)
dans le menu déroulant « presets ». Ceci est très important, car les gains de rétroaction ne seront pas dans les unités concordantes si nous ne sélectionnons pas le bon préréglage:
Enfin, nous calculons et enregistrons les gains de rétroaction pour notre boucle de contrôle. Puisqu’il s’agit d’un contrôleur de vitesse, seul un gain P est requis :
En supposant que nous avons tout fait correctement, notre gain proportionnel sera en unités de Volts * Secondes / Mètres. Ainsi, notre gain calculé signifie que, pour chaque mètre par seconde d’erreur de vitesse, le contrôleur produira 3.38 volts supplémentaires.