Трансмісія#
Вступ#
Клас drivetrain контролює, як робот рухається та повертається. Трансмісія складається з двигунів та коліс, які працюють разом для переміщення робота.
Трансмісія drivetrain не використовує Інерційний датчик, Гіроскопічний датчик або GPS-датчик для поворотів на основі курсу або обертання. Вона може рухатися вперед або назад і повертати ліворуч або праворуч, але не може повертати в певний напрямок або на певний поворот. Для поворотів на основі курсу та обертання використовуйте клас smartdrive.
Похідні класи#
Клас drivetrain служить базовим класом для наступних похідних класів:
smartdrive– Цей клас додає підтримку інерціальних датчиків, GPS-датчиків або гіроскопів для здійснення поворотів на основі курсу та обертання.
Конструктори класів#
1 - Створює трансмісію, використовуючи існуючі об’єкти
motor_groupз для лівої (&l) та правої (&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 - Створює трансмісію, використовуючи існуючі об’єкти
motorдля лівого (&l) та правого (&r) боків.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Деструктор класів#
Знищує об’єкт drivetrain та звільняє пов’язані з ним ресурси.
virtual ~drivetrain();
Параметри#
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Лівий та правий двигуни або групи двигунів. Обидва параметри повинні використовувати один і той самий тип: або два об’єкти |
|
|
Довжина кола коліс трансмісії. Значення за замовчуванням — |
|
|
Відстань між лівим і правим колесами. Значення за замовчуванням — |
|
|
Відстань між передніми та задніми колесами. Значення за замовчуванням — |
|
|
Одиниця вимірювання для |
|
|
Передавальне число, що використовується для регулювання відстані ходу, якщо використовуються шестерні. Значення за замовчуванням — |
Приклад#
// 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
Функції-члени#
Клас drivetrain включає такі функції-члени:
Дії – Переміщення та поворот робота.
drive– Рухає робота вперед або назад безперервно.driveFor– Переміщує робота вперед або назад на певну відстань.turn- Повертає робота ліворуч або праворуч назавжди.turnFor– Повертає робота ліворуч або праворуч на певну кількість градусів.stop- Зупиняє рух робота.
Налаштування – налаштування параметрів трансмісії.
setDriveVelocity– Вказує роботу, з якою швидкістю рухатися.setTurnVelocity– Вказує роботу, як швидко повертатися.setStopping– Вказує, як робот зупинить рух: гальмуванням, рухом на вильоті або утримуванням.setTimeout– Встановлює, скільки секунд робот намагатиметься завершити рух.
Значення – Перевірити стан руху.
isDone– Повертає, чи завершив рух робот, у вигляді логічного значення.isMoving– Повертає значення типу логічне, яке вказує, чи рухається робот.velocity– Повертає швидкість руху робота.current– Повертає силу струму, що споживається трансмісією.power– Повертає, як швидко трансмісія використовує енергію.torque– Повертає крутний момент, який використовує трансмісія.efficiency– Повертає, наскільки ефективно трансмісія використовує потужність.temperature– Повертає температуру трансмісії.voltage– Повертає електричну напругу, що подається на трансмісію.
Перед викликом будь-яких функцій-членів drivetrain необхідно створити об’єкт drivetrain , як показано нижче:
/* 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
Дії#
диск#
drive переміщує робота вперед або назад безкінечно. Робот продовжуватиме рухатися, доки йому не буде надано іншу дію, таку як поворот або зупинка. Для обертів за хвилину або DPS обмеження змінюється передавальним числом трансмісії.
1 - Привід використовує поточну налаштовану швидкість приводу.
void drive( directionType dir );
Parameters2 - Рухається із заданою швидкістю.
void drive( directionType dir, double velocity, velocityUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Напрямок руху робота: |
|
|
Швидкість руху від 0% до 100% при використанні |
|
|
Одиниця вимірювання швидкості: |
Ця функція не повертає значення.
Notesdriveне очікує; проект продовжить виконання наступного рядка коду одразу після виклику.Трансмісія продовжуватиме рух, доки не буде викликана функція
stopабо не буде виконана інша функція руху трансмісії (наприклад,driveForабоturn).Functions such as
isDoneandisMovingare not applicable todrive, since it does not use target-based movement (doesn’t have adistanceparameter).
// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
дискДля#
driveFor переміщує робота вперед або назад на певну відстань. Проект чекатиме, поки робот завершить рух, перш ніж запустити наступний рядок коду за замовчуванням. Для RPM або DPS ліміт змінюється передавальним числом трансмісії.
1 - Рухається у вказаному напрямку на відстань, використовуючи поточну налаштовану швидкість руху.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Рухається в напрямку, що залежить від відстані, використовуючи поточну налаштовану швидкість руху.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Рухається в напрямку, що залежить від відстані, із заданою швидкістю.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Рухається у заданому напрямку на відстань із заданою швидкістю.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Напрямок руху робота: |
|
|
Відстань, яку проїжджає робот. |
|
|
Одиниця вимірювання відстані: |
|
|
Швидкість руху від 0% до 100% при використанні |
|
|
Одиниця вимірювання швидкості: |
|
|
|
Повертає, чи досяг робот цільової відстані, у вигляді логічного значення.
true- Робот досяг цільової відстані.false- Робот не завершив рух, або функція повернула результат до завершення руху, оскількиwaitForCompletionбуло встановлено наfalse.
Виконання іншої функції руху трансмісії (наприклад,
driveабоturnFor) під час виконанняdriveForперерве поточний рух.Оскільки
driveForбазується на цілі (використовує параметрdistance), такі функції, якisDoneтаisMoving, працюють зdriveFor.
// Drive 200 mm, then back 200 mm
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
поворот#
turn повертає робота ліворуч або праворуч назавжди. Робот продовжуватиме обертатися, доки йому не буде надано іншу дію, наприклад, рух або зупинку. Для обертів за хвилину або DPS обмеження змінюється передавальним числом трансмісії.
1 - Повороти з використанням поточної налаштованої швидкості повороту.
void turn( turnType dir );
Parameters2 - Обертається із заданою швидкістю.
void turn( turnType dir, double velocity, velocityUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Напрямок повороту робота: |
|
|
Швидкість повороту від 0% до 100% при використанні |
|
|
Одиниця вимірювання швидкості: |
turnне очікує; проект продовжить виконання наступного рядка коду одразу після виклику.Трансмісія продовжуватиме обертатися, доки не буде викликана функція
stopабо не буде виконана інша функція руху трансмісії (наприклад,turnForабоdrive).Такі функції, як
isDoneтаisMoving, не застосовні доturn, оскільки він не використовує рух на основі цілі (не має параметраangle).
// Turn right, then left, then stop
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
повернутиДля#
turnFor повертає робота ліворуч або праворуч на певну кількість градусів. Поворот здійснюється відносно поточного положення робота. Проект чекатиме, поки робот завершить поворот, перш ніж запустити наступний рядок коду за замовчуванням. Для RPM або DPS ліміт змінюється передавальним числом трансмісії.
1 - Повороти на заданий кут з використанням поточної налаштованої швидкості повороту.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Повертає у вказаному напрямку на кут, використовуючи поточну налаштовану швидкість повороту.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Повороти на заданий кут із заданою швидкістю.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Повертає у заданому напрямку на кут із заданою швидкістю.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Напрямок повороту робота: |
|
|
Кут повороту робота. |
|
|
Одиниця повороту: |
|
|
Швидкість повороту від 0% до 100% при використанні |
|
|
Одиниця вимірювання швидкості: |
|
|
|
Повертає, чи досяг робот цільового кута, у вигляді логічного значення.
true- Робот досяг цільового кута.false- Робот не завершив хід, або функція повернула результат до завершення ходу, оскількиwaitForCompletionбуло встановлено наfalse.
Виконання іншої функції руху трансмісії (наприклад,
turnабоdrive) під час виконання функціїturnForперерве поточний рух.Оскільки
turnForбазується на цілі (використовує параметр кутаangle), такі функції, якisDoneтаisMoving, працюють зturnFor.
// Turn right then left
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
СТІЙ#
stop зупиняє рух робота. Якщо передбачено режим зупинки, він контролює, як робот зупиняється для цього виклику функції.
1 - Зупиняє трансмісію, використовуючи поточний налаштований режим зупинки.
void stop();
Parameters2 - Зупиняє трансмісію, використовуючи заданий режим гальмування.
void stop( brakeType mode );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Як робот зупиниться:
|
Ця функція не повертає значення.
Examples// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Мутатори#
встановитиШвидкістьДрайву#
setDriveVelocity вказує роботу, з якою швидкістю рухатися. Вищий відсоток робить робот швидшим, а нижчий – повільнішим. Для обертів на хвилину обмеження змінюється передавальним числом трансмісії.
Кожен проєкт починається з того, що робот рухається зі швидкістю 50% за замовчуванням.
Примітка: Вища швидкість робить робот швидшим, але це може бути менш точно. Нижча швидкість робить робот повільнішим, але це може бути точнішим.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Швидкість руху від 0% до 100% при використанні |
|
|
Одиниця вимірювання швидкості: |
Ця функція не повертає значення.
NotesШвидкість приводу застосовується до всіх наступних функцій руху трансмісії (таких як
driveтаdriveFor), якщо у виклику функції не вказано конкретну швидкість.
// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
встановитиШвидкістьПовороту#
setTurnVelocity вказує роботу, як швидко повертатися. Вищий відсоток змушує робота повертатися швидше, а нижчий відсоток — повільніше.
Кожен проект починається з того, що робот обертається зі швидкістю 50% за замовчуванням.
Примітка: Вища швидкість змушує робота обертатися швидше, але це може бути менш точно. Нижча швидкість змушує робота обертатися повільніше, але це може бути точніше.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Швидкість повороту від 0% до 100% при використанні |
|
|
Одиниця вимірювання швидкості: |
Ця функція не повертає значення.
NotesШвидкість повороту застосовується до всіх наступних функцій повороту трансмісії (таких як
turnтаturnFor), якщо у виклику функції не вказано конкретну швидкість.
// 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 встановлює, як робот зупинить рух: гальмуванням, рухом на вильоті або утримуванням.
void setStopping(
brakeType mode );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Як робот зупиниться:
|
Ця функція не повертає значення.
NotesРежим зупинки застосовується до всіх наступних викликів
stop, якщо у виклику функції не вказано певний режим зупинки.
встановитиЧас очікування#
setTimeout встановлює, скільки секунд робот намагатиметься завершити рух. Якщо робот не зможе завершити за цей час, він припинить спроби та перейде до наступного рядка коду. Це запобігає зависанню робота на русі.
void setTimeout(
int32_t time,
timeUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Кількість часу, протягом якого робот може спробувати завершити рух. Це має бути додатне ціле число. |
|
|
Одиниця часу: |
Ця функція не повертає значення.
NotesТайм-аут застосовується лише до функцій руху трансмісії на основі цілі (таких як
driveForтаturnFor).
// Start turning if driving takes too long
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Геттери#
Готово#
isDone повертає, чи завершив рух робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.
bool isDone( void );
Ця функція не приймає жодних параметрів.
Return Valuestrue- Робот завершив рух.false- Робот все ще рухається.
Рухається#
isMoving повертає інформацію про те, чи рухається робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.
virtual bool isMoving( void );
Ця функція не приймає жодних параметрів.
Return Valuestrue- Робот рухається.false- Робот не рухається.
швидкість#
velocity повертає швидкість руху робота.
Додатне значення означає, що робот рухається вперед. Від’ємне значення означає, що робот рухається назад.
Available Functionsdouble velocity(
velocityUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання швидкості: |
Повертає швидкість трансмісії у вигляді double у вибраній одиниці вимірювання.
// 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();
поточний#
current повертає силу електричного струму, що споживається трансмісією. Струм – це кількість електроенергії, що протікає через трансмісію. Його можна повернути в амперах (амперах) або у відсотках, залежно від одиниці вимірювання.
Вище значення струму означає, що трансмісія використовує більше електричного струму. Це може статися, коли робот штовхається об об’єкт або намагається рухатися, коли він застряг.
Це можна використовувати для перевірки, чи не виникли проблеми з трансмісією під час руху. Якщо струм залишається високим, трансмісія може нагріватися або використовувати потужність менш ефективно.
Available Functions1 - Повертає силу струму трансмісії в амперах.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Повертає електричний струм трансмісії у відсотках від максимуму.
double current( percentUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання струму, в якій повертається сигнал: |
|
|
Одиниця вимірювання струму, що повертається: |
Повертає струм трансмісії у вигляді double у вибраному блоку вимірювання.
влада#
power повертає кількість потужності, що споживається трансмісією, виміряну у ватах. Потужність показує, як швидко трансмісія використовує енергію.
Вище значення потужності означає, що трансмісія використовує енергію швидше. Це може статися, коли робот штовхається об об’єкт або намагається рухатися, коли він застряг.
Це можна використовувати для порівняння рухів або перевірки, чи не працює трансмісія. Якщо потужність залишається високою, трансмісія може нагріватися або використовувати енергію менш ефективно.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Блок живлення: |
Повертає потужність трансмісії у вигляді double у ватах.
крутний момент#
Крутний момент показує, наскільки сильно трансмісія може штовхати або тягнути, коли колеса обертаються.
torque повертає крутний момент, який використовує трансмісія, виміряний у ньютон-метрах (Нм) або дюйм-фунтах (InLb).
Вище значення крутного моменту означає, що трансмісія штовхає або тягне сильніше. Це може статися, коли робот штовхає об’єкт або намагається рухатися, коли він застряг.
Це можна використовувати, щоб перевірити, чи не працює трансмісія, або порівняти, скільки зусилля потрібно для різних рухів.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання крутного моменту для повернення: |
Повертає крутний момент трансмісії як double у вибраному блоку вимірювання.
ефективність#
efficiency повертає, наскільки ефективно трансмісія використовує потужність, у відсотках від 0% до 100%.
Ефективність показує, яка частина потужності трансмісії використовується для руху. Вище значення ефективності означає, що для руху використовується більше потужності трансмісії. Нижче значення ефективності може бути, коли трансмісія працює інтенсивно, але мало рухається, наприклад, коли робот застряг або штовхається об об’єкт.
Це можна використовувати для порівняння рухів або перевірки, чи трансмісія витрачає потужність даремно, замість того, щоб використовувати її для руху.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання для повернення ефективності: |
Повертає ефективність трансмісії у вигляді double у вибраній одиниці вимірювання.
температура#
temperature повертає середню температуру трансмісії у відсотках від 0% до 100%.
Температура показує, наскільки нагріті двигуни трансмісії. Вища температура означає, що двигуни нагріваються під час роботи. Для повної продуктивності двигуни повинні мати температуру нижче 55°C.
Якщо двигуни перегріються, вони знизять свій максимальний струм, щоб захистити себе. При 70°C двигуни зупиняться, доки не охолонуть.
Це можна використовувати для перевірки, чи не перегрівається трансмісія під час повторюваних рухів, тривалих пробіжок або коли вона тисне на якийсь предмет.
Available Functionsdouble temperature(
percentUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання температури повернення: |
Повертає середню температуру трансмісії у вигляді double у вибраній одиниці вимірювання.
Повернене значення
50%вказує на те, що середня температура двигуна становить приблизно45°C(113°F).Типовий діапазон робочих температур для трансмісії становить приблизно
20°C(68°F) до70°C(158°F).
напруга#
voltage повертає електричну напругу, що подається на трансмісію.
Напруга – це електричний тиск, що подається на двигуни трансмісії. Її можна використовувати разом зі значеннями струму та потужності, щоб зрозуміти, як трансмісія використовує електричну енергію.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання напруги, яку потрібно повернути: |
Повертає напругу трансмісії у вигляді double у вибраному блоку вимірювання.