Récupération des données
Contrairement à SmartDashboard.getNumber
et autres méthodes similaires, la récupération de données à partir de Shuffleboard se fait également via NetworkTableEntries, que nous avons couvert dans un article précédent.
class DriveBase extends Subsystem {
private ShuffleboardTab tab = Shuffleboard.getTab("Drive");
private GenericEntry maxSpeed =
tab.add("Max Speed", 1)
.getEntry();
private DifferentialDrive robotDrive = ...;
public void drive(double left, double right) {
// Retrieve the maximum speed from the dashboard
double max = maxSpeed.getDouble(1.0);
robotDrive.tankDrive(left * max, right * max);
}
}
import commands2
import wpilib.drive
from wpilib.shuffleboard import Shuffleboard
class DriveSubsystem(commands2.SubsystemBase):
def __init__(self) -> None:
super().__init__()
tab = Shuffleboard.getTab("Drive")
self.maxSpeed = tab.add("Max Speed", 1).getEntry()
this.robotDrive = ...
def drive(self, left: float, right: float):
# Retrieve the maximum speed from the dashboard
max = self.maxSpeed.getDouble(1.0)
self.robotDrive.tankDrive(left * max, right * max)
Cet exemple simple a un défaut majeur: la vitesse maximale peut être réglée sur le tableau de bord à une valeur en dehors de de la plage [0, 1] - ce qui pourrait entraîner la saturation des entrées (toujours à la vitesse maximale), voire les inverser! Heureusement, il existe un moyen d’éviter ce problème - ce sera abordé dans le prochain article.