Drivlina#
Introduktion#
Drivlina drivetrain , styr hur en robot kör och vrider sig. En drivlina består av motorer och hjul som samverkar för att förflytta roboten.
En drivetrain använder inte en Gyrosensor för kursbaserade eller rotationsbaserade svängar. Den kan köra framåt eller bakåt och svänga vänster eller höger, men den kan inte svänga mot en specifik kurs eller rotation. För kursbaserade och rotationsbaserade svängar, använd klassen smartdrive.
Den här sidan använder myDrivetrain som exempelnamn för drivlinan. Ersätt det med ditt eget konfigurerade namn efter behov.
Härledda klasser#
Drivlina drivetrain fungerar som basklass för följande härledda klass:
smartdrive– Skapar en drivlina med stöd för gyrosensorer.
Klasskonstruktörer#
1 - Skapar en drivlina med hjälp av befintliga
motor_groupobjekt för vänster och höger sida.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Skapar en drivlina med hjälp av befintliga
motorobjekt för vänster och höger sida.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Klassförstörare#
Förstör drivetrain objektet och frigör tillhörande resurser.
virtual ~drivetrain();
Parametrar#
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Vänster och höger motor eller motorgrupp. Båda parametrarna måste använda samma typ: antingen två |
|
|
Drivlinans hjulomkrets. Standardvärdet är |
|
|
Avståndet mellan vänster och höger hjul. Standardvärdet är |
|
|
Avståndet mellan fram- och bakhjulen. Standardvärdet är |
|
|
Enheten för |
|
|
Utväxlingsförhållandet som används för att justera körsträckor om växlar används. Standardvärdet är |
Exempel#
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Medlemsfunktioner#
Klassen drivetrain inkluderar följande medlemsfunktioner:
Åtgärder - Flytta och vrid roboten.
drive- Rör roboten framåt eller bakåt i all oändlighet.driveFor- Rör roboten framåt eller bakåt ett visst avstånd.turn- Svänger roboten åt vänster eller höger för alltid.turnFor- Svänger roboten åt vänster eller höger ett visst antal grader eller varv.stop- Stoppar robotens rörelse.
Inställningar - Justera drivlinans inställningar.
setDriveVelocity- Anger för roboten hur snabbt den ska köra.setTurnVelocity- Anger för roboten hur snabbt den ska svänga.setStopping- Anger hur roboten kommer att stanna: genom att bromsa, frihjula eller hålla.setTimeout- Ställer in hur länge roboten ska försöka slutföra en rörelse.
Värden - Kontrollera rörelsestatus.
isDone- Returnerar huruvida roboten är klar med sin rörelse, som ett booleskt värde.isMoving- Returnerar huruvida roboten rör sig, som ett booleskt värde.velocity- Returnerar hur snabbt roboten kör.current- Returnerar hur mycket elektrisk ström drivlinan använder.power- Returnerar hur snabbt drivlinan förbrukar energi.torque- Returnerar hur mycket vridmoment drivlinan använder.efficiency- Returnerar hur effektivt drivlinan använder kraft.temperature– Returnerar hur varm drivlinan är.voltage- Returnerar drivlinans elektriska spänning.
Innan några drivetrain medlemsfunktioner anropas måste ett drivetrain objekt skapas.
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Åtgärder#
köra#
drive rör roboten framåt eller bakåt för alltid. Roboten fortsätter att röra sig tills den får en annan åtgärd, som att vända eller stanna.
1 - Kör med den aktuella körhastigheten.
void drive( directionType dir );
Parameters2 - Kör med den angivna hastigheten.
void drive( directionType dir, double velocity, velocityUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Robotens rörelseriktning: |
|
|
Hastigheten att köra med från 0 % till 100 % när |
|
|
Hastighetsenheten: |
Den här funktionen returnerar inget värde.
Notesdriveär inte i vänteläge. Projektet kör nästa kodrad direkt.Roboten fortsätter att röra sig tills
stopanropas eller en annan drivlinans rörelsefunktion körs.isDoneochisMovinganvänds inte meddriveeftersomdriveinte har något målavstånd.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
köra för#
driveFor flyttar roboten framåt eller bakåt ett visst avstånd. Projektet väntar tills roboten är klar innan nästa kodrad körs.
1 - Kör i den angivna riktningen ett visst avstånd med den aktuella körhastigheten.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Kör i en riktning baserad på avståndsvärdet med hjälp av den aktuella körhastigheten.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Kör i en riktning baserad på avståndsvärdet vid den angivna hastigheten.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Kör i den angivna riktningen ett visst avstånd med den angivna hastigheten.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Robotens rörelseriktning: |
|
|
Den sträcka roboten kör. |
|
|
Avståndsenheten: |
|
|
Hastigheten att köra med från 0 % till 100 % när |
|
|
Hastighetsenheten: |
|
|
|
Returnerar om roboten nådde målavståndet, som ett booleskt värde.
true- Roboten nådde målavståndet.false- Roboten avslutade inte rörelsen, eller så returnerades funktionen innan rörelsen var klar eftersomwaitForCompletionvar satt tillfalse.
Om en annan drivlinerörelsefunktion körs medan
driveForär igång, avbryts den aktuella rörelsen.driveForanvänder ett målavstånd, såisDoneochisMovingkan användas med det.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
sväng#
turn vrider roboten åt vänster eller höger för alltid. Roboten fortsätter att vrida tills den får en annan åtgärd, som att köra eller stanna.
1 - Svänger med den aktuella svänghastigheten.
void turn( turnType dir );
Parameters2 - Roterar med den angivna hastigheten.
void turn( turnType dir, double velocity, velocityUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Riktningen roboten svänger: |
|
|
Hastigheten att rotera med från 0 % till 100 % när |
|
|
Hastighetsenheten: |
Den här funktionen returnerar inget värde.
Notesturnär icke-väntande. Projektet kommer att köra nästa kodrad direkt.Roboten fortsätter att rotera tills
stopanropas eller en annan drivlinans rörelsefunktion körs.isDoneochisMovinganvänds inte medturneftersomturninte har någon målvinkel.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
vrid för#
turnFor vrider roboten åt vänster eller höger ett visst antal grader, varv eller råa enheter. Vridningen är relativ till robotens aktuella position. Projektet väntar tills roboten är klar med att vrida innan nästa kodrad körs.
1 - Svänger för den angivna vinkeln med den aktuella svänghastigheten.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Svänger i den angivna riktningen för en vinkel med hjälp av den aktuella svänghastigheten.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Svänger för den angivna vinkeln med den angivna hastigheten.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Svänger i den angivna riktningen för en vinkel med den angivna hastigheten.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Riktningen roboten svänger: |
|
|
Hur mycket roboten roterar. |
|
|
Vridenheten: |
|
|
Hastigheten att rotera med från 0 % till 100 % när |
|
|
Hastighetsenheten: |
|
|
|
Returnerar om roboten nådde målvinkeln, som ett booleskt värde.
true- Roboten nådde målvinkeln.false- Roboten avslutade inte rundan, eller så returnerades funktionen innan rundan var slutförd eftersomwaitForCompletionvar satt tillfalse.
Om en annan drivlinerörelsefunktion körs medan
turnForär igång, avbryts den aktuella rörelsen.turnForanvänder en målvinkel, såisDoneochisMovingkan användas med den.
// Turn right, then left.
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
stopp#
stop stoppar robotens rörelse. Om ett stoppläge finns, styr det hur roboten stoppar för detta funktionsanrop.
1 - Stoppar drivlinan med det aktuella stoppläget.
void stop();
Parameters2 - Stoppar drivlinan med det angivna stoppläget.
void stop( brakeType mode );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Hur roboten kommer att stanna:
|
Den här funktionen returnerar inget värde.
Examples// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutatorer#
setDriveVelocity#
setDriveVelocity anger hur snabbt roboten ska köra. En högre procentandel gör att roboten kör snabbare och en lägre procentandel gör att roboten kör långsammare.
Varje projekt börjar med att roboten kör med 50 % hastighet som standard.
Obs: En högre hastighet gör att roboten kör snabbare, men den kan vara mindre precis. En lägre hastighet gör att roboten kör långsammare, men den kan vara mer precis.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Hastigheten att köra med från 0 % till 100 % när |
|
|
Hastighetsenheten: |
Den här funktionen returnerar inget värde.
NotesDrivhastigheten används av senare drivlinans rörelsefunktioner om inte en specifik hastighet anges i funktionsanropet.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
setTurnVelocity#
setTurnVelocity anger hur snabbt roboten ska vända. En högre procentandel gör att roboten vänder snabbare och en lägre procentandel gör att roboten vänder långsammare.
Varje projekt börjar med att roboten roterar med 50 % hastighet som standard.
Obs: En högre hastighet gör att roboten roterar snabbare, men den kan vara mindre exakt. En lägre hastighet gör att roboten roterar långsammare, men den kan vara mer exakt.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Hastigheten att rotera med från 0 % till 100 % när |
|
|
Hastighetsenheten: |
Den här funktionen returnerar inget värde.
NotesSvänghastigheten används av senare drivlinans svängfunktioner om inte en specifik hastighet anges i funktionsanropet.
// Try default, slow, then fast.
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(20, percent);
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(100, percent);
myDrivetrain.turnFor(right, 360, degrees);
ställ inStopp#
setStopping anger hur roboten ska stanna: genom att bromsa, rulla eller hålla.
void setStopping(
brakeType mode );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Hur roboten kommer att stanna:
|
Den här funktionen returnerar inget värde.
NotesStoppläget används av senare
stopanrop om inte ett specifikt stoppläge anges i funktionsanropet.Om den här funktionen inte används kommer roboten att använda
brakevid stopp.
setTimeout#
setTimeout anger hur länge roboten ska försöka slutföra en rörelse. Om roboten inte kan slutföra inom den tiden kommer den att sluta försöka och gå vidare till nästa kodrad. Detta förhindrar att roboten fastnar i en rörelse.
void setTimeout(
int32_t time,
timeUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Den tid roboten kan försöka slutföra en rörelse. Detta ska vara ett positivt heltal. |
|
|
Tidsenhet: |
Den här funktionen returnerar inget värde.
NotesTimeouten gäller endast för drivlinjefunktioner som rör sig mot ett mål, såsom
driveForochturnFor.
// Turn right after driving forward.
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getters#
ärKlar#
isDone returnerar huruvida roboten är klar med att röra sig, som ett booleskt värde. Detta kan användas för att styra tidpunkten för andra beteenden baserat på robotens rörelse.
bool isDone( void );
Den här funktionen accepterar inga parametrar.
Return Valuestrue- Roboten är klar med sin rörelse.false- Roboten rör sig fortfarande.
är i rörelse#
isMoving returnerar huruvida roboten rör sig, som ett booleskt värde. Detta kan användas för att styra tidpunkten för andra beteenden baserat på robotens rörelse.
virtual bool isMoving( void );
Den här funktionen accepterar inga parametrar.
Return Valuestrue- Roboten rör sig.false- Roboten rör sig inte.
hastighet#
velocity returnerar hur snabbt roboten kör.
Den kan returnera hastigheten som en procentandel, i rpmeller i dps. Ett positivt värde betyder att roboten kör framåt. Ett negativt värde betyder att roboten kör bakåt.
double velocity(
velocityUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Enheten för att returnera hastighet i: |
Returnerar drivlinans hastighet som double i den valda enheten.
// Show velocity before and during motion.
Brain.Screen.print("Resting: %f", myDrivetrain.velocity(percent));
myDrivetrain.drive(forward, 100, velocityUnits::pct);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("Moving: %f", myDrivetrain.velocity(percent));
myDrivetrain.stop();
nuvarande#
current returnerar hur mycket elektrisk ström drivlinan använder. Ström är mängden elektricitet som flyter genom drivlinan. Den kan returneras i ampere (ampere) eller som en procentandel, beroende på enheten.
Ett högre strömvärde innebär att drivlinan använder mer elektrisk ström. Detta kan hända när roboten trycker mot ett föremål eller försöker röra sig när den har fastnat.
Detta kan användas för att kontrollera om drivlinan har problem under en rörelse. Om strömmen förblir hög kan drivlinan bli varmare eller använda strömmen mindre effektivt.
Available Functions1 - Returnerar drivlinans elektriska ström i ampere.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Returnerar drivlinans elektriska ström som en procentandel.
double current( percentUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Enheten för att returströmmen ska vara i: |
|
|
Enheten för returströmmen: |
Returnerar drivlineströmmen som double i den valda enheten.
driva#
power returnerar hur mycket effekt drivlinan använder, mätt i watt. Effekt visar hur snabbt drivlinan förbrukar energi.
Ett högre effektvärde innebär att drivlinan förbrukar energi snabbare. Detta kan hända när roboten trycker mot ett föremål eller försöker röra sig när den har fastnat.
Detta kan användas för att jämföra rörelser eller kontrollera om drivlinan har problem. Om effekten förblir hög kan drivlinan bli varmare eller använda energi mindre effektivt.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Effektenhet: |
Returnerar drivlinans effekt som double i watt.
vridmoment#
Vridmomentet visar hur hårt drivlinan kan trycka eller dra medan hjulen spinner.
torque returnerar hur mycket vridmoment drivlinan använder, mätt i Newtonmeter (Nm) eller tumpund (InLb).
Ett högre vridmomentvärde innebär att drivlinan trycker eller drar hårdare. Detta kan hända när roboten trycker mot ett föremål eller försöker röra sig när den har fastnat.
Detta kan användas för att kontrollera om drivlinan har problem eller för att jämföra hur mycket tryck olika rörelser behöver.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Enheten som vridmomentet ska returneras i: |
Returnerar drivlinans vridmoment som double i den valda enheten.
effektivitet#
efficiency returnerar hur effektivt drivlinan använder kraft, som en procentandel från 0 % till 100 %.
Verkningsgrad visar hur mycket av drivlinans kraft som används för rörelse. Ett högre verkningsgradsvärde innebär att mer av drivlinans kraft används för rörelse. Ett lägre verkningsgradsvärde kan uppstå när drivlinan arbetar hårt men inte rör sig särskilt mycket, som när roboten har fastnat eller trycker mot ett föremål.
Detta kan användas för att jämföra rörelser eller kontrollera om drivlinan slösar kraft istället för att använda den till rörelse.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Enheten för att returnera effektivitet i: |
Returnerar drivlinans effektivitet som double i den valda enheten.
temperatur#
temperature returnerar drivlinans medeltemperatur som en procentandel från 0 % till 100 %.
Temperaturen visar hur varma drivlinans motorer är. En högre temperatur innebär att motorerna blir varmare medan de arbetar. Motorerna bör hålla sig under 55 °C för att fortsätta arbeta med full prestanda.
Om motorerna blir för varma sänker de sin maximala ström för att skydda sig själva. Vid 70 °C slutar motorerna att gå tills de har svalnat.
Detta kan användas för att kontrollera om drivlinan blir för varm under upprepade rörelser, långa körningar eller när den trycker mot ett föremål.
Available Functionsdouble temperature(
percentUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Enheten för returtemperaturen: |
Returnerar den genomsnittliga drivlinans temperatur som double i den valda enheten.
Ett returnerat värde på
50%betyder att den genomsnittliga motortemperaturen är cirka45°C(113°F).Det typiska driftstemperaturintervallet för drivlinan är cirka
20°C(68°F) till70°C(158°F).
spänning#
voltage returnerar drivlinans elektriska spänning.
Spänning är det elektriska tryck som tillförs drivlinans motorer. Detta kan användas tillsammans med ström- och effektvärden för att förstå hur drivlinan använder elektrisk energi.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Enheten som spänningen ska returneras i: |
Returnerar drivlinespänningen som double i den valda enheten.