관성#
소개#
관성 센서는 로봇의 움직임과 회전 방식을 측정합니다.
관성 센서는 이를 위해 두 부분으로 구성됩니다. 자이로스코프는 방향, 회전, 자이로 회전율, 자세 등 회전을 측정합니다. 가속도계는 x, y, z축을 따라 가속하거나 감속하는 것과 같은 운동 변화를 측정합니다.
다음은 사용 가능한 방법 목록입니다.
방향 — 방향, 회전 및 센서 보정을 읽고 제어합니다.
heading— 센서가 향하는 방향을 0~359.99도에서 반환합니다.rotation— 센서가 얼마나 회전했는지 반환합니다.gyro_rate— 선택된 축을 중심으로 센서가 회전하는 속도를 반환합니다.orientation— 관성 센서의 롤, 피치 또는 요 각도를 반환합니다.calibrate— 관성 센서를 보정합니다.set_heading— 관성 센서의 현재 방향을 새로운 방향 값으로 설정합니다.set_rotation— 관성 센서의 현재 회전을 새로운 회전 값으로 설정합니다.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)
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)
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)
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.0G에서 4.0G 사이의 부동 소수점 값으로 반환합니다.
G 가속도를 측정하는 단위입니다. 1G는 가만히 앉아 있을 때 중력으로부터 느끼는 가속도와 거의 같습니다.
값은 선택한 축의 가속도 방향에 따라 양수 또는 음수가 될 수 있습니다. 축 옵션은 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(smartport)
매개변수 |
설명 |
|---|---|
|
관성 센서가 연결된 스마트 포트는 |
# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)