관성 센서#
소개#
inertial 클래스는 IQ(2세대) 브레인의 내장 관성 센서에서 데이터를 제어하고 액세스하는 데 사용됩니다. 이 센서는 브레인의 움직임과 회전을 측정합니다.
관성 센서는 이를 위해 두 부분으로 구성됩니다. 자이로스코프는 방향, 회전, 자이로 회전율, 자세 등 회전을 측정합니다. 가속도계는 x, y, z축을 따라 가속하거나 감속하는 것과 같은 운동 변화를 측정합니다.
클래스 생성자#
inertial(
turnType dir = turnType::right );
클래스 소멸자#
inertial 객체를 파괴하고 관련 리소스를 해제합니다.
~inertial();
매개변수#
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
선택 사항입니다. 양수 값을 반환하는 방향:
|
예시#
// 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 Functionsdouble heading( rotationUnits units = degrees );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
The heading unit:
|
지정된 단위로 센서의 현재 방향을 나타내는 double 값을 반환합니다.
헤딩 값은 0과 359.99도 사이에서 래핑됩니다. 연속 회전 값에 액세스하려면
rotation를 사용하십시오.
// 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 Functionsdouble rotation( rotationUnits units = degrees );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
The rotation unit:
|
지정된 단위로 현재 회전을 나타내는 double 로 이루어진 double 값을 반환합니다.
회전 값은 연속적이며 0과 359.99도 사이에서 순환하지 않습니다. 순환된 헤딩 값에 액세스하려면
heading를 사용하십시오.
// 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 Functionsvoid setHeading( double value,
rotationUnits units );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
센서에 설정할 방향 값(도)입니다. 이 값은 0에서 359.99 사이일 수 있습니다. |
|
|
The heading unit:
|
이 함수는 값을 반환하지 않습니다.
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
관성 센서의 현재 회전값을 지정된 값으로 설정합니다.
회전은 센서가 얼마나 회전했는지를 나타냅니다. 방향과 달리 회전은 359.99도를 초과하거나 0도 미만으로 감소할 수 있습니다.
Available Functionsvoid setRotation( double value,
rotationUnits units );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
센서에 설정할 회전 값(도 단위)입니다. 정수 또는 소수일 수 있습니다. |
|
|
회전 단위:
|
이 함수는 값을 반환하지 않습니다.
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
calibrate#
관성 센서를 보정합니다.
보정은 센서가 회전을 정확하게 측정하는 데 도움이 됩니다. 보정하는 동안 센서를 움직이지 않도록 하십시오. 보정 중에 센서가 움직이면 방향, 회전, 자이로율 및 자세 값이 정확하게 측정되지 않을 수 있습니다.
Available Functionsvoid calibrate( );
이 함수는 매개변수를 받지 않습니다.
Return Values이 함수는 값을 반환하지 않습니다.
Notes교정 작업이 진행되는 동안 센서는 움직이지 않고 고정되어 있어야 합니다.
isCalibrating를 사용하여 보정이 완료되었는지 확인합니다.
resetHeading#
관성 센서의 현재 방향을 0도로 재설정합니다.
이 기능을 사용하면 센서의 현재 방향이 새로운 0도 방향으로 설정됩니다.
Available Functionsvoid resetHeading();
이 함수는 매개변수를 받지 않습니다.
Return Values이 함수는 값을 반환하지 않습니다.
resetRotation#
관성 센서의 현재 회전 각도를 0도로 재설정합니다.
이 기능을 사용한 후 센서는 새로운 0도 회전 값을 기준으로 향후 회전을 추적합니다.
Available Functionsvoid resetRotation();
이 함수는 매개변수를 받지 않습니다.
Return Values이 함수는 값을 반환하지 않습니다.
isCalibrating#
관성 센서가 현재 보정 중인지 여부를 반환합니다.
Available Functionsbool isCalibrating();
이 함수는 매개변수를 받지 않습니다.
Return Values관성 센서가 보정 중인지 여부를 나타내는 부울 값을 반환합니다.
-
true— The sensor is currently calibrating. -
false— The sensor is not currently calibrating.
changed#
관성 센서의 방향 값이 변경될 때 실행되는 콜백 함수를 등록합니다.
Available Functionsvoid changed( void (* callback)(void) );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
제목 값이 변경될 때 호출될 함수에 대한 포인터입니다. 이 함수는 매개변수를 받지 않고 |
이 함수는 값을 반환하지 않습니다.
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 Functionsbool installed();
이 함수는 매개변수를 받지 않습니다.
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는 정지 상태에서 중력에 의해 느껴지는 가속도와 거의 같습니다. 값은 선택한 축에 대한 가속도 방향에 따라 양수 또는 음수가 될 수 있습니다.
double acceleration( axisType axis );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
가속도를 측정할 축:
|
지정된 축을 따라 발생하는 가속도를 G(중력 단위)로 나타내는 double 의 double 값을 반환합니다.
가속도 값은
G로 표시됩니다.
gyroRate#
자이로 회전율은 관성 센서가 회전하는 속도를 나타냅니다. 이 함수는 선택된 축에서 관성 센서의 현재 회전 속도를 반환합니다.
센서가 해당 축을 중심으로 회전하는 방향에 따라 값이 양수 또는 음수가 될 수 있습니다.
Available Functionsdouble gyroRate( axisType axis,
velocityUnits units );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
자이로 회전율을 반환할 축:
|
|
|
자이로스코프 회전율 단위:
|
선택한 단위로 지정된 축을 따라 현재 회전 속도를 나타내는 double 의 double 값을 반환합니다.
// 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 Functionsdouble orientation(
orientationType type,
rotationUnits units );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
반환할 방향 각도:
|
|
|
The orientation unit:
|
지정된 단위로 선택된 방향 각도를 나타내는 double 의 double 값을 반환합니다.
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
충돌이 감지될 때 호출될 함수에 대한 포인터입니다. 콜백 함수는 다음 매개변수를 받아야 합니다.
void 반환해야 합니다. |
이 함수는 값을 반환하지 않습니다.
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 Functionsvoid setTurnType( turnType dir );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
양수 값을 반환하는 방향:
|
이 함수는 값을 반환하지 않습니다.
Notes이 함수를 호출하면 관성 객체
inertial구성할 때 지정된dir값을 재정의합니다.
getTurnType#
회전 방향을 반환하면 양수 값이 생성됩니다.
Available FunctionsturnType getTurnType();
이 함수는 매개변수를 받지 않습니다.
Return Values양의 값을 생성하는 방향을 나타내는 turnType 을 반환합니다.
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
이 값은
inertial객체의 구성 중에 설정되거나setTurnType를 호출하여 설정됩니다.