Інерційний#
Вступ#
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)
Параметри |
Опис |
|---|---|
|
Необов’язково. Одиниця вимірювання курсу: |
# 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)
Параметри |
Опис |
|---|---|
|
Додатково. Одиниця вимірювання обертання: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate калібрує інерційний датчик. Усі наступні рядки чекатимуть на завершення калібрування перед запуском. Калібрування допомагає датчику правильно вимірювати повороти, вимірюючи та компенсуючи шум датчика та дрейф протягом заданого періоду. Протягом цього часу Brain повинен залишатися повністю нерухомим на стійкій поверхні. Рух під час калібрування може призвести до неточних результатів.
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)
Параметри |
Опис |
|---|---|
|
Значення курсу в градусах, яке потрібно встановити для датчика. Це може бути значення від 0 до 359,99. |
|
Необов’язково. Одиниця вимірювання курсу: |
# 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)
Параметри |
Опис |
|---|---|
|
Значення повороту в градусах, яке потрібно встановити для датчика. Це може бути ціле або десяткове число (число з плаваючою комою). |
|
Додатково. Одиниця вимірювання обертання: |
# 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)
Параметри |
Опис |
|---|---|
|
Функція, яка виконується, коли змінюється курс інерційного датчика. |
|
Необов’язково. Кортеж аргументів для передачі функції зворотного виклику. |
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)
Параметри |
Опис |
|---|---|
вісь |
Вісь для вимірювання прискорення:
|
# 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)
Параметри |
Опис |
|---|---|
|
Вісь, з якої повертається швидкість гіроскопа:
|
|
Необов’язково. Одиниця вимірювання швидкості гіроскопа:
|
# 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)
Параметри |
Опис |
|---|---|
|
Кут орієнтації для повернення:
|
|
Необов’язково. Одиниця орієнтації: |
# 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)
Параметр |
Опис |
|---|---|
|
Необов’язково. Якщо використовується вбудований інерціальний датчик IQ (2-го покоління) Brain, смарт-порт не потрібен. Якщо підключається зовнішній інерціальний датчик, вкажіть смарт-порт, до якого підключено інерціальний датчик, у вигляді |
# 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)


