Трансмісія#

Вступ#

Робот VEX IQ (2-го покоління) використовує трансмісію для руху та повороту. Трансмісія складається з двигунів та коліс, які працюють разом для переміщення робота.

Налаштований трансмісійний агрегат може використовувати підключений гіроскопічний датчик, вбудований у Brain інерційний датчик або взагалі не використовувати датчик. Коли використовується датчик, трансмісійний агрегат використовує його для точного руху та повороту робота. На початку кожного проекту трансмісійний агрегат автоматично калібрує датчик. Під час калібрування тримайте робота нерухомим приблизно 2 секунди, щоб робот міг правильно рухатися та повертатися.

На цій сторінці як приклад назви трансмісії використовується drivetrain За потреби замініть її власною налаштованою назвою.

Існує багато способів кодування трансмісії. Нижче наведено список усіх методів кодування трансмісії:

Дії — Переміщення та поворот робота.

  • drive — Рухає робота вперед або назад безкінечно.

  • drive_for — Переміщує робота вперед або назад на певну відстань.

  • turn — Повертає робота ліворуч або праворуч назавжди.

  • turn_for — Повертає робота ліворуч або праворуч на певну кількість градусів.

  • turn_to_heading — Повертає робота обличчям до певного курсу від -359 до 359 градусів. Робот поверне найкоротшим шляхом для досягнення цільового курсу.

  • turn_to_rotation — Повертає робота на певний оберт.

  • stop — Зупиняє рух робота.

  • calibrate_drivetrain — Калібрує датчик, налаштований разом із трансмісією.

Мутатори — налаштування параметрів трансмісії.

  • set_drive_velocity — Вказує роботу, з якою швидкістю рухатися.

  • set_turn_velocity — Вказує роботу, як швидко повертатися.

  • set_stopping — Вказує, як робот зупинить рух: гальмуванням, рухом на вильоті або утримуванням.

  • set_timeout — Встановлює, скільки часу робот намагатиметься завершити рух.

  • set_heading — Змінює поточний напрямок руху робота на новий.

  • set_rotation — Змінює поточне обертання робота на нове обертання.

  • set_turn_threshold — Вказує, наскільки близько робот повинен підійти до цільового кута, перш ніж поворот буде завершено.

  • set_turn_constant — Змінює, наскільки сильно робот коригує свої повороти.

Отримувачі — Перевірка статусу руху.

  • heading — Повертає поточний напрямок руху робота від 0 до 359 градусів.

  • rotation — Повертає поточне обертання робота.

  • velocity — Повертає швидкість руху робота.

  • current — Повертає силу струму, що споживається трансмісією.

  • is_moving — Повертає значення типу логічне, яке вказує, чи рухається робот.

  • is_done — Повертає, чи завершив рух робот, у вигляді логічного значення.

  • is_turning — Повертає, чи повертається робот, у вигляді логічного значення.

  • power — Повертає, як швидко трансмісія використовує енергію.

  • torque — Повертає крутний момент, який використовує трансмісія.

  • efficiency — Повертає, наскільки ефективно трансмісія використовує потужність.

  • temperature — Повертає температуру трансмісії.

Конструктори — вручну створюють та налаштовують трансмісію.

  • DriveTrain — Створює трансмісію без гіроскопічного або інерційного датчика.

  • SmartDrive — Створює трансмісію з гіроскопічним або інерційним датчиком.

Дії#

drive#

drive переміщує робота вперед або назад безкінечно. Робот продовжуватиме рухатися, доки йому не буде надано іншу дію, таку як поворот або зупинка.

Usage:
drivetrain.drive(direction, velocity, units)

Параметри

Опис

direction

Напрямок руху робота: FORWARD або REVERSE.

velocity

Необов’язково. Швидкість руху від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat). Якщо швидкість не вказана, робот рухається з поточною швидкістю приводу.

units

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням), RPM (обертів за хвилину) або VelocityUnits.DPS (градусів за секунду).

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

drive_for#

drive_for переміщує робота вперед або назад на певну відстань. Проект чекатиме, поки робот завершить рух, перш ніж буде виконано наступний рядок коду.

Usage:
drivetrain.drive_for(direction, distance, units, velocity, units_v, wait)

Параметри

Опис

direction

Напрямок руху робота: FORWARD або REVERSE.

distance

Відстань, яку проїжджає робот. Це може бути integer або десяткове число (float).

units

Необов’язково. Одиниця вимірювання відстані: INCHES (за замовчуванням), MM (міліметри) або DistanceUnits.CM (сантиметри).

velocity

Необов’язково. Швидкість руху від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat). Якщо швидкість не вказана, робот рухається з поточною швидкістю приводу.

units_v

Необов’язково. Одиниця вимірювання швидкості: RPM (обертів за хвилину, за замовчуванням), PERCENTабо VelocityUnits.DPS (градусів за секунду).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить рух, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)

# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)

turn#

turn повертає робота ліворуч або праворуч назавжди. Робот продовжуватиме обертатися, доки йому не буде надано іншу дію, наприклад, рух або зупинка.

Usage:
drivetrain.turn(direction, velocity, units)

Параметри

Опис

direction

Напрямок повороту робота: LEFT або RIGHT.

velocity

Необов’язково. Швидкість повороту від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat). Якщо швидкість не вказана, робот повертається з поточною швидкістю повороту.

units

Необов’язково. Одиниця вимірювання швидкості: RPM (обертів за хвилину, за замовчуванням), PERCENTабо VelocityUnits.DPS (градусів за секунду).

# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()

# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()

turn_for#

turn_for повертає робота ліворуч або праворуч на певну кількість градусів або обертів. Поворот здійснюється відносно поточного положення робота. Проект чекатиме, поки робот завершить поворот, перш ніж буде виконано наступний рядок коду.

Usage:
drivetrain.turn_for(direction, angle, units, velocity, units_v, wait)

Параметри

Опис

direction

Напрямок повороту робота: LEFT або RIGHT.

angle

Кількість поворотів робота. Це може бути integer або десяткове число (float).

units

Необов’язково. Одиниця вимірювання повороту: DEGREES (за замовчуванням) або TURNSОдин поворот дорівнює 360 градусам.

velocity

Необов’язково. Швидкість повороту від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat). Якщо швидкість не вказана, робот повертається з поточною швидкістю повороту.

units_v

Необов’язково. Одиниця вимірювання швидкості: RPM (обертів за хвилину, за замовчуванням), PERCENTабо VelocityUnits.DPS (градусів за секунду).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить обертання, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)

# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)

turn_to_heading#

Курс руху – це напрямок, у якому рухається робот, виміряний у градусах. turn_to_heading повертає робота обличчям до певного курсу від -359 до 359 градусів. Робот поверне у найкоротшому напрямку, щоб досягти цільового курсу.

Початковий курс робота становить 0 градусів.

Проєкт чекатиме, поки робот завершить обертання, перш ніж буде виконано наступний рядок коду.

Usage:
drivetrain.turn_to_heading(angle, units, velocity, units_v, wait)

Параметри

Опис

angle

The direction the robot should face, in degrees. This can be an integer or decimal (float) from -359 to 359.

units

Необов’язково. Одиниця вимірювання заголовка: DEGREES (за замовчуванням).

velocity

Необов’язково. Швидкість повороту від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat). Якщо швидкість не вказана, робот повертається з поточною швидкістю повороту.

units_v

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням), RPM (обертів за хвилину) або VelocityUnits.DPS (градусів за секунду).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить обертання, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)

# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)

turn_to_rotation#

turn_to_rotation повертає робота до певного обертання.

Обертання – це кут повороту робота, виміряний у градусах або обертах. На початку проекту значення повороту встановлюється на 0 градусів. Обертання також можна встановити за допомогою методу set_rotation.

Значення обертання є абсолютними. Це означає, що напрямок повороту залежить від поточного обертання робота. Поворот праворуч збільшує обертання, а поворот ліворуч зменшує обертання.

Наприклад, якщо робот починає рух з кута 0 градусів, а потім повертається на 720 градусів, він двічі повернеться праворуч. Якщо потім повернути на 360 градусів, він один раз повернеться ліворуч, оскільки 360 менше за 720.

Проєкт чекатиме, поки робот завершить обертання, перш ніж буде виконано наступний рядок коду.

Usage:
drivetrain.turn_to_rotation(angle, units, velocity, units_v, wait)

Параметри

Опис

angle

Значення повороту, у градусах або обертах, до якого повернеться робот. Це може бути ціле число integer або десяткове число (float).

units

Необов’язково. Одиниця вимірювання обертання: DEGREES (за замовчуванням) або TURNSОдин оберт дорівнює 360 градусам.

velocity

Необов’язково. Швидкість повороту від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat). Якщо швидкість не вказана, робот повертається з поточною швидкістю повороту.

units_v

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням), RPM (обертів за хвилину) або VelocityUnits.DPS (градусів за секунду).

wait

Необов’язково. wait=True (за замовчуванням) змушує проект чекати, поки робот завершить обертання, перш ніж виконувати наступний рядок коду. wait=False змушує наступний рядок коду виконуватися негайно.

# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)

# Turn left then slowly spin in a
# circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)

stop#

stop зупиняє рух робота.

Usage:
drivetrain.stop(mode)

Параметри

Опис

mode

Необов’язково. Як робот зупиниться: BRAKE (за замовчуванням), BRAKEабо COAST

  • COAST — Негайна зупинка.
  • HOLD — Уповільнення до повної зупинки.
  • HOLD — Негайна зупинка та утримування коліс.

# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()

# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)

calibrate_drivetrain#

calibrate_drivetrain – це вбудована функція, яка калібрує гіроскопічний датчик або інерційний датчик, налаштований із трансмісією.

Калібрування допомагає датчику правильно вимірювати рух. Під час калібрування тримайте робота нерухомим приблизно 2 секунди. Якщо робот рухається під час калібрування, датчик може неправильно вимірювати рух.

Проєкт чекатиме на завершення калібрування, перш ніж буде виконано наступний рядок коду.

Примітка: Цю функцію не можна використовувати всередині VS Code.

Usage:
calibrate_drivetrain()

Параметри

Опис

Ця функція не має параметрів.

Мутатори#

set_drive_velocity#

set_drive_velocity вказує роботу, з якою швидкістю рухатися. Вищий відсоток робить робот швидшим, а нижчий – повільнішим.

Кожен проєкт починається з того, що робот рухається зі швидкістю 50% за замовчуванням.

Примітка: Вища швидкість робить робот швидшим, але це може бути менш точно. Нижча швидкість робить робот повільнішим, але це може бути точнішим.

Usage:
drivetrain.set_drive_velocity(velocity, units)

Параметри

Опис

velocity

Швидкість руху від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat).

units

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням), RPM (обертів за хвилину) або VelocityUnits.DPS (градусів за секунду).

# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)

set_turn_velocity#

set_turn_velocity вказує роботу, як швидко повертатися. Вищий відсоток змушує робота повертатися швидше, а нижчий — повільніше.

Кожен проект починається з того, що робот обертається зі швидкістю 50% за замовчуванням.

Примітка: Вища швидкість змушує робота обертатися швидше, але це може бути менш точно. Нижча швидкість змушує робота обертатися повільніше, але це може бути точніше.

Usage:
drivetrain.set_turn_velocity(velocity, units)

Параметри

Опис

velocity

Швидкість обертання від 0% до 100% при використанні PERCENT, від 0 до 120 об/хв при використанні RPMабо від 0 до 720 градусів за секунду при використанні VelocityUnits.DPSЦе може бути ціле число integerfloat).

units

Необов’язково. Одиниця вимірювання швидкості: PERCENT (за замовчуванням), RPM (обертів за хвилину) або VelocityUnits.DPS (градусів за секунду).

# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)

set_stopping#

set_stopping встановлює, як робот зупинятиме рух: гальмуванням, рухом на вильоті або утримуванням.

Usage:
drivetrain.set_stopping(mode)

Параметри

Опис

mode

Як робот зупиниться:

  • BRAKE — Негайна зупинка.
  • COAST — Уповільнення до повної зупинки.
  • HOLD — Негайна зупинка та утримування коліс.

Якщо цей метод не використовується, робот використовуватиме BRAKE під час зупинки.

set_timeout#

set_timeout встановлює час, протягом якого робот намагатиметься завершити рух. Якщо робот не зможе завершити за цей час, він припинить спроби та перейде до наступного рядка коду. Це запобігає зависанню робота на русі.

Usage:
drivetrain.set_timeout(value, units)

Параметри

Опис

value

Кількість часу, протягом якого робот може намагатися завершити рух. Це може бути додатне ціле число integer або десяткове число (float).

units

Необов’язково. Одиниця часу: MSEC (мілісекунди, за замовчуванням) або SECONDS.

# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)

set_heading#

Курс – це напрямок, у якому рухається робот, виміряний у градусах. set_heading змінює поточний курс робота на нове значення курсу.

Наприклад, якщо робот повернувся обличчям праворуч, встановлення курсу на 0 градусів робить це положення обличчям праворуч новим 0 градусами. Потім робот може повертатися в інші позиції на основі цього нового курсу.

Usage:
drivetrain.set_heading(heading, units)

Параметри

Опис

heading

Значення курсу, у градусах або поворотах, яке потрібно встановити для робота. Це може бути ціле число integer або десяткове число (float).

units

Необов’язково. Одиниця вимірювання курсу: DEGREES (за замовчуванням) або TURNSОдин оберт дорівнює 360 градусам.

# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)

set_rotation#

Обертання – це кут повороту робота, виміряний у градусах або обертах. На початку проекту значення повороту встановлюється на 0 градусів. set_rotation змінює поточне обертання робота на нове значення.

Наприклад, якщо робот зробив два повних оберти праворуч, значення його обертання становитиме 720 градусів. Встановлення обертання на 0 градусів скине це обертання з 720 до 0 градусів. Потім робот зможе повертатися до обертань на основі цього нового значення.

Usage:
drivetrain.set_rotation(rotation, units)

Параметри

Опис

rotation

Значення обертання, у градусах або обертах, яке потрібно встановити для робота. Це може бути ціле число integer або десяткове число (float).

units

Необов’язково. Одиниця вимірювання обертання: DEGREES (за замовчуванням) або TURNSОдин оберт дорівнює 360 градусам.

# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)

set_turn_threshold#

set_turn_threshold встановлює, наскільки близько робот повинен підійти до цільового кута, перш ніж поворот буде завершено.

Менший поріг може зробити повороти точнішими, але роботу може знадобитися більше часу для завершення повороту. Більший поріг може призвести до швидшого завершення поворотів, але вони можуть бути менш точними.

Usage:
drivetrain.set_turn_threshold(value)

Параметри

Опис

value

Поріг повороту в градусах. Це може бути ціле число integer або десяткове число (float). Поріг повороту за замовчуванням становить 1 градус.

# Set the turn threshold to 5 degrees
drivetrain.set_turn_threshold(5)

set_turn_constant#

set_turn_constant змінює, наскільки сильно робот коригує свої повороти.

Вище значення робить повороти робота сильнішими. Нижче значення робить повороти роботом плавнішими. Значення за замовчуванням — 1.0.

Usage:
drivetrain.set_turn_constant(value)

Параметри

Опис

value

Константа повороту. Це може бути десяткове число (float) від 0,1 до 4,0. Значення за замовчуванням — 1,0.

# Increase the turn constant to 2.0
drivetrain.set_turn_constant(2.0)

Геттери#

heading#

Курс – це напрямок, у якому рухається робот, виміряний у градусах. heading повертає поточний курс робота від 0 до 359 градусів.

Початковий курс робота становить 0 градусів.

Usage:
drivetrain.heading(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання для повернення курсу: DEGREES (за замовчуванням) або TURNSОдин поворот дорівнює 360 градусам.

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())

rotation#

Обертання – це кут повороту робота, виміряний у градусах або обертах. На початку проекту значення повороту встановлюється на 0 градусів. rotation повертає поточне обертання робота.

Поворот праворуч збільшує обертання, а поворот ліворуч зменшує. Наприклад, два повних оберти праворуч повернуть обертання на 720 градусів.

Usage:
drivetrain.rotation(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання для повернення обертання: DEGREES (за замовчуванням) або TURNSОдин оберт дорівнює 360 градусам.

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())

velocity#

velocity повертає швидкість руху робота.

Він може повертати швидкість у відсотках від -100% до 100%, у RPM від -127 об/хв до 127 об/хв або у VelocityUnits.DPS (градуси за секунду). Додатне значення означає, що робот рухається вперед. Від’ємне значення означає, що робот рухається назад.

Usage:
drivetrain.velocity(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання швидкості, в якій потрібно повернути значення: PERCENT (за замовчуванням), RPM (оберти за хвилину) або VelocityUnits.DPS (градуси за секунду).

current#

current повертає силу електричного струму, що споживається трансмісією, виміряну в амперах. Струм – це кількість електроенергії, що протікає через трансмісію.

Вище значення струму означає, що трансмісія використовує більше електричного струму. Це може статися, коли робот штовхається об об’єкт або намагається рухатися, коли він застряг.

Це можна використовувати для перевірки, чи не виникли проблеми з трансмісією під час руху. Якщо струм залишається високим, трансмісія може нагріватися або використовувати потужність менш ефективно.

Usage:
drivetrain.current(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання струму, в якій потрібно повернути значення: CurrentUnits.AMP (ампери, за замовчуванням).

is_moving#

is_moving повертає інформацію про те, чи рухається робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.

  • True — Робот рухається.

  • False — Робот не рухається.

Цей метод працює разом із наступними методами Drivetrain, які мають параметр wait : drive_for, turn_for, turn_to_heading та turn_to_rotation.

Usage:
drivetrain.is_moving()

Параметри

Опис

Цей метод не має параметрів.

is_done#

is_done повертає, чи завершив рух робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.

  • True — Робот завершив рух.

  • False — Робот все ще рухається.

Цей метод працює разом із наступними методами Drivetrain, які мають параметр wait : drive_for, turn_for, turn_to_heading та turn_to_rotation.

Usage:
drivetrain.is_done()

Параметри

Опис

Цей метод не має параметрів.

is_turning#

is_turning повертає, чи повертається робот, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху робота.

  • True — Робот обертається.

  • False — Робот не обертається.

Цей метод працює разом із наступними методами Drivetrain, які мають параметр wait : turn_for, turn_to_heading та turn_to_rotation.

Usage:
drivetrain.is_turning()

Параметри

Опис

Цей метод не має параметрів.

power#

power повертає кількість потужності, що споживається трансмісією, виміряну у ватах. Потужність показує, як швидко трансмісія використовує енергію.

Вище значення потужності означає, що трансмісія використовує енергію швидше. Це може статися, коли робот штовхається об об’єкт або намагається рухатися, коли він застряг.

Це можна використовувати для порівняння рухів або перевірки, чи не працює трансмісія. Якщо потужність залишається високою, трансмісія може нагріватися або використовувати енергію менш ефективно.

Usage:
drivetrain.power()

Параметри

Опис

Цей метод не має параметрів.

torque#

Крутний момент показує, наскільки сильно трансмісія може штовхати або тягнути, коли колеса обертаються.

torque повертає крутний момент, який використовує трансмісія, виміряний у ньютон-метрах (Нм) або дюйм-фунтах (InLb).

Вище значення крутного моменту означає, що трансмісія штовхає або тягне сильніше. Це може статися, коли робот штовхає об’єкт або намагається рухатися, коли він застряг.

Це можна використовувати, щоб перевірити, чи не працює трансмісія, або порівняти, скільки зусилля потрібно для різних рухів.

Usage:
drivetrain.torque(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання крутного моменту: TorqueUnits.NM (ньютон-метри, за замовчуванням) або TorqueUnits.INLB (дюйм-фунти).

efficiency#

efficiency повертає, наскільки ефективно трансмісія використовує потужність, у відсотках від 0% до 100%.

Ефективність показує, яка частина потужності трансмісії використовується для руху. Вище значення ефективності означає, що для руху використовується більше потужності трансмісії. Нижче значення ефективності може бути, коли трансмісія працює інтенсивно, але мало рухається, наприклад, коли робот застряг або штовхається об об’єкт.

Це можна використовувати для порівняння рухів або перевірки, чи трансмісія витрачає потужність даремно, замість того, щоб використовувати її для руху.

Usage:
drivetrain.efficiency()

Параметри

Опис

Цей метод не має параметрів.

temperature#

temperature повертає середню температуру трансмісії у вибраній одиниці вимірювання температури.

Температура показує, наскільки нагріті двигуни трансмісії. Вища температура означає, що двигуни нагріваються під час роботи. Для повної продуктивності двигуни повинні мати температуру нижче 55°C.

Якщо двигуни перегріються, вони знизять свій максимальний струм, щоб захистити себе. При 70°C двигуни зупиняться, доки не охолонуть.

Це можна використовувати для перевірки, чи не перегрівається трансмісія під час повторюваних рухів, тривалих пробіжок або коли вона тисне на якийсь предмет.

Usage:
drivetrain.temperature(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання температури, в якій повертається: TemperatureUnits.CELSIUS (за замовчуванням) або TemperatureUnits.FAHRENHEIT.

Конструктори#

Конструктори використовуються для створення в коді об’єктів DriveTrain та SmartDrive Це корисно під час налаштування трансмісії без використання вікна “Пристрої”.

Перед створенням трансмісії необхідно створити щонайменше два об’єкти Motor або MotorGroup.

DriveTrain#

DriveTrain створює трансмісію без гіроскопічного датчика або інерційного датчика.

Usage:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

Параметр

Опис

lm

Лівий двигун або група двигунів.

rm

Правий двигун або група двигунів.

wheelTravel

Необов’язково. Окружність коліс трансмісії. Значення за замовчуванням становить 300 міліметрів.

trackWidth

Необов’язково. Ширина між лівим і правим колесами. Значення за замовчуванням становить 320 міліметрів.

wheelBase

Необов’язково. Відстань між передніми та задніми колесами. Значення за замовчуванням становить 320 міліметрів.

units

Необов’язково. Одиниця вимірювання для wheelTravel, trackWidthта wheelBase: MM (міліметри, за замовчуванням), INCHESабо DistanceUnits.CM (сантиметри).

externalGearRatio

Необов’язково. Передавальне число, яке використовується для регулювання відстані приводу, якщо використовуються шестерні. Це може бути ціле число integer або десяткове число (float). Значення за замовчуванням — 1,0.

# Create left and right drive motor objects
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

# Create two motor group objects for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)

SmartDrive#

SmartDrive створює трансмісію з гіроскопічним датчиком або інерційним датчиком.

Usage:
SmartDrive(lm, rm, g, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

Параметр

Опис

lm

Лівий двигун або група двигунів.

rm

Правий двигун або група двигунів.

g

Гіроскопічний датчик або Інерціальний датчик, що використовується трансмісією.

wheelTravel

Необов’язково. Окружність коліс трансмісії. Значення за замовчуванням становить 300 міліметрів.

trackWidth

Необов’язково. Ширина між лівим і правим колесами. Значення за замовчуванням становить 320 міліметрів.

wheelBase

Необов’язково. Відстань між передніми та задніми колесами. Значення за замовчуванням становить 320 міліметрів.

units

Необов’язково. Одиниця вимірювання для wheelTravel, trackWidthта wheelBase: MM (міліметри, за замовчуванням), INCHESабо DistanceUnits.CM (сантиметри).

externalGearRatio

Необов’язково. Передавальне число, яке використовується для регулювання відстані приводу, якщо використовуються шестерні. Це може бути ціле число integer або десяткове число (float). Значення за замовчуванням — 1,0.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Make left and right drive motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

# Create a SmartDrive object with wheelTravel 200
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

Якщо ви створюєте інтелектуальну трансмісію з кількома двигунами, вам потрібно створити двигуни окремо, перш ніж групувати їх у групу двигунів.

# Create the Inertial Sensor
brain_inertial = Inertial()

# Create two motor groups for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)

right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)

# Create a SmartDrive object with wheelTravel 200 mm
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)