Инерционный#

Введение#

Мозг 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 калибрует инерциальный датчик. Все последующие строки будут ждать завершения калибровки перед запуском. Калибровка помогает датчику правильно измерять повороты, измеряя и компенсируя шум и дрейф датчика в течение заданного периода времени. В течение этого времени Мозг должен оставаться совершенно неподвижным на устойчивой поверхности. Движение во время калибровки может привести к неточным результатам.

На изображении 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 ( Inertial , например, при настройке инерциального датчика вне VEXcode.

Inertial#

Inertial создает инерциальный датчик.

Usage:
Inertial(smartport)

Параметр

Описание

smartport

Необязательно. При использовании встроенного инерциального датчика IQ (2-го поколения) Brain’s интеллектуальный порт не требуется. При подключении внешнего инерциального датчика укажите интеллектуальный порт, к которому подключен инерциальный датчик, в формате 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)