Трансмиссия#
Введение#
Привод класса drivetrain управляет движением и поворотами робота. Привод состоит из двигателей и колес, которые работают вместе, чтобы перемещать робота.
Трансмиссия drivetrain не использует гироскопический датчик для поворотов на основе курса или вращения. Она может двигаться вперед или назад, а также поворачивать влево или вправо, но не может поворачивать на определенный курс или вращаться. Для поворотов на основе курса и вращения используйте класс smartdrive.
На этой странице в качестве примера названия трансмиссии используется myDrivetrain При необходимости замените его на собственное заданное имя.
Производные классы#
Класс drivetrain служит базовым классом для следующего производного класса:
smartdrive- Создает трансмиссию с поддержкой гироскопического датчика.
Конструкторы классов#
1 - Создает трансмиссию, используя существующие
motor_groupдля левой и правой сторон.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объект для левой и правой сторон.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
rightMotor, // right motor
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
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Действия#
водить машину#
Привод drive перемещает робота вперед или назад бесконечно. Робот будет продолжать движение, пока ему не будет дано другое действие, например, поворот или остановка.
1 - Привод осуществляется с использованием текущей скорости вращения привода.
void drive( directionType dir );
Parameters2 - Двигается с заданной скоростью.
void drive( directionType dir, double velocity, velocityUnits units );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Направление движения робота: |
|
|
Скорость вращения от 0% до 100% при использовании |
|
|
Единица измерения скорости: |
Эта функция не возвращает значения.
Notesdriveне ожидает. Проект немедленно выполнит следующую строку кода.Робот будет продолжать двигаться до тех пор, пока не будет вызвана функция
stopили не запустится другая функция движения трансмиссии.isDoneиisMovingне используются сdrive, потому чтоdriveне имеет целевого расстояния.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
driveFor перемещает робота вперед или назад на определенное расстояние. Проект будет ждать, пока робот не завершит движение, прежде чем будет выполнена следующая строка кода.
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.
Запуск другой функции перемещения трансмиссии во время выполнения функции
driveForпрервет текущее перемещение.driveForиспользует целевое расстояние, поэтомуisDoneиisMovingможно использовать с ним.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
повернуть#
turn поворачивает робота влево или вправо бесконечно. Робот будет продолжать поворачивать, пока ему не будет дано другое действие, например, движение или остановка.
1 - Повороты выполняются с использованием текущей скорости поворота.
void turn( turnType dir );
Parameters2 - Поворачивает с заданной скоростью.
void turn( turnType dir, double velocity, velocityUnits units );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Направление поворота робота: |
|
|
Скорость поворота задается в диапазоне от 0% до 100% при использовании |
|
|
Единица измерения скорости: |
Эта функция не возвращает значения.
Notesturnозначает отсутствие ожидания. Проект немедленно выполнит следующую строку кода.Робот будет продолжать вращаться до тех пор, пока не будет вызвана функция
stopили не будет выполнена другая функция движения трансмиссии.isDoneиisMovingне используются сturnпотому чтоturnнет целевого угла.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
turnFor#
turnFor поворота робот поворачивает робота влево или вправо на определенное количество градусов, оборотов или единиц измерения. Поворот осуществляется относительно текущего положения робота. Проект будет ждать, пока робот не завершит поворот, прежде чем будет выполнена следующая строка кода.
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.
Выполнение другой функции перемещения трансмиссии во время выполнения функции
turnForпрервет текущее перемещение.turnForиспользует целевой угол, поэтомуisDoneиisMovingможно использовать с ним.
// 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 указывает роботу, с какой скоростью двигаться. Более высокое значение в процентах увеличивает скорость движения робота, а более низкое — уменьшает.
Каждый проект начинается с того, что робот по умолчанию движется со скоростью, составляющей 50% от максимальной.
Примечание: Более высокая скорость приводит к более быстрому движению робота, но может снизить точность. Более низкая скорость приводит к более медленному движению робота, но может повысить точность.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Скорость вращения от 0% до 100% при использовании |
|
|
Единица измерения скорости: |
Эта функция не возвращает значения.
NotesСкорость вращения привода используется последующими функциями управления движением трансмиссии, если в вызове функции не указана конкретная скорость.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
setTurnVelocity#
Параметр setTurnVelocity указывает роботу, с какой скоростью он должен поворачиваться. Более высокое значение в процентах приводит к более быстрому повороту робота, а более низкое — к более медленному.
Каждый проект начинается с того, что робот по умолчанию вращается со скоростью, составляющей 50% от его обычной скорости.
Примечание: Более высокая скорость приводит к более быстрому повороту робота, но может быть менее точной. Более низкая скорость приводит к более медленному повороту робота, но может быть более точной.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Скорость вращения от 0% до 100% при использовании |
|
|
Единица измерения скорости: |
Эта функция не возвращает значения.
NotesСкорость поворота используется последующими функциями поворота трансмиссии, если в вызове функции не указана конкретная скорость.
// 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, если в вызове функции не указан конкретный режим остановки.Если эта функция не используется, робот будет использовать тормоз
brakeпри остановке.
setTimeout#
Параметр setTimeout setTimeout задает время, в течение которого робот будет пытаться завершить движение. Если робот не сможет завершить движение за это время, он прекратит попытки и перейдет к следующей строке кода. Это предотвращает застревание робота на определенном этапе движения.
void setTimeout(
int32_t time,
timeUnits units );
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Время, в течение которого робот может попытаться завершить движение. Это должно быть положительное целое число. |
|
|
Единица времени: |
Эта функция не возвращает значения.
NotesТайм-аут применяется только к функциям трансмиссии, которые перемещаются к цели, например,
driveForиturnFor.
// Turn right after driving forward.
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 возвращает скорость движения робота.
Он может возвращать скорость в процентах, в rpmили в единицах dps. Положительное значение означает, что робот движется вперед. Отрицательное значение означает, что робот движется назад.
double 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 в выбранном блоке.