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 tröghetssensor, gyrosensor eller GPS-sensor 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.
Härledda klasser#
Drivlina drivetrain fungerar som basklass för följande härledda klasser:
smartdrive- Den här klassen lägger till stöd för tröghetssensorer, GPS-sensorer eller gyrosensorer för att möjliggöra kursbaserade och rotationsbaserade svängar.
Klasskonstruktörer#
1 - Skapar en drivlina med hjälp av befintliga
motor_groupobjekt för vänster (&l) och höger (&r).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 (&l) och höger (&r) 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 object
rightMotor, // right motor object
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.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 många sekunder roboten ska försöka slutföra en rörelse.
Värden - Kontrollera rörelsestatus.
isDone- Returnerar om 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 ström.temperature– Returnerar hur varm drivlinan är.voltage- Returnerar den elektriska spänningen som tillförs drivlinan.
Innan några drivetrain medlemsfunktioner anropas måste ett drivetrain objekt skapas, som visas nedan:
/* 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 object
rightMotor, // right motor object
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 svänga eller stanna. För varvtal eller DPS ändras gränsen av drivlinans utväxling.
1 - Driver med den aktuellt konfigurerade drivhastigheten.
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 är från 0 % till 100 % när |
|
|
Hastighetsenheten: |
Den här funktionen returnerar inget värde.
Notesdriveväntar inte; projektet fortsätter att köra nästa kodrad omedelbart efter anropet.Drivlinan fortsätter att röra sig tills
stopanropas eller en annan drivlinans rörelsefunktion (t.ex.driveForellerturn) utförs.Funktioner som
isDoneochisMovingär inte tillämpliga pådrive, eftersom den inte använder målbaserad rörelse (har ingendistanceparameter).
// 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 som standard tills roboten är klar innan nästa kodrad körs. För varvtal eller varvtal ändras gränsen av drivlinans utväxling.
1 - Kör i den angivna riktningen ett visst avstånd med den aktuellt konfigurerade körhastigheten.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Kör i en riktning beroende på avståndet med hjälp av den för närvarande konfigurerade körhastigheten.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Kör i en riktning beroende på avståndet 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 är 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 utförs (t.ex.
driveellerturnFor) medandriveForpågår, avbryts den aktuella rörelsen.Eftersom
driveForär målbaserat (använder endistanceparameter), fungerar funktioner somisDoneochisMovingmeddriveFor.
// 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 rotera tills den får en annan åtgärd, som att köra eller stanna. För varvtal eller DPS ändras gränsen av drivlinans utväxling.
1 - Svänger med den för närvarande konfigurerade 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: |
turnär icke-väntande; projektet fortsätter att exekvera nästa kodrad omedelbart efter anropet.Drivlinan fortsätter att rotera tills
stopanropas eller en annan drivlinans rörelsefunktion (t.ex.turnForellerdrive) utförs.Funktioner som
isDoneochisMovingär inte tillämpliga påturn, eftersom den inte använder målbaserad rörelse (har ingenangleparameter).
// 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. Vridningen är relativ till robotens aktuella position. Projektet väntar som standard tills roboten är klar med att vrida innan nästa kodrad körs. För RPM eller DPS ändras gränsen av drivlinans utväxling.
1 - Svänger för den angivna vinkeln med den för närvarande konfigurerade svänghastigheten.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Svänger i den angivna riktningen för en vinkel med den för närvarande konfigurerade 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: |
|
|
Vinkeln som roboten vrider sig. |
|
|
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.
Att utföra en annan drivlinans rörelsefunktion (t.ex.
turnellerdrive) medanturnForpågår kommer att avbryta den aktuella rörelsen.Eftersom
turnForär målbaserat (använder enangle), fungerar funktioner somisDoneochisMovingmedturnFor.
// 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 aktuellt konfigurerade stoppläget.
void stop();
Parameters2 - Stoppar drivlinan med det angivna bromslä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. För varvtal ändras gränsen av drivlinans utväxling.
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 gäller för alla efterföljande drivlinans rörelsefunktioner (såsom
driveochdriveFor) 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 gäller för alla efterföljande drivlinans svängfunktioner (såsom
turnochturnFor) 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 stoppa rörelsen: genom att bromsa, frihjula 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 gäller för alla efterföljande
stopanrop om inte ett specifikt stoppläge anges i funktionsanropet.
setTimeout#
setTimeout anger hur många sekunder 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.
Notes Examples// Start turning if driving takes too long
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.
Ett positivt värde betyder att roboten kör framåt. Ett negativt värde betyder att roboten kör bakåt.
Available Functionsdouble velocity(
velocityUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Hastighetsenheten: |
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 av maximum.
double current( percentUnits units );
Parameter |
Typ |
Beskrivning |
|---|---|---|
|
|
Enheten att returnera ström 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%indikerar att den genomsnittliga motortemperaturen är ungefär45°C(113°F).Det typiska driftstemperaturintervallet för drivlinan är ungefär
20°C(68°F) till70°C(158°F).
spänning#
voltage returnerar den elektriska spänningen som tillförs drivlinan.
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.