Piedziņa#
Ievads#
drivetrain klase kontrolē robota kustību un griešanos. Piedziņas ķēde sastāv no motoriem un riteņiem, kas darbojas kopā, lai pārvietotu robotu.
drivetrain neizmanto žiroskopisko sensoru pagriezieniem, kuru pamatā ir virziens vai rotācija. Tā var braukt uz priekšu vai atpakaļ un pagriezties pa kreisi vai pa labi, bet tā nevar pagriezties noteiktā virzienā vai rotācijā. Virziena un rotācijas pagriezieniem izmantojiet smartdrive klasi.
Šajā lapā kā piedziņas mehānisma nosaukuma piemērs tiek izmantots myDrivetrain Ja nepieciešams, nomainiet to ar savu konfigurēto nosaukumu.
Atvasinātās klases#
drivetrain klase kalpo par bāzes klasi šādai atvasinātai klasei:
smartdrive— Izveido piedziņas sistēmu ar žiroskopiskā sensora atbalstu.
Klases konstruktori#
1 - Izveido piedziņas sistēmu, izmantojot esošos
motor_groupobjektus kreisajai un labajai pusei.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Izveido piedziņas sistēmu, izmantojot esošos
motorobjektus kreisajai un labajai pusei.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Klases iznīcinātājs#
Iznīcina drivetrain objektu un atbrīvo saistītos resursus.
virtual ~drivetrain();
Parametri#
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Kreisais un labais motors vai motoru grupas. Abiem parametriem jāizmanto viens un tas pats tips: vai nu divi |
|
|
Piedziņas mehānisma riteņu apkārtmērs. Noklusējuma vērtība ir |
|
|
Attālums starp kreiso un labo riteni. Noklusējuma vērtība ir |
|
|
Attālums starp priekšējiem un aizmugurējiem riteņiem. Noklusējuma vērtība ir |
|
|
Mērvienība |
|
|
Pārnesumskaitlis, ko izmanto, lai pielāgotu piedziņas attālumus, ja tiek izmantoti pārnesumi. Noklusējuma vērtība ir |
Piemērs#
// 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
Dalībnieku funkcijas#
drivetrain klase ietver šādas dalībfunkcijas:
Darbības — robota pārvietošana un pagriešana.
drive— Pārvieto robotu uz priekšu vai atpakaļ uz visiem laikiem.driveFor— Pārvieto robotu uz priekšu vai atpakaļ noteiktu attālumu.turn- Pagriež robotu pa kreisi vai pa labi uz visiem laikiem.turnFor— Pagriež robotu pa kreisi vai pa labi par noteiktu grādu vai apgriezienu skaitu.stop— Aptur robota kustību.
Iestatījumi — pielāgojiet piedziņas iestatījumus.
setDriveVelocity— Norāda robotam, cik ātri braukt.setTurnVelocity— Norāda robotam, cik ātri griezties.setStopping— Norāda, kā robots pārtrauks kustību: bremzējot, braucot brīvi vai turoties.setTimeout— Iestata, cik ilgi robots mēģinās pabeigt kustību.
Vērtības — pārbaudiet kustības statusu.
isDone— Atgriež, vai robots ir pabeidzis kustību, kā Būla vērtību.isMoving— Atgriež, vai robots kustas, kā Būla vērtību.velocity— Atgriež robota braukšanas ātrumu.current— Atgriež piedziņas mehānisma patērēto elektriskās strāvas daudzumu.power— Atgriež, cik ātri piedziņas sistēma patērē enerģiju.torque— Atgriež piedziņas piedziņas izmantoto griezes momentu.efficiency— Atgriež, cik efektīvi piedziņas sistēma izmanto jaudu.temperature— Atgriež piedziņas sistēmas siltumu.voltage— Atgriež piedziņas mehānisma elektrisko spriegumu.
Pirms jebkuru drivetrain dalībfunkciju izsaukšanas ir jāizveido drivetrain objekts.
/* 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
Darbības#
braukt#
drive pārvieto robotu uz priekšu vai atpakaļ bezgalīgi. Robots turpinās kustēties, līdz tam tiks dota cita darbība, piemēram, pagriešana vai apstāšanās.
1 - Piedziņa tiek veikta, izmantojot pašreizējo piedziņas ātrumu.
void drive( directionType dir );
Parameters2 - Brauc ar norādīto ātrumu.
void drive( directionType dir, double velocity, velocityUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Robota kustības virziens: |
|
|
Braukšanas ātrums no 0% līdz 100%, izmantojot |
|
|
Ātruma mērvienība: |
Šī funkcija neatgriež vērtību.
Notesdrivenegaida. Projekts nekavējoties palaidīs nākamo koda rindu.Robots turpinās kustēties, līdz tiks izsaukta
stopvai tiks palaista cita piedziņas kustības funkcija.isDoneunisMovingnetiek izmantoti ardrive, jodrivenav mērķa attāluma.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
driveFor pārvieto robotu uz priekšu vai atpakaļ noteiktu attālumu. Projekts gaidīs, līdz robots būs pabeidzis kustību, pirms tiks palaista nākamā koda rinda.
1 - Brauc norādītajā virzienā noteiktu attālumu, izmantojot pašreizējo piedziņas ātrumu.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Brauc virzienā, pamatojoties uz attāluma vērtību, izmantojot pašreizējo piedziņas ātrumu.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Brauc virzienā, kas balstīts uz attāluma vērtību, ar norādīto ātrumu.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Brauc norādītajā virzienā noteiktu attālumu ar norādīto ātrumu.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Robota kustības virziens: |
|
|
Attālums, ko nobrauc robots. |
|
|
Attāluma mērvienība: |
|
|
Braukšanas ātrums no 0% līdz 100%, izmantojot |
|
|
Ātruma mērvienība: |
|
|
|
Atgriež, vai robots ir sasniedzis mērķa attālumu, kā Būla vērtību.
true— Robots ir sasniedzis mērķa attālumu.false— Robots nepabeidza kustību vai funkcija atgrieza vērtību pirms kustības pabeigšanas, jowaitForCompletionbija iestatīts uzfalse.
Palaižot citu piedziņas kustības funkciju, kamēr darbojas
driveFortiks pārtraukta pašreizējā kustība.driveForizmanto mērķa attālumu, tāpēc kopā ar to var izmantotisDoneunisMoving.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
pagrieziens#
turn pagriež robotu pa kreisi vai pa labi uz visiem laikiem. Robots turpinās griezties, līdz tam tiks dota cita darbība, piemēram, braukšana vai apstāšanās.
1 - Pagriežas, izmantojot pašreizējo pagrieziena ātrumu.
void turn( turnType dir );
Parameters2 - Pagriežas ar norādīto ātrumu.
void turn( turnType dir, double velocity, velocityUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Robota griešanās virziens: |
|
|
Griešanās ātrums no 0% līdz 100%, izmantojot |
|
|
Ātruma mērvienība: |
Šī funkcija neatgriež vērtību.
Notesturnnegaida. Projekts nekavējoties palaidīs nākamo koda rindu.Robots turpinās griezties, līdz tiks izsaukta
stopvai tiks palaista cita piedziņas kustības funkcija.isDoneunisMovingnetiek izmantoti arturn, joturnnav mērķa leņķa.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
pagrieztiesFor#
turnFor pagriež robotu pa kreisi vai pa labi par noteiktu grādu, apgriezienu vai neapstrādātu vienību skaitu. Pagrieziens ir relatīvs attiecībā pret robota pašreizējo pozīciju. Projekts gaidīs, līdz robots būs pabeidzis pagriešanos, pirms tiks palaista nākamā koda rinda.
1 - Pagriežas norādītajā leņķī, izmantojot pašreizējo pagrieziena ātrumu.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Pagriežas norādītajā virzienā noteiktā leņķī, izmantojot pašreizējo pagrieziena ātrumu.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Pagriežas norādītajā leņķī ar norādīto ātrumu.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Pagriežas norādītajā virzienā noteiktā leņķī ar norādīto ātrumu.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Robota griešanās virziens: |
|
|
Robota pagrieziena apjoms. |
|
|
Pagrieziena mērvienība: |
|
|
Griešanās ātrums no 0% līdz 100%, izmantojot |
|
|
Ātruma mērvienība: |
|
|
|
Atgriež, vai robots ir sasniedzis mērķa leņķi, kā Būla vērtību.
true— Robots ir sasniedzis mērķa leņķi.false— Robots nepabeidza pagriezienu vai funkcija atgrieza vērtību pirms pagrieziena pabeigšanas, jowaitForCompletionbija iestatīts uzfalse.
Palaižot citu piedziņas kustības funkciju, kamēr darbojas
turnForpašreizējā kustība tiks pārtraukta.turnForizmanto mērķa leņķi, tāpēc kopā ar to var izmantotisDoneunisMoving.
// Turn right, then left.
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
apstāties#
stop aptur robota kustību. Ja ir norādīts apturēšanas režīms, tas kontrolē, kā robots apstājas šī funkcijas izsaukuma laikā.
1 - Aptur piedziņas sistēmu, izmantojot pašreizējo apturēšanas režīmu.
void stop();
Parameters2 - Aptur piedziņas sistēmu, izmantojot norādīto apturēšanas režīmu.
void stop( brakeType mode );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Kā robots apstāsies:
|
Šī funkcija neatgriež vērtību.
Examples// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutatori#
setDriveVolicity#
setDriveVelocity norāda robotam, cik ātri jābrauc. Augstāka procentuālā vērtība liek robotam braukt ātrāk, bet zemāka procentuālā vērtība liek robotam braukt lēnāk.
Katrs projekts sākas ar robota kustību ar noklusējuma ātrumu 50%.
Piezīme: Lielāks ātrums padara robotu ātrāku, bet tas var būt mazāk precīzs. Mazāks ātrums padara robotu lēnāku, bet tas var būt precīzāks.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Braukšanas ātrums no 0% līdz 100%, izmantojot |
|
|
Ātruma mērvienība: |
Šī funkcija neatgriež vērtību.
NotesPiedziņas ātrumu izmanto vēlākas piedziņas kustības funkcijas, ja vien funkcijas izsaukumā nav norādīts konkrēts ātrums.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
setPagriezienaĀtrums#
setTurnVelocity norāda robotam, cik ātri griezties. Augstāka procentuālā vērtība liek robotam griezties ātrāk, bet zemāka procentuālā vērtība liek robotam griezties lēnāk.
Katrs projekts sākas ar robota griešanos ar noklusējuma ātrumu 50%.
Piezīme: Lielāks ātrums liek robotam griezties ātrāk, bet tas var būt mazāk precīzs. Mazāks ātrums liek robotam griezties lēnāk, bet tas var būt precīzāks.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Griešanās ātrums no 0% līdz 100%, izmantojot |
|
|
Ātruma mērvienība: |
Šī funkcija neatgriež vērtību.
NotesPagrieziena ātrumu izmanto vēlākas piedziņas mehānisma pagriešanās funkcijas, ja vien funkcijas izsaukumā nav norādīts konkrēts ātrums.
// 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);
setStopping#
setStopping nosaka, kā robots pārtrauks kustību: bremzējot, braucot brīvi vai turot.
void setStopping(
brakeType mode );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Kā robots apstāsies:
|
Šī funkcija neatgriež vērtību.
NotesApturēšanas režīms tiek izmantots vēlākos
stopizsaukumos, ja vien funkcijas izsaukumā nav norādīts konkrēts apturēšanas režīms.Ja šī funkcija netiek izmantota, robots apstāšanās laikā izmantos
brake.
iestatīt laiku#
setTimeout nosaka, cik ilgi robots mēģinās pabeigt kustību. Ja robots nevar pabeigt šajā laikā, tas pārtrauks mēģinājumu un pāries uz nākamo koda rindiņu. Tas neļauj robotam iestrēgt kustībā.
void setTimeout(
int32_t time,
timeUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Laiks, kurā robots var mēģināt pabeigt kustību. Tam jābūt pozitīvam veselam skaitlim. |
|
|
Laika mērvienība: |
Šī funkcija neatgriež vērtību.
NotesTaimauts attiecas tikai uz piedziņas mehānisma funkcijām, kas pārvietojas uz mērķi, piemēram,
driveForunturnFor.
// Turn right after driving forward.
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getteri#
irGatavs#
isDone atgriež, vai robots ir pabeidzis kustību, kā Būla vērtību. To var izmantot, lai kontrolētu citu darbību laiku, pamatojoties uz robota kustību.
bool isDone( void );
Šī funkcija nepieņem nekādus parametrus.
Return Valuestrue— Robots ir pabeidzis kustību.false— robots joprojām kustas.
irPārvietojas#
isMoving atgriež, vai robots kustas, kā Būla vērtību. To var izmantot, lai kontrolētu citu darbību laiku, pamatojoties uz robota kustību.
virtual bool isMoving( void );
Šī funkcija nepieņem nekādus parametrus.
Return Valuestrue— Robots kustas.false— robots nekustas.
ātrums#
velocity atgriež robota braukšanas ātrumu.
Tas var atgriezt ātrumu procentos, rpmvai dpsPozitīva vērtība nozīmē, ka robots brauc uz priekšu. Negatīva vērtība nozīmē, ka robots brauc atpakaļgaitā.
double velocity(
velocityUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Ātruma atgriešanas mērvienība: |
Atgriež piedziņas ātrumu kā double atlasītajā vienībā.
// 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();
strāva#
current atgriež, cik daudz elektriskās strāvas patērē piedziņas sistēma. Strāva ir elektroenerģijas daudzums, kas plūst caur piedziņas sistēmu. To var atgriezt ampēros vai procentos atkarībā no mērvienības.
Augstāka strāvas vērtība nozīmē, ka piedziņas sistēma patērē vairāk elektriskās strāvas. Tas var notikt, ja robots spiežas pret objektu vai mēģina kustēties, kad ir iestrēdzis.
To var izmantot, lai pārbaudītu, vai piedziņas mehānismam ir grūtības kustības laikā. Ja strāva saglabājas augsta, piedziņas mehānisms var sakarst vai mazāk efektīvi izmantot jaudu.
Available Functions1 - Atgriež piedziņas mehānisma elektriskās strāvas stiprumu ampēros.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Atgriež piedziņas mehānisma elektrisko strāvu procentos.
double current( percentUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Mērvienība, kas jāatgriež strāvā: |
|
|
Mērvienība strāvas atgriešanai: |
Atgriež piedziņas mehānisma strāvu kā double atlasītajā vienībā.
jauda#
power atgriež piedziņas patērēto jaudu, mērot vatos. Jauda parāda, cik ātri piedziņa patērē enerģiju.
Augstāka jaudas vērtība nozīmē, ka piedziņas sistēma patērē enerģiju ātrāk. Tas var notikt, ja robots spiežas pret objektu vai mēģina kustēties, kad ir iestrēdzis.
To var izmantot, lai salīdzinātu kustības vai pārbaudītu, vai transmisijai ir problēmas. Ja jauda saglabājas augsta, transmisija var sakarst vai mazāk efektīvi izmantot enerģiju.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Barošanas bloks: |
Atgriež piedziņas jaudu kā double vatos.
griezes moments#
Griezes moments parāda, cik stipri piedziņa var stumt vai vilkt, kamēr riteņi griežas.
torque atgriež piedziņas izmantoto griezes momentu, mērot ņūtonmetros (Nm) vai collās-mārciņās (InLb).
Augstāka griezes momenta vērtība nozīmē, ka piedziņas sistēma spiež vai velk spēcīgāk. Tas var notikt, ja robots spiežas pret objektu vai mēģina kustēties, kad ir iestrēdzis.
To var izmantot, lai pārbaudītu, vai transmisijai ir problēmas, vai lai salīdzinātu, cik liels grūdiens nepieciešams dažādām kustībām.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Griezes momenta atgriešanas mērvienība: |
Atgriež piedziņas griezes momentu kā double atlasītajā vienībā.
efektivitāte#
efficiency atgriež piedziņas mehānisma jaudu izmantošanas efektivitāti procentos no 0% līdz 100%.
Efektivitāte parāda, cik liela daļa piedziņas mehānisma jaudas tiek izmantota kustībai. Augstāka efektivitātes vērtība nozīmē, ka lielāka daļa piedziņas mehānisma jaudas tiek izmantota kustībai. Zemāka efektivitātes vērtība var rasties, ja piedziņa strādā intensīvi, bet nekustas daudz, piemēram, ja robots ir iestrēdzis vai spiežas pret kādu objektu.
To var izmantot, lai salīdzinātu kustības vai pārbaudītu, vai piedziņa neizšķiež jaudu, nevis izmanto to kustībai.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Mērvienība, kas jāatgriež efektivitātes izteiksmē: |
Atgriež piedziņas mehānisma efektivitāti kā double atlasītajā vienībā.
temperatūra#
temperature atgriež piedziņas mehānisma vidējo temperatūru procentos no 0% līdz 100%.
Temperatūra parāda, cik silti ir piedziņas motori. Augstāka temperatūra nozīmē, ka motori darbības laikā kļūst siltāki. Lai motori darbotos ar pilnu jaudu, to temperatūrai jābūt zem 55 °C.
Ja motori kļūst pārāk karsti, tie samazina maksimālo strāvu, lai sevi pasargātu. Sasniedzot 70 °C temperatūru, motori pārstāj darboties, līdz tie atdziest.
To var izmantot, lai pārbaudītu, vai piedziņas sistēma kļūst pārāk karsta atkārtotu kustību, garu braucienu laikā vai spiežoties pret kādu objektu.
Available Functionsdouble temperature(
percentUnits units );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Atgriešanas temperatūras mērvienība: |
Atgriež vidējo piedziņas mehānisma temperatūru kā double atlasītajās mērvienībās.
Atgrieztā vērtība
50%nozīmē, ka vidējā motora temperatūra ir aptuveni45°C(113°F).Piedziņas mehānisma tipiskais darba temperatūras diapazons ir aptuveni
20°C(68°Flīdz70°C(158°F.
spriegums#
voltage atgriež piedziņas mehānisma elektrisko spriegumu.
Spriegums ir elektriskais spiediens, kas tiek piegādāts piedziņas motoriem. To var izmantot kopā ar strāvas un jaudas vērtībām, lai saprastu, kā piedziņas sistēma izmanto elektrisko enerģiju.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Sprieguma atgriežamā mērvienība: |
Atgriež piedziņas mehānisma spriegumu kā double atlasītajās mērvienībās.