Инерционный#
Введение#
Инерциальный датчик измеряет, как робот движется и поворачивается.
Инерциальный датчик использует для этого две части. Гироскоп измеряет повороты, такие как курс, вращение, угловую скорость и ориентацию. Акселерометр измеряет изменения движения, такие как ускорение или замедление вдоль осей 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)
Параметры |
Описание |
|---|---|
|
Дополнительно. Единица измерения курса: |
# 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)
Параметры |
Описание |
|---|---|
|
Дополнительно. Единица измерения вращения: |
# 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)
Параметры |
Описание |
|---|---|
|
Ось, с которой нужно получить значение скорости гироскопа:
|
|
Необязательно. Единица измерения скорости вращения гироскопа:
|
# 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)
Параметры |
Описание |
|---|---|
|
Угол ориентации для возврата:
|
|
Необязательно. Единица измерения ориентации:
|
# 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)
Параметры |
Описание |
|---|---|
|
Значение направления в градусах, которое необходимо задать для датчика. Это может быть значение от 0 до 359,99. |
|
Дополнительно. Единица измерения курса: |
# 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)
Параметры |
Описание |
|---|---|
|
Значение угла поворота в градусах, которое необходимо задать для датчика. Это может быть целое число или десятичная дробь (число с плавающей запятой). |
|
Дополнительно. Единица измерения вращения: |
# 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)
Параметры |
Описание |
|---|---|
|
Ранее определенная функция, которая выполняется при изменении значения инерциального датчика. |
|
Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование функций с параметрами для получения дополнительной информации. |
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)
Параметры |
Описание |
|---|---|
|
Ось, по которой измеряется ускорение:
|
# 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)
Параметры |
Описание |
|---|---|
|
Ранее определенная функция, которая выполняется при обнаружении столкновения. |
|
Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование функций с параметрами для получения дополнительной информации. |
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)
Параметры |
Описание |
|---|---|
|
Тип поворота для установки:
|
get_turn_type#
get_turn_type возвращает, какое направление поворота возвращает положительные значения направления.
LEFT— Повороты налево возвращают положительные значения направления.RIGHT— Повороты направо возвращают положительные значения направления.
Usage:
inertial_1.get_turn_type()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
Строители#
Inertial#
Inertial создает инерциальный датчик.
Usage:
Inertial(port)
Параметры |
Описание |
|---|---|
|
Интеллектуальный порт, к которому подключается инерциальный датчик, от 1 до 21. |
# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)