관성 센서#

소개#

inertial 클래스는 IQ(2세대) 브레인의 내장 관성 센서에서 데이터를 제어하고 액세스하는 데 사용됩니다. 이 센서는 브레인의 움직임과 회전을 측정합니다.

관성 센서는 이를 위해 두 부분으로 구성됩니다. 자이로스코프는 방향, 회전, 자이로 회전율, 자세 등 회전을 측정합니다. 가속도계는 x, y, z축을 따라 가속하거나 감속하는 것과 같은 운동 변화를 측정합니다.

클래스 생성자#

inertial(
  turnType dir = turnType::right );

클래스 소멸자#

inertial 객체를 파괴하고 관련 리소스를 해제합니다.

~inertial();

매개변수#

매개변수

유형

설명

dir

turnType

선택 사항입니다. 양수 값을 반환하는 방향:

  • right (기본값) — 오른쪽 회전은 양수 값을 반환합니다.
  • left — 왼쪽 회전은 양수 값을 반환합니다.

예시#

// Create the inertial instance
inertial myInertial = inertial(
    right);     // dir

회원 기능#

inertial 클래스에는 다음과 같은 멤버 함수가 포함됩니다.

  • heading — 센서가 향하는 방향을 반환합니다.

  • rotation — 센서가 얼마나 회전했는지 반환합니다.

  • setHeading — 센서의 현재 방향을 새로운 방향 값으로 설정합니다.

  • setRotation — 센서의 현재 회전을 새로운 회전 값으로 설정합니다.

  • calibrate — 관성 센서를 보정합니다.

  • resetHeading — 센서의 현재 방향을 0도로 재설정합니다.

  • resetRotation — 센서의 현재 회전을 0도로 재설정합니다.

  • isCalibrating — 관성 센서가 현재 보정 중인지 여부를 반환합니다.

  • changed — 제목이 변경될 때 실행되는 콜백 함수를 등록합니다.

  • installed — 관성 센서가 설치되었는지 여부를 반환합니다.

  • acceleration — 선택된 축에서 센서가 얼마나 빠르게 가속되거나 감속하는지 반환합니다.

  • gyroRate — 선택된 축을 중심으로 센서가 회전하는 속도를 반환합니다.

  • orientation — 관성 센서의 롤, 피치 또는 요 각도를 반환합니다.

  • collision — 충돌이 감지되면 실행되는 콜백 함수를 등록합니다.

  • setTurnType — 어떤 회전 방향이 양의 헤딩 값을 반환하는지 설정합니다.

  • getTurnType — 양수 값을 생성하는 회전 방향을 반환합니다.

inertial 멤버 함수를 호출하기 전에 아래와 같이 inertial 인스턴스를 생성해야 합니다.

/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode with the IQ (2nd gen) Brain. Replace the values
as needed. */

// Create the inertial instance
inertial myInertial = inertial();

heading#

헤딩은 센서가 향하는 방향을 나타내며, 0도에서 359.99도까지의 각도로 측정됩니다. 이 함수는 센서의 현재 헤딩을 반환합니다.

초기 방향은 0도입니다. 센서가 359.99도를 넘어서 회전하면 방향은 다시 0도로 돌아갑니다.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

매개변수

유형

설명

units

rotationUnits

The heading unit:

  • deg / degrees (default) — degrees
  • turns / rev — revolutions

Return Values

지정된 단위로 센서의 현재 방향을 나타내는 double 값을 반환합니다.

Notes
  • 헤딩 값은 0과 359.99도 사이에서 래핑됩니다. 연속 회전 값에 액세스하려면 rotation를 사용하십시오.

Examples
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));

rotation#

관성 센서의 현재 회전값을 반환합니다.

회전은 센서가 얼마나 회전했는지를 나타냅니다. 방향과는 달리 회전은 359.99도를 초과하거나 0도 미만으로 감소할 수 있습니다. 예를 들어, 오른쪽으로 두 바퀴를 완전히 돌면 720도가 회전합니다. 0도에서 왼쪽으로 한 바퀴를 완전히 돌면 -360도가 회전합니다.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

매개변수

유형

설명

units

rotationUnits

The rotation unit:

  • deg / degrees (default) — degrees
  • turns / rev — revolutions

Return Values

지정된 단위로 현재 회전을 나타내는 double 로 이루어진 double 값을 반환합니다.

Notes
  • 회전 값은 연속적이며 0과 359.99도 사이에서 순환하지 않습니다. 순환된 헤딩 값에 액세스하려면 heading를 사용하십시오.

Examples
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));

setHeading#

헤딩은 센서가 향하는 방향을 나타내며, 0도에서 359.99도까지의 각도로 측정됩니다. 이 함수는 관성 센서의 현재 헤딩 값을 새로운 헤딩 값으로 변경합니다.

예를 들어 센서가 오른쪽을 향하도록 회전한 경우, 방향을 0도로 설정하면 오른쪽을 향한 위치가 새로운 0도가 됩니다. 그러면 센서는 이 새로운 방향을 기준으로 다른 방향을 추적할 수 있습니다.

Available Functions
void setHeading( double        value,
                 rotationUnits units );

Parameters

매개변수

유형

설명

value

double

센서에 설정할 방향 값(도)입니다. 이 값은 0에서 359.99 사이일 수 있습니다.

units

rotationUnits

The heading unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

이 함수는 값을 반환하지 않습니다.

Examples
// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);

setRotation#

관성 센서의 현재 회전값을 지정된 값으로 설정합니다.

회전은 센서가 얼마나 회전했는지를 나타냅니다. 방향과 달리 회전은 359.99도를 초과하거나 0도 미만으로 감소할 수 있습니다.

Available Functions
void setRotation( double        value,
                  rotationUnits units );

Parameters

매개변수

유형

설명

value

double

센서에 설정할 회전 값(도 단위)입니다. 정수 또는 소수일 수 있습니다.

units

rotationUnits

회전 단위:

  • deg / degrees — 도
  • turns / rev — 회전

Return Values

이 함수는 값을 반환하지 않습니다.

Examples
// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);

calibrate#

관성 센서를 보정합니다.

보정은 센서가 회전을 정확하게 측정하는 데 도움이 됩니다. 보정하는 동안 센서를 움직이지 않도록 하십시오. 보정 중에 센서가 움직이면 방향, 회전, 자이로율 및 자세 값이 정확하게 측정되지 않을 수 있습니다.

Available Functions
void calibrate( );

Parameters

이 함수는 매개변수를 받지 않습니다.

Return Values

이 함수는 값을 반환하지 않습니다.

Notes
  • 교정 작업이 진행되는 동안 센서는 움직이지 않고 고정되어 있어야 합니다.

  • isCalibrating를 사용하여 보정이 완료되었는지 확인합니다.

resetHeading#

관성 센서의 현재 방향을 0도로 재설정합니다.

이 기능을 사용하면 센서의 현재 방향이 새로운 0도 방향으로 설정됩니다.

Available Functions
void resetHeading();

Parameters

이 함수는 매개변수를 받지 않습니다.

Return Values

이 함수는 값을 반환하지 않습니다.

resetRotation#

관성 센서의 현재 회전 각도를 0도로 재설정합니다.

이 기능을 사용한 후 센서는 새로운 0도 회전 값을 기준으로 향후 회전을 추적합니다.

Available Functions
void resetRotation();

Parameters

이 함수는 매개변수를 받지 않습니다.

Return Values

이 함수는 값을 반환하지 않습니다.

isCalibrating#

관성 센서가 현재 보정 중인지 여부를 반환합니다.

Available Functions
bool isCalibrating();

Parameters

이 함수는 매개변수를 받지 않습니다.

Return Values

관성 센서가 보정 중인지 여부를 나타내는 부울 값을 반환합니다.

  • true — The sensor is currently calibrating.
  • false — The sensor is not currently calibrating.

changed#

관성 센서의 방향 값이 변경될 때 실행되는 콜백 함수를 등록합니다.

Available Functions
void changed( void (* callback)(void) );

Parameters

매개변수

유형

설명

callback

void (*)(void)

제목 값이 변경될 때 호출될 함수에 대한 포인터입니다. 이 함수는 매개변수를 받지 않고 void 해야 합니다.

Return Values

이 함수는 값을 반환하지 않습니다.

Examples

콜백 함수를 정의하십시오( int main() 외부).

// Display the heading when the Inertial Sensor's heading value changes.
void onHeadingChanged() {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Heading: %.2f", myInertial.heading());
}

int main() 내부에 콜백을 등록합니다.

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  myInertial.changed(onHeadingChanged);
}

installed#

관성 센서가 설치되어 있고 연결되어 있는지 여부를 반환합니다.

Available Functions
bool installed();

Parameters

이 함수는 매개변수를 받지 않습니다.

Return Values

관성 센서가 설치 및 연결되었는지 여부를 나타내는 부울 값을 반환합니다.

  • true — The sensor is connected and responding.
  • false — The sensor is not connected or not detected.

acceleration#

가속도는 센서가 얼마나 빠르게 가속하거나 감속하는지를 나타냅니다. 이 함수는 선택한 축에 대한 관성 센서의 가속도를 -4.0G에서 4.0G 사이의 값으로 반환합니다.

G 가속도를 측정하는 단위입니다. 1G는 정지 상태에서 중력에 의해 느껴지는 가속도와 거의 같습니다. 값은 선택한 축에 대한 가속도 방향에 따라 양수 또는 음수가 될 수 있습니다.

Available Functions
double acceleration( axisType axis );

Parameters

매개변수

유형

설명

axis

axisType

가속도를 측정할 축:

  • xaxis
  • yaxis
  • zaxis

Return Values

지정된 축을 따라 발생하는 가속도를 G(중력 단위)로 나타내는 double 의 double 값을 반환합니다.

Notes
  • 가속도 값은 G 로 표시됩니다.

gyroRate#

자이로 회전율은 관성 센서가 회전하는 속도를 나타냅니다. 이 함수는 선택된 축에서 관성 센서의 현재 회전 속도를 반환합니다.

센서가 해당 축을 중심으로 회전하는 방향에 따라 값이 양수 또는 음수가 될 수 있습니다.

Available Functions
double gyroRate( axisType      axis,
                 velocityUnits units );

Parameters

매개변수

유형

설명

axis

axisType

자이로 회전율을 반환할 축:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

자이로스코프 회전율 단위:

  • dps — 초당 각도
  • rpm — 분당 회전수

Return Values

선택한 단위로 지정된 축을 따라 현재 회전 속도를 나타내는 double 의 double 값을 반환합니다.

Examples
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);

Brain.Screen.print(myInertial.gyroRate(zaxis, dps));

Drivetrain.stop();

orientation#

방향은 선택된 회전축에 대한 관성 센서의 현재 각도입니다. 이 함수는 지정된 축에 대한 관성 센서의 현재 방향을 반환합니다.

롤, 피치, 요는 센서가 기울어지거나 회전할 수 있는 다양한 방식을 나타냅니다.

Available Functions
double orientation(
  orientationType type,
  rotationUnits   units );

Parameters

매개변수

유형

설명

type

orientationType

반환할 방향 각도:

  • pitch
  • roll
  • yaw

units

rotationUnits

The orientation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

지정된 단위로 선택된 방향 각도를 나타내는 double 의 double 값을 반환합니다.

Examples
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  // Show the Inertial Sensor's orientation value
  // for roll in degrees
  double orient = myInertial.orientation(roll, deg);
  Brain.Screen.print("%f", orient);
  wait(0.1, seconds);
}

collision#

관성 센서가 갑작스러운 충격이나 충돌을 감지했을 때 실행되는 콜백 함수를 등록합니다.

Available Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

매개변수

유형

설명

callback

void (*)(axisType, double, double, double)

충돌이 감지될 때 호출될 함수에 대한 포인터입니다. 콜백 함수는 다음 매개변수를 받아야 합니다.

  • axisType — 충돌이 감지된 축.
  • 충돌 당시의 가속도 값(순서대로):
    • double — x축 방향 가속도(G).
    • double — y축 방향 가속도(G).
    • double — z축 방향 가속도(G).
함수는 void 반환해야 합니다.

Return Values

이 함수는 값을 반환하지 않습니다.

Examples

콜백 함수를 정의하십시오( int main() 외부).

// Display a message when the Inertial Sensor detects a collision.
void onCollision(axisType axis, double x, double y, double z) {
  Brain.Screen.print("Collision detected!");
}

int main() 내부에 콜백을 등록합니다.

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  myInertial.collision(onCollision);
}

setTurnType#

회전 방향을 설정할 때 양수 값을 반환합니다.

Available Functions
void setTurnType( turnType dir );

Parameters

매개변수

유형

설명

dir

turnType

양수 값을 반환하는 방향:

  • right
  • left

Return Values

이 함수는 값을 반환하지 않습니다.

Notes

getTurnType#

회전 방향을 반환하면 양수 값이 생성됩니다.

Available Functions
turnType getTurnType();

Parameters

이 함수는 매개변수를 받지 않습니다.

Return Values

양의 값을 생성하는 방향을 나타내는 turnType 을 반환합니다.

  • right — Clockwise rotation returns positive values.
  • left — Counterclockwise rotation returns positive values.
Notes