Инерционный#
Введение#
Мозг 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 калибрует инерциальный датчик. Все последующие строки будут ждать завершения калибровки перед запуском. Калибровка помогает датчику правильно измерять повороты, измеряя и компенсируя шум и дрейф датчика в течение заданного периода времени. В течение этого времени Мозг должен оставаться совершенно неподвижным на устойчивой поверхности. Движение во время калибровки может привести к неточным результатам.
Система 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 ( Inertial , например, при настройке инерциального датчика вне VEXcode.
Inertial#
Inertial создает инерциальный датчик.
Usage:
Inertial(smartport)
Параметр |
Описание |
|---|---|
|
Необязательно. При использовании встроенного инерциального датчика IQ (2-го поколения) Brain’s интеллектуальный порт не требуется. При подключении внешнего инерциального датчика укажите интеллектуальный порт, к которому подключен инерциальный датчик, в формате |
# 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)


