Skip to content

Plotjuggler ?

jguyonneau edited this page Apr 26, 2020 · 4 revisions

Comme expliqué dans le readme.md, un des objectifs de cette asservissement pour robot, est de pouvoir visualiser en temps réel un maximum de donnée calculés par les boucles de contrôles. Pour cela, nous utilisons la capacité du chip STM32F446RE de gérer un port USB pour transmettre les informations en temps réel. D'autre part, côté PC nous utilisons PlotJuggler pour visualiser nos données.

Utilisation

Pour comprendre l'utilisation de PlotJuggler, je vous conseille de regarder le cheatsheet: https://www.plotjuggler.io/cheatsheet

Pour récupérer les données de la carte d'asservissement, j'ai développé un plugin PlotJuggler. Il vous faudra donc compiler notre fork de PlotJuggler qui contient le plugin Asserv_stream : https://github.com/EsialRobotik/PlotJuggler

Ouvrir la connexion

Ouvrez simplement le plugin asserv_stream, et ouvrez le bon device. De manière générale, soit /dev/ttyACM0 ou /dev/ttyACM1.

La fenêtre classique de PlotJuggler reste ouverte, vous permettant de visualiser les données, et une autre fenêtre s'ouvre, vous permettant d'envoyer des commandes prédéfinies pour vous aider dans votre réglage.

Les données disponibles

Toutes ces données sont disponibles par itération de la boucle d'asservissement.

  • raw_encoder/right : Nombre de tick de l'encodeur droit
  • raw_encoder/left : Nombre de tick de l'encodeur gauche
  • angle_regulator/goal : Consigne d'entrée du régulateur d'angle en rad
  • angle_regulator/accumulator : Angle actuel en rad stocké par le régulateur
  • angle_regulator/output : Consigne de sortie du régulateur d'angle en rad/sec
  • angle_regulator/limited_output : Consigne de sortie du régulateur d'angle en rad/sec après limitation de l’accélération
  • distance_regulator/goal : Consigne d'entrée du régulateur de distance en mm
  • distance_regulator/accumulator : Distance actuel en mm stocké par le régulateur
  • distance_regulator/output : Consigne de sortie du régulateur de distance en mm/sec
  • distance_regulator/limited_output : Consigne de sortie du régulateur de vitesse en mm/sec après limitation de l’accélération
  • speed/right/goal : Consigne d'entrée du régulateur en vitesse droit en mm/sec
  • speed/left/goal : Consigne d'entrée du régulateur en vitesse gauche en mm/sec
  • speed/right/current : Vitesse droite estimé d'après les ticks du codeurs droit.
  • speed/left/current : Vitesse gauche estimé d'après les ticks du codeurs gauche.
  • speed/right/outputConsign : Consigne de sortie du régulateur de vitesse droit en pourcentage de puissance [-100%;100%]
  • speed/left/outputConsign : Consigne de sortie du régulateur de vitesse gauche en pourcentage de puissance [-100%;100%
  • speed/right/output_consign_integrated : Part de l'intégrale dans la valeur de speed/right/outputConsign
  • speed/left/output_consign_integrated : Part de l'intégrale dans la valeur de speed/left/outputConsign

NB: Les données peuvent être affichés groupés ou à plat, en utilisant ce bouton :

Bizarreries

Il y a 2 comportements gênants dans le plugin plotjuggler, que je n'arrive pas à régler, mais qui ne gênent en rien son utilisation.

A l'ouverture du port /dev/ttyACMxx, le drivers met du temps à tomber en marche, et l'ouverture du device peut être refusé pendant quelques secondes. Insistez, ça va finir par marcher.

Lorsque vous vous déconnectez/reconnectez du stream après avoir reseter la carte, les données sont souvent incohérentes pour plotjuggler. Il faut vider le buffer de données de plotjuggler pour que cela retombe en marche, dans Data -> "Clear data points", ou plus rapidement avec le raccourci Ctrl+Shift+c