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

Exemple d’écran SmartDashboard montrant le planificateur et les commandes en cours d’exécution.

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())

You can display the status of the Scheduler (the code that schedules your commands to run). This is easily done by adding a single line to the Robot constructor in your Robot program as shown here. In this example the Scheduler instance is written using the putData method to SmartDashboard. This line of code produces the display in the previous image.

Le planificateur affiche les commandes en cours d’exécution.

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.

ExampleSubsystem exécute actuellement la commande ExampleCommand.

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.

Activation des commandes avec un bouton

SmartDashboard.putData("Autonomous Command", exampleCommand);
frc::SmartDashboard::PutData("Autonomous Command", &exampleCommand);
from wpilib import SmartDashboard
SmartDashboard.putData("Autonomous Command", exampleCommand)

This is the code required to create a button for the command on SmartDashboard. Pressing the button will schedule the command. While the command is running, the button label changes from start to cancel and pressing the button will cancel the command.

La commande de la section précédente est affichée ici exécutable en appuyant sur le bouton "start".

Dans cet exemple, vous pouvez voir un bouton intitulé Autonomous Command. Appuyez sur ce bouton pour exécuter la commande associée. Ceci est un excellent moyen de tester les commandes une par une sans avoir à ajouter du code de test supplémentaire à votre programme de robot. L’ajout de boutons pour chaque commande facilite le test du programme, une commande à la fois.