Commandes et sous-systèmes
Lorsque vous utilisez le framework basé sur des commandes, Shuffleboard facilite la compréhension de ce que fait le robot en affichant l’état des différentes commandes et sous-systèmes en temps réel.
Affichage des sous-systèmes
Pour voir l’état d’un sous-système pendant que le robot fonctionne en mode autonome ou téléopéré, c’est-à-dire quelle est sa commande par défaut et quelle commande utilise actuellement ce sous-système, envoyez une instance de sous-système à Shuffleboard:
SmartDashboard.putData(subsystem-reference);
SmartDashboard::PutData(subsystem-pointer);
from wpilib import SmartDashboard
SmartDashboard.putData(subsystem-reference)
Shuffleboard affichera le nom du sous-système, la commande par défaut associée à ce sous-système et la commande en cours d’exécution. Dans cet exemple, la commande par défaut pour le sous-système Elevator est appelée AutonomousCommand
et c’est également la commande actuelle qui utilise le sous-système Elevator.
Sous-systèmes en mode test
En mode Test (Test/Enable sur la station de pilotage), des sous-systèmes peuvent être affichés dans l’onglet LiveWindow avec les capteurs et actionneurs du sous-système. C’est idéal pour vérifier que les capteurs fonctionnent en voyant les valeurs qu’ils renvoient. De plus, les actionneurs peuvent être commandés. Par exemple, les moteurs peuvent être actionnés à l’aide de curseurs pour définir leur vitesse et leur direction commandées. Pour les sous-systèmes PID, les constantes P
, I
, D
et F
sont affichées avec la valeur cible et un contrôle d’activation. Ceci est utile pour régler les sous-systèmes PID en ajustant les constantes, en insérant une valeur cible et en activant le contrôleur PID intégré. Ensuite, la réponse du mécanisme peut être observée. Ce cycle (modifier les paramètres, activer et observer) peut être répété jusqu’à ce qu’un ensemble raisonnable de paramètres soit trouvé.
Plus d’informations sur le réglage des sous-systèmes PID peuvent être trouvées ici. L’utilisation de RobotBuilder générera automatiquement le code pour afficher le sous-système en mode Test. Le code nécessaire pour afficher les sous-systèmes est indiqué ci-dessous, où « subsystem-name » est une chaîne de caractères contenant le nom du sous-système:
setName(subsystem-name);
Affichage des commandes
Using commands and subsystems makes very modular robot programs that can easily be tested and modified. Part of this is because commands can be written completely independently of other commands and can therefore be easily run from Shuffleboard. To write a command to Shuffleboard use the SmartDashboard.putData
method as shown here:
SmartDashboard.putData("ElevatorMove: up", new ElevatorMove(2.7));
SmartDashboard::PutData("ElevatorMove: up", new ElevatorMove(2.7));
from wpilib import SmartDashboard
SmartDashboard.putData("ElevatorMove: up", ElevatorMove(2.7))
Shuffleboard affichera le nom de la commande et un bouton pour exécuter la commande. De cette façon, les commandes individuelles et les groupes de commandes peuvent facilement être testés sans avoir besoin de code de test spécial dans un programme de robot. Dans l’image ci-dessous, il y a un certain nombre de commandes contenues dans une liste Shuffleboard. Appuyez une fois sur le bouton pour exécuter la commande et appuyez à nouveau pour l’arrêter. Pour utiliser cette fonction, le robot doit être activé en mode téléop.