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

Введение#

Инерциальный датчик измеряет, как робот движется и поворачивается.

Инерциальный датчик использует для этого две части. Гироскоп измеряет повороты, такие как курс, вращение, угловую скорость и ориентацию. Акселерометр измеряет изменения движения, такие как ускорение или замедление вдоль осей x, y и z.

Для отображения инерциальных команд в VEXcode V5 необходимо настроить инерциальный датчик в окне «Устройства».

Ниже приведён список доступных методов:

Ориентация — Считывание и управление направлением движения, вращением и калибровкой датчиков.

  • heading — Возвращает направление, в котором направлен датчик, от 0 до 359,99 градусов.

  • rotation — Возвращает, насколько повернулся датчик.

  • gyro_rate — Возвращает скорость вращения датчика по выбранной оси.

  • orientation — Возвращает угол крена, тангажа или рыскания инерциального датчика.

  • set_heading — Устанавливает текущее направление инерциального датчика на новое значение направления.

  • set_rotation — Устанавливает текущее вращение инерциального датчика на новое значение вращения.

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

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

  • reset_rotation — Сбрасывает текущее вращение инерциального датчика до 0 градусов.

  • is_calibrating — Возвращает значение, указывающее, выполняется ли в данный момент калибровка инерциального датчика.

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

  • installed — Проверяет, установлен ли инерциальный датчик.

Движение — Измерение ускорения, столкновений и поведения при поворотах.

  • acceleration — Возвращает, насколько быстро датчик ускоряется или замедляется по выбранной оси.

  • collision — Регистрирует функцию, которая будет выполняться, когда инерциальный датчик обнаружит столкновение.

  • set_turn_type — Устанавливает, какое направление поворота возвращает положительные значения направления.

  • get_turn_type — Возвращает, какое направление поворота возвращает положительные значения направления.

Конструктор

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

Ориентация#

heading#

Направление движения — это то, в каком направлении направлен датчик, измеряемое в градусах от 0 до 359,99. heading возвращает текущее направление движения датчика в виде числа с плавающей запятой.

Начальный курс равен 0 градусам. Если датчик отклоняется более чем на 359,99 градуса, курс возвращается к 0 градусам.

Usage:
inertial_1.heading(units)

Параметры

Описание

units

Дополнительно. Единица измерения курса: DEGREES (по умолчанию) или TURNS

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

rotation#

Вращение — это величина поворота датчика, измеряемая в градусах. В отличие от курса, вращение может превышать 359,99 градусов или уменьшаться ниже 0 градусов. В начале проекта значение вращения устанавливается равным 0 градусам. rotation возвращает текущее значение вращения инерциального датчика в виде числа с плавающей запятой.

Поворот вправо увеличивает угол поворота, а поворот влево уменьшает его. Например, два полных оборота вправо вернут 720 градусов. Один полный оборот влево от 0 градусов вернет -360 градусов.

Usage:
inertial_1.rotation(units)

Параметры

Описание

units

Дополнительно. Единица измерения вращения: DEGREES (по умолчанию) или TURNS

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

gyro_rate#

Гироскопическая скорость — это скорость вращения инерциального датчика. gyro_rate возвращает текущую скорость вращения инерциального датчика по выбранной оси в виде числа с плавающей запятой.

Значение может быть положительным или отрицательным в зависимости от направления вращения датчика вокруг данной оси.

Usage:
inertial_1.gyro_rate(axis, units)

Параметры

Описание

axis

Ось, с которой нужно получить значение скорости гироскопа:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

units

Необязательно. Единица измерения скорости вращения гироскопа:

  • VelocityUnits.DPS (по умолчанию)
  • VelocityUnits.RPM
  • VelocityUnits.PERCENT

# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()

orientation#

Ориентация — это текущий угол наклона инерциального датчика относительно выбранной оси поворота. orientation — возвращает значения крена, тангажа или рыскания инерциального датчика в диапазоне от -180,00 до 180,00 градусов в виде числа с плавающей запятой.

Крен, тангаж и рыскание описывают различные способы наклона или поворота датчика.

Usage:
inertial_1.orientation(type, units)

Параметры

Описание

type

Угол ориентации для возврата:

  • AxisType.PITCH
  • AxisType.ROLL
  • AxisType.YAW

units

Необязательно. Единица измерения ориентации:

  • DEGREES (по умолчанию)
  • RotationUnits.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(inertial_1.orientation(AxisType.ROLL, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

set_heading#

Направление движения — это то, в каком направлении направлен датчик, измеряемое в градусах от 0 до 359,99. Параметр set_heading изменяет текущее направление движения инерциального датчика на новое значение.

Например, если датчик повернулся вправо, установка направления на 0 градусов делает это положение, обращенное вправо, новым значением 0 градусов. Затем датчик может отслеживать другие направления, основываясь на этом новом направлении.

Usage:
inertial_1.set_heading(value, units)

Параметры

Описание

value

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

units

Дополнительно. Единица измерения курса: DEGREES (по умолчанию) или TURNS

# Turn the robot around
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)

set_rotation#

Вращение — это величина поворота датчика, измеряемая в градусах. В отличие от курса, вращение может превышать 359,99 градусов или уменьшаться ниже 0 градусов. В начале проекта значение вращения устанавливается на 0 градусов. Параметр set_rotation изменяет текущее значение вращения инерциального датчика на новое значение.

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

Usage:
inertial_1.set_rotation(value, units)

Параметры

Описание

value

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

units

Дополнительно. Единица измерения вращения: DEGREES (по умолчанию) или TURNS

# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)

calibrate#

calibrate калибрует инерциальный датчик.

Калибровка помогает датчику правильно измерять повороты. Во время калибровки датчик должен оставаться неподвижным. Если датчик будет двигаться во время калибровки, значения курса, вращения, скорости гироскопа и ориентации могут измеряться некорректно.

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

Usage:
inertial_1.calibrate()

Параметры

Описание

Этот метод не имеет параметров.

# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
    brain.screen.clear()
    brain.screen.print("Inertial Sensor Calibrating")
    wait(50, MSEC)

reset_heading#

reset_heading сбрасывает текущий курс инерциального датчика до 0 градусов.

После применения этого метода текущее направление датчика становится новым направлением в 0 градусов.

Usage:
inertial_1.reset_heading()

Параметры

Описание

Этот метод не имеет параметров.

reset_rotation#

reset_rotation сбрасывает текущий угол поворота инерциального датчика до 0 градусов.

После применения этого метода датчик отслеживает будущие повороты, начиная с нового значения поворота в 0 градусов.

Usage:
inertial_1.reset_rotation()

Параметры

Описание

Этот метод не имеет параметров.

is_calibrating#

is_calibrating возвращает значение, указывающее, выполняется ли в данный момент калибровка инерциального датчика.

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

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

Usage:
inertial_1.is_calibrating()

Параметры

Описание

Этот метод не имеет параметров.

changed#

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

Usage:
inertial_1.changed(callback, arg)

Параметры

Описание

callback

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

arg

Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование функций с параметрами для получения дополнительной информации.

def my_function():
  brain.screen.print("Value changed!!")

# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)

installed#

installed проверяет, установлен ли инерциальный датчик.

  • True — Инерциальный датчик установлен.

  • False — Инерциальный датчик не установлен.

Usage:
inertial_1.installed()

Параметры

Описание

Этот метод не имеет параметров.

Движение#

acceleration#

Ускорение показывает, насколько быстро датчик ускоряется или замедляется. acceleration возвращает ускорение инерциального датчика по выбранной оси в диапазоне от -4,0 G до 4,0 G в виде числа с плавающей запятой.

G — это единица измерения ускорения. 1 G — это примерно то ускорение, которое вы ощущаете под действием силы тяжести, сидя неподвижно.

Значение может быть положительным или отрицательным в зависимости от направления ускорения на выбранной оси. Варианты осей: AxisType.XAXIS, AxisType.YAXISи AxisType.ZAXIS.

Usage:
inertial_1.acceleration(type)

Параметры

Описание

type

Ось, по которой измеряется ускорение:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)

collision#

collision регистрирует функцию, которая будет вызываться всякий раз, когда инерциальный датчик обнаружит внезапный удар или столкновение.

Usage:
inertial_1.collision(callback, arg)

Параметры

Описание

callback

Ранее определенная функция, которая выполняется при обнаружении столкновения.

arg

Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование функций с параметрами для получения дополнительной информации.

def my_function():
  brain.screen.print("Collision!")

# Call my_function whenever a collision is detected
inertial_1.collision(my_function)

set_turn_type#

set_turn_type задает направление поворота и возвращает положительные значения курса.

Usage:
inertial_1.set_turn_type(turntype)

Параметры

Описание

turntype

Тип поворота для установки:

  • LEFT
  • RIGHT

get_turn_type#

get_turn_type возвращает, какое направление поворота возвращает положительные значения направления.

  • LEFT — Повороты налево возвращают положительные значения направления.

  • RIGHT — Повороты направо возвращают положительные значения направления.

Usage:
inertial_1.get_turn_type()

Параметры

Описание

Этот метод не имеет параметров.

Строители#

Inertial#

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

Usage:
Inertial(port)

Параметры

Описание

port

Интеллектуальный порт, к которому подключается инерциальный датчик, от 1 до 21.

# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)