Programmera en Robot FRC (2 / 9 steg)

Steg 2: Gå igenom standardkoden



Nu kan komma till roligt delen, den faktiska programmeringen! Dubbelklicka på MyRobot.cpp i Projektutforskaren. Framför dig nu är ett fungerande program som kommer att driva roboten i arcade mode under perioden teleoperated. Låt oss snabbt gå igenom koden för att förstå vad som pågår så långt.

#include "WPILib.h"

Denna line lägger alla WPILib funktioner och klasser i koden. Du behöver dessa om du vill göra något nyttigt med din robot. Förutom införandet av WPILib, kommer detta bekvämt även string.h och iostream.

klass RobotDemo: offentliga IterativeRobot < br > {

Detta börjar den klass som kallas RobotDemo. Du kan ändra "RobotDemo" till något annat, men du måste bara se till att alla förekomster av "RobotDemo" i filen ändras till ditt nya namn också. Tjocktarmen innebär att IterativeRobot är en överordnad klass av RobotDemo och RobotDemo ärver alla metoder från IterativeRobot. Detta är viktigt för oss senare.

RobotDrive myRobot;
Joystick hålla;

Detta definierar två privata variabler: myRobot och stick. myRobot innehåller alla funktioner för att köra din robot och stick variabeln uppenbarligen har funktioner för att läsa indata från styrspak.

myRobot.setExpiration(0.1);

Detta anger ett förfallodatum tid i sekunder för motorerna i klassen RobotDrive. Om motorns vakthund inte är mata inom denna tid, kommer det antar att din robot-programmet har fryst och stannar automatiskt motorerna. 0,1 sekunder bör finnas gott om tid, men om du kör vision bearbetning eller några andra cpu intensiv aktivitet och motorerna stoppa när de inte ska vara, prova att öka tiden.

This -> SetPeriod(0);

Anger tid mellan anrop till periodiska funktioner i sekunder. Om satt till noll, det kommer att synkroniseras med drivrutinen station kontrolldata (som slutar upp att anropa funktionen om varje 0,02 sekunder). Om denna funktion inte är kallas, används 0,0, så denna är ganska värdelös.

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

Detta är en initiering lista. Som kommentaren antyder, måste de initieras i den ordning att du förklarade dem. Parametrarna för myRobot är: portnummer för din robot vänstra motor följt av portnumret för din robot rätt motor. Detta förutsätter att du använder jaguarer som motor registeransvariga. Parametern för stick är antalet joystick. Du kan se vad detta är genom att gå till den? flik av din DriverStation och tittar på styrspaken position i listan. Joystick standardvärdet är 1.

void RobotDemo::RobotInit() {}

En funktion som kallas av WPILib när roboten är aktiverat, det bara kallas en gång, vilket gör det en säker plats att initiera variabler och fördela dynamiskt minne.

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

Dessa funktioner kallas automatiskt av WPILib när roboten är ändrats, antingen genom driver stationen eller FMS (fältet Messaging System) anropas funktionen init med namnet på det nya läget. Vanligtvis skrivs alla autonoma koden i funktionen AutonomousInit.

void RobotDemo::DisabledInit() {}

DisabledInit följer inte reglerna för de andra LÄGESfunktionerna initiering. DisabledInit kallas endast första gången som roboten är inaktiverad. Detta beror mest troligt roboten inaktiveras endast en gång under en verklig spel.

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

Dessa funktioner kommer att kallas ca 50 gånger per andra tag i lämpligt läge (om inte du kallade denna -> SetPeriod() med en parameter än 0,02 eller 0, i vilket fall de periodiska funktionerna kommer att kallas (1/period) gånger per sekund).

En viktig anmärkning om init och periodiska funktioner: de periodiska funktionerna för en läge kommer inte köra om funktionen initieringen är klar. Till exempel, om du har något sånt här:

void RobotDemo::AutomousInit() {< br > while(true) {< br > cout << "Jag gillar hundar" << oä; < br >} < br >} < br > void RobotDemo::AutonomousPeriodic() {< br > cout << "Men katter är bättre" << oä; < br >}

Din robot kommer kontinuerligt ut att det gillar hundar, och även när lämnade i autonoma läge under lång tid kommer det inte ut att katter är bättre. Lång tid att köra kod i din initiering funktioner kanske inte detta, men det är alltid en viktig fråga att se upp för medan programmering din robot.

};

Detta fäste stänger klassen RobotDemo. I slutet av en klass är en av de några situationer där du behöver ett semikolon efter efter en hakparentes. Glöm inte att ta med detta.

START_ROBOT_CLASS(RobotDemo);

Detta bör alltid den sista raden i koden i filen MyRobot.cpp. Det är ett makro som är definierade i RobotBase.h och berättar resten av WPILib att din RobotDemo klass är den klass som den ska använda för att anropa init funktion, periodiska funktioner, etc. Utan denna linje, kommer du förmodligen få ett nr Robot kod fel när du distribuerar det till cRIO.

Se Steg
Relaterade Ämnen

Grundläggande raden efter Robot med Arduino

09/07/2015Det har varit några år eftersom vi Ursprungligen postat denna grundläggande linje följande Robot med Arduino handledning, och det verkar så många människor tyckte att det bra att vi ska skicka en uppdatering som löper nuvarande Arduino bibl...

Förvandla din telefon till en Robot

Att införa PhoneBOT!En billig, enkel och snabb metod för att konvertera en Android-telefon till en kan programmeras om robot. Ingen ytterligare hårdvara (mikro-styrenheter, motor förare, etc.) krävs!Du kommer att kunna köra en färdiga PhoneBOT från d...

Styra din Robot med en Wii Nunchuck (och en Arduino)

efter bär själv spela Wii boxning jag måste tänka vore det inte bra om jag kunde använda detta för att styra min robot, (ser att min vänstra hand).Titta runt på internet hittade jag en uppsjö av människor som gör liknande saker, (länkar till alla bar...

DIY Multipurpose Robot (Sumobot, Spybot, Mazebot, Bluetooth...)

Min första guide i instructables: D, denna vecka jag byggt en robot 15 x 18 cm (utbyggbart) prototyp för nästa robotteknik konkurrensen här i Filippinerna.Quadcopters, svävare, drönare, helikopter, du namn den, de får mycket mer vanligt dessa dagar....

BucketBot: En Nano-ITX baserat Robot

detta är lätt att göra mobil robot bas. Den använder en Nano-ITX dator ombord, men en Mini-ITX kan användas, samt är ett av de enda styrelse datorerna som Raspberry Pi, BeagleBone eller ens en Arduino.Utformningen av denna robot var avsett att ta bor...

Med en Arduino ritning Robot med timme av koden Tutorials

Jag skapade en Arduino ritning robot för en workshop för att hjälpa tonåring flickor få intresserade av STEM ämnen (se). Roboten var avsedd att använda sköldpadda stil programmering kommandon som forward(distance) och turn(angle) för att skapa intres...

Enkel Robot Base

Att skapa robotar kan vara mycket intressant, men försöker bygga en styv bas för en robot kan vara tufft. I detta instructable jag kommer att visa dig hur man bygger en styv robot chassi.Steg 1: Samla material Arduinoen2 fortsätter rotation servonHju...

Hur man bygger din första Robot ($ 85)

jag har gjort en ny och uppdaterad VERSION av denna. DU HITTA DEN HÄR********************************************************************************Uppdatering: Att vissa 10.000 människor som redan läser detta inlägg, vill jag be om ursäkt. När jag...

Linje följande SRK Robot med 3d tryckta delar

SRK + linje följande roboten är MRK + linje följande robotens lillebror. Det använder en annan typ av styrelsen och en annan typ av motor. (Buller motorerna gör är vad jag kan tänka mig en gigantisk skalbagge skulle låta som, därför The BeetleBot)Med...

Smart Robot med Vision och röst kontroll

Hur man gör en intelligent robot med datorseende, röststyrning, röst-syntes och mer, med din Android-telefon!Steg 1: delarHårdvara1. en Android-telefon som stöder OTG med Android KitKat eller senare installerat. De flesta moderna telefoner stödjer OT...

Terra spindel: Autonoma sanering Robot

Detta projekt ritades och byggdes av studenter i programmet arkitektur vid Kalifornien College of the Arts; Manali Chitre (MAAD), Anh Vu (BArch) och Mallory Van Ness (mars). Studio kursen hette kreativ arkitektur-maskiner (hösten 2014) och undervisad...

Bygga en enkel Arduino Robot

Detta är min första Instructable..!Denna guide visar hur du snabbt och enkelt bygga en Arduino-baserad robot. Robotics är en spännande och rolig hobby som har blivit mycket prisvärd under de senaste åren. Vad skulle ha krävt en hel del pengar och erf...

Din första riktiga robot den lätt sätt, lära sig alla grunderna samtidigt på det :)

denna handledning är det enklaste sättet i världen att ge dig en snabb start till att bygga robotar.Och så är det mycket lätt!Detta är en uppdaterad version, originalet finns här: de ursprungliga anvisningarnaVälkommen :)Allt här är så lätt, att när...

Ladda ner all programvara du behöver för MiniFRC

MiniFRC hålls en tävling av FRC team 4561, Terrorbytes. 16 lag byggt kvartalet skala robotar och tävlade dem på en fjärdedel skala fältet. I denna tutorial kommer jag visa dig hur du hämtar och installerar programvaran som krävs för MiniFRC. Detta in...

Bygga en insectbot: D

Hej där! Välkommen till denna tutorial, där jag kommer att visa dig en handledning av den insectbot som jag har satt ihop, med ett kit från DFRobot.Satsen innehåller:-En skalbagge (som är Arduino kompatibel)-En skalbagge sköld-Två servo s (9 gr.)-En...

Ball anhängare använder vision bearbetning

Video processing har alltid en utmaning att robot byggare som kodningen är komplexa och människor som inte har kunskapen i MATLAB kan inte göra mycket, men i den här guiden vi kommer att lära att programmera en robot att följa en gul färgad boll, med...

BADASS MEKATRONISKA LEGO MINDSTORMS vingar

De flyttar! Skapa badass mekatroniska vingar, bygga med din MindStorms EV3 och diverse Technic element. För alla de fallna änglarna som behöver deras vingar återställd - och bara, - för att skapa det omöjliga. LEGO-vingar! Bygga, programmerad och ani...

Hur man förvandlar en Makelangelo 3 till en 3D-skrivare

Makelangelo 3 är ett enkelt sätt att börja lära sig hur man gör en 3D-skrivare. Det är i grunden ett skikt av en 3D tryck, utan dyra plast glödtråden eller brinnande heta munstycket som kan skada någon. Det skulle vara bra i ett klassrum, ett bibliot...

Hacka den Snap kretsar Rover

i detta Instructable kommer du lära dig hur till hacka Snap kretsar Rover genom att lägga till ett PICAXE micro controller och bygga en Snap kretsar programmerbar Robot. Först lär du dig att installera PICAXE programmering Editor (PICAXE är mikrokont...