Affichage de l’état des commandes et des sous-systèmes
Si vous utilisez les fonctionnalités de programmation basées sur les commandes de WPILib, vous constaterez qu’elles sont très bien intégrées à SmartDashboard. Celles-ci peuvent aider à diagnostiquer ce que fait le robot à tout moment et vous donner le contrôle et une vue de ce qui est en cours d’exécution.
Présentation des affichages de commande et de sous-système
Avec SmartDashboard, vous pouvez afficher l’état des commandes et des sous-systèmes dans votre programme de robot de différentes manières. Ces informations devraient réduire considérablement le temps de débogage de vos programmes. Sur cette image, vous pouvez voir un certain nombre d’affichages possibles. Voici les éléments suivants:
Le planificateur dans l’état ou aucune commande en cours d’exécution, en anglais :
No commands running
. Dans l’exemple suivant, vous pouvez voir à quoi cela ressemble avec quelques commandes en cours d’exécution indiquant l’état du robot.Un sous-système
ExampleSubsystem
qui indique qu’il n’y a actuellement aucune commande en cours d’exécution qui « nécessite » ce sous-système. Lorsque les commandes sont en cours d’exécution, l’écran indiquera le nom des commandes qui utilisent le sous-système.Une commande écrite sur SmartDashboard qui montre un bouton
start
sur lequel vous pouvez appuyer pour exécuter la commande. C’est un excellent moyen de tester vos commandes une par une.Et quelques valeurs de données écrites dans le tableau de bord pour aider à déboguer le code en cours d’exécution.
Dans les exemples suivants, vous verrez à quoi ressemblerait l’écran lorsque des commandes sont en cours d’exécution et le code qui produit cet affichage.
Affichage de l’état du planificateur
SmartDashboard.putData(CommandScheduler.getInstance());
frc::SmartDashboard::PutData(frc2::CommandScheduler::GetInstance());
from wpilib import SmartDashboard
from commands2 import CommandScheduler
SmartDashboard.putData(CommandScheduler.getInstance())
Vous pouvez afficher l’état du planificateur (le code qui planifie l’exécution de vos commandes). Cela se fait facilement en ajoutant une seule ligne à la méthode RobotInit
dans votre programme comme indiqué ici. Dans cet exemple, l’instance Scheduler est écrite à l’aide de la méthode putData
dans SmartDashboard. Cette ligne de code produit l’affichage dans l’image précédente.
Il s’agit de l’état du planificateur lorsque deux commandes sont en cours d’exécution, ExampleCommand
et newCommand
. Cela remplace le message No commands running.
de l’image d’écran précédente. Vous pouvez voir les commandes affichées sur le tableau de bord lorsque le programme s’exécute et que diverses commandes sont déclenchées.
Affichage de l’état du sous-système
SmartDashboard.putData(exampleSubsystem);
frc::SmartDashboard::PutData(&exampleSubsystem);
from wpilib import SmartDashboard
SmartDashboard.putData(exampleSubsystem)
Dans cet exemple, nous écrivons l’instance de commande, exampleSubsystem
et l’instance de la classe ExampleSubsystem
dans le SmartDashboard. Cela provoque l’affichage montré dans l’image précédente. Le champ de texte contiendra soit quelques tirets, ---
indiquant qu’aucune commande en cours utilise ce sous-système, ou encore le nom de la commande qui utilise actuellement ce sous-système.
Les commandes en cours « nécessitent » des sous-systèmes. C’est la commande qui réserve le sous-système à son usage exclusif. Si vous affichez un sous-système sur SmartDashboard, il affichera la commande qui l’utilise actuellement. Dans cet exemple, ExampleSubsystem
est utilisé par ExampleCommand
.