Інерційний#

Вступ#

IQ (2-го покоління) Brain має вбудований інерційний датчик. Цей датчик вимірює рухи та обертання мозку.

Інерціальний датчик використовує для цього дві частини. Гіроскоп вимірює повороти, такі як напрямок, обертання, швидкість гіроскопа та орієнтація. Акселерометр вимірює зміни в русі, такі як прискорення або уповільнення вздовж осей x, y та z.

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

Нижче наведено список усіх доступних методів:

Орієнтація — Зчитування та керування напрямком, обертанням і калібруванням датчика.

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

  • rotation — Повертає, на скільки повернувся датчик.

  • calibrate — Калібрує інерціальний датчик.

  • set_heading — Встановлює поточний курс інерціального датчика на нове значення курсу.

  • set_rotation — Встановлює поточне обертання інерційного датчика на нове значення обертання.

  • is_calibrating — Повертає, чи калібрується інерційний датчик.

  • reset_heading — Скидає поточний курс інерціального датчика до 0 градусів.

  • reset_rotation — Скидає поточне обертання інерційного датчика до 0 градусів.

  • changed — Реєструє функцію, яка запускається при зміні курсу інерціального датчика.

Рух — Вимірювання прискорення, швидкості обертання та нахилу.

  • acceleration — Повертає швидкість прискорення або сповільнення датчика на вибраній осі.

  • gyro_rate — Повертає швидкість обертання датчика на вибраній осі.

  • orientation — Повертає кут крену, тангажу або рискання інерціального датчика.

Конструктори — ініціалізація та налаштування інерціального датчика вручну.

  • Inertial — Створює інерціальний датчик.

Орієнтація#

heading#

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

Початковий курс становить 0 градусів. Якщо датчик повертається за межі 359,99 градусів, курс повертається до 0 градусів.

Usage:
brain_inertial.heading(units)

Параметри

Опис

units

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

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

rotation#

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

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

Usage:
brain_inertial.rotation(units)

Параметри

Опис

units

Додатково. Одиниця вимірювання обертання: DEGREES (за замовчуванням) або TURNS

# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())

calibrate#

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

IQ Brain з екраном, повернутим праворуч, з осями x, y та z, представленими стрілками, що починаються з центру екрана та простягаються назовні. Червона стрілка з позначкою x вказує праворуч, зелена стрілка з позначкою y спрямована вперед, а синя стрілка з позначкою z вказує вниз.Те саме зображення, що й попереднє, тепер з екраном мозку, повернутим під кутом ліворуч, а стрілки x, y, z зберігають свою орієнтацію.Те саме зображення, що й попереднє, тепер екран мозку спрямований вгору, ніби він лежить на поверхні. Орієнтація x, y, z така ж.

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

Usage:
brain_inertial.calibrate()

Параметр

Опис

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

# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

set_heading#

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

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

Usage:
brain_inertial.set_heading(value, units)

Параметри

Опис

value

Значення курсу в градусах, яке потрібно встановити для датчика. Це може бути значення від 0 до 359,99.

units

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

# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)

set_rotation#

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

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

Usage:
brain_inertial.set_rotation(value, units)

Параметри

Опис

value

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

units

Додатково. Одиниця вимірювання обертання: DEGREES (за замовчуванням) або TURNS

# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)

is_calibrating#

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

  • True — Інерційний датчик калібрується.

  • False — Інерційний датчик не калібрується.

Usage:
brain_inertial.is_calibrating()

Параметр

Опис

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

# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

reset_heading#

reset_heading скидає поточний курс інерціального датчика до 0 градусів.

Після використання цього методу поточний напрямок датчика стає новим курсом 0 градусів.

Usage:
brain_inertial.reset_heading()

Параметри

Опис

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

# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)

reset_rotation#

reset_rotation скидає поточне обертання інерціального датчика до 0 градусів.

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

Usage:
brain_inertial.reset_rotation()

Параметри

Опис

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

# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)

changed#

changed реєструє функцію, яка викликається при зміні курсу інерціального датчика.

Usage:
brain_inertial.changed(callback, arg)

Параметри

Опис

callback

Функція, яка виконується, коли змінюється курс інерційного датчика.

arg

Необов’язково. Кортеж аргументів для передачі функції зворотного виклику.

def heading_changed():
    brain.screen.set_cursor(1, 1)
    brain.screen.clear_screen()
    brain.screen.print("my heading ")
    brain.screen.next_row()
    brain.screen.print("has changed!")
    wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)

Рух#

acceleration#

Прискорення – це швидкість прискорення або сповільнення датчика. acceleration повертає прискорення інерційного датчика на вибраній осі від -4,0 G до 4,0 G у вигляді числа з плаваючою комою.

G — це одиниця вимірювання прискорення. 1 G — це прискорення, яке ви відчуваєте від сили тяжіння, сидячи нерухомо.

Значення може бути додатним або від’ємним залежно від напрямку прискорення на вибраній осі. Варіанти осей: XAXIS, YAXISта ZAXIS.

Usage:
brain_inertial.acceleration(axis)

Параметри

Опис

вісь

Вісь для вимірювання прискорення:

  • XAXIS
  • YAXIS
  • ZAXIS

# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))

gyro_rate#

Швидкість обертання гіроскопа – це швидкість обертання інерційного датчика. gyro_rate повертає поточну швидкість обертання інерційного датчика на вибраній осі.

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

Usage:
brain_inertial.gyro_rate(axis, units)

Параметри

Опис

axis

Вісь, з якої повертається швидкість гіроскопа:

  • XAXIS
  • YAXIS
  • ZAXIS

units

Необов’язково. Одиниця вимірювання швидкості гіроскопа:

  • DPS (за замовчуванням) — градуси за секунду
  • RPM — обертів за хвилину
  • PERCENT

# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()

orientation#

Орієнтація – це поточний кут інерційного датчика на вибраній осі повороту. orientation повертає крен, тангаж або рискування інерційного датчика.

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

Usage:
brain_inertial.orientation(axis, units)

Параметри

Опис

axis

Кут орієнтації для повернення:

  • ROLL
  • PITCH
  • YAW

units

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

# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
    brain.screen.clear_screen()
    brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

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

Конструктори використовуються для ручного створення об’єктів Inertial , наприклад, під час налаштування інерціального датчика поза VEX-кодом.

Inertial#

Inertial створює інерційний датчик.

Usage:
Inertial(smartport)

Параметр

Опис

smartport

Необов’язково. Якщо використовується вбудований інерціальний датчик IQ (2-го покоління) Brain, смарт-порт не потрібен. Якщо підключається зовнішній інерціальний датчик, вкажіть смарт-порт, до якого підключено інерціальний датчик, у вигляді PORTx, де x – номер порту.

# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)