Étape 1: Création d’instances simulées du matériel (Hardware)

Le framework de simulation WPILib contient plusieurs classes XXXSim, où XXX représente du matériel physique (Hardware) tel que des encodeurs ou des gyroscopes. Ces classes de simulation peuvent être utilisées pour définir les positions et les vitesses (pour les encodeurs) et les angles (pour les gyroscopes) à partir d’un modèle de votre transmission.

Simulation d’encodeurs

La classe EncoderSim permet aux utilisateurs de définir les positions et les vitesses de l’encodeur sur un objet Encoder donné. Lorsqu’elle fonctionne sur du matériel réel, la classe Encoder interagit avec de vrais capteurs pour compter les révolutions (et les convertir automatiquement en unités de distance si elle est configurée pour le faire); cependant, en simulation, il n’y a pas de telles mesures à faire. La classe EncoderSim peut accepter ces lectures simulées à partir d’un modèle de votre transmission.

Note

Il n’est pas possible de simuler des encodeurs directement connectés à des contrôleurs de moteur CAN à l’aide des classes WPILib. Pour plus d’informations sur votre contrôleur de moteur spécifique, veuillez lire la documentation de votre fournisseur.

// These represent our regular encoder objects, which we would
// create to use on a real robot.
private Encoder m_leftEncoder = new Encoder(0, 1);
private Encoder m_rightEncoder = new Encoder(2, 3);

// These are our EncoderSim objects, which we will only use in
// simulation. However, you do not need to comment out these
// declarations when you are deploying code to the roboRIO.
private EncoderSim m_leftEncoderSim = new EncoderSim(m_leftEncoder);
private EncoderSim m_rightEncoderSim = new EncoderSim(m_rightEncoder);

Simulation de gyroscopes

Semblable à la classe EncoderSim, des classes de gyroscopes simulés existent également pour les gyroscopes WPILib couramment utilisés - AnalogGyroSim et ADXRS450_GyroSim. Ceux-ci sont également construits de la même manière.

Note

Il n’est pas possible de simuler certains gyroscopes (par exemple Pigeon IMU et NavX) en utilisant les classes WPILib. Veuillez lire la documentation des fournisseurs respectifs pour plus d’informations sur leur support de simulation.

// Create our gyro object like we would on a real robot.
private AnalogGyro m_gyro = new AnalogGyro(1);

// Create the simulated gyro object, used for setting the gyro
// angle. Like EncoderSim, this does not need to be commented out
// when deploying code to the roboRIO.
private AnalogGyroSim m_gyroSim = new AnalogGyroSim(m_gyro);