Programmeren van een Robot FRC (2 / 9 stap)

Stap 2: De standaardcode doorlopen


Nu laat gaan naar het leuke deel, de werkelijke programmering! Dubbelklik op MyRobot.cpp in de Projectverkenner. Vóór u bevindt zich nu een werkprogramma dat de robot in arcade modus tijdens de teleoperated periode rijden zal. Laten we snel doorlopen naar de code om te begrijpen wat er gaande is tot nu toe.

 #include “WPILib.h” 

Deze lijn voegt alle WPILib functies en klassen in uw code. Deze moet u als u wilt iets nuttigs te doen met uw robot. Naast het opnemen van WPILib, zal dit een gunstige omvatten ook string.h en iostream.

 class RobotDemo : public IterativeRobot<br>{ 

Dit begint de klasse met de naam RobotDemo. U kunt omzetten in 'RobotDemo' iets anders, maar je hoeft alleen om ervoor te zorgen dat elk exemplaar van 'RobotDemo' in het bestand wordt gewijzigd in uw nieuwe naam zo goed. De dubbele punt betekent dat IterativeRobot een bovenliggende klasse van RobotDemo is en RobotDemo alle methoden van IterativeRobot overerft. Dit is later belangrijk voor ons.

 RobotDrive myRobot; Joystick stick; 

Dit definieert twee particuliere variabelen: myRobot en stok. myRobot bevat alle functies voor het besturen van uw robot en de stok variabele houdt uiteraard de functies voor lezing input van de joystick.

 myRobot.setExpiration(0.1); 

Hiermee stelt u een verlooptijd in seconden voor de motoren in de klasse RobotDrive. Als waakhond van de motor niet binnen deze termijn voeden is, zal het aannemen dat uw robot programma heeft bevroren en automatisch de motoren stopt. 0,1 seconden moet worden genoeg tijd, maar als u visie verwerking uitvoeren zijn of sommige andere cpu-intensieve taak en de motoren zijn stoppen wanneer zij niet worden geacht te zijn, kunt u de verlooptijd verhogen.

 this->SetPeriod(0); 

Hiermee stelt u de tijd tussen aanroepen van periodieke functies in seconden. Als ingesteld op nul, het synchroniseert met de controlegegevens van de stuurprogramma-station (die eindigt aanroepen van de functie over elke 0.02 seconden). Als deze functie niet wordt aangeroepen, wordt standaard op 0.0, dus deze lijn vriendelijk van nutteloos is.

 RobotDemo : myRobot(1,2), stick(1) 

Dit is een lijst van de initialisatie. Zoals de opmerking voorstelt, moet ze in de volgorde dat u hen gedeclareerd geïnitialiseerd. De parameters voor myRobot zijn: het nummer van de poort voor uw robot motor gevolgd door het nummer van de poort voor uw robot de juiste motor is links. Hierbij wordt ervan uitgegaan dat u Jaguars als motor controllers gebruikt. De parameter voor stick is het nummer van de joystick. U kunt zien wat dit is door te gaan naar de? tabblad van uw DriverStation en kijken naar de positie van uw joystick in de lijst. Het standaardnummer van de joystick is 1.

 void RobotDemo::RobotInit() {} 

Een functie die door WPILib wordt aangeroepen wanneer de robot is ingeschakeld, het is slechts eenmaal aangeroepen, waardoor het een zeker plaats voor het initialiseren van variabelen en dynamische geheugen toewijzen.

 void RobotDemo::AutonomousInit() {}<br>void RobotDemo::TeleopInit() {}<br>void RobotDemo::TestInit() {} 

Deze functies worden automatisch aangeroepen door WPILib wanneer de modus van de robot wordt gewijzigd, hetzij door het stuurprogramma station of de FMS (veld Messaging System) de init functie met de naam van de nieuwe modus wordt genoemd. Alle autonome code wordt meestal geschreven in de AutonomousInit functie.

 void RobotDemo::DisabledInit() {} 

DisabledInit volgt niet de regels van de andere modus initialisatie functies. DisabledInit heet alleen de eerste keer dat de robot is uitgeschakeld. Dit komt waarschijnlijk omdat de robot zal alleen worden uitgeschakeld zodra tijdens een daadwerkelijke spel.

 void RobotDemo::DisabledPeriodic() {}<br>void RobotDemo::AutonomousPeriodic{}<br>void RobotDemo::TeleopPeriodic() {} void RobotDemo::TestPeriodic() {} 

Deze functies zullen worden geroepen ongeveer 50 keer per tweede, terwijl in de juiste modus (tenzij u noemde dat -> SetPeriod() met een parameter dan 0,02 of 0, in welk geval de periodieke functies zal worden genoemd (1/periode) keer per seconde).

Een belangrijke opmerking over init en periodieke functies: de periodieke functies voor een modus zal niet worden uitgevoerd als de initialisatie functie is voltooid. Bijvoorbeeld, als je iets als dit:

 void RobotDemo::AutomousInit() {<br> while(true) {<br> cout << "I like dogs" << endl;<br> }<br>}<br>void RobotDemo::AutonomousPeriodic() {<br> cout << "But cats are better" << endl;<br>} 

Je robot zal continu output dat het houdt van honden, en zelfs toen verliet in autonome modus voor een lange tijd het zal niet de uitgang van het feit dat katten beter zijn. Langlopende code in uw initialisatie functies mogelijk niet dit voor de hand liggende, maar dit is altijd een belangrijk punt om op te letten tijdens het programmeren van uw robot.

 }; 

Deze beugel Hiermee sluit u de klasse RobotDemo. Het einde van een klasse is een van de enkele gevallen waarin u een puntkomma na iets achter een vierkante haak. Vergeet niet dit.

 START_ROBOT_CLASS(RobotDemo); 

Dit moet altijd de laatste coderegel in het bestand MyRobot.cpp. Het is een macro die is gedefinieerd in RobotBase.h en de rest van de WPILib vertelt dat de klasse van uw RobotDemo is de klasse die het gaan gebruiken moet om te bellen van de init-functies, periodieke functies, enz. Zonder deze lijn, zult u waarschijnlijk een codefout No Robot krijgen wanneer u het naar de cRIO distribueert.

Gerelateerde Artikelen

Bouwen van een robot van Lego-Multigraph

Bouwen van een robot van Lego-Multigraph

Niet zou u genieten van gebouw en met behulp van een robot die vestigt de abstracte kunst te gebruiken in uw kunst en ambachtelijke projecten? De Lego-Multigraph, is zelfs als er geen praktische toepassingen, leuk om te bouwen en te bedienen! Dit is
Het bouwen van een Robot met behulp van MSP430 Launchpad

Het bouwen van een Robot met behulp van MSP430 Launchpad

In dit Instructable gaan we aan het bouwen van een kleine robot met behulp van MSP430 Launchpad van TI. De robot zal gebruik maken van twee gericht gelijkstroommotoren en differentiële aandrijfsysteem zal tewerkstellen.De intelligentie is voorzien va
Het bouwen van een robot die uw muiscursor volgt

Het bouwen van een robot die uw muiscursor volgt

In dit instructable ik zal u tonen hoe te bouwen en besturen van een robot kunnen tekenen en schrijven op een vlakke ondergrond, zoals geïllustreerd in de video hierboven.Dit project u moet voltooien:Een computerEen download van Verwerking IDE: een e
Hoe te programmeren van een servo met arduino

Hoe te programmeren van een servo met arduino

Hallo iedereen en eerst en vooral wil ik zeggen dat...Ik heb een YouTube-kanaal!En mijn eerste video is over het programmeren van de servo's (ik denk dat het voor de hand liggende). Nou dit is een eenvoudig project voor arduino beginners (toch het is
Maken van een Robot met Camera kleurherkenning

Maken van een Robot met Camera kleurherkenning

Hallo! Dit is voor groep 18 jaar of ouder.Dit instructable begeleidt u stapsgewijs door het bouwen van een robot met kleurherkenning met behulp van een camera en een servo. De robot die zal ik bouwen heeft ook servo's voor wapens, maar ze zijn niet n
Programmeren van een Arduino met behulp van BeagleBone, zonder USB

Programmeren van een Arduino met behulp van BeagleBone, zonder USB

als je gezien mijn BeagleBone/Arduino seriële communicatie gids, u kan hebben gewacht voor deze!  Als u het nog niet gezien, ga eerst lezen omdat we 100% Voortbouwend op dat kader.  Ik ga niet herhalen die instructie hier.Het einddoel is om te kunnen
Bouwen van een robot boot met behulp van water flessen

Bouwen van een robot boot met behulp van water flessen

dit zal u tonen hoe te bouwen van een robot-boot van goedkoop en makkelijk te gebruiken materialen, ik denk dat het ook een goed voorbeeld van hergebruik van water flessen.Ik gebruikte twee flessen water, polymorf plastic, twee motoren en propellers,
Maken van een Robot FPV 4WD

Maken van een Robot FPV 4WD

Dit project toont een wandeling door het proces van het maken van een robot met een FPV (eerste persoonsmening) systeem. Soms vragen mensen hoe werkt een robot eindigt met dit of dat vorm van gevoel, en ik gewoon hen vertellen dat dit als een schilde
Maken van een robot klauw

Maken van een robot klauw

dit instructable is over het maken van een robot klauw gemakkelijk en snel.laat aan de slag.Stap 1: materialenhouthoutlijmServer of (reductiemotoren zoals in mijn instructables)kunststof dunne stok rondezaglichterStap 2: maken deel een afbeelding afd
Hoe te programmeren van een PIC Microcontroller & lezen een Encoder

Hoe te programmeren van een PIC Microcontroller & lezen een Encoder

Inleiding: van elektronisch speelgoed & games magnetrons, microcontrollers bevinden zich zowat overal deze dagen! Maar hoe kunnen we deze kleine computers werken voor onze eigen elektronica projecten maken? Dat is waar deze tutorial komt - met gedeta
Programmeren van een ATtiny2313 met Aceduino

Programmeren van een ATtiny2313 met Aceduino

Wat is een ACEDUINO? Het is de Filippijnse Arduino-kloon. Zie foto 2 en 3.Citaat uit vallen Elektronika:Als u reeds hebt geprobeerd heb je gevonden uit kunt u niet de ATTiny chips in de Arduino. Dit is omdat het niet de boormonsters voor de chips. Ee
Besturen van een Robot met een RC zender & ontvanger

Besturen van een Robot met een RC zender & ontvanger

In dit instructable zal lopen we door middel van het instellen van een traditionele RC hobby zender en ontvanger met een RoboClaw motorcontroller te rijden een robot rond (zoals De ServoCity.com Runt Rovers).Stap 1: Draad het omhoog.Motoren:Hebt u me
Het bouwen van een Robot

Het bouwen van een Robot

droomt u van het leven gemakkelijker te maken? Met robots te helpen leven? Ook u kunt het bouwen van een robot vandaag. Hoewel het misschien niet de dienaren van de robot het kan u helpen in eenvoudige takenHeb ik besloten om een robot uit de Lego Mi
Bouwen van een robot afstandsbediening

Bouwen van een robot afstandsbediening

In deze post zal ik beschrijven hoe ik ontwerpen, maken, testen en verbeteren van een aangepaste RC afstandsbediening.Het doel van dit project is het creëren van een afstandsbediening die kan alternatief voor een RC zender of vergelijkbare commerciël