Étape 2: En passant par le Code par défaut
Maintenant laisse descendre au plaisir partie, les émissions réelles ! Double-cliquez sur MyRobot.cpp dans l’Explorateur de projets. En face de vous est maintenant un programme de travail qui conduira le robot en mode arcade au cours de la période téléopéré. Nous allons traverser rapidement le code pour comprendre ce qui se passe jusqu'à présent.
Cette ligne ajoute toutes les classes et fonctions WPILib dans votre code. Vous aurez besoin de ces si vous voulez faire quelque chose d’utile avec votre robot. En plus de l’inclusion de WPILib, cela sera idéalement aussi inclure string.h et iostream.
Cela commence la classe appelée RobotDemo. Vous pouvez modifier les « RobotDemo » à autre chose, mais il suffit de s’assurer que chaque instance de « RobotDemo » dans le fichier est remplacée par le nom du nouveau ainsi. Le côlon signifie que IterativeRobot est la classe parente de RobotDemo et RobotDemo hérite de toutes les méthodes de IterativeRobot. Cela sera important pour nous plus tard.
Ceci définit deux variables privées : myRobot et le bâton. myRobot contient toutes les fonctions de votre robot de conduite et la variable de bâton contient évidemment les fonctions pour l’entrée de lecture par la manette.
Cela définit un délai d’expiration en secondes pour les moteurs de la classe RobotDrive. Si le chien de garde du moteur n’est pas nourrir dans ce délai, il suppose que le programme de votre robot a gelé et permet d’arrêter automatiquement les moteurs. 0,1 seconde devrait être tout le temps, mais si vous utilisez le traitement de la vision ou une autre tâche intensive de l’UC et les moteurs sont arrêtent quand ils ne sont pas censés pour être, essayez d’augmenter le délai d’expiration.
Définit le temps entre les appels de fonctions périodiques en quelques secondes. Si la valeur zéro, il pourra être synchronisé avec les données de contrôle de la station pilote (qui finit par appeler la fonction toutes les 0,02 secondes environ). Si cette fonction n’est pas appelée, par défaut à 0.0, donc cette ligne est peu inutile.
Il s’agit d’une liste d’initialisation. Comme l’indique le commentaire, ils doivent initialisées dans l’ordre que vous les a déclarés. Les paramètres de myRobot sont : numéro de port pour votre robot gauche du moteur, suivi du numéro de port pour moteur de droite de votre robot. Cela suppose que vous utilisez Jaguars comme contrôleurs de moteur. Le paramètre de clé est le nombre de manette de jeu. Vous pouvez voir ce que c’est en allant à la ? onglet de votre DriverStation et en regardant la position de votre manette de jeu dans la liste. Le nombre de manette de jeu par défaut est 1.
Une fonction qui est appelée par WPILib lorsque le robot est en marche, il est seulement appelé une fois, qui en fait un endroit sûr pour initialiser des variables et allouer de la mémoire dynamique.
Ces fonctions sont appelées automatiquement par WPILib lorsque le mode du robot devient, par la station pilote ou le FMS (système de messagerie sur le terrain) la fonction init avec le nom du nouveau mode est appelée. Généralement autonome tout le code est écrit dans la fonction AutonomousInit.
DisabledInit ne suit pas les règles des autres fonctions d’initialisation mode. DisabledInit est appelée uniquement la première fois que le robot est désactivé. C’est probablement parce que le robot sera seulement désactivé une fois au cours d’un jeu réel.
Ces fonctions seront appellera environ 50 fois par seconde alors que dans le mode approprié (à moins que vous avez appelé ceci -> SetPeriod() avec un paramètre autre que 0,02 ou 0, auquel cas les fonctions périodiques seront appellera (1/période) fois par seconde).
Une remarque importante sur les fonctions périodiques et init : les fonctions périodiques pour un mode ne fonctionne pas à moins que la fonction d’initialisation est terminée. Par exemple, si vous avez quelque chose comme ceci :
Votre robot sortira en permanence qu’il aime les chiens, et même lorsque laissé en mode autonome depuis longtemps il ne sortira pas le fait que les chats sont mieux. Code de longue durée dans vos fonctions d’initialisation ne peut pas être cet évident, mais c’est toujours une question importante à surveiller pendant la programmation de votre robot.
Ce support ferme la classe RobotDemo. La fin d’une classe est l’une des rares situations où vous avez besoin d’un point-virgule après après un crochet. N’oubliez pas d’inclure cela.
Cela devrait toujours être la dernière ligne de code dans votre fichier MyRobot.cpp. Il s’agit d’une macro qui est définie dans RobotBase.h et raconte le reste de la WPILib que votre classe de RobotDemo est la classe qu’il doit utiliser pour appeler des fonctions d’init, fonctions périodiques, etc.. Sans cette ligne, vous obtiendrez probablement une erreur de Code Robot non lorsque vous déployer sur le cRIO.