Affichage des données de votre robot

Vous pouvez afficher les données de votre robot dans les modes de fonctionnement réguliers Teleop et Autonome, mais vous pouvez également afficher l’état et activer tous les sous-systèmes du robot lorsque celui-ci est en mode Test. Par défaut, vous verrez deux onglets lorsque vous démarrez Shuffleboard, l’un pour Teleop/Autonomous et l’autre pour le mode Test. L’onglet actif est souligné, comme on peut le voir dans l’image ci-dessous.

Souvent, le débogage ou l’inspection de l’état d’un robot demande d’écrire un certain nombre de valeurs à la console et de les regarder par streaming. À l’aide de Shuffleboard, vous pouvez ajouter des valeurs par une interface générée automatiquement selon votre programme. Au fur et à mesure que les valeurs sont mises à jour, les éléments du GUI associés à ces valeurs s’adaptent - il n’est pas nécessaire d’essayer d’envoyer ces chiffres par streaming à l’écran.

Affichage des valeurs en mode de fonctionnement normal (Auto ou Teleop)

protected void execute() {
   SmartDashboard.putBoolean("Bridge Limit", bridgeTipper.atBridge());
   SmartDashboard.putNumber("Bridge Angle", bridgeTipper.getPosition());
   SmartDashboard.putNumber("Swerve Angle", drivetrain.getSwerveAngle());
   SmartDashboard.putNumber("Left Drive Encoder", drivetrain.getLeftEncoder());
   SmartDashboard.putNumber("Right Drive Encoder", drivetrain.getRightEncoder());
   SmartDashboard.putNumber("Turret Pot", turret.getCurrentAngle());
   SmartDashboard.putNumber("Turret Pot Voltage", turret.getAverageVoltage());
   SmartDashboard.putNumber("RPM", shooter.getRPM());
}
frc::SmartDashboard::PutBoolean("Bridge Limit", bridgeTipper.AtBridge());
frc::SmartDashboard::PutNumber("Bridge Angle", bridgeTipper.GetPosition());
frc::SmartDashboard::PutNumber("Swerve Angle", drivetrain.GetSwerveAngle());
frc::SmartDashboard::PutNumber("Left Drive Encoder", drivetrain.GetLeftEncoder());
frc::SmartDashboard::PutNumber("Right Drive Encoder", drivetrain.GetRightEncoder());
frc::SmartDashboard::PutNumber("Turret Pot", turret.GetCurrentAngle());
frc::SmartDashboard::PutNumber("Turret Pot Voltage", turret.GetAverageVoltage());
frc::SmartDashboard::PutNumber("RPM", shooter.GetRPM());
from wpilib import SmartDashboard

SmartDashboard.putBoolean("Bridge Limit", bridgeTipper.atBridge())
SmartDashboard.putNumber("Bridge Angle", bridgeTipper.getPosition())
SmartDashboard.putNumber("Swerve Angle", drivetrain.getSwerveAngle())
SmartDashboard.putNumber("Left Drive Encoder", drivetrain.getLeftEncoder())
SmartDashboard.putNumber("Right Drive Encoder", drivetrain.getRightEncoder())
SmartDashboard.putNumber("Turret Pot", turret.getCurrentAngle())
SmartDashboard.putNumber("Turret Pot Voltage", turret.getAverageVoltage())
SmartDashboard.putNumber("RPM", shooter.getRPM())

Vous pouvez écrire des valeurs booléennes, numériques ou des chaînes de caractères dans Shuffleboard en invoquant simplement la méthode appropriée au type et en précisant le nom et la valeur des données, aucun code supplémentaire n’est requis.

  • Les types numériques tels que char, int, long, float ou double invoquent la méthode SmartDashboard.putNumber(« dashboard-name », value).

  • Les types String invoquent la méthode SmartDashboard.putString(« dashboard-name », value)

  • Les types booléens invoquent la méthode SmartDashboard.putBoolean(« dashboard-name », value)

Modification du type d’affichage des données

Selon le type de données des valeurs envoyées à Shuffleboard, vous pouvez parfois modifier le format d’affichage. Dans l’exemple précédent, vous voyez que les valeurs numériques ont été affichées sous forme de nombres décimaux, de cadrans pour représenter des angles et une représentation de la tension pour le potentiomètre. Pour définir le type d’affichage, cliquez avec le bouton droit sur la vignette et sélectionnez « Show as… ». Vous pouvez choisir les types d’affichage dans la liste du menu contextuel.

Affichage des données en mode Test

Vous pouvez ajouter du code à votre programme pour afficher les valeurs de vos capteurs et actionneurs pendant que le robot est en mode Test. Cela peut être fait à partir de Driver Station chaque fois que le robot n’est pas sur le terrain. Le code pour afficher ces valeurs est généré automatiquement par RobotBuilder ou ajouté manuellement à votre programme, tel que décrit dans l’article suivant. Le mode Test est conçu pour vérifier le bon fonctionnement des capteurs et des actionneurs sur un robot. En outre, il peut être utilisé pour obtenir des repères des capteurs tels que les potentiomètres et pour régler les boucles PID dans votre code.

Configuration du mode Test

Activez le mode Test dans Driver Station en cliquant sur le bouton « Test » et choisir « Enable » pour le robot. Ce faisant, Shuffleboard affiche, par sous-système, l’état des actionneurs et capteurs utilisés par votre programme.

Obtention de données à partir de la vue Sources

Normalement, les données NetworkTables apparaissent automatiquement sur l’un des onglets et il vous suffit de réorganiser et d’utiliser ces données. Parfois, vous souhaiterez peut-être récupérer une valeur supprimée accidentellement de l’onglet ou afficher une valeur qui ne fait pas partie de la clé SmartDashboard / NetworkTables. Dans ces cas, les valeurs peuvent être glissées sur un volet à partir de la vue NetworkTables sous Sources sur le côté gauche de la fenêtre. Choisissez la valeur que vous souhaitez afficher et faites-la simplement glisser dans le volet et elle sera automatiquement créée avec le type de widget par défaut pour le type de données.

Note

Quelques fois, la vue Sources n’est pas visible à gauche - il est effectivement possible de faire glisser le diviseur entre les volets à onglets et les sources afin que les Sources ne sont pas visibles. Si cela se produit, déplacez le curseur sur le bord gauche et recherchez un curseur de séparation et redimensionnement, puis cliquez à gauche et faites glisser la vue. Dans les deux images ci-dessous, vous pouvez voir où cliquer et glisser. Une fois terminé le diviseur est comme indiqué dans la deuxième image.