Трансмиссия#
Введение#
Привод класса drivetrain управляет движением и поворотами робота. Привод состоит из двигателей и колес, которые работают вместе, чтобы перемещать робота.
Трансмиссия drivetrain не использует инерциальный датчик или гироскопический датчик для поворотов, основанных на курсе или вращении. Она может двигаться вперед или назад, а также поворачивать влево или вправо, но не может поворачивать на определенный курс или вращаться. Для поворотов, основанных на курсе и вращении, используйте класс smartdrive.
Производные классы#
Класс drivetrain служит базовым классом для следующих производных классов:
smartdrive- Этот класс добавляет поддержку инерциального датчика или гироскопического датчика для выполнения поворотов на основе курса и вращения.
Конструкторы классов#
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 перемещает робота вперед или назад бесконечно. Робот будет продолжать движение, пока ему не будет дано другое действие, например, поворот или остановка. Для оборотов в минуту (RPM) или скорости в секунду (DPS) ограничение изменяется в зависимости от передаточного отношения трансмиссии.
1 - Приводы, использующие текущую настроенную скорость привода.
void drive( directionType dir );
Parameters2 - Двигается с заданной скоростью.
void drive( directionType dir, double velocity, velocityUnits units );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Направление движения робота: |
|
|
Скорость вращения от 0% до 100% при использовании |
|
|
Единица измерения скорости: |
Эта функция не возвращает значения.
Notesdriveне ожидает; проект продолжит выполнение следующей строки кода сразу после вызова.Трансмиссия будет продолжать движение до тех пор, пока не будет вызвана функция
stopили не будет выполнена другая функция движения трансмиссии (например,driveForилиturn).Функции, такие как
isDoneиisMoving, неприменимы кdrive, поскольку он не использует движение на основе цели (не имеетdistance).
// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
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% при использовании |
|
|
Единица измерения скорости: |
|
|
|
Возвращает значение логического типа (Boolean), указывающее, достиг ли робот целевого расстояния.
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 поворачивает робота влево или вправо бесконечно. Робот будет продолжать поворачивать, пока ему не будет дано другое действие, например, движение или остановка. Для RPM или 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#
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% при использовании |
|
|
Единица измерения скорости: |
|
|
|
Возвращает значение логического типа (Boolean), указывающее, достиг ли робот целевого угла.
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#
Параметр setDriveVelocity setDriveVelocity уменьшает. Для RPM или DPS ограничение изменяется в зависимости от передаточного отношения трансмиссии.
Каждый проект начинается с того, что робот по умолчанию движется со скоростью, составляющей 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#
Параметр setTurnVelocity setTurnVelocity к более медленному. Для RPM или DPS ограничение изменяется в зависимости от передаточного отношения трансмиссии.
Каждый проект начинается с того, что робот по умолчанию вращается со скоростью, составляющей 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#
Параметр setStopping задает способ остановки робота: торможение, движение по инерции или удержание.
void setStopping(
brakeType mode );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Как робот остановится:
|
Эта функция не возвращает значения.
NotesРежим остановки применяется ко всем последующим вызовам
stop, если в вызове функции не указан конкретный режим остановки.
setTimeout#
Параметр setTimeout 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 возвращает значение логического типа (Boolean), указывающее, завершил ли робот движение. Это можно использовать для управления временем выполнения других действий в зависимости от движения робота.
bool isDone( void );
Эта функция не принимает никаких параметров.
Return Valuestrue- Робот завершил движение.false- Робот все еще движется.
isMoving#
isMoving возвращает значение логического типа (Boolean), указывающее, движется ли робот. Это можно использовать для управления временем выполнения других действий в зависимости от движения робота.
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°CC (158°F.
Напряжение#
Напряжение voltage возвращает электрическое напряжение, подаваемое на трансмиссию.
Напряжение — это электрическое напряжение, подаваемое на двигатели трансмиссии. Вместе со значениями тока и мощности оно может использоваться для понимания того, как трансмиссия использует электрическую энергию.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Единица измерения напряжения: |
Возвращает напряжение трансмиссии в виде значения double в выбранном блоке.